788e8539228b6fac74353624e4b21e4df21a4a20
[blender.git] / intern / audaspace / FX / AUD_FaderReader.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * Copyright 2009-2011 Jörg Hermann Müller
5  *
6  * This file is part of AudaSpace.
7  *
8  * Audaspace is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * AudaSpace 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
16  * GNU General Public License for more details.
17  *
18  * You should have received a copy of the GNU General Public License
19  * along with Audaspace; if not, write to the Free Software Foundation,
20  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
21  *
22  * ***** END GPL LICENSE BLOCK *****
23  */
24
25 /** \file audaspace/FX/AUD_FaderReader.h
26  *  \ingroup audfx
27  */
28
29
30 #ifndef __AUD_FADERREADER_H__
31 #define __AUD_FADERREADER_H__
32
33 #include "AUD_EffectReader.h"
34 #include "AUD_Buffer.h"
35
36 /**
37  * This class fades another reader.
38  * If the fading type is AUD_FADE_IN, everything before the fading start will be
39  * silenced, for AUD_FADE_OUT that's true for everything after fading ends.
40  */
41 class AUD_FaderReader : public AUD_EffectReader
42 {
43 private:
44         /**
45          * The fading type.
46          */
47         const AUD_FadeType m_type;
48
49         /**
50          * The fading start.
51          */
52         const float m_start;
53
54         /**
55          * The fading length.
56          */
57         const float m_length;
58
59         // hide copy constructor and operator=
60         AUD_FaderReader(const AUD_FaderReader&);
61         AUD_FaderReader& operator=(const AUD_FaderReader&);
62
63 public:
64         /**
65          * Creates a new fader reader.
66          * \param type The fading type.
67          * \param start The time where fading should start in seconds.
68          * \param length How long fading should last in seconds.
69          */
70         AUD_FaderReader(AUD_Reference<AUD_IReader> reader, AUD_FadeType type,
71                                         float start,float length);
72
73         virtual void read(int& length, bool& eos, sample_t* buffer);
74 };
75
76 #endif //__AUD_FADERREADER_H__