ScummVM API documentation
hmi_interface.h
1 /* ScummVM - Graphic Adventure Engine
2  *
3  * ScummVM is the legal property of its developers, whose names
4  * are too numerous to list here. Please refer to the COPYRIGHT
5  * file distributed with this source distribution.
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with this program. If not, see <http://www.gnu.org/licenses/>.
19  *
20  */
21 
22 #ifndef AUDIO_EFFECTS_HMI_INTERFACE_H
23 #define AUDIO_EFFECTS_HMI_INTERFACE_H
24 
25 #include "audio/effects/hmi/hmi_types.h"
26 
27 namespace Audio {
28 
29 typedef const char *const *HMIParamNames;
30 
31 class HMIInterface {
32 public:
33  virtual ~HMIInterface() {}
34 
35  virtual int init(HMIPreset *preset, HMIEffectNode *base) = 0;
36  virtual int uninit(HMIPreset *preset, HMIEffectNode *base) = 0;
37  virtual int getMinDuration(HMIEffectNode *n, uint32 *out);
38  virtual int processBlock(HMIPreset *preset, HMIEffectNode *base) = 0;
39  virtual int initEffect(HMIPreset *preset, HMIEffectNode *base) = 0;
40  virtual int getEffectParam(HMIEffectNode *base, int param, float *value, int *type) = 0;
41  virtual int setEffectParam(HMIEffectNode *base, int param, float value) = 0;
42 
43  int effectStructSize() const { return _effectStructSize; }
44  int outChannels() const { return _outChannels; }
45  const char *interfaceName() const { return _interfaceName; }
46  HMIParamNames effectParams() const { return _effectParams; }
47  const float *paramMinValues() const { return _paramMinValues; }
48  const float *paramMaxValues() const { return _paramMaxValues; }
49  const float *paramDefaultValues() const { return _paramDefaultValues; }
50  const char *presetName() const { return _presetName; }
51  int presetId() const { return _presetId; }
52  int paramCount() const { return _paramCount; }
53 
54 protected:
55  static const double kHmiPi;
56  static const double kHmiTwoPi;
57  static const double kHmiMillis;
58 
59  HMIInterface(int size, int channels,
60  const char *dialogName, HMIParamNames params, const float *mins,
61  const float *maxs, const float *defaults, const char *name, int id,
62  int paramCount);
63 
64 private:
65  int _effectStructSize = 0;
66  int _outChannels = 0;
67  const char *_interfaceName = nullptr;
68  HMIParamNames _effectParams = nullptr;
69  const float *_paramMinValues = nullptr;
70  const float *_paramMaxValues = nullptr;
71  const float *_paramDefaultValues = nullptr;
72  char _presetName[64] = {0};
73  int _presetId = 0;
74  int _paramCount = 0;
75 };
76 
77 } // End of namespace Audio
78 
79 #endif
Definition: hmi_types.h:89
Definition: hmi_interface.h:31
Definition: hmi_types.h:70
Definition: system.h:39