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 <QtCore/QObject>
29#include "objectdescription.h"
30#include "medianode.h"
31
32QT_BEGIN_HEADER
33QT_BEGIN_NAMESPACE
34
35#ifndef QT_NO_PHONON_EFFECT
36
37class QString;
38template<class T> class QList;
39
40namespace Phonon
41{
42 class EffectParameter;
43 class EffectPrivate;
44
45 /** \class Effect effect.h Phonon/Effect
46 * \short Effects that can be inserted into a Path.
47 * An effect is a special object which can perform
48 * transformations on the specified path. Examples may include simple
49 * modifiers such as fading or pitch shifting, or more complex mathematical
50 * transformations.
51 *
52 * In order to use an effect, insert it into the path as follows:
53 * \code
54 * Path path = Phonon::createPath(...);
55 * Effect *effect = new Effect(this);
56 * path.insertEffect(effect);
57 * \endcode
58 *
59 * The effect will immediately begin applying it's transformations on
60 * the path. To stop it, remove the Effect from the path.
61 *
62 * \ingroup PhononEffects
63 * \author Matthias Kretz <kretz@kde.org>
64 */
65 class PHONON_EXPORT Effect : public QObject, public MediaNode
66 {
67 Q_OBJECT
68 K_DECLARE_PRIVATE(Effect)
69
70 public:
71 ~Effect();
72
73//X enum Type {
74//X AudioEffect,
75//X VideoEffect
76//X };
77
78 /**
79 * QObject constructor.
80 *
81 * \param description An EffectDescription object to determine the
82 * type of effect. See BackendCapabilities::availableAudioEffects().
83 * \param parent QObject parent
84 */
85 explicit Effect(const EffectDescription &description, QObject *parent = 0);
86
87//X Type type() const;
88
89 /**
90 * Returns the description of this effect. This is the same type as was
91 * passed to the constructor.
92 */
93 EffectDescription description() const;
94
95 /**
96 * Returns a list of parameters that this effect provides to control
97 * its behaviour.
98 *
99 * \see EffectParameter
100 * \see EffectWidget
101 */
102 QList<EffectParameter> parameters() const;
103
104 QVariant parameterValue(const EffectParameter&) const;
105 void setParameterValue(const EffectParameter&, const QVariant &value);
106
107 protected:
108 Effect(EffectPrivate &dd, QObject *parent);
109 };
110} //namespace Phonon
111
112#endif // QT_NO_EFFECT
113
114QT_END_NAMESPACE
115QT_END_HEADER
116
117// vim: sw=4 ts=4 tw=80
118#endif // PHONON_EFFECT_H
119
120