]> git.sesse.net Git - kdenlive/blob - src/effectslist.h
effect stack cleanup
[kdenlive] / src / effectslist.h
1 /***************************************************************************
2                           effectslist.h  -  description
3                              -------------------
4     begin                : Sat Aug 10 2002
5     copyright            : (C) 2002 by Jason Wood
6     email                : jasonwood@blueyonder.co.uk
7  ***************************************************************************/
8
9 /***************************************************************************
10  *                                                                         *
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.                                   *
15  *                                                                         *
16  ***************************************************************************/
17
18 /**
19  * @class EffectsList
20  * @brief List for effects objects.
21  * @author Jason Wood
22  *
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
27  * all clips.
28  */
29
30 #ifndef EFFECTSLIST_H
31 #define EFFECTSLIST_H
32
33 #include <QDomDocument>
34
35 class EffectsList: public QDomDocument
36 {
37 public:
38     EffectsList(bool indexRequired = false);
39     ~EffectsList();
40
41     /** @brief Returns the XML element of an effect.
42      * @param name name of the effect to be returned */
43     QDomElement getEffectByName(const QString & name) const;
44     QDomElement getEffectByTag(const QString & tag, const QString & id) const;
45
46     /** @brief Checks the existance of an effect.
47      * @param tag effect tag
48      * @param id effect id
49      * @return effect index if the effect exists, -1 otherwise */
50     int hasEffect(const QString & tag, const QString & id) const;
51
52     /** @brief Lists the core properties of an effect.
53      * @param ix effect index
54      * @return list of name, tag and id of an effect */
55     QStringList effectIdInfo(const int ix) const;
56
57     /** @brief Lists effects names. */
58     QStringList effectNames();
59     QString getInfo(const QString & tag, const QString & id) const;
60     QString getInfoFromIndex(const int ix) const;
61     QString getEffectInfo(const QDomElement effect) const;
62     void clone(const EffectsList &original);
63     void append(QDomElement e);
64     bool isEmpty() const;
65     int count() const;
66     const QDomElement at(int ix) const;
67     void removeAt(int ix);
68     QDomElement itemFromIndex(int ix) const;
69     void insert(QDomElement effect);
70     void updateEffect(QDomElement effect);
71     static bool hasKeyFrames(QDomElement effect);
72     static bool hasSimpleKeyFrames(QDomElement effect);
73     static bool hasGeometryKeyFrames(QDomElement effect);
74     static void setParameter(QDomElement effect, const QString &name, const QString &value);
75     static QString parameter(QDomElement effect, const QString &name);
76     /** @brief Change the value of a 'property' element from the effect node. */
77     static void setProperty(QDomElement effect, const QString &name, const QString &value);
78     /** @brief Rename a 'property' element from the effect node. */
79     static void renameProperty(QDomElement effect, const QString &oldName, const QString &newName);
80     /** @brief Get the value of a 'property' element from the effect node. */
81     static QString property(QDomElement effect, const QString &name);
82     /** @brief Delete a 'property' element from the effect node. */
83     static void removeProperty(QDomElement effect, const QString &name);
84     /** @brief Remove all 'meta.*' properties from a producer, used when replacing proxy producers in xml for rendering. */
85     static void removeMetaProperties(QDomElement producer);
86     void clearList();
87     /** @brief Get am effect with effect index equal to ix. */
88     QDomElement effectFromIndex(QDomNodeList effects, int ix);
89     /** @brief Update all effects indexes to make sure they are 1, 2, 3, ... */
90     void updateIndexes(QDomNodeList effects);
91
92 private:
93     QDomElement m_baseElement;
94     bool m_useIndex;
95
96 };
97
98 #endif