26 #include <MltFilter.h> 27 #include <MltProducer.h> 28 #include <MltAnimation.h> 30 #include "qmlmetadata.h" 31 #include "shotcut_mlt_properties.h" 35 class QmlFilter :
public QObject
38 Q_PROPERTY(
bool isNew READ isNew)
39 Q_PROPERTY(QString path READ path)
40 Q_PROPERTY(QStringList presets READ presets NOTIFY presetsChanged)
41 Q_PROPERTY(
int in READ in WRITE setIn NOTIFY inChanged)
42 Q_PROPERTY(
int out READ out WRITE setOut NOTIFY outChanged)
43 Q_PROPERTY(
int animateIn READ animateIn WRITE setAnimateIn NOTIFY animateInChanged)
44 Q_PROPERTY(
int animateOut READ animateOut WRITE setAnimateOut NOTIFY animateOutChanged)
45 Q_PROPERTY(
int duration READ duration NOTIFY durationChanged)
46 Q_PROPERTY(
bool blockSignals WRITE blockSignals)
59 explicit QmlFilter(Mlt::Filter& mltFilter,
const QmlMetadata* metadata, QObject *parent = 0);
62 bool isNew()
const {
return m_isNew; }
63 void setIsNew(
bool isNew) { m_isNew = isNew; }
65 Q_INVOKABLE QString get(QString name,
int position = -1);
66 Q_INVOKABLE
double getDouble(QString name,
int position = -1);
67 Q_INVOKABLE QRectF getRect(QString name,
int position = -1);
68 Q_INVOKABLE
void set(QString name, QString value,
int position = -1);
69 Q_INVOKABLE
void set(QString name,
double value,
70 int position = -1, mlt_keyframe_type keyframeType = mlt_keyframe_type(-1));
71 Q_INVOKABLE
void set(QString name,
int value,
72 int position = -1, mlt_keyframe_type keyframeType = mlt_keyframe_type(-1));
73 Q_INVOKABLE
void set(QString name,
bool value,
74 int position = -1, mlt_keyframe_type keyframeType = mlt_keyframe_type(-1));
75 Q_INVOKABLE
void set(QString name,
double x,
double y,
double width,
double height,
double opacity = 1.0,
76 int position = -1, mlt_keyframe_type keyframeType = mlt_keyframe_type(-1));
77 Q_INVOKABLE
void set(QString name,
const QRectF& rect,
double opacity = 1.0,
78 int position = -1, mlt_keyframe_type keyframeType = mlt_keyframe_type(-1));
79 QString path()
const {
return m_path; }
80 Q_INVOKABLE
void loadPresets();
81 QStringList presets()
const {
return m_presets; }
83 Q_INVOKABLE
int savePreset(
const QStringList& propertyNames,
const QString& name = QString());
84 Q_INVOKABLE
void deletePreset(
const QString& name);
85 Q_INVOKABLE
void analyze(
bool isAudio =
false);
86 Q_INVOKABLE
static int framesFromTime(
const QString& time);
87 Q_INVOKABLE
static QString timeFromFrames(
int frames, TimeFormat format = TIME_TIMECODE_DF);
88 Q_INVOKABLE
void getHash();
89 Mlt::Producer& producer() {
return m_producer; }
91 void setIn(
int value);
93 void setOut(
int value);
94 Mlt::Filter& filter() {
return m_filter; }
96 void setAnimateIn(
int value);
98 void setAnimateOut(
int value);
100 Q_INVOKABLE
void resetProperty(
const QString& name);
101 Q_INVOKABLE
void clearSimpleAnimation(
const QString& name);
102 Mlt::Animation getAnimation(
const QString& name);
103 Q_INVOKABLE
int keyframeCount(
const QString& name);
106 void preset(
const QString& name);
109 void presetsChanged();
110 void analyzeFinished(
bool isSuccess);
112 void changed(QString name);
113 void inChanged(
int delta);
114 void outChanged(
int delta);
115 void animateInChanged();
116 void animateOutChanged();
117 void durationChanged();
120 const QmlMetadata* m_metadata;
121 Mlt::Filter m_filter;
122 Mlt::Producer m_producer;
125 QStringList m_presets;
127 QString objectNameOrService();
128 int keyframeIndex(Mlt::Animation& animation,
int position);
129 mlt_keyframe_type getKeyframeType(Mlt::Animation& animation,
int position, mlt_keyframe_type defaultType = mlt_keyframe_linear);
132 class AnalyzeDelegate :
public QObject
136 explicit AnalyzeDelegate(Mlt::Filter& filter);
139 void onAnalyzeFinished(AbstractJob *job,
bool isSuccess);
142 Mlt::Filter m_filter;