]> git.sesse.net Git - kdenlive/blobdiff - src/effectslist.h
Integrate with the required MLT hooks for getting Movit to work.
[kdenlive] / src / effectslist.h
index b30c2ee2a9b04b09d55fe5da76b607218e05bf88..df9b0045cb98122b598df63054913c4079465680 100644 (file)
 
 #include <QDomDocument>
 
+namespace Kdenlive {
+  enum EFFECTTYPE { simpleEffect, groupEffect };
+}
+
 class EffectsList: public QDomDocument
 {
 public:
-    EffectsList();
+    EffectsList(bool indexRequired = false);
     ~EffectsList();
 
     /** @brief Returns the XML element of an effect.
@@ -58,30 +62,45 @@ public:
     QStringList effectNames();
     QString getInfo(const QString & tag, const QString & id) const;
     QString getInfoFromIndex(const int ix) const;
-    void clone(const EffectsList original);
-    void append(QDomElement e);
+    QString getEffectInfo(const QDomElement &effect) const;
+    void clone(const EffectsList &original);
+    QDomElement append(QDomElement e);
     bool isEmpty() const;
     int count() const;
     const QDomElement at(int ix) const;
     void removeAt(int ix);
-    QDomElement item(int ix);
-    void insert(int ix, QDomElement effect);
-    void replace(int ix, QDomElement effect);
-    static bool hasKeyFrames(QDomElement effect);
-    static bool hasSimpleKeyFrames(QDomElement effect);
-    static bool hasGeometryKeyFrames(QDomElement effect);
+    QDomElement itemFromIndex(int ix) const;
+    QDomElement insert(QDomElement effect);
+    void updateEffect(const QDomElement &effect);
+    static bool hasKeyFrames(const QDomElement &effect);
+    static bool hasSimpleKeyFrames(const QDomElement &effect);
+    static bool hasGeometryKeyFrames(const QDomElement &effect);
     static void setParameter(QDomElement effect, const QString &name, const QString &value);
-    static QString parameter(QDomElement effect, const QString &name);
+    static QString parameter(const QDomElement &effect, const QString &name);
     /** @brief Change the value of a 'property' element from the effect node. */
     static void setProperty(QDomElement effect, const QString &name, const QString &value);
+    /** @brief Rename a 'property' element from the effect node. */
+    static void renameProperty(QDomElement effect, const QString &oldName, const QString &newName);
     /** @brief Get the value of a 'property' element from the effect node. */
     static QString property(QDomElement effect, const QString &name);
     /** @brief Delete a 'property' element from the effect node. */
     static void removeProperty(QDomElement effect, const QString &name);
+    /** @brief Remove all 'meta.*' properties from a producer, used when replacing proxy producers in xml for rendering. */
+    static void removeMetaProperties(QDomElement producer);
     void clearList();
+    /** @brief Get am effect with effect index equal to ix. */
+    QDomElement effectFromIndex(const QDomNodeList &effects, int ix);
+    /** @brief Update all effects indexes to make sure they are 1, 2, 3, ... */
+    void updateIndexes(QDomNodeList effects, int startIndex);
+    /** @brief Enable / disable a list of effects */
+    void enableEffects(const QList<int> &indexes, bool disable);
 
 private:
     QDomElement m_baseElement;
+    bool m_useIndex;
+    
+    /** @brief Init effect default parameter values. */
+    void initEffect(const QDomElement &effect) const;
 
 };