1
/*  This file is part of the KDE project.
2
3
Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
4
5
This library is free software: you can redistribute it and/or modify
6
it under the terms of the GNU Lesser General Public License as published by
7
the Free Software Foundation, either version 2.1 or 3 of the License.
8
9
This library is distributed in the hope that it will be useful,
10
but WITHOUT ANY WARRANTY; without even the implied warranty of
11
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
GNU Lesser General Public License for more details.
13
14
You should have received a copy of the GNU Lesser General Public License
15
along with this library.  If not, see <http://www.gnu.org/licenses/>.
16
*/
17
18
#ifndef PHONON_VOLUMEEFFECT_H
19
#define PHONON_VOLUMEEFFECT_H
20
21
#include "effect.h"
22
#include <phonon/volumefaderinterface.h>
23
24
QT_BEGIN_NAMESPACE
25
26
#ifndef QT_NO_PHONON_VOLUMEFADEREFFECT
27
28
namespace Phonon
29
{
30
    namespace DS9
31
    {
32
        class VolumeEffectFilter;
33
        class VolumeEffect : public Effect, public Phonon::VolumeFaderInterface
34
        {
35
            Q_OBJECT
36
                Q_INTERFACES(Phonon::VolumeFaderInterface)
37
        public:
38
            VolumeEffect(QObject *parent);
39
40
            //reimplementation
41
            virtual float volume() const;
42
            virtual void setVolume(float);
43
            virtual Phonon::VolumeFaderEffect::FadeCurve fadeCurve() const;
44
            virtual void setFadeCurve(Phonon::VolumeFaderEffect::FadeCurve);
45
            virtual void fadeTo(float, int);
46
47
        private:
48
            float m_volume;
49
50
            //paramaters used to fade
51
            Phonon::VolumeFaderEffect::FadeCurve m_fadeCurve;
52
53
            bool m_fading; //determines if we should be fading.
54
            float m_initialVolume;  
55
            float m_targetVolume;
56
            int m_fadeDuration;
57
            int m_fadeSamplePosition;
58
            qreal (*m_fadeCurveFn)(const qreal, const qreal, const qreal);
59
60
            //allow the filter to get access to that
61
            friend class VolumeEffectFilter;
62
63
        };
64
    }
65
}
66
67
#endif //QT_NO_PHONON_VOLUMEFADEREFFECT
68
69
QT_END_NAMESPACE
70
71
#endif