1 | /* This file is part of the KDE project |
2 | Copyright (C) 2005-2007 Matthias Kretz <kretz@kde.org> |
3 | |
4 | This library is free software; you can redistribute it and/or |
5 | modify it under the terms of the GNU Lesser General Public |
6 | License as published by the Free Software Foundation; either |
7 | version 2.1 of the License, or (at your option) version 3, or any |
8 | later version accepted by the membership of KDE e.V. (or its |
9 | successor approved by the membership of KDE e.V.), Nokia Corporation |
10 | (or its successors, if any) and the KDE Free Qt Foundation, which shall |
11 | act as a proxy defined in Section 6 of version 3 of the license. |
12 | |
13 | This library is distributed in the hope that it will be useful, |
14 | but WITHOUT ANY WARRANTY; without even the implied warranty of |
15 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
16 | Lesser General Public License for more details. |
17 | |
18 | You should have received a copy of the GNU Lesser General Public |
19 | License along with this library. If not, see <http://www.gnu.org/licenses/>. |
20 | |
21 | */ |
22 | |
23 | |
24 | #ifndef PHONON_EFFECT_H |
25 | #define PHONON_EFFECT_H |
26 | |
27 | #include "phonondefs.h" |
28 | #include <QObject> |
29 | #include "objectdescription.h" |
30 | #include "medianode.h" |
31 | |
32 | |
33 | #ifndef QT_NO_PHONON_EFFECT |
34 | |
35 | class QString; |
36 | template<class T> class QList; |
37 | |
38 | namespace Phonon |
39 | { |
40 | class EffectParameter; |
41 | class EffectPrivate; |
42 | |
43 | /** \class Effect effect.h phonon/Effect |
44 | * \short Effects that can be inserted into a Path. |
45 | * An effect is a special object which can perform |
46 | * transformations on the specified path. Examples may include simple |
47 | * modifiers such as fading or pitch shifting, or more complex mathematical |
48 | * transformations. |
49 | * |
50 | * In order to use an effect, insert it into the path as follows: |
51 | * \code |
52 | * Path path = Phonon::createPath(...); |
53 | * Effect *effect = new Effect(this); |
54 | * path.insertEffect(effect); |
55 | * \endcode |
56 | * |
57 | * The effect will immediately begin applying it's transformations on |
58 | * the path. To stop it, remove the Effect from the path. |
59 | * |
60 | * \ingroup PhononEffects |
61 | * \author Matthias Kretz <kretz@kde.org> |
62 | */ |
63 | class PHONON_EXPORT Effect : public QObject, public MediaNode |
64 | { |
65 | Q_OBJECT |
66 | P_DECLARE_PRIVATE(Effect) |
67 | |
68 | public: |
69 | ~Effect() override; |
70 | |
71 | //X enum Type { |
72 | //X AudioEffect, |
73 | //X VideoEffect |
74 | //X }; |
75 | |
76 | /** |
77 | * QObject constructor. |
78 | * |
79 | * \param description An EffectDescription object to determine the |
80 | * type of effect. See BackendCapabilities::availableAudioEffects(). |
81 | * \param parent QObject parent |
82 | */ |
83 | explicit Effect(const EffectDescription &description, QObject *parent = nullptr); |
84 | |
85 | //X Type type() const; |
86 | |
87 | /** |
88 | * Returns the description of this effect. This is the same type as was |
89 | * passed to the constructor. |
90 | */ |
91 | EffectDescription description() const; |
92 | |
93 | /** |
94 | * Returns a list of parameters that this effect provides to control |
95 | * its behaviour. |
96 | * |
97 | * \see EffectParameter |
98 | * \see EffectWidget |
99 | */ |
100 | QList<EffectParameter> parameters() const; |
101 | |
102 | QVariant parameterValue(const EffectParameter&) const; |
103 | void setParameterValue(const EffectParameter&, const QVariant &value); |
104 | |
105 | protected: |
106 | Effect(EffectPrivate &dd, QObject *parent); |
107 | }; |
108 | } //namespace Phonon |
109 | |
110 | #endif // QT_NO_EFFECT |
111 | |
112 | |
113 | // vim: sw=4 ts=4 tw=80 |
114 | #endif // PHONON_EFFECT_H |
115 | |
116 | |