27#include <MltService.h>
28#include <MltProducer.h>
29#include <MltAnimation.h>
31#include "qmlmetadata.h"
32#include "shotcut_mlt_properties.h"
37class QmlFilter :
public QObject
40 Q_PROPERTY(
bool isNew READ isNew)
41 Q_PROPERTY(QString path READ path)
42 Q_PROPERTY(QStringList presets READ presets NOTIFY presetsChanged)
43 Q_PROPERTY(
int in READ in NOTIFY inChanged)
44 Q_PROPERTY(
int out READ out NOTIFY outChanged)
45 Q_PROPERTY(
int animateIn READ animateIn WRITE setAnimateIn NOTIFY animateInChanged)
46 Q_PROPERTY(
int animateOut READ animateOut WRITE setAnimateOut NOTIFY animateOutChanged)
47 Q_PROPERTY(
int duration READ duration NOTIFY durationChanged)
48 Q_PROPERTY(
bool blockSignals READ signalsBlocked WRITE blockSignals)
59 enum CurrentFilterIndex {
61 DeselectCurrentFilter = -2
63 Q_ENUM(CurrentFilterIndex)
66 explicit QmlFilter(Mlt::Service &mltService,
const QmlMetadata *metadata,
67 QObject *parent =
nullptr);
74 void setIsNew(
bool isNew)
79 Q_INVOKABLE QString get(QString name,
int position = -1);
80 Q_INVOKABLE QColor getColor(QString name,
int position = -1);
81 Q_INVOKABLE
double getDouble(QString name,
int position = -1);
82 Q_INVOKABLE QRectF getRect(QString name,
int position = -1);
83 Q_INVOKABLE
void removeRectPercents(QString name);
84 Q_INVOKABLE QStringList getGradient(QString name);
85 Q_INVOKABLE
void set(QString name, QString value,
int position = -1);
86 Q_INVOKABLE
void set(QString name,
const QColor &value,
87 int position = -1, mlt_keyframe_type keyframeType = mlt_keyframe_type(-1));
88 Q_INVOKABLE
void set(QString name,
double value,
89 int position = -1, mlt_keyframe_type keyframeType = mlt_keyframe_type(-1));
90 Q_INVOKABLE
void set(QString name,
int value,
91 int position = -1, mlt_keyframe_type keyframeType = mlt_keyframe_type(-1));
92 Q_INVOKABLE
void set(QString name,
bool value,
93 int position = -1, mlt_keyframe_type keyframeType = mlt_keyframe_type(-1));
94 Q_INVOKABLE
void set(QString name,
double x,
double y,
double width,
double height,
96 int position = -1, mlt_keyframe_type keyframeType = mlt_keyframe_type(-1));
97 Q_INVOKABLE
void set(QString name,
const QRectF &rect,
98 int position = -1, mlt_keyframe_type keyframeType = mlt_keyframe_type(-1));
99 Q_INVOKABLE
void setGradient(QString name,
const QStringList &gradient);
104 Q_INVOKABLE
void loadPresets();
105 QStringList presets()
const
110 Q_INVOKABLE
int savePreset(
const QStringList &propertyNames,
const QString &name = QString());
111 Q_INVOKABLE
void deletePreset(
const QString &name);
112 Q_INVOKABLE
void analyze(
bool isAudio =
false,
bool deferJob =
true);
113 Q_INVOKABLE
static int framesFromTime(
const QString &time);
114 Q_INVOKABLE
static QString timeFromFrames(
int frames, TimeFormat format = TIME_TIMECODE_DF);
115 Q_INVOKABLE
void getHash();
116 Mlt::Producer &producer()
122 Mlt::Service &service()
127 void setAnimateIn(
int value);
129 void setAnimateOut(
int value);
130 void clearAnimateInOut();
132 Q_INVOKABLE
void resetProperty(
const QString &name);
133 Q_INVOKABLE
void clearSimpleAnimation(
const QString &name);
134 Mlt::Animation getAnimation(
const QString &name);
135 Q_INVOKABLE
int keyframeCount(
const QString &name);
136 mlt_keyframe_type getKeyframeType(Mlt::Animation &animation,
int position,
137 mlt_keyframe_type defaultType);
138 Q_INVOKABLE
int getNextKeyframePosition(
const QString &name,
int position);
139 Q_INVOKABLE
int getPrevKeyframePosition(
const QString &name,
int position);
140 Q_INVOKABLE
bool isAtLeastVersion(
const QString &version);
141 Q_INVOKABLE
static void deselect();
142 bool allowTrim()
const;
143 bool allowAnimateIn()
const;
144 bool allowAnimateOut()
const;
147 void preset(
const QString &name);
150 void presetsChanged();
151 void analyzeFinished(
bool isSuccess);
152 void changed(QString name = QString());
153 void inChanged(
int delta);
154 void outChanged(
int delta);
155 void animateInChanged();
156 void animateOutChanged();
157 void animateInOutChanged();
158 void durationChanged();
159 void propertyChanged(QString name);
162 const QmlMetadata *m_metadata;
163 Mlt::Service m_service;
164 Mlt::Producer m_producer;
167 QStringList m_presets;
169 QString objectNameOrService();
170 int keyframeIndex(Mlt::Animation &animation,
int position);
173class AnalyzeDelegate :
public QObject
177 explicit AnalyzeDelegate(Mlt::Filter &filter);
180 void onAnalyzeFinished(AbstractJob *job,
bool isSuccess);
183 QString resultsFromXml(
const QString &fileName);
184 void updateFilter(Mlt::Filter &filter,
const QString &results);
185 void updateJob(EncodeJob *job,
const QString &results);