Jamba C++ API 7.5.0
Loading...
Searching...
No Matches
GUIParamCxMgr.h
Go to the documentation of this file.
1/*
2 * Copyright (c) 2018-2019 pongasoft
3 *
4 * Licensed under the Apache License, Version 2.0 or the MIT license,
5 * at your option. You may not use this file except in compliance with
6 * one of these licenses. You may obtain copies of the licenses at:
7 *
8 * https://www.apache.org/licenses/LICENSE-2.0
9 * https://opensource.org/licenses/MIT
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 * License for the specific language governing permissions and limitations under
15 * the License.
16 *
17 * @author Yan Pujante
18 */
19#pragma once
20
22#include <vector>
23
25
33{
34public:
38 inline bool existsVst(ParamID iParamID) const { return fGUIState->existsVst(iParamID); }
39
43 inline bool existsJmb(ParamID iParamID) const { return fGUIState->existsJmb(iParamID); }
44
47 void unregisterAll();
48
49 //------------------------------------------------------------------------
50 // Base Param
51 //------------------------------------------------------------------------
52
53 // registerBaseParam / ParamID / IChangeListener
54 IGUIParam registerBaseParam(ParamID iParamID, Parameters::IChangeListener *iChangeListener = nullptr);
55
56 // registerBaseCallback / ParamID / ChangeCallback
57 inline IGUIParam registerBaseCallback(ParamID iParamID,
58 Parameters::ChangeCallback iChangeCallback,
59 bool iInvokeCallback)
60 {
61 return __registerCallback(registerBaseParam(iParamID), std::move(iChangeCallback), iInvokeCallback);
62 }
63
64 // registerBaseCallback / ParamID / ChangeCallback1<IGUIParam>
65 inline IGUIParam registerBaseCallback(ParamID iParamID,
67 bool iInvokeCallback)
68 {
69 return __registerCallback1(registerBaseParam(iParamID), std::move(iChangeCallback), iInvokeCallback);
70 }
71
72 //------------------------------------------------------------------------
73 // Optional Param
74 //------------------------------------------------------------------------
75
76 // registerOptionalParam / ParamID / IChangeListener
77 template<typename T>
79 Parameters::IChangeListener *iChangeListener = nullptr);
80
81 // registerOptionalCallback / ParamID / ChangeCallback
82 template<typename T>
84 Parameters::ChangeCallback iChangeCallback,
85 bool iInvokeCallback) {
86 return __registerCallback(registerOptionalParam<T>(iParamID), std::move(iChangeCallback), iInvokeCallback);
87 }
88
89 // registerOptionalCallback / ParamID / ChangeCallback1<GUIOptionalParam<T>>
90 template<typename T>
93 bool iInvokeCallback) {
94 return __registerCallback1(registerOptionalParam<T>(iParamID), std::move(iChangeCallback), iInvokeCallback);
95 }
96
97 //------------------------------------------------------------------------
98 // Optional Discrete Param
99 //------------------------------------------------------------------------
100
101 // registerOptionalDiscreteParam / ParamID / IChangeListener
103 int32 iStepCount,
104 Parameters::IChangeListener *iChangeListener = nullptr);
105
106 // registerOptionalDiscreteCallback / ParamID / ChangeCallback
108 int32 iStepCount,
109 Parameters::ChangeCallback iChangeCallback,
110 bool iInvokeCallback) {
111 return __registerCallback(registerOptionalDiscreteParam(iParamID, iStepCount), std::move(iChangeCallback), iInvokeCallback);
112 }
113
114 // registerOptionalDiscreteCallback / ParamID / ChangeCallback1<GUIOptionalParam<int32>>
116 int32 iStepCount,
118 bool iInvokeCallback) {
119 return __registerCallback1(registerOptionalDiscreteParam(iParamID, iStepCount), std::move(iChangeCallback), iInvokeCallback);
120 }
121
122 //------------------------------------------------------------------------
123 // Raw Vst Param
124 //------------------------------------------------------------------------
125
126 // registerRawVstParam / ParamID / IChangeListener
127 GUIRawVstParam registerRawVstParam(ParamID iParamID,
128 Parameters::IChangeListener *iChangeListener = nullptr);
129
130 // registerRawVstCallback / ParamID / ChangeCallback
131 inline GUIRawVstParam registerRawVstCallback(ParamID iParamID,
132 Parameters::ChangeCallback iChangeCallback,
133 bool iInvokeCallback)
134 {
135 return __registerCallback(registerRawVstParam(iParamID), std::move(iChangeCallback), iInvokeCallback);
136 }
137
138 // registerRawVstCallback / ParamID / ChangeCallback1<GUIRawVstParam>
139 inline GUIRawVstParam registerRawVstCallback(ParamID iParamID,
141 bool iInvokeCallback)
142 {
143 return __registerCallback1(registerRawVstParam(iParamID), std::move(iChangeCallback), iInvokeCallback);
144 }
145
146 //------------------------------------------------------------------------
147 // Vst Param (Typed)
148 //------------------------------------------------------------------------
149
150 // registerVstParam / ParamID / IChangeListener
151 template<typename T>
152 GUIVstParam<T> registerVstParam(ParamID iParamID,
153 Parameters::IChangeListener *iChangeListener = nullptr);
154
155 // registerVstParam / ParamID / ChangeCallback
156 template<typename T>
157 inline GUIVstParam<T> registerVstCallback(ParamID iParamID,
158 Parameters::ChangeCallback iChangeCallback,
159 bool iInvokeCallback)
160 {
161 return __registerCallback(registerVstParam<T>(iParamID), std::move(iChangeCallback), iInvokeCallback);
162 }
163
164 // registerVstParam / ParamID / ChangeCallback1<GUIVstParam<T>>
165 template<typename T>
166 inline GUIVstParam<T> registerVstCallback(ParamID iParamID,
168 bool iInvokeCallback)
169 {
170 return __registerCallback1(registerVstParam<T>(iParamID), std::move(iChangeCallback), iInvokeCallback);
171 }
172
173 //------------------------------------------------------------------------
174 // Jmb Param (Typed)
175 //------------------------------------------------------------------------
176
177 // registerJmbParam / ParamID / IChangeListener
178 template<typename T>
179 GUIJmbParam<T> registerJmbParam(ParamID iParamID,
180 Parameters::IChangeListener *iChangeListener = nullptr);
181
182 // registerJmbParam / ParamID / ChangeCallback
183 template<typename T>
184 inline GUIJmbParam<T> registerJmbCallback(ParamID iParamID,
185 Parameters::ChangeCallback iChangeCallback,
186 bool iInvokeCallback)
187 {
188 return __registerCallback(registerJmbParam<T>(iParamID), std::move(iChangeCallback), iInvokeCallback);
189 }
190
191 // registerJmbParam / ParamID / ChangeCallback1<GUIJmbParam<T>>
192 template<typename T>
193 inline GUIJmbParam<T> registerJmbCallback(ParamID iParamID,
195 bool iInvokeCallback)
196 {
197 return __registerCallback1(registerJmbParam<T>(iParamID), std::move(iChangeCallback), iInvokeCallback);
198 }
199
200 // getGUIState
201 inline GUIState *getGUIState() const { return fGUIState; };
202
205 void invokeAll();
206
207 friend class GUI::GUIState;
208
209protected:
210 explicit GUIParamCxMgr(GUIState *iGUIState) : fGUIState{iGUIState}
211 {
212 DCHECK_F(fGUIState != nullptr);
213 }
214
215 template<typename TParam>
216 inline TParam __registerListener(TParam iParam, Parameters::IChangeListener *iChangeListener)
217 {
218 if(iParam.exists() && iChangeListener)
219 fParamCxs.emplace_back(iParam.connect(iChangeListener));
220 return iParam;
221 }
222
223 template<typename TParam>
224 TParam __registerCallback(TParam iParam, Parameters::ChangeCallback iCallback, bool iInvokeCallback);
225
226 template<typename TParam>
227 TParam __registerCallback1(TParam iParam, Parameters::ChangeCallback1<TParam> iCallback, bool iInvokeCallback);
228
229private:
230 // the gui state
232
233 // Maintains the connections for the listeners and callbacks... will be automatically discarded in the destructor
234 std::vector<std::unique_ptr<FObjectCx>> fParamCxs{};
235};
236
237}
238
239// Include template implementation code
240#include "GUIParamCxMgr.hpp"
Definition GUIState.h:43
This is the main class that the plugin should use as it exposes only the necessary methods of the par...
Definition GUIJmbParameter.h:497
Represents an optional parameter (Jmb, Vst or no param at all).
Definition GUIOptionalParam.h:50
GUIRawVstParam registerRawVstCallback(ParamID iParamID, Parameters::ChangeCallback1< GUIRawVstParam > iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:139
bool existsVst(ParamID iParamID) const
Definition GUIParamCxMgr.h:38
GUIParamCxMgr(GUIState *iGUIState)
Definition GUIParamCxMgr.h:210
GUIOptionalParam< int32 > registerOptionalDiscreteCallback(ParamID iParamID, int32 iStepCount, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:107
TParam __registerCallback1(TParam iParam, Parameters::ChangeCallback1< TParam > iCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.hpp:121
GUIOptionalParam< T > registerOptionalCallback(ParamID iParamID, Parameters::ChangeCallback1< GUIOptionalParam< T > > iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:91
GUIRawVstParam registerRawVstCallback(ParamID iParamID, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:131
GUIJmbParam< T > registerJmbParam(ParamID iParamID, Parameters::IChangeListener *iChangeListener=nullptr)
Definition GUIParamCxMgr.hpp:75
TParam __registerListener(TParam iParam, Parameters::IChangeListener *iChangeListener)
Definition GUIParamCxMgr.h:216
GUIOptionalParam< T > registerOptionalParam(ParamID iParamID, Parameters::IChangeListener *iChangeListener=nullptr)
Definition GUIParamCxMgr.hpp:27
IGUIParam registerBaseParam(ParamID iParamID, Parameters::IChangeListener *iChangeListener=nullptr)
Definition GUIParamCxMgr.cpp:88
GUIOptionalParam< int32 > registerOptionalDiscreteParam(ParamID iParamID, int32 iStepCount, Parameters::IChangeListener *iChangeListener=nullptr)
Definition GUIParamCxMgr.cpp:45
void invokeAll()
Invoke all registered callbacks and listeners.
Definition GUIParamCxMgr.cpp:26
GUIVstParam< T > registerVstCallback(ParamID iParamID, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:157
GUIState * fGUIState
Definition GUIParamCxMgr.h:231
GUIVstParam< T > registerVstCallback(ParamID iParamID, Parameters::ChangeCallback1< GUIVstParam< T > > iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:166
GUIJmbParam< T > registerJmbCallback(ParamID iParamID, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:184
void unregisterAll()
Unregisters all parameters.
Definition GUIParamCxMgr.cpp:37
GUIVstParam< T > registerVstParam(ParamID iParamID, Parameters::IChangeListener *iChangeListener=nullptr)
Definition GUIParamCxMgr.hpp:64
GUIRawVstParam registerRawVstParam(ParamID iParamID, Parameters::IChangeListener *iChangeListener=nullptr)
Definition GUIParamCxMgr.cpp:98
GUIOptionalParam< T > registerOptionalCallback(ParamID iParamID, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:83
GUIOptionalParam< int32 > registerOptionalDiscreteCallback(ParamID iParamID, int32 iStepCount, Parameters::ChangeCallback1< GUIOptionalParam< int32 > > iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:115
GUIJmbParam< T > registerJmbCallback(ParamID iParamID, Parameters::ChangeCallback1< GUIJmbParam< T > > iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:193
IGUIParam registerBaseCallback(ParamID iParamID, Parameters::ChangeCallback iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:57
GUIState * getGUIState() const
Definition GUIParamCxMgr.h:201
TParam __registerCallback(TParam iParam, Parameters::ChangeCallback iCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.hpp:98
bool existsJmb(ParamID iParamID) const
Definition GUIParamCxMgr.h:43
std::vector< std::unique_ptr< FObjectCx > > fParamCxs
Definition GUIParamCxMgr.h:234
IGUIParam registerBaseCallback(ParamID iParamID, Parameters::ChangeCallback1< IGUIParam > iChangeCallback, bool iInvokeCallback)
Definition GUIParamCxMgr.h:65
friend class GUI::GUIState
Definition GUIParamCxMgr.h:207
This is the main class that the plugin should use as it exposes only the necessary methods of the par...
Definition GUIRawVstParameter.h:267
This is the main class that the plugin should use as it exposes only the necessary methods of the par...
Definition GUIVstParameter.h:280
Wrapper instance returned by ParamAware::registerBaseParam() methods.
Definition IGUIParameter.h:403
Interface to implement to receive parameter changes.
Definition Parameters.h:45
std::function< void()> ChangeCallback
A callback that will be invoked for changes.
Definition Parameters.h:56
std::function< void(Param &)> ChangeCallback1
A callback which will be invoked for changes with the param as an argument.
Definition Parameters.h:62
Definition GUIState.h:38