contrib: rav1e: update to v0.4.1
[vlc.git] / modules / gui / skins2 / vars / equalizer.hpp
1 /*****************************************************************************
2  * equalizer.hpp
3  *****************************************************************************
4  * Copyright (C) 2003 the VideoLAN team
5  *
6  * Authors: Cyril Deguet     <asmax@via.ecp.fr>
7  *
8  * This program 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  * This program 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 along
19  * with this program; if not, write to the Free Software Foundation, Inc.,
20  * 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
21  *****************************************************************************/
22
23 #ifndef EQUALIZER_HPP
24 #define EQUALIZER_HPP
25
26 #include "../utils/var_percent.hpp"
27 #include <string>
28
29
30 /// Variable for graphical equalizer
31 class EqualizerBands: public SkinObject, public Observer<VarPercent>
32 {
33 public:
34     /// Number of bands
35     static const int kNbBands = 10;
36
37     EqualizerBands( intf_thread_t *pIntf );
38     virtual ~EqualizerBands();
39
40     /// Set the equalizer bands from a configuration string,
41     /// e.g. "1 5.2 -3.6 0 0 2.5 0 0 0 0"
42     void set( std::string bands );
43
44     /// Return the variable for a specific band
45     VariablePtr getBand( int band );
46
47 private:
48     /// Array of equalizer bands
49     VariablePtr m_cBands[kNbBands];
50     /// Flag set when an update is in progress
51     bool m_isUpdating;
52
53     /// Callback for band updates
54     virtual void onUpdate( Subject<VarPercent> &rBand , void *);
55 };
56
57
58 /// Variable for equalizer preamp
59 class EqualizerPreamp: public VarPercent
60 {
61 public:
62     EqualizerPreamp( intf_thread_t *pIntf );
63     virtual ~EqualizerPreamp() { }
64
65     virtual void set( float percentage, bool updateVLC );
66
67     void set( float percentage ) { set( percentage, true ); }
68 };
69
70
71 #endif