began work setting several timings to use rational rather than long/double

This commit is contained in:
itsmattkc
2019-06-16 15:13:53 -07:00
parent 0acee942f4
commit 771572f65b
63 changed files with 448 additions and 397 deletions
+38 -29
View File
@@ -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;
+5 -4
View File
@@ -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
+4 -9
View File
@@ -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);
+2 -2
View File
@@ -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()
+2 -2
View File
@@ -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);
+2 -2
View File
@@ -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()
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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:
/**
+6 -6
View File
@@ -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()
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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);
+2 -2
View File
@@ -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
+2 -2
View File
@@ -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);
+2 -2
View File
@@ -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:
/**
+2 -2
View File
@@ -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);
+2 -2
View File
@@ -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
+5 -3
View File
@@ -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;
}
+1 -1
View File
@@ -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;
+1 -1
View File
@@ -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);
+1 -1
View File
@@ -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:
+1 -1
View File
@@ -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;
}
+1 -1
View File
@@ -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);
+7 -7
View File
@@ -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);
+1 -1
View File
@@ -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
View File
@@ -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
+2
View File
@@ -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
View File
@@ -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
View File
@@ -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
+1 -1
View File
@@ -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);
}
+1 -1
View File
@@ -22,7 +22,7 @@ public:
*
* The boolean value at this timecode
*/
bool GetBoolAt(double timecode);
bool GetBoolAt(const rational &timecode);
signals:
/**
+1 -1
View File
@@ -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);
}
+1 -1
View File
@@ -22,7 +22,7 @@ public:
*
* The color value at this timecode
*/
QColor GetColorAt(double timecode);
QColor GetColorAt(const rational &timecode);
};
#endif // COLORINPUT_H
+1 -1
View File
@@ -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);
}
+1 -1
View File
@@ -22,7 +22,7 @@ public:
*
* The font family name at this timecode
*/
QString GetFontAt(double timecode);
QString GetFontAt(const rational &timecode);
};
#endif // FONTINPUT_H
+1 -1
View File
@@ -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);
}
+1 -1
View File
@@ -27,7 +27,7 @@ public:
*
* The string at this timecode
*/
QString GetStringAt(double timecode);
QString GetStringAt(const rational &timecode);
};
#endif // STRINGINPUT_H
+10 -10
View File
@@ -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
View File
@@ -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
View File
@@ -38,7 +38,7 @@ int Node::ParameterCount()
return parameters_.size();
}
double Node::Time()
const rational& Node::Time()
{
return 0;
}
+1 -1
View File
@@ -22,7 +22,7 @@ public:
NodeIO* Parameter(int i);
int ParameterCount();
double Time();
const rational &Time();
NodeGraph* ParentGraph();
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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();
+2 -1
View File
@@ -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
View File
@@ -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() {
-1
View File
@@ -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
View File
@@ -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();
}
+70
View File
@@ -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
View File
@@ -129,7 +129,7 @@ public:
NodeIO* texture_io;
// END TEST CODE
long playhead;
rational playhead;
bool using_workarea;
long workarea_in;
+24 -24
View File
@@ -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&apos;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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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&apos;é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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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 {
-2
View File
@@ -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();
+1 -1
View File
@@ -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
View File
@@ -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());
}
}