1 /***************************************************************************
2 effectslist.h - description
4 begin : Sat Aug 10 2002
5 copyright : (C) 2002 by Jason Wood
6 email : jasonwood@blueyonder.co.uk
7 ***************************************************************************/
9 /***************************************************************************
11 * This program is free software; you can redistribute it and/or modify *
12 * it under the terms of the GNU General Public License as published by *
13 * the Free Software Foundation; either version 2 of the License, or *
14 * (at your option) any later version. *
16 ***************************************************************************/
20 * @brief List for effects objects.
23 * This is a list of DocClipBase objects, to be used instead of
24 * QList<DocClipBase> to enable sorting lists correctly. It also contains the
25 * ability to set a "master clip", which can be used by a number of operations
26 * where there is the need of one clip to act as a reference for what happens to
33 #include <QDomDocument>
36 enum EFFECTTYPE { simpleEffect, groupEffect };
39 class EffectsList: public QDomDocument
42 EffectsList(bool indexRequired = false);
45 /** @brief Returns the XML element of an effect.
46 * @param name name of the effect to be returned */
47 QDomElement getEffectByName(const QString & name) const;
48 QDomElement getEffectByTag(const QString & tag, const QString & id) const;
50 /** @brief Checks the existance of an effect.
51 * @param tag effect tag
53 * @return effect index if the effect exists, -1 otherwise */
54 int hasEffect(const QString & tag, const QString & id) const;
56 /** @brief Lists the core properties of an effect.
57 * @param ix effect index
58 * @return list of name, tag and id of an effect */
59 QStringList effectIdInfo(const int ix) const;
61 /** @brief Lists effects names. */
62 QStringList effectNames();
63 QString getInfo(const QString & tag, const QString & id) const;
64 QString getInfoFromIndex(const int ix) const;
65 QString getEffectInfo(const QDomElement effect) const;
66 void clone(const EffectsList &original);
67 QDomElement append(QDomElement e);
70 const QDomElement at(int ix) const;
71 void removeAt(int ix);
72 QDomElement itemFromIndex(int ix) const;
73 QDomElement insert(QDomElement effect);
74 void updateEffect(QDomElement effect);
75 static bool hasKeyFrames(const QDomElement &effect);
76 static bool hasSimpleKeyFrames(const QDomElement &effect);
77 static bool hasGeometryKeyFrames(const QDomElement &effect);
78 static void setParameter(QDomElement effect, const QString &name, const QString &value);
79 static QString parameter(const QDomElement &effect, const QString &name);
80 /** @brief Change the value of a 'property' element from the effect node. */
81 static void setProperty(QDomElement effect, const QString &name, const QString &value);
82 /** @brief Rename a 'property' element from the effect node. */
83 static void renameProperty(QDomElement effect, const QString &oldName, const QString &newName);
84 /** @brief Get the value of a 'property' element from the effect node. */
85 static QString property(QDomElement effect, const QString &name);
86 /** @brief Delete a 'property' element from the effect node. */
87 static void removeProperty(QDomElement effect, const QString &name);
88 /** @brief Remove all 'meta.*' properties from a producer, used when replacing proxy producers in xml for rendering. */
89 static void removeMetaProperties(QDomElement producer);
91 /** @brief Get am effect with effect index equal to ix. */
92 QDomElement effectFromIndex(QDomNodeList effects, int ix);
93 /** @brief Update all effects indexes to make sure they are 1, 2, 3, ... */
94 void updateIndexes(QDomNodeList effects, int startIndex);
95 /** @brief Enable / disable a list of effects */
96 void enableEffects(const QList<int> &indexes, bool disable);
99 QDomElement m_baseElement;
102 /** @brief Init effect default parameter values. */
103 void initEffect(const QDomElement &effect) const;