X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Feffectslist.h;h=df9b0045cb98122b598df63054913c4079465680;hb=b6d6c25f1bd07f11a0ceaf32a3a5bcaeab367336;hp=e2bb0fb09f87bf5b1ebda32a639a4cc3c1a475c6;hpb=7fc41642ed0c9079985f33e63d4cb1dabddf2b89;p=kdenlive diff --git a/src/effectslist.h b/src/effectslist.h index e2bb0fb0..df9b0045 100644 --- a/src/effectslist.h +++ b/src/effectslist.h @@ -1,5 +1,5 @@ /*************************************************************************** - docclipbaseiterator.h - description + effectslist.h - description ------------------- begin : Sat Aug 10 2002 copyright : (C) 2002 by Jason Wood @@ -15,36 +15,93 @@ * * ***************************************************************************/ +/** + * @class EffectsList + * @brief List for effects objects. + * @author Jason Wood + * + * This is a list of DocClipBase objects, to be used instead of + * QList to enable sorting lists correctly. It also contains the + * ability to set a "master clip", which can be used by a number of operations + * where there is the need of one clip to act as a reference for what happens to + * all clips. + */ + #ifndef EFFECTSLIST_H #define EFFECTSLIST_H -#include - -/**A List for DocClipBase objects. Use this instead of QList so as to sort lists correctly. - * Also contains the ability to set a "master clip", which can be used by a number of operations where - * the need for one clip to act as a reference for what happens to all clips is needed. - * @author Jason Wood - */ +#include -#include +namespace Kdenlive { + enum EFFECTTYPE { simpleEffect, groupEffect }; +} -class EffectsList: public QList < QDomElement > { +class EffectsList: public QDomDocument +{ public: - EffectsList(); + EffectsList(bool indexRequired = false); ~EffectsList(); - /** Returns an XML version of this Effect.*/ + + /** @brief Returns the XML element of an effect. + * @param name name of the effect to be returned */ QDomElement getEffectByName(const QString & name) const; QDomElement getEffectByTag(const QString & tag, const QString & id) const; - /** if the list contains effect defined by tag + id, returns effect index, otherwise -1 */ + + /** @brief Checks the existance of an effect. + * @param tag effect tag + * @param id effect id + * @return effect index if the effect exists, -1 otherwise */ int hasEffect(const QString & tag, const QString & id) const; + + /** @brief Lists the core properties of an effect. + * @param ix effect index + * @return list of name, tag and id of an effect */ QStringList effectIdInfo(const int ix) const; + + /** @brief Lists effects names. */ QStringList effectNames(); QString getInfo(const QString & tag, const QString & id) const; QString getInfoFromIndex(const int ix) const; - EffectsList clone() const; - static bool hasKeyFrames(QDomElement effect); + 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 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 &indexes, bool disable); + +private: + QDomElement m_baseElement; + bool m_useIndex; + + /** @brief Init effect default parameter values. */ + void initEffect(const QDomElement &effect) const; + }; #endif