began work setting several timings to use rational rather than long/double
This commit is contained in:
+38
-29
@@ -65,9 +65,9 @@ QString EffectField::ConvertValueToString(const QVariant &v)
|
||||
return v.toString();
|
||||
}
|
||||
|
||||
void EffectField::UpdateWidgetValue(QWidget *, double) {}
|
||||
void EffectField::UpdateWidgetValue(QWidget *, const rational &) {}
|
||||
|
||||
QVariant EffectField::GetValueAt(double timecode)
|
||||
QVariant EffectField::GetValueAt(const rational& timecode)
|
||||
{
|
||||
if (HasKeyframes()) {
|
||||
int before_keyframe;
|
||||
@@ -96,15 +96,19 @@ QVariant EffectField::GetValueAt(double timecode)
|
||||
|
||||
} else if (before_key.type == EFFECT_KEYFRAME_BEZIER || after_key.type == EFFECT_KEYFRAME_BEZIER) {
|
||||
|
||||
double timecode_dbl = timecode.ToDouble();
|
||||
double before_time_dbl = before_key.time.ToDouble();
|
||||
double after_time_dbl = after_key.time.ToDouble();
|
||||
|
||||
// bezier interpolation
|
||||
if (before_key.type == EFFECT_KEYFRAME_BEZIER && after_key.type == EFFECT_KEYFRAME_BEZIER) {
|
||||
|
||||
// cubic bezier
|
||||
double t = cubic_t_from_x(timecode,
|
||||
before_key.time,
|
||||
before_key.time+GetValidKeyframeHandlePosition(before_keyframe, true),
|
||||
after_key.time+GetValidKeyframeHandlePosition(after_keyframe, false),
|
||||
after_key.time);
|
||||
double t = cubic_t_from_x(timecode_dbl,
|
||||
before_time_dbl,
|
||||
before_time_dbl+GetValidKeyframeHandlePosition(before_keyframe, true),
|
||||
after_time_dbl+GetValidKeyframeHandlePosition(after_keyframe, false),
|
||||
after_time_dbl);
|
||||
|
||||
value = cubic_from_t(before_dbl,
|
||||
before_dbl+before_key.post_handle.y(),
|
||||
@@ -115,10 +119,10 @@ QVariant EffectField::GetValueAt(double timecode)
|
||||
} else if (after_key.type == EFFECT_KEYFRAME_LINEAR) { // quadratic bezier
|
||||
|
||||
// last keyframe is the bezier one
|
||||
double t = quad_t_from_x(timecode,
|
||||
before_key.time,
|
||||
before_key.time+GetValidKeyframeHandlePosition(before_keyframe, true),
|
||||
after_key.time);
|
||||
double t = quad_t_from_x(timecode_dbl,
|
||||
before_time_dbl,
|
||||
before_time_dbl+GetValidKeyframeHandlePosition(before_keyframe, true),
|
||||
after_time_dbl);
|
||||
|
||||
value = quad_from_t(before_dbl,
|
||||
before_dbl+before_key.post_handle.y(),
|
||||
@@ -127,10 +131,10 @@ QVariant EffectField::GetValueAt(double timecode)
|
||||
|
||||
} else {
|
||||
// this keyframe is the bezier one
|
||||
double t = quad_t_from_x(timecode,
|
||||
before_key.time,
|
||||
after_key.time+GetValidKeyframeHandlePosition(after_keyframe, false),
|
||||
after_key.time);
|
||||
double t = quad_t_from_x(timecode_dbl,
|
||||
before_time_dbl,
|
||||
after_time_dbl+GetValidKeyframeHandlePosition(after_keyframe, false),
|
||||
after_time_dbl);
|
||||
|
||||
value = quad_from_t(before_dbl,
|
||||
after_dbl+after_key.pre_handle.y(),
|
||||
@@ -177,7 +181,7 @@ QVariant EffectField::GetValueAt(double timecode)
|
||||
return persistent_data_;
|
||||
}
|
||||
|
||||
void EffectField::SetValueAt(double time, const QVariant &value)
|
||||
void EffectField::SetValueAt(const rational &time, const QVariant &value)
|
||||
{
|
||||
if (HasKeyframes()) {
|
||||
|
||||
@@ -186,7 +190,7 @@ void EffectField::SetValueAt(double time, const QVariant &value)
|
||||
// Check array if a keyframe at this time already exists
|
||||
int keyframe_index = -1;
|
||||
for (int i=0;i<keyframes.size();i++) {
|
||||
if (qFuzzyCompare(keyframes.at(i).time, time)) {
|
||||
if (keyframes.at(i).time == time) {
|
||||
keyframe_index = i;
|
||||
break;
|
||||
}
|
||||
@@ -256,7 +260,7 @@ double EffectField::GetValidKeyframeHandlePosition(int key, bool post) {
|
||||
if (i != key
|
||||
&& ((keyframes.at(i).time > keyframes.at(key).time) == post)
|
||||
&& (comp_key == -1
|
||||
|| ((keyframes.at(i).time < keyframes.at(comp_key).time) == post))) {
|
||||
|| ((keyframes.at(i).time < keyframes.at(comp_key).time) == post))) {
|
||||
// compare with next keyframe for post or previous frame for pre
|
||||
comp_key = i;
|
||||
}
|
||||
@@ -269,7 +273,7 @@ double EffectField::GetValidKeyframeHandlePosition(int key, bool post) {
|
||||
return adjusted_key;
|
||||
}
|
||||
|
||||
double comp = keyframes.at(comp_key).time - keyframes.at(key).time;
|
||||
double comp = keyframes.at(comp_key).time.ToDouble() - keyframes.at(key).time.ToDouble();
|
||||
|
||||
// if comp keyframe is bezier, validate with its accompanying handle
|
||||
if (keyframes.at(comp_key).type == EFFECT_KEYFRAME_BEZIER) {
|
||||
@@ -294,24 +298,29 @@ double EffectField::GetValidKeyframeHandlePosition(int key, bool post) {
|
||||
return adjusted_key;
|
||||
}
|
||||
|
||||
void EffectField::GetKeyframeData(double timecode, int &before, int &after, double &progress) {
|
||||
void EffectField::GetKeyframeData(const rational& timecode, int &before, int &after, double &progress) {
|
||||
int before_keyframe_index = -1;
|
||||
int after_keyframe_index = -1;
|
||||
double before_keyframe_time = DBL_MIN;
|
||||
double after_keyframe_time = DBL_MAX;
|
||||
|
||||
for (int i=0;i<keyframes.size();i++) {
|
||||
double eval_keyframe_time = keyframes.at(i).time;
|
||||
if (qFuzzyCompare(eval_keyframe_time, timecode)) {
|
||||
const rational& eval_keyframe_time = keyframes.at(i).time;
|
||||
if (eval_keyframe_time == timecode) {
|
||||
before = i;
|
||||
after = i;
|
||||
return;
|
||||
} else if (eval_keyframe_time < timecode && eval_keyframe_time > before_keyframe_time) {
|
||||
before_keyframe_index = i;
|
||||
before_keyframe_time = eval_keyframe_time;
|
||||
} else if (eval_keyframe_time > timecode && eval_keyframe_time < after_keyframe_time) {
|
||||
after_keyframe_index = i;
|
||||
after_keyframe_time = eval_keyframe_time;
|
||||
} else {
|
||||
|
||||
double eval_keyframe_dbl = eval_keyframe_time.ToDouble();
|
||||
|
||||
if (eval_keyframe_time < timecode && eval_keyframe_dbl > before_keyframe_time) {
|
||||
before_keyframe_index = i;
|
||||
before_keyframe_time = eval_keyframe_dbl;
|
||||
} else if (eval_keyframe_time > timecode && eval_keyframe_dbl < after_keyframe_time) {
|
||||
after_keyframe_index = i;
|
||||
after_keyframe_time = eval_keyframe_dbl;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -320,7 +329,7 @@ void EffectField::GetKeyframeData(double timecode, int &before, int &after, doub
|
||||
// interpolate
|
||||
before = before_keyframe_index;
|
||||
after = after_keyframe_index;
|
||||
progress = (timecode-before_keyframe_time)/(after_keyframe_time-before_keyframe_time);
|
||||
progress = (timecode.ToDouble()-before_keyframe_time)/(after_keyframe_time-before_keyframe_time);
|
||||
} else if (before_keyframe_index > -1) {
|
||||
before = before_keyframe_index;
|
||||
after = before_keyframe_index;
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "effects/keyframe.h"
|
||||
#include "undo/undostack.h"
|
||||
#include "nodes/nodedatatypes.h"
|
||||
#include "global/rational.h"
|
||||
|
||||
class NodeIO;
|
||||
class ComboAction;
|
||||
@@ -151,7 +152,7 @@ public:
|
||||
*
|
||||
* A QVariant representation of the value at the given timecode.
|
||||
*/
|
||||
QVariant GetValueAt(double timecode);
|
||||
QVariant GetValueAt(const rational &timecode);
|
||||
|
||||
/**
|
||||
* @brief Set the value of this field at a given timecode
|
||||
@@ -176,7 +177,7 @@ public:
|
||||
*
|
||||
* The QVariant value to set at this time.
|
||||
*/
|
||||
void SetValueAt(double time, const QVariant& value);
|
||||
void SetValueAt(const rational& time, const QVariant& value);
|
||||
|
||||
/**
|
||||
* @brief Set up keyframing on this field
|
||||
@@ -285,7 +286,7 @@ public:
|
||||
*
|
||||
* The time in clip/media seconds to retrieve data from.
|
||||
*/
|
||||
virtual void UpdateWidgetValue(QWidget* widget, double timecode);
|
||||
virtual void UpdateWidgetValue(QWidget* widget, const rational& timecode);
|
||||
|
||||
/**
|
||||
* @brief Get the correct X position/time value of a bezier keyframe's handles
|
||||
@@ -408,7 +409,7 @@ private:
|
||||
*
|
||||
* The progress between the `before` keyframe and `after` keyframe from 0.0 to 1.0.
|
||||
*/
|
||||
void GetKeyframeData(double timecode, int& before, int& after, double& d);
|
||||
void GetKeyframeData(const rational &timecode, int& before, int& after, double& d);
|
||||
|
||||
/**
|
||||
* @brief Internal enabled value
|
||||
|
||||
@@ -29,7 +29,7 @@ BoolField::BoolField(NodeIO *parent) :
|
||||
EffectField(parent, EffectField::EFFECT_FIELD_BOOL)
|
||||
{}
|
||||
|
||||
bool BoolField::GetBoolAt(double timecode)
|
||||
bool BoolField::GetBoolAt(const rational &timecode)
|
||||
{
|
||||
return GetValueAt(timecode).toBool();
|
||||
}
|
||||
@@ -56,7 +56,7 @@ QWidget *BoolField::CreateWidget(QWidget *existing)
|
||||
return cb;
|
||||
}
|
||||
|
||||
void BoolField::UpdateWidgetValue(QWidget *widget, double timecode)
|
||||
void BoolField::UpdateWidgetValue(QWidget *widget, const rational &timecode)
|
||||
{
|
||||
QCheckBox* cb = static_cast<QCheckBox*>(widget);
|
||||
|
||||
@@ -65,13 +65,8 @@ void BoolField::UpdateWidgetValue(QWidget *widget, double timecode)
|
||||
|
||||
cb->blockSignals(true);
|
||||
|
||||
if (qIsNaN(timecode)) {
|
||||
cb->setTristate(true);
|
||||
cb->setCheckState(Qt::PartiallyChecked);
|
||||
} else {
|
||||
cb->setTristate(false);
|
||||
cb->setChecked(GetBoolAt(timecode));
|
||||
}
|
||||
cb->setTristate(false);
|
||||
cb->setChecked(GetBoolAt(timecode));
|
||||
|
||||
cb->blockSignals(false);
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ public:
|
||||
*
|
||||
* The boolean value at this timecode
|
||||
*/
|
||||
bool GetBoolAt(double timecode);
|
||||
bool GetBoolAt(const rational& timecode);
|
||||
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::CreateWidget()
|
||||
@@ -62,7 +62,7 @@ public:
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::UpdateWidgetValue()
|
||||
*/
|
||||
virtual void UpdateWidgetValue(QWidget* widget, double timecode) override;
|
||||
virtual void UpdateWidgetValue(QWidget* widget, const rational& timecode) override;
|
||||
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::ConvertStringToValue()
|
||||
|
||||
@@ -30,7 +30,7 @@ ColorField::ColorField(NodeIO* parent) :
|
||||
EffectField(parent, EffectField::EFFECT_FIELD_COLOR)
|
||||
{}
|
||||
|
||||
QColor ColorField::GetColorAt(double timecode)
|
||||
QColor ColorField::GetColorAt(const rational& timecode)
|
||||
{
|
||||
return GetValueAt(timecode).value<QColor>();
|
||||
}
|
||||
@@ -45,7 +45,7 @@ QWidget *ColorField::CreateWidget(QWidget *existing)
|
||||
return cb;
|
||||
}
|
||||
|
||||
void ColorField::UpdateWidgetValue(QWidget *widget, double timecode)
|
||||
void ColorField::UpdateWidgetValue(QWidget *widget, const rational &timecode)
|
||||
{
|
||||
ColorButton* cb = static_cast<ColorButton*>(widget);
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ public:
|
||||
*
|
||||
* The color value at this timecode
|
||||
*/
|
||||
QColor GetColorAt(double timecode);
|
||||
QColor GetColorAt(const rational &timecode);
|
||||
|
||||
/**
|
||||
* @brief CreateWidget
|
||||
@@ -62,7 +62,7 @@ public:
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::UpdateWidgetValue()
|
||||
*/
|
||||
virtual void UpdateWidgetValue(QWidget* widget, double timecode) override;
|
||||
virtual void UpdateWidgetValue(QWidget* widget, const rational& timecode) override;
|
||||
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::ConvertStringToValue()
|
||||
|
||||
@@ -62,7 +62,7 @@ QWidget *ComboField::CreateWidget(QWidget *existing)
|
||||
return cb;
|
||||
}
|
||||
|
||||
void ComboField::UpdateWidgetValue(QWidget *widget, double timecode)
|
||||
void ComboField::UpdateWidgetValue(QWidget *widget, const rational &timecode)
|
||||
{
|
||||
QVariant data = GetValueAt(timecode);
|
||||
|
||||
|
||||
@@ -79,7 +79,7 @@ public:
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::UpdateWidgetValue()
|
||||
*/
|
||||
virtual void UpdateWidgetValue(QWidget* widget, double timecode) override;
|
||||
virtual void UpdateWidgetValue(QWidget* widget, const rational& timecode) override;
|
||||
|
||||
signals:
|
||||
/**
|
||||
|
||||
@@ -36,7 +36,7 @@ DoubleField::DoubleField(NodeIO* parent) :
|
||||
connect(this, SIGNAL(Changed()), this, SLOT(ValueHasBeenSet()), Qt::DirectConnection);
|
||||
}
|
||||
|
||||
double DoubleField::GetDoubleAt(double timecode)
|
||||
double DoubleField::GetDoubleAt(const rational& timecode)
|
||||
{
|
||||
return GetValueAt(timecode).toDouble();
|
||||
}
|
||||
@@ -117,13 +117,13 @@ QWidget *DoubleField::CreateWidget(QWidget *existing)
|
||||
return ls;
|
||||
}
|
||||
|
||||
void DoubleField::UpdateWidgetValue(QWidget *widget, double timecode)
|
||||
void DoubleField::UpdateWidgetValue(QWidget *widget, const rational &timecode)
|
||||
{
|
||||
if (qIsNaN(timecode)) {
|
||||
static_cast<LabelSlider*>(widget)->SetValue(qSNaN());
|
||||
} else {
|
||||
//if (qIsNaN(timecode)) {
|
||||
//static_cast<LabelSlider*>(widget)->SetValue(qSNaN());
|
||||
//} else {
|
||||
static_cast<LabelSlider*>(widget)->SetValue(GetDoubleAt(timecode));
|
||||
}
|
||||
//}
|
||||
}
|
||||
|
||||
void DoubleField::ValueHasBeenSet()
|
||||
|
||||
@@ -54,7 +54,7 @@ public:
|
||||
*
|
||||
* Double value at the set timecode
|
||||
*/
|
||||
double GetDoubleAt(double timecode);
|
||||
double GetDoubleAt(const rational &timecode);
|
||||
|
||||
/**
|
||||
* @brief Sets the minimum allowed number for the user to set to `minimum`.
|
||||
@@ -103,7 +103,7 @@ public:
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::UpdateWidgetValue()
|
||||
*/
|
||||
virtual void UpdateWidgetValue(QWidget* widget, double timecode) override;
|
||||
virtual void UpdateWidgetValue(QWidget* widget, const rational& timecode) override;
|
||||
signals:
|
||||
/**
|
||||
* @brief Signal emitted when the field's maximum value has changed
|
||||
|
||||
@@ -33,7 +33,7 @@ FileField::FileField(NodeIO* parent) :
|
||||
SetValueAt(0, "");
|
||||
}
|
||||
|
||||
QString FileField::GetFileAt(double timecode)
|
||||
QString FileField::GetFileAt(const rational& timecode)
|
||||
{
|
||||
return GetValueAt(timecode).toString();
|
||||
}
|
||||
@@ -48,7 +48,7 @@ QWidget *FileField::CreateWidget(QWidget *existing)
|
||||
return efc;
|
||||
}
|
||||
|
||||
void FileField::UpdateWidgetValue(QWidget *widget, double timecode)
|
||||
void FileField::UpdateWidgetValue(QWidget *widget, const rational &timecode)
|
||||
{
|
||||
EmbeddedFileChooser* efc = static_cast<EmbeddedFileChooser*>(widget);
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ public:
|
||||
*
|
||||
* The filename at this timecode
|
||||
*/
|
||||
QString GetFileAt(double timecode);
|
||||
QString GetFileAt(const rational &timecode);
|
||||
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::CreateWidget()
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::UpdateWidgetValue()
|
||||
*/
|
||||
virtual void UpdateWidgetValue(QWidget *widget, double timecode) override;
|
||||
virtual void UpdateWidgetValue(QWidget *widget, const rational& timecode) override;
|
||||
private slots:
|
||||
/**
|
||||
* @brief Internal function connected to any QWidget made from CreateWidget() to update the value based on user input
|
||||
|
||||
@@ -37,7 +37,7 @@ FontField::FontField(NodeIO* parent) :
|
||||
SetValueAt(0, font_list.first());
|
||||
}
|
||||
|
||||
QString FontField::GetFontAt(double timecode)
|
||||
QString FontField::GetFontAt(const rational& timecode)
|
||||
{
|
||||
return GetValueAt(timecode).toString();
|
||||
}
|
||||
@@ -66,7 +66,7 @@ QWidget *FontField::CreateWidget(QWidget *existing)
|
||||
return fcb;
|
||||
}
|
||||
|
||||
void FontField::UpdateWidgetValue(QWidget *widget, double timecode)
|
||||
void FontField::UpdateWidgetValue(QWidget *widget, const rational &timecode)
|
||||
{
|
||||
QVariant data = GetValueAt(timecode);
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ public:
|
||||
*
|
||||
* The font family name at this timecode
|
||||
*/
|
||||
QString GetFontAt(double timecode);
|
||||
QString GetFontAt(const rational &timecode);
|
||||
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::CreateWidget()
|
||||
@@ -64,7 +64,7 @@ public:
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::UpdateWidgetValue()
|
||||
*/
|
||||
virtual void UpdateWidgetValue(QWidget* widget, double timecode) override;
|
||||
virtual void UpdateWidgetValue(QWidget* widget, const rational& timecode) override;
|
||||
|
||||
private:
|
||||
/**
|
||||
|
||||
@@ -36,7 +36,7 @@ StringField::StringField(NodeIO* parent, bool rich_text) :
|
||||
SetValueAt(0, "");
|
||||
}
|
||||
|
||||
QString StringField::GetStringAt(double timecode)
|
||||
QString StringField::GetStringAt(const rational& timecode)
|
||||
{
|
||||
return GetValueAt(timecode).toString();
|
||||
}
|
||||
@@ -69,7 +69,7 @@ QWidget *StringField::CreateWidget(QWidget *existing)
|
||||
return text_edit;
|
||||
}
|
||||
|
||||
void StringField::UpdateWidgetValue(QWidget *widget, double timecode)
|
||||
void StringField::UpdateWidgetValue(QWidget *widget, const rational &timecode)
|
||||
{
|
||||
TextEditEx* text = static_cast<TextEditEx*>(widget);
|
||||
|
||||
|
||||
@@ -54,7 +54,7 @@ public:
|
||||
*
|
||||
* The string at this timecode
|
||||
*/
|
||||
QString GetStringAt(double timecode);
|
||||
QString GetStringAt(const rational &timecode);
|
||||
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::CreateWidget()
|
||||
@@ -66,7 +66,7 @@ public:
|
||||
/**
|
||||
* @brief Reimplementation of EffectField::UpdateWidgetValue()
|
||||
*/
|
||||
virtual void UpdateWidgetValue(QWidget* widget, double timecode) override;
|
||||
virtual void UpdateWidgetValue(QWidget* widget, const rational& timecode) override;
|
||||
private slots:
|
||||
/**
|
||||
* @brief Internal function connected to any QWidget made from CreateWidget() to update the value based on user input
|
||||
|
||||
@@ -117,7 +117,7 @@ OldEffectNodePtr RichTextEffect::Create(Clip *c)
|
||||
return std::make_shared<RichTextEffect>(c);
|
||||
}
|
||||
|
||||
void RichTextEffect::redraw(double timecode)
|
||||
void RichTextEffect::redraw(const rational &timecode)
|
||||
{
|
||||
QPainter p(&img);
|
||||
p.setRenderHint(QPainter::Antialiasing);
|
||||
@@ -144,7 +144,7 @@ void RichTextEffect::redraw(double timecode)
|
||||
|
||||
if (auto_scroll_dir != SCROLL_OFF) {
|
||||
double clip_length_secs = double(parent_clip->length()) / parent_clip->media_frame_rate();
|
||||
scroll_progress = (timecode - double(parent_clip->clip_in()) / parent_clip->media_frame_rate()) / clip_length_secs;
|
||||
scroll_progress = (timecode.ToDouble() - double(parent_clip->clip_in()) / parent_clip->media_frame_rate()) / clip_length_secs;
|
||||
}
|
||||
|
||||
if (auto_scroll_dir == SCROLL_OFF || auto_scroll_dir == SCROLL_LEFT || auto_scroll_dir == SCROLL_RIGHT) {
|
||||
@@ -221,5 +221,7 @@ void RichTextEffect::redraw(double timecode)
|
||||
|
||||
bool RichTextEffect::AlwaysUpdate()
|
||||
{
|
||||
return autoscroll->GetValueAt(Now()).toInt() != SCROLL_OFF;
|
||||
// FIXME
|
||||
//return autoscroll->GetValueAt(Now()).toInt() != SCROLL_OFF;
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ public:
|
||||
virtual olive::TrackType subtype() override;
|
||||
virtual OldEffectNodePtr Create(Clip *c) override;
|
||||
|
||||
virtual void redraw(double timecode) override;
|
||||
virtual void redraw(const rational& timecode) override;
|
||||
|
||||
protected:
|
||||
virtual bool AlwaysUpdate() override;
|
||||
|
||||
@@ -104,7 +104,7 @@ OldEffectNodePtr SolidEffect::Create(Clip *c)
|
||||
return std::make_shared<SolidEffect>(c);
|
||||
}
|
||||
|
||||
void SolidEffect::redraw(double timecode) {
|
||||
void SolidEffect::redraw(const rational &timecode) {
|
||||
int w = img.width();
|
||||
int h = img.height();
|
||||
int alpha = qRound(opacity_field->GetDoubleAt(timecode)*2.55);
|
||||
|
||||
@@ -44,7 +44,7 @@ public:
|
||||
virtual olive::TrackType subtype() override;
|
||||
virtual OldEffectNodePtr Create(Clip *c) override;
|
||||
|
||||
virtual void redraw(double timecode) override;
|
||||
virtual void redraw(const rational& timecode) override;
|
||||
|
||||
void SetType(SolidType type);
|
||||
private slots:
|
||||
|
||||
@@ -156,7 +156,7 @@ OldEffectNodePtr TextEffect::Create(Clip *c)
|
||||
return std::make_shared<TextEffect>(c);
|
||||
}
|
||||
|
||||
void TextEffect::redraw(double timecode) {
|
||||
void TextEffect::redraw(const rational &timecode) {
|
||||
if (size_val->GetDoubleAt(timecode) <= 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
virtual olive::TrackType subtype() override;
|
||||
virtual OldEffectNodePtr Create(Clip *c) override;
|
||||
|
||||
virtual void redraw(double timecode) override;
|
||||
virtual void redraw(const rational& timecode) override;
|
||||
private slots:
|
||||
void outline_enable(bool);
|
||||
void shadow_enable(bool);
|
||||
|
||||
@@ -110,18 +110,18 @@ OldEffectNodePtr TimecodeEffect::Create(Clip *c)
|
||||
}
|
||||
|
||||
|
||||
void TimecodeEffect::redraw(double timecode) {
|
||||
void TimecodeEffect::redraw(const rational &timecode) {
|
||||
Sequence* sequence = parent_clip->track()->sequence();
|
||||
|
||||
if (tc_select->GetValueAt(timecode).toBool()) {
|
||||
display_timecode = prepend_text->GetStringAt(timecode) + frame_to_timecode(sequence->playhead,
|
||||
olive::config.timecode_view,
|
||||
sequence->frame_rate());
|
||||
display_timecode = prepend_text->GetStringAt(timecode) + TimeToSMPTE(sequence->playhead,
|
||||
olive::config.timecode_view,
|
||||
sequence->frame_rate());
|
||||
} else {
|
||||
double media_rate = parent_clip->media_frame_rate();
|
||||
display_timecode = prepend_text->GetStringAt(timecode) + frame_to_timecode(qRound(timecode * media_rate),
|
||||
olive::config.timecode_view,
|
||||
media_rate);
|
||||
display_timecode = prepend_text->GetStringAt(timecode) + TimeToSMPTE(timecode,
|
||||
olive::config.timecode_view,
|
||||
media_rate);
|
||||
}
|
||||
img.fill(Qt::transparent);
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ public:
|
||||
virtual olive::TrackType subtype() override;
|
||||
virtual OldEffectNodePtr Create(Clip *c) override;
|
||||
|
||||
virtual void redraw(double timecode) override;
|
||||
virtual void redraw(const rational &timecode) override;
|
||||
DoubleInput* scale_val;
|
||||
ColorInput* color_val;
|
||||
ColorInput* color_bg_val;
|
||||
|
||||
+3
-1
@@ -24,6 +24,8 @@
|
||||
#include <QVariant>
|
||||
#include <QPointF>
|
||||
|
||||
#include "global/rational.h"
|
||||
|
||||
class EffectField;
|
||||
|
||||
class EffectKeyframe {
|
||||
@@ -31,7 +33,7 @@ public:
|
||||
EffectKeyframe();
|
||||
|
||||
int type;
|
||||
double time;
|
||||
rational time;
|
||||
QVariant data;
|
||||
|
||||
// only for bezier type
|
||||
|
||||
@@ -325,6 +325,7 @@ void OliveGlobal::save_recent_projects()
|
||||
|
||||
void OliveGlobal::PasteInternal(Sequence *s, bool insert)
|
||||
{
|
||||
/* FIXME: Broken, will probably need rewrite
|
||||
if (s == nullptr) {
|
||||
return;
|
||||
}
|
||||
@@ -457,6 +458,7 @@ void OliveGlobal::PasteInternal(Sequence *s, bool insert)
|
||||
update_ui(true);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
void OliveGlobal::EffectMenuAction(QAction *q)
|
||||
|
||||
+4
-2
@@ -46,7 +46,7 @@ bool frame_rate_is_droppable(double rate) {
|
||||
|| qFuzzyCompare(rate, 59.94));
|
||||
}
|
||||
|
||||
long timecode_to_frame(const QString& s, int view, double frame_rate) {
|
||||
long SMPTEToTime(const QString& s, int view, double frame_rate) {
|
||||
QList<QString> list = s.split(QRegExp("[:;]"));
|
||||
|
||||
if (view == olive::kTimecodeFrames || (list.size() == 1 && view != olive::kTimecodeMilliseconds)) {
|
||||
@@ -102,7 +102,9 @@ long timecode_to_frame(const QString& s, int view, double frame_rate) {
|
||||
return f;
|
||||
}
|
||||
|
||||
QString frame_to_timecode(long f, int view, double frame_rate) {
|
||||
QString TimeToSMPTE(const rational& time, int view, double frame_rate) {
|
||||
long f = qFloor(time.ToDouble()*frame_rate); // FIXME: Not sure if this should be Floor or Round
|
||||
|
||||
if (view == olive::kTimecodeFrames) {
|
||||
return QString::number(f);
|
||||
}
|
||||
|
||||
+4
-2
@@ -4,6 +4,8 @@
|
||||
#include <QString>
|
||||
#include <QtMath>
|
||||
|
||||
#include "global/rational.h"
|
||||
|
||||
class Clip;
|
||||
|
||||
/**
|
||||
@@ -131,7 +133,7 @@ int64_t seconds_to_timestamp(Clip* c, double seconds);
|
||||
int64_t playhead_to_timestamp(Clip *c, long playhead);
|
||||
|
||||
bool frame_rate_is_droppable(double rate);
|
||||
long timecode_to_frame(const QString& s, int view, double frame_rate);
|
||||
QString frame_to_timecode(long f, int view, double frame_rate);
|
||||
long SMPTEToTime(const QString& s, int view, double frame_rate);
|
||||
QString TimeToSMPTE(const rational &time, int view, double frame_rate);
|
||||
|
||||
#endif // TIMING_H
|
||||
|
||||
@@ -10,7 +10,7 @@ BoolInput::BoolInput(Node *parent, const QString& id, const QString& name, bool
|
||||
AddAcceptedNodeInput(olive::nodes::kBoolean);
|
||||
}
|
||||
|
||||
bool BoolInput::GetBoolAt(double timecode)
|
||||
bool BoolInput::GetBoolAt(const rational& timecode)
|
||||
{
|
||||
return static_cast<BoolField*>(Field(0))->GetBoolAt(timecode);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
*
|
||||
* The boolean value at this timecode
|
||||
*/
|
||||
bool GetBoolAt(double timecode);
|
||||
bool GetBoolAt(const rational &timecode);
|
||||
|
||||
signals:
|
||||
/**
|
||||
|
||||
@@ -8,7 +8,7 @@ ColorInput::ColorInput(Node *parent, const QString& id, const QString& name, boo
|
||||
AddAcceptedNodeInput(olive::nodes::kColor);
|
||||
}
|
||||
|
||||
QColor ColorInput::GetColorAt(double timecode)
|
||||
QColor ColorInput::GetColorAt(const rational& timecode)
|
||||
{
|
||||
return static_cast<ColorField*>(Field(0))->GetColorAt(timecode);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
*
|
||||
* The color value at this timecode
|
||||
*/
|
||||
QColor GetColorAt(double timecode);
|
||||
QColor GetColorAt(const rational &timecode);
|
||||
};
|
||||
|
||||
#endif // COLORINPUT_H
|
||||
|
||||
@@ -8,7 +8,7 @@ FontInput::FontInput(Node *parent, const QString& id, const QString& name, bool
|
||||
AddAcceptedNodeInput(olive::nodes::kFont);
|
||||
}
|
||||
|
||||
QString FontInput::GetFontAt(double timecode)
|
||||
QString FontInput::GetFontAt(const rational& timecode)
|
||||
{
|
||||
return static_cast<FontField*>(Field(0))->GetFontAt(timecode);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ public:
|
||||
*
|
||||
* The font family name at this timecode
|
||||
*/
|
||||
QString GetFontAt(double timecode);
|
||||
QString GetFontAt(const rational &timecode);
|
||||
};
|
||||
|
||||
#endif // FONTINPUT_H
|
||||
|
||||
@@ -8,7 +8,7 @@ StringInput::StringInput(Node *parent, const QString& id, const QString& name, b
|
||||
AddAcceptedNodeInput(olive::nodes::kString);
|
||||
}
|
||||
|
||||
QString StringInput::GetStringAt(double timecode)
|
||||
QString StringInput::GetStringAt(const rational& timecode)
|
||||
{
|
||||
return static_cast<StringField*>(Field(0))->GetStringAt(timecode);
|
||||
}
|
||||
|
||||
@@ -27,7 +27,7 @@ public:
|
||||
*
|
||||
* The string at this timecode
|
||||
*/
|
||||
QString GetStringAt(double timecode);
|
||||
QString GetStringAt(const rational &timecode);
|
||||
};
|
||||
|
||||
#endif // STRINGINPUT_H
|
||||
|
||||
+10
-10
@@ -84,7 +84,7 @@ DoubleInput::DoubleInput(Node *parent, const QString &id, const QString &name, b
|
||||
{
|
||||
}
|
||||
|
||||
double DoubleInput::GetDoubleAt(double timecode)
|
||||
double DoubleInput::GetDoubleAt(const rational& timecode)
|
||||
{
|
||||
return static_cast<DoubleField*>(Field(0))->GetDoubleAt(timecode);
|
||||
}
|
||||
@@ -94,12 +94,12 @@ Vec2Input::Vec2Input(Node *parent, const QString &id, const QString &name, bool
|
||||
{
|
||||
}
|
||||
|
||||
QVector2D Vec2Input::GetVector2DAt(double timecode)
|
||||
QVector2D Vec2Input::GetVector2DAt(const rational &timecode)
|
||||
{
|
||||
return GetValueAt(timecode).value<QVector2D>();
|
||||
}
|
||||
|
||||
QVariant Vec2Input::GetValueAt(double timecode)
|
||||
QVariant Vec2Input::GetValueAt(const rational &timecode)
|
||||
{
|
||||
QVector2D vec2;
|
||||
vec2.setX(static_cast<DoubleField*>(Field(0))->GetDoubleAt(timecode));
|
||||
@@ -113,7 +113,7 @@ QVariant Vec2Input::GetValueAt(double timecode)
|
||||
return vec2;
|
||||
}
|
||||
|
||||
void Vec2Input::SetValueAt(double timecode, const QVariant &value)
|
||||
void Vec2Input::SetValueAt(const rational &timecode, const QVariant &value)
|
||||
{
|
||||
QVector2D vec2 = value.value<QVector2D>();
|
||||
|
||||
@@ -126,12 +126,12 @@ Vec3Input::Vec3Input(Node *parent, const QString &id, const QString &name, bool
|
||||
{
|
||||
}
|
||||
|
||||
QVector3D Vec3Input::GetVector3DAt(double timecode)
|
||||
QVector3D Vec3Input::GetVector3DAt(const rational &timecode)
|
||||
{
|
||||
return GetValueAt(timecode).value<QVector3D>();
|
||||
}
|
||||
|
||||
QVariant Vec3Input::GetValueAt(double timecode)
|
||||
QVariant Vec3Input::GetValueAt(const rational &timecode)
|
||||
{
|
||||
QVector3D vec3;
|
||||
vec3.setX(static_cast<DoubleField*>(Field(0))->GetDoubleAt(timecode));
|
||||
@@ -147,7 +147,7 @@ QVariant Vec3Input::GetValueAt(double timecode)
|
||||
return vec3;
|
||||
}
|
||||
|
||||
void Vec3Input::SetValueAt(double timecode, const QVariant &value)
|
||||
void Vec3Input::SetValueAt(const rational &timecode, const QVariant &value)
|
||||
{
|
||||
QVector3D vec3 = value.value<QVector3D>();
|
||||
|
||||
@@ -161,12 +161,12 @@ Vec4Input::Vec4Input(Node *parent, const QString &id, const QString &name, bool
|
||||
{
|
||||
}
|
||||
|
||||
QVector4D Vec4Input::GetVector4DAt(double timecode)
|
||||
QVector4D Vec4Input::GetVector4DAt(const rational &timecode)
|
||||
{
|
||||
return GetValueAt(timecode).value<QVector4D>();
|
||||
}
|
||||
|
||||
QVariant Vec4Input::GetValueAt(double timecode)
|
||||
QVariant Vec4Input::GetValueAt(const rational &timecode)
|
||||
{
|
||||
QVector4D vec4;
|
||||
vec4.setX(static_cast<DoubleField*>(Field(0))->GetDoubleAt(timecode));
|
||||
@@ -184,7 +184,7 @@ QVariant Vec4Input::GetValueAt(double timecode)
|
||||
return vec4;
|
||||
}
|
||||
|
||||
void Vec4Input::SetValueAt(double timecode, const QVariant &value)
|
||||
void Vec4Input::SetValueAt(const rational &timecode, const QVariant &value)
|
||||
{
|
||||
QVector4D vec4 = value.value<QVector4D>();
|
||||
|
||||
|
||||
+10
-10
@@ -45,34 +45,34 @@ class DoubleInput : public VecInput
|
||||
public:
|
||||
DoubleInput(Node* parent, const QString& id, const QString& name, bool savable = true, bool keyframable = true);
|
||||
|
||||
double GetDoubleAt(double timecode);
|
||||
double GetDoubleAt(const rational &timecode);
|
||||
};
|
||||
|
||||
class Vec2Input : public VecInput {
|
||||
public:
|
||||
Vec2Input(Node* parent, const QString& id, const QString& name, bool savable = true, bool keyframable = true);
|
||||
|
||||
QVector2D GetVector2DAt(double timecode);
|
||||
virtual QVariant GetValueAt(double timecode) override;
|
||||
virtual void SetValueAt(double timecode, const QVariant &value) override;
|
||||
QVector2D GetVector2DAt(const rational& timecode);
|
||||
virtual QVariant GetValueAt(const rational& timecode) override;
|
||||
virtual void SetValueAt(const rational& timecode, const QVariant &value) override;
|
||||
};
|
||||
|
||||
class Vec3Input : public VecInput {
|
||||
public:
|
||||
Vec3Input(Node* parent, const QString& id, const QString& name, bool savable = true, bool keyframable = true);
|
||||
|
||||
QVector3D GetVector3DAt(double timecode);
|
||||
virtual QVariant GetValueAt(double timecode) override;
|
||||
virtual void SetValueAt(double timecode, const QVariant &value) override;
|
||||
QVector3D GetVector3DAt(const rational& timecode);
|
||||
virtual QVariant GetValueAt(const rational& timecode) override;
|
||||
virtual void SetValueAt(const rational& timecode, const QVariant &value) override;
|
||||
};
|
||||
|
||||
class Vec4Input : public VecInput {
|
||||
public:
|
||||
Vec4Input(Node* parent, const QString& id, const QString& name, bool savable = true, bool keyframable = true);
|
||||
|
||||
QVector4D GetVector4DAt(double timecode);
|
||||
virtual QVariant GetValueAt(double timecode) override;
|
||||
virtual void SetValueAt(double timecode, const QVariant &value) override;
|
||||
QVector4D GetVector4DAt(const rational& timecode);
|
||||
virtual QVariant GetValueAt(const rational& timecode) override;
|
||||
virtual void SetValueAt(const rational& timecode, const QVariant &value) override;
|
||||
};
|
||||
|
||||
#endif // VEC2INPUT_H
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ int Node::ParameterCount()
|
||||
return parameters_.size();
|
||||
}
|
||||
|
||||
double Node::Time()
|
||||
const rational& Node::Time()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
+1
-1
@@ -22,7 +22,7 @@ public:
|
||||
NodeIO* Parameter(int i);
|
||||
int ParameterCount();
|
||||
|
||||
double Time();
|
||||
const rational &Time();
|
||||
|
||||
NodeGraph* ParentGraph();
|
||||
|
||||
|
||||
+2
-2
@@ -141,7 +141,7 @@ QVariant NodeIO::GetValue()
|
||||
return GetValueAt(0);
|
||||
}
|
||||
|
||||
QVariant NodeIO::GetValueAt(double timecode)
|
||||
QVariant NodeIO::GetValueAt(const rational& timecode)
|
||||
{
|
||||
if (FieldCount() == 0) {
|
||||
return data_;
|
||||
@@ -157,7 +157,7 @@ void NodeIO::SetValue(const QVariant &value)
|
||||
SetValueAt(0, value);
|
||||
}
|
||||
|
||||
void NodeIO::SetValueAt(double timecode, const QVariant &value)
|
||||
void NodeIO::SetValueAt(const rational &timecode, const QVariant &value)
|
||||
{
|
||||
if (FieldCount() == 0) {
|
||||
data_ = value;
|
||||
|
||||
+3
-2
@@ -36,6 +36,7 @@ class ClickableLabel;
|
||||
|
||||
#include "effects/effectfields.h"
|
||||
#include "nodes/nodeedge.h"
|
||||
#include "global/rational.h"
|
||||
|
||||
/**
|
||||
* @brief The EffectRow class
|
||||
@@ -201,7 +202,7 @@ public:
|
||||
*
|
||||
* The value of the first EffectField at the given timecode
|
||||
*/
|
||||
virtual QVariant GetValueAt(double timecode);
|
||||
virtual QVariant GetValueAt(const rational &timecode);
|
||||
|
||||
/**
|
||||
* @brief Set value
|
||||
@@ -230,7 +231,7 @@ public:
|
||||
*
|
||||
* Value to set at this timecode
|
||||
*/
|
||||
virtual void SetValueAt(double timecode, const QVariant& value);
|
||||
virtual void SetValueAt(const rational& timecode, const QVariant& value);
|
||||
|
||||
/**
|
||||
* @brief Sets the enabled state on all EffectField objects on this row to enabled
|
||||
|
||||
+2
-12
@@ -796,17 +796,7 @@ bool OldEffectNode::are_gizmos_enabled() {
|
||||
return (gizmos.size() > 0);
|
||||
}
|
||||
|
||||
double OldEffectNode::Now()
|
||||
{
|
||||
return playhead_to_clip_seconds(parent_clip, parent_clip->track()->sequence()->playhead);
|
||||
}
|
||||
|
||||
long OldEffectNode::NowInFrames()
|
||||
{
|
||||
return playhead_to_clip_frame(parent_clip, parent_clip->track()->sequence()->playhead);
|
||||
}
|
||||
|
||||
void OldEffectNode::redraw(double) {
|
||||
void OldEffectNode::redraw(const rational &) {
|
||||
/*
|
||||
// run javascript
|
||||
QPainter p(&img);
|
||||
@@ -850,7 +840,7 @@ void OldEffectNode::redraw(double) {
|
||||
*/
|
||||
}
|
||||
|
||||
bool OldEffectNode::valueHasChanged(double timecode) {
|
||||
bool OldEffectNode::valueHasChanged(const rational &timecode) {
|
||||
if (cachedValues.isEmpty()) {
|
||||
|
||||
for (int i=0;i<ParameterCount();i++) {
|
||||
|
||||
+2
-26
@@ -179,30 +179,6 @@ public:
|
||||
void gizmo_world_to_screen(const QMatrix4x4 &matrix, const QMatrix4x4 &projection);
|
||||
bool are_gizmos_enabled();
|
||||
|
||||
/**
|
||||
* @brief Get the current clip/media time
|
||||
*
|
||||
* A convenience function that can be plugged into GetValueAt() to get the value wherever the appropriate Sequence's
|
||||
* playhead it.
|
||||
*
|
||||
* @return
|
||||
*
|
||||
* Current clip/media time in seconds.
|
||||
*/
|
||||
double Now();
|
||||
|
||||
/**
|
||||
* @brief Retrieve the current clip as a frame number
|
||||
*
|
||||
* Same as Now() but retrieves the value as a frame number (in the appropriate Sequence's frame rate) instead of
|
||||
* seconds.
|
||||
*
|
||||
* @return
|
||||
*
|
||||
* The current clip time in frames
|
||||
*/
|
||||
long NowInFrames();
|
||||
|
||||
template <typename T>
|
||||
T randomNumber()
|
||||
{
|
||||
@@ -267,8 +243,8 @@ private:
|
||||
|
||||
|
||||
// superimpose functions
|
||||
virtual void redraw(double timecode);
|
||||
bool valueHasChanged(double timecode);
|
||||
virtual void redraw(const rational& timecode);
|
||||
bool valueHasChanged(const rational& timecode);
|
||||
QVector<QVariant> cachedValues;
|
||||
void delete_texture();
|
||||
void validate_meta_path();
|
||||
|
||||
@@ -87,7 +87,8 @@ void EffectControls::set_zoom(bool in) {
|
||||
update_keyframes();
|
||||
|
||||
if (!selected_clips_.isEmpty()) {
|
||||
scroll_to_frame(selected_clips_.first()->track()->sequence()->playhead);
|
||||
// FIXME
|
||||
//scroll_to_frame(selected_clips_.first()->track()->sequence()->playhead);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+3
-2
@@ -129,6 +129,7 @@ bool Viewer::focused() {
|
||||
}
|
||||
|
||||
void Viewer::reset_all_audio() {
|
||||
/* FIXME: Entire audio system is being rewritten
|
||||
// reset all clip audio
|
||||
if (seq != nullptr) {
|
||||
long last_frame = 0;
|
||||
@@ -150,6 +151,7 @@ void Viewer::reset_all_audio() {
|
||||
audio_ibuffer_timecode = double(audio_ibuffer_frame) / seq->frame_rate();
|
||||
}
|
||||
clear_audio_ibuffer();
|
||||
*/
|
||||
}
|
||||
|
||||
void Viewer::seek(long p) {
|
||||
@@ -174,7 +176,6 @@ void Viewer::seek(long p) {
|
||||
|
||||
reset_all_audio();
|
||||
audio_scrub = true;
|
||||
last_playhead = seq->playhead;
|
||||
update_parents(update_fx);
|
||||
}
|
||||
|
||||
@@ -382,7 +383,7 @@ void Viewer::update_playhead_timecode(long p) {
|
||||
}
|
||||
|
||||
void Viewer::update_end_timecode() {
|
||||
end_timecode->setText((seq == nullptr) ? frame_to_timecode(0, olive::config.timecode_view, 30) : frame_to_timecode(seq->GetEndFrame(), olive::config.timecode_view, seq->frame_rate()));
|
||||
end_timecode->setText((seq == nullptr) ? TimeToSMPTE(0, olive::config.timecode_view, 30) : TimeToSMPTE(seq->GetEndFrame(), olive::config.timecode_view, seq->frame_rate()));
|
||||
}
|
||||
|
||||
void Viewer::update_header_zoom() {
|
||||
|
||||
@@ -144,7 +144,6 @@ private:
|
||||
QString panel_name;
|
||||
double minimum_zoom;
|
||||
bool playing_in_to_out;
|
||||
long last_playhead;
|
||||
void set_zoom_value(double d);
|
||||
void set_sb_max();
|
||||
void set_playback_speed(int s);
|
||||
|
||||
+2
-2
@@ -288,7 +288,7 @@ int Media::columnCount() const {
|
||||
QString Media::GetStringDuration() {
|
||||
if (get_type() == MEDIA_TYPE_SEQUENCE) {
|
||||
Sequence* s = to_sequence().get();
|
||||
return frame_to_timecode(s->GetEndFrame(), olive::config.timecode_view, s->frame_rate());
|
||||
return TimeToSMPTE(s->GetEndFrame(), olive::config.timecode_view, s->frame_rate());
|
||||
}
|
||||
if (get_type() == MEDIA_TYPE_FOOTAGE) {
|
||||
Footage* f = to_footage();
|
||||
@@ -298,7 +298,7 @@ QString Media::GetStringDuration() {
|
||||
r = f->video_tracks.at(0).video_frame_rate * f->speed;
|
||||
|
||||
long len = f->get_length_in_frames(r);
|
||||
if (len > 0) return frame_to_timecode(len, olive::config.timecode_view, r);
|
||||
if (len > 0) return TimeToSMPTE(len, olive::config.timecode_view, r);
|
||||
}
|
||||
return QString();
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
|
||||
#include <QCoreApplication>
|
||||
|
||||
#include "nodes/nodes/nodemedia.h"
|
||||
#include "nodes/nodes/nodevideoclip.h"
|
||||
#include "timelinefunctions.h"
|
||||
#include "panels/panels.h"
|
||||
#include "global/clipboard.h"
|
||||
@@ -310,6 +312,74 @@ void Sequence::AddClipsFromGhosts(ComboAction* ca, const QVector<Ghost>& ghosts)
|
||||
}
|
||||
|
||||
olive::timeline::snapped = false;
|
||||
|
||||
/* FIXME: Old Clip create code, should be removed but keeping for reference for the timebeing
|
||||
// add clips
|
||||
long earliest_point = LONG_MAX;
|
||||
QVector<ClipPtr> added_clips;
|
||||
for (int i=0;i<ghosts.size();i++) {
|
||||
const Ghost& g = ghosts.at(i);
|
||||
|
||||
earliest_point = qMin(earliest_point, g.in);
|
||||
|
||||
ClipPtr c = std::make_shared<Clip>(g.track->Sibling(g.track_movement));
|
||||
c->set_media(g.media, g.media_stream);
|
||||
c->set_timeline_in(g.in);
|
||||
c->set_timeline_out(g.out);
|
||||
c->set_clip_in(g.clip_in);
|
||||
if (c->media()->get_type() == MEDIA_TYPE_FOOTAGE) {
|
||||
Footage* m = c->media()->to_footage();
|
||||
if (m->video_tracks.size() == 0) {
|
||||
// audio only (greenish)
|
||||
c->set_color(128, 192, 128);
|
||||
} else if (m->audio_tracks.size() == 0) {
|
||||
// video only (orangeish)
|
||||
c->set_color(192, 160, 128);
|
||||
} else {
|
||||
// video and audio (blueish)
|
||||
c->set_color(128, 128, 192);
|
||||
}
|
||||
c->set_name(m->name);
|
||||
} else if (c->media()->get_type() == MEDIA_TYPE_SEQUENCE) {
|
||||
// sequence (red?ish?)
|
||||
c->set_color(192, 128, 128);
|
||||
|
||||
c->set_name(c->media()->to_sequence()->name());
|
||||
}
|
||||
c->refresh();
|
||||
added_clips.append(c);
|
||||
|
||||
}
|
||||
ca->append(new AddClipCommand(added_clips));
|
||||
|
||||
// link clips from the same media
|
||||
for (int i=0;i<added_clips.size();i++) {
|
||||
ClipPtr c = added_clips.at(i);
|
||||
for (int j=0;j<added_clips.size();j++) {
|
||||
ClipPtr cc = added_clips.at(j);
|
||||
if (c != cc && c->media() == cc->media()) {
|
||||
c->linked.append(cc.get());
|
||||
}
|
||||
}
|
||||
|
||||
if (olive::config.add_default_effects_to_clips) {
|
||||
if (c->type() == olive::kTypeVideo) {
|
||||
// add default video effects
|
||||
c->effects.append(olive::node_library[kTransformEffect]->Create(c.get()));
|
||||
} else if (c->type() == olive::kTypeAudio) {
|
||||
// add default audio effects
|
||||
c->effects.append(olive::node_library[kVolumeEffect]->Create(c.get()));
|
||||
c->effects.append(olive::node_library[kPanEffect]->Create(c.get()));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (olive::config.enable_seek_to_import) {
|
||||
panel_sequence_viewer->seek(earliest_point);
|
||||
}
|
||||
|
||||
olive::timeline::snapped = false;
|
||||
*/
|
||||
}
|
||||
|
||||
void Sequence::MoveClip(Clip *c, ComboAction *ca, long iin, long iout, long iclip_in, Track *itrack, bool verify_transitions, bool relative)
|
||||
|
||||
+1
-1
@@ -129,7 +129,7 @@ public:
|
||||
NodeIO* texture_io;
|
||||
// END TEST CODE
|
||||
|
||||
long playhead;
|
||||
rational playhead;
|
||||
|
||||
bool using_workarea;
|
||||
long workarea_in;
|
||||
|
||||
+24
-24
@@ -2023,118 +2023,118 @@ Audio Layout: %6</source>
|
||||
<translation>مقطع جديد</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="211"/>
|
||||
<source>Preset:</source>
|
||||
<translation>قالب:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="226"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="215"/>
|
||||
<source>Film 4K</source>
|
||||
<translation>فلم 4K</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="227"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="216"/>
|
||||
<source>TV 4K (Ultra HD/2160p)</source>
|
||||
<translation>4K تلفاز (أقصى-عالي الدقة/2160p)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="228"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="217"/>
|
||||
<source>1080p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="229"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="218"/>
|
||||
<source>720p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="230"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="219"/>
|
||||
<source>480p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="231"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="220"/>
|
||||
<source>360p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="232"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="221"/>
|
||||
<source>240p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<source>144p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="234"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="223"/>
|
||||
<source>NTSC (480i)</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="235"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="224"/>
|
||||
<source>PAL (576i)</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="236"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="225"/>
|
||||
<source>Custom</source>
|
||||
<translation>مخصوص</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="244"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<source>Video</source>
|
||||
<translation>فيديو</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="248"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="237"/>
|
||||
<source>Width:</source>
|
||||
<translation>العرض:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="254"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="243"/>
|
||||
<source>Height:</source>
|
||||
<translation>الطول:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="260"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="249"/>
|
||||
<source>Frame Rate:</source>
|
||||
<translation>معدل اﻹطارات:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="280"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="269"/>
|
||||
<source>Pixel Aspect Ratio:</source>
|
||||
<translatorcomment>للمراجعة</translatorcomment>
|
||||
<translation>معدل نسبة البيكسل:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="271"/>
|
||||
<source>Square Pixels (1.0)</source>
|
||||
<translation>بكسيل مربع (1.0)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="285"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="274"/>
|
||||
<source>Interlacing:</source>
|
||||
<translation>المشابكة:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="287"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="276"/>
|
||||
<source>None (Progressive)</source>
|
||||
<translation>لا شيء (متفاقم)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="293"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<source>Audio</source>
|
||||
<translation>الصوت</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="297"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="286"/>
|
||||
<source>Sample Rate: </source>
|
||||
<translation>معدل الإعتيان: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="315"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="304"/>
|
||||
<source>Name:</source>
|
||||
<translation>اﻷسم:</translation>
|
||||
</message>
|
||||
@@ -3384,7 +3384,7 @@ Seek quickly (may briefly show inaccurate frames when seeking - doesn't aff
|
||||
<context>
|
||||
<name>Sequence</name>
|
||||
<message>
|
||||
<location filename="../timeline/sequence.cpp" line="45"/>
|
||||
<location filename="../timeline/sequence.cpp" line="47"/>
|
||||
<source>%1 (copy)</source>
|
||||
<translation>%1 (نسخ)</translation>
|
||||
</message>
|
||||
|
||||
+24
-24
@@ -1828,117 +1828,117 @@ Audio Layout: %6</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="211"/>
|
||||
<source>Preset:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="226"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="215"/>
|
||||
<source>Film 4K</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="227"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="216"/>
|
||||
<source>TV 4K (Ultra HD/2160p)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="228"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="217"/>
|
||||
<source>1080p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="229"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="218"/>
|
||||
<source>720p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="230"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="219"/>
|
||||
<source>480p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="231"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="220"/>
|
||||
<source>360p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="232"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="221"/>
|
||||
<source>240p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<source>144p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="234"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="223"/>
|
||||
<source>NTSC (480i)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="235"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="224"/>
|
||||
<source>PAL (576i)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="236"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="225"/>
|
||||
<source>Custom</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="244"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<source>Video</source>
|
||||
<translation>Video</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="248"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="237"/>
|
||||
<source>Width:</source>
|
||||
<translation>Širina:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="254"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="243"/>
|
||||
<source>Height:</source>
|
||||
<translation>Visina:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="260"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="249"/>
|
||||
<source>Frame Rate:</source>
|
||||
<translation>Okvirna stopa:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="280"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="269"/>
|
||||
<source>Pixel Aspect Ratio:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="271"/>
|
||||
<source>Square Pixels (1.0)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="285"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="274"/>
|
||||
<source>Interlacing:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="287"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="276"/>
|
||||
<source>None (Progressive)</source>
|
||||
<translation>Nema (progresivno)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="293"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<source>Audio</source>
|
||||
<translation>Audio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="297"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="286"/>
|
||||
<source>Sample Rate: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="315"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="304"/>
|
||||
<source>Name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -3119,7 +3119,7 @@ Audio Layout: %6</source>
|
||||
<context>
|
||||
<name>Sequence</name>
|
||||
<message>
|
||||
<location filename="../timeline/sequence.cpp" line="45"/>
|
||||
<location filename="../timeline/sequence.cpp" line="47"/>
|
||||
<source>%1 (copy)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
||||
+24
-24
@@ -2040,121 +2040,121 @@ Audio Layout: %6</translation>
|
||||
<translation>Neue Sequenz</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="211"/>
|
||||
<source>Preset:</source>
|
||||
<translatorcomment>Could be also preset</translatorcomment>
|
||||
<translation>Vorgabe:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="226"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="215"/>
|
||||
<source>Film 4K</source>
|
||||
<translation>Film 4K</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="227"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="216"/>
|
||||
<source>TV 4K (Ultra HD/2160p)</source>
|
||||
<translation>TV 4K (Ultra HD/2160p)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="228"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="217"/>
|
||||
<source>1080p</source>
|
||||
<translation>1080p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="229"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="218"/>
|
||||
<source>720p</source>
|
||||
<translation>720p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="230"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="219"/>
|
||||
<source>480p</source>
|
||||
<translation>480p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="231"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="220"/>
|
||||
<source>360p</source>
|
||||
<translation>360p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="232"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="221"/>
|
||||
<source>240p</source>
|
||||
<translation>240p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<source>144p</source>
|
||||
<translation>144p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="234"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="223"/>
|
||||
<source>NTSC (480i)</source>
|
||||
<translation>NTSC (480i)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="235"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="224"/>
|
||||
<source>PAL (576i)</source>
|
||||
<translation>PAL (576i)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="236"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="225"/>
|
||||
<source>Custom</source>
|
||||
<translation>Benutzerdefiniert</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="244"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<source>Video</source>
|
||||
<translatorcomment>Same as in english</translatorcomment>
|
||||
<translation>Video</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="248"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="237"/>
|
||||
<source>Width:</source>
|
||||
<translation>Breite:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="254"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="243"/>
|
||||
<source>Height:</source>
|
||||
<translation>Höhe:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="260"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="249"/>
|
||||
<source>Frame Rate:</source>
|
||||
<translation>Bildrate:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="280"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="269"/>
|
||||
<source>Pixel Aspect Ratio:</source>
|
||||
<translation>Pixel-Seitenverhältnis:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="271"/>
|
||||
<source>Square Pixels (1.0)</source>
|
||||
<translation>Quadratische Pixel (1.0)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="285"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="274"/>
|
||||
<source>Interlacing:</source>
|
||||
<translatorcomment>Same as in english</translatorcomment>
|
||||
<translation>Interlacing:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="287"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="276"/>
|
||||
<source>None (Progressive)</source>
|
||||
<translation>Keine (Progressive)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="293"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<source>Audio</source>
|
||||
<translatorcomment>Same as in english</translatorcomment>
|
||||
<translation>Audio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="297"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="286"/>
|
||||
<source>Sample Rate: </source>
|
||||
<translation>Abtastrate:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="315"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="304"/>
|
||||
<source>Name:</source>
|
||||
<translation>Name:</translation>
|
||||
</message>
|
||||
@@ -3410,7 +3410,7 @@ Sucht schneller (kann kurzzeitig ungenaue Frame anzeigen - wirkt sich nicht auf
|
||||
<context>
|
||||
<name>Sequence</name>
|
||||
<message>
|
||||
<location filename="../timeline/sequence.cpp" line="45"/>
|
||||
<location filename="../timeline/sequence.cpp" line="47"/>
|
||||
<source>%1 (copy)</source>
|
||||
<translation>%1 (kopieren)</translation>
|
||||
</message>
|
||||
|
||||
+24
-24
@@ -1679,117 +1679,117 @@ Audio Layout: %6</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="211"/>
|
||||
<source>Preset:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="226"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="215"/>
|
||||
<source>Film 4K</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="227"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="216"/>
|
||||
<source>TV 4K (Ultra HD/2160p)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="228"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="217"/>
|
||||
<source>1080p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="229"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="218"/>
|
||||
<source>720p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="230"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="219"/>
|
||||
<source>480p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="231"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="220"/>
|
||||
<source>360p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="232"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="221"/>
|
||||
<source>240p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<source>144p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="234"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="223"/>
|
||||
<source>NTSC (480i)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="235"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="224"/>
|
||||
<source>PAL (576i)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="236"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="225"/>
|
||||
<source>Custom</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="244"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<source>Video</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="248"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="237"/>
|
||||
<source>Width:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="254"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="243"/>
|
||||
<source>Height:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="260"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="249"/>
|
||||
<source>Frame Rate:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="280"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="269"/>
|
||||
<source>Pixel Aspect Ratio:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="271"/>
|
||||
<source>Square Pixels (1.0)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="285"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="274"/>
|
||||
<source>Interlacing:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="287"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="276"/>
|
||||
<source>None (Progressive)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="293"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<source>Audio</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="297"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="286"/>
|
||||
<source>Sample Rate: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="315"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="304"/>
|
||||
<source>Name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -2970,7 +2970,7 @@ Audio Layout: %6</source>
|
||||
<context>
|
||||
<name>Sequence</name>
|
||||
<message>
|
||||
<location filename="../timeline/sequence.cpp" line="45"/>
|
||||
<location filename="../timeline/sequence.cpp" line="47"/>
|
||||
<source>%1 (copy)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
||||
+24
-24
@@ -2008,117 +2008,117 @@ Canaux audio : %6</translation>
|
||||
<translation>Nouvelle séquence</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="211"/>
|
||||
<source>Preset:</source>
|
||||
<translation>Préréglage :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="226"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="215"/>
|
||||
<source>Film 4K</source>
|
||||
<translation>Film 4K</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="227"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="216"/>
|
||||
<source>TV 4K (Ultra HD/2160p)</source>
|
||||
<translation>TV 4K (Ultra HD/2160p)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="228"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="217"/>
|
||||
<source>1080p</source>
|
||||
<translation>1080p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="229"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="218"/>
|
||||
<source>720p</source>
|
||||
<translation>720p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="230"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="219"/>
|
||||
<source>480p</source>
|
||||
<translation>480p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="231"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="220"/>
|
||||
<source>360p</source>
|
||||
<translation>360p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="232"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="221"/>
|
||||
<source>240p</source>
|
||||
<translation>240p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<source>144p</source>
|
||||
<translation>144p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="234"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="223"/>
|
||||
<source>NTSC (480i)</source>
|
||||
<translation>NTSC (480i)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="235"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="224"/>
|
||||
<source>PAL (576i)</source>
|
||||
<translation>PAL (576i)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="236"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="225"/>
|
||||
<source>Custom</source>
|
||||
<translation>Personnalisé</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="244"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<source>Video</source>
|
||||
<translation>Vidéo</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="248"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="237"/>
|
||||
<source>Width:</source>
|
||||
<translation>Largeur :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="254"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="243"/>
|
||||
<source>Height:</source>
|
||||
<translation>Hauteur :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="260"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="249"/>
|
||||
<source>Frame Rate:</source>
|
||||
<translation>Images par seconde :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="280"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="269"/>
|
||||
<source>Pixel Aspect Ratio:</source>
|
||||
<translation>Ratio des pixels :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="271"/>
|
||||
<source>Square Pixels (1.0)</source>
|
||||
<translation>Pixels carré (1,0)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="285"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="274"/>
|
||||
<source>Interlacing:</source>
|
||||
<translation>Entrelacement :</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="287"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="276"/>
|
||||
<source>None (Progressive)</source>
|
||||
<translation>Aucun (Progressif)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="293"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<source>Audio</source>
|
||||
<translation>Audio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="297"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="286"/>
|
||||
<source>Sample Rate: </source>
|
||||
<translation>Taux d'échantillonnage : </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="315"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="304"/>
|
||||
<source>Name:</source>
|
||||
<translation>Nom :</translation>
|
||||
</message>
|
||||
@@ -3362,7 +3362,7 @@ Montrer rapidement (la prévisualition peut montrer brièvement des images impr
|
||||
<context>
|
||||
<name>Sequence</name>
|
||||
<message>
|
||||
<location filename="../timeline/sequence.cpp" line="45"/>
|
||||
<location filename="../timeline/sequence.cpp" line="47"/>
|
||||
<source>%1 (copy)</source>
|
||||
<translation>%1 (copy)</translation>
|
||||
</message>
|
||||
|
||||
+24
-24
@@ -1869,117 +1869,117 @@ Tata Audio: %6</translation>
|
||||
<translation>Rangkaian Baru</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="211"/>
|
||||
<source>Preset:</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="226"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="215"/>
|
||||
<source>Film 4K</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="227"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="216"/>
|
||||
<source>TV 4K (Ultra HD/2160p)</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="228"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="217"/>
|
||||
<source>1080p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="229"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="218"/>
|
||||
<source>720p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="230"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="219"/>
|
||||
<source>480p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="231"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="220"/>
|
||||
<source>360p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="232"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="221"/>
|
||||
<source>240p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<source>144p</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="234"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="223"/>
|
||||
<source>NTSC (480i)</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="235"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="224"/>
|
||||
<source>PAL (576i)</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="236"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="225"/>
|
||||
<source>Custom</source>
|
||||
<translation>Kustom</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="244"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<source>Video</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="248"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="237"/>
|
||||
<source>Width:</source>
|
||||
<translation>Lebar:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="254"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="243"/>
|
||||
<source>Height:</source>
|
||||
<translation>Tinggi:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="260"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="249"/>
|
||||
<source>Frame Rate:</source>
|
||||
<translation>Laju frame (fps):</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="280"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="269"/>
|
||||
<source>Pixel Aspect Ratio:</source>
|
||||
<translation>Rasio aspek piksel:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="271"/>
|
||||
<source>Square Pixels (1.0)</source>
|
||||
<translation>Persegi (1.0)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="285"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="274"/>
|
||||
<source>Interlacing:</source>
|
||||
<translation>Mode interlace:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="287"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="276"/>
|
||||
<source>None (Progressive)</source>
|
||||
<translation>Tidak ada (Progresif)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="293"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<source>Audio</source>
|
||||
<translation></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="297"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="286"/>
|
||||
<source>Sample Rate: </source>
|
||||
<translation>Laju sampel: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="315"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="304"/>
|
||||
<source>Name:</source>
|
||||
<translation>Nama:</translation>
|
||||
</message>
|
||||
@@ -3220,7 +3220,7 @@ Tampilkan frame dengan cepat (dapat menampilkan frame yang salah ketika menggese
|
||||
<context>
|
||||
<name>Sequence</name>
|
||||
<message>
|
||||
<location filename="../timeline/sequence.cpp" line="45"/>
|
||||
<location filename="../timeline/sequence.cpp" line="47"/>
|
||||
<source>%1 (copy)</source>
|
||||
<translation>%1 (salinan)</translation>
|
||||
</message>
|
||||
|
||||
+24
-24
@@ -1862,117 +1862,117 @@ Disposizione audio: %6</translation>
|
||||
<translation>Nuova sequenza</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="211"/>
|
||||
<source>Preset:</source>
|
||||
<translation>Preimpostazioni:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="226"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="215"/>
|
||||
<source>Film 4K</source>
|
||||
<translation>Film 4K</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="227"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="216"/>
|
||||
<source>TV 4K (Ultra HD/2160p)</source>
|
||||
<translation>TV 4K (Ultra HD/2160p)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="228"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="217"/>
|
||||
<source>1080p</source>
|
||||
<translation>1080p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="229"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="218"/>
|
||||
<source>720p</source>
|
||||
<translation>720p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="230"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="219"/>
|
||||
<source>480p</source>
|
||||
<translation>480p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="231"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="220"/>
|
||||
<source>360p</source>
|
||||
<translation>360p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="232"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="221"/>
|
||||
<source>240p</source>
|
||||
<translation>240p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<source>144p</source>
|
||||
<translation>144p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="234"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="223"/>
|
||||
<source>NTSC (480i)</source>
|
||||
<translation>NTSC (480i)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="235"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="224"/>
|
||||
<source>PAL (576i)</source>
|
||||
<translation>PAL (576i)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="236"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="225"/>
|
||||
<source>Custom</source>
|
||||
<translation>Personalizzato</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="244"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<source>Video</source>
|
||||
<translation>Video</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="248"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="237"/>
|
||||
<source>Width:</source>
|
||||
<translation>Larghezza:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="254"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="243"/>
|
||||
<source>Height:</source>
|
||||
<translation>Altezza:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="260"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="249"/>
|
||||
<source>Frame Rate:</source>
|
||||
<translation>Velocità fotogrammi:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="280"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="269"/>
|
||||
<source>Pixel Aspect Ratio:</source>
|
||||
<translation>Proporzioni dei pixel:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="271"/>
|
||||
<source>Square Pixels (1.0)</source>
|
||||
<translation>Pixel quadrati (1.0)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="285"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="274"/>
|
||||
<source>Interlacing:</source>
|
||||
<translation>Interlacciamento:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="287"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="276"/>
|
||||
<source>None (Progressive)</source>
|
||||
<translation>Nessuno (progressivo)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="293"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<source>Audio</source>
|
||||
<translation>Audio</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="297"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="286"/>
|
||||
<source>Sample Rate: </source>
|
||||
<translation>Frequenza di campionamento: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="315"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="304"/>
|
||||
<source>Name:</source>
|
||||
<translation>Nome:</translation>
|
||||
</message>
|
||||
@@ -3211,7 +3211,7 @@ Sposta velocemente il cursore (potrebbe mostrare fotogrammi non perfettamente ac
|
||||
<context>
|
||||
<name>Sequence</name>
|
||||
<message>
|
||||
<location filename="../timeline/sequence.cpp" line="45"/>
|
||||
<location filename="../timeline/sequence.cpp" line="47"/>
|
||||
<source>%1 (copy)</source>
|
||||
<translation>%1 (copia)</translation>
|
||||
</message>
|
||||
|
||||
+24
-24
@@ -1759,117 +1759,117 @@ Audio Layout: %6</source>
|
||||
<translation>Новая последовательность</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="211"/>
|
||||
<source>Preset:</source>
|
||||
<translation>Предстановка:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="226"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="215"/>
|
||||
<source>Film 4K</source>
|
||||
<translation>Кино 4К</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="227"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="216"/>
|
||||
<source>TV 4K (Ultra HD/2160p)</source>
|
||||
<translation>TV 4K (Ultra HD/2160p)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="228"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="217"/>
|
||||
<source>1080p</source>
|
||||
<translation>1080p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="229"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="218"/>
|
||||
<source>720p</source>
|
||||
<translation>720p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="230"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="219"/>
|
||||
<source>480p</source>
|
||||
<translation>480p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="231"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="220"/>
|
||||
<source>360p</source>
|
||||
<translation>360p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="232"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="221"/>
|
||||
<source>240p</source>
|
||||
<translation>240p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<source>144p</source>
|
||||
<translation>144p</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="234"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="223"/>
|
||||
<source>NTSC (480i)</source>
|
||||
<translation>NTSC (480i)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="235"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="224"/>
|
||||
<source>PAL (576i)</source>
|
||||
<translation>PAL (576i)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="236"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="225"/>
|
||||
<source>Custom</source>
|
||||
<translation>Другое</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="244"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<source>Video</source>
|
||||
<translation>Видео</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="248"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="237"/>
|
||||
<source>Width:</source>
|
||||
<translation>Ширина:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="254"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="243"/>
|
||||
<source>Height:</source>
|
||||
<translation>Высота:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="260"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="249"/>
|
||||
<source>Frame Rate:</source>
|
||||
<translation>Частота кадров:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="280"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="269"/>
|
||||
<source>Pixel Aspect Ratio:</source>
|
||||
<translation>Соотношение сторон пикселя:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="271"/>
|
||||
<source>Square Pixels (1.0)</source>
|
||||
<translation>Квадратные пиксели (1.0)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="285"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="274"/>
|
||||
<source>Interlacing:</source>
|
||||
<translation>Чересстрочность:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="287"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="276"/>
|
||||
<source>None (Progressive)</source>
|
||||
<translation>Нет (прогрессивно)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="293"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<source>Audio</source>
|
||||
<translation>Звук</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="297"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="286"/>
|
||||
<source>Sample Rate: </source>
|
||||
<translation>Частота дискретизации: </translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="315"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="304"/>
|
||||
<source>Name:</source>
|
||||
<translation>Название:</translation>
|
||||
</message>
|
||||
@@ -3086,7 +3086,7 @@ Audio Layout: %6</source>
|
||||
<context>
|
||||
<name>Sequence</name>
|
||||
<message>
|
||||
<location filename="../timeline/sequence.cpp" line="45"/>
|
||||
<location filename="../timeline/sequence.cpp" line="47"/>
|
||||
<source>%1 (copy)</source>
|
||||
<translation>%1 (копия)</translation>
|
||||
</message>
|
||||
|
||||
+24
-24
@@ -1815,117 +1815,117 @@ Audio Layout: %6</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="211"/>
|
||||
<source>Preset:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="226"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="215"/>
|
||||
<source>Film 4K</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="227"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="216"/>
|
||||
<source>TV 4K (Ultra HD/2160p)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="228"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="217"/>
|
||||
<source>1080p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="229"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="218"/>
|
||||
<source>720p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="230"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="219"/>
|
||||
<source>480p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="231"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="220"/>
|
||||
<source>360p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="232"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="221"/>
|
||||
<source>240p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="222"/>
|
||||
<source>144p</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="234"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="223"/>
|
||||
<source>NTSC (480i)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="235"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="224"/>
|
||||
<source>PAL (576i)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="236"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="225"/>
|
||||
<source>Custom</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="244"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="233"/>
|
||||
<source>Video</source>
|
||||
<translation>Видео</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="248"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="237"/>
|
||||
<source>Width:</source>
|
||||
<translation>Ширина:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="254"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="243"/>
|
||||
<source>Height:</source>
|
||||
<translation>Висина:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="260"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="249"/>
|
||||
<source>Frame Rate:</source>
|
||||
<translation>Оквирна стопа:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="280"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="269"/>
|
||||
<source>Pixel Aspect Ratio:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="271"/>
|
||||
<source>Square Pixels (1.0)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="285"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="274"/>
|
||||
<source>Interlacing:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="287"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="276"/>
|
||||
<source>None (Progressive)</source>
|
||||
<translation>Нема (прогресивно)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="293"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="282"/>
|
||||
<source>Audio</source>
|
||||
<translation>Аудио</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="297"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="286"/>
|
||||
<source>Sample Rate: </source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="315"/>
|
||||
<location filename="../dialogs/newsequencedialog.cpp" line="304"/>
|
||||
<source>Name:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
@@ -3106,7 +3106,7 @@ Audio Layout: %6</source>
|
||||
<context>
|
||||
<name>Sequence</name>
|
||||
<message>
|
||||
<location filename="../timeline/sequence.cpp" line="45"/>
|
||||
<location filename="../timeline/sequence.cpp" line="47"/>
|
||||
<source>%1 (copy)</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
|
||||
+2
-2
@@ -94,7 +94,7 @@ QString LabelSlider::ValueToString() {
|
||||
} else {
|
||||
switch (display_type) {
|
||||
case FrameNumber:
|
||||
return frame_to_timecode(long(v), olive::config.timecode_view, frame_rate);
|
||||
return TimeToSMPTE(long(v), olive::config.timecode_view, frame_rate);
|
||||
case Percent:
|
||||
return QString::number((v*100), 'f', decimal_places).append("%");
|
||||
case Decibel:
|
||||
@@ -311,7 +311,7 @@ void LabelSlider::ShowDialog()
|
||||
if (s.isEmpty()) return;
|
||||
|
||||
// parse string timecode to a frame number
|
||||
d = timecode_to_frame(s, olive::config.timecode_view, frame_rate);
|
||||
d = SMPTEToTime(s, olive::config.timecode_view, frame_rate);
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
@@ -59,9 +59,7 @@ void TimelineArea::SetTrackType(Sequence *sequence, olive::TrackType track_type)
|
||||
type_ = track_type;
|
||||
|
||||
if (sequence_ != nullptr) {
|
||||
|
||||
connect(sequence_, SIGNAL(NodeGraphChanged()), this, SLOT(RefreshLabels()));
|
||||
|
||||
}
|
||||
|
||||
RefreshLabels();
|
||||
|
||||
@@ -389,7 +389,7 @@ void TimelineHeader::paintEvent(QPaintEvent*) {
|
||||
// draw text
|
||||
bool draw_text = false;
|
||||
if (text_enabled && lineX-textWidth > lastTextBoundary) {
|
||||
timecode = frame_to_timecode(frame + in_visible, olive::config.timecode_view, viewer->seq->frame_rate());
|
||||
timecode = TimeToSMPTE(frame + in_visible, olive::config.timecode_view, viewer->seq->frame_rate());
|
||||
fullTextWidth = fm.width(timecode);
|
||||
textWidth = fullTextWidth>>1;
|
||||
|
||||
|
||||
+6
-6
@@ -210,9 +210,9 @@ void TimelineView::tooltip_timer_timeout() {
|
||||
QToolTip::showText(QCursor::pos(),
|
||||
tr("%1\nStart: %2\nEnd: %3\nDuration: %4").arg(
|
||||
tooltip_clip->name(),
|
||||
frame_to_timecode(tooltip_clip->timeline_in(), olive::config.timecode_view, sequence()->frame_rate()),
|
||||
frame_to_timecode(tooltip_clip->timeline_out(), olive::config.timecode_view, sequence()->frame_rate()),
|
||||
frame_to_timecode(tooltip_clip->length(), olive::config.timecode_view, sequence()->frame_rate())
|
||||
TimeToSMPTE(tooltip_clip->timeline_in(), olive::config.timecode_view, sequence()->frame_rate()),
|
||||
TimeToSMPTE(tooltip_clip->timeline_out(), olive::config.timecode_view, sequence()->frame_rate()),
|
||||
TimeToSMPTE(tooltip_clip->length(), olive::config.timecode_view, sequence()->frame_rate())
|
||||
));
|
||||
}
|
||||
|
||||
@@ -1988,9 +1988,9 @@ void TimelineView::update_ghosts(const QPoint& mouse_pos, bool lock_frame) {
|
||||
*/
|
||||
|
||||
if (ParentTimeline()->importing) {
|
||||
QToolTip::showText(mapToGlobal(mouse_pos), frame_to_timecode(earliest_in_point, olive::config.timecode_view, sequence()->frame_rate()));
|
||||
QToolTip::showText(mapToGlobal(mouse_pos), TimeToSMPTE(earliest_in_point, olive::config.timecode_view, sequence()->frame_rate()));
|
||||
} else {
|
||||
QString tip = ((frame_diff < 0) ? "-" : "+") + frame_to_timecode(qAbs(frame_diff), olive::config.timecode_view, sequence()->frame_rate());
|
||||
QString tip = ((frame_diff < 0) ? "-" : "+") + TimeToSMPTE(qAbs(frame_diff), olive::config.timecode_view, sequence()->frame_rate());
|
||||
|
||||
if (ParentTimeline()->trim_target != nullptr) {
|
||||
// find which clip is being moved
|
||||
@@ -2010,7 +2010,7 @@ void TimelineView::update_ghosts(const QPoint& mouse_pos, bool lock_frame) {
|
||||
} else {
|
||||
len += frame_diff;
|
||||
}
|
||||
tip += frame_to_timecode(len, olive::config.timecode_view, sequence()->frame_rate());
|
||||
tip += TimeToSMPTE(len, olive::config.timecode_view, sequence()->frame_rate());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user