LMMS
Loading...
Searching...
No Matches
vsteditcontroller.cpp
Go to the documentation of this file.
1//-----------------------------------------------------------------------------
2// Project : VST SDK
3//
4// Category : Helpers
5// Filename : public.sdk/source/vst/vsteditcontroller.cpp
6// Created by : Steinberg, 04/2005
7// Description : VST Edit Controller Implementation
8//
9//-----------------------------------------------------------------------------
10// LICENSE
11// (c) 2021, Steinberg Media Technologies GmbH, All Rights Reserved
12//-----------------------------------------------------------------------------
13// Redistribution and use in source and binary forms, with or without modification,
14// are permitted provided that the following conditions are met:
15//
16// * Redistributions of source code must retain the above copyright notice,
17// this list of conditions and the following disclaimer.
18// * Redistributions in binary form must reproduce the above copyright notice,
19// this list of conditions and the following disclaimer in the documentation
20// and/or other materials provided with the distribution.
21// * Neither the name of the Steinberg Media Technologies nor the names of its
22// contributors may be used to endorse or promote products derived from this
23// software without specific prior written permission.
24//
25// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
26// ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
27// WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
28// IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
29// INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
30// BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
31// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
32// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
33// OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
34// OF THE POSSIBILITY OF SUCH DAMAGE.
35//-----------------------------------------------------------------------------
36
40
41#include <cstdio>
42
43namespace Steinberg {
44namespace Vst {
45
47
48//------------------------------------------------------------------------
49// EditController Implementation
50//------------------------------------------------------------------------
54
55//------------------------------------------------------------------------
57{
58 return ComponentBase::initialize (context);
59}
60
61//------------------------------------------------------------------------
63{
64 parameters.removeAll ();
65
67 {
68 componentHandler->release ();
69 componentHandler = nullptr;
70 }
71
73 {
74 componentHandler2->release ();
75 componentHandler2 = nullptr;
76 }
77
79}
80
81//------------------------------------------------------------------------
83{
84 return kNotImplemented;
85}
86
87//------------------------------------------------------------------------
89{
90 return kNotImplemented;
91}
92
93//------------------------------------------------------------------------
95{
96 return kNotImplemented;
97}
98
99//------------------------------------------------------------------------
101{
102 return parameters.getParameterCount ();
103}
104
105//------------------------------------------------------------------------
107{
108 if (Parameter* parameter = parameters.getParameterByIndex (paramIndex))
109 {
110 info = parameter->getInfo ();
111 return kResultTrue;
112 }
113 return kResultFalse;
114}
115
116//------------------------------------------------------------------------
118 String128 string)
119{
120 if (Parameter* parameter = getParameterObject (tag))
121 {
122 parameter->toString (valueNormalized, string);
123 return kResultTrue;
124 }
125 return kResultFalse;
126}
127
128//------------------------------------------------------------------------
130 ParamValue& valueNormalized)
131{
132 if (Parameter* parameter = getParameterObject (tag))
133 {
134 if (parameter->fromString (string, valueNormalized))
135 {
136 return kResultTrue;
137 }
138 }
139 return kResultFalse;
140}
141
142//------------------------------------------------------------------------
144 ParamValue valueNormalized)
145{
146 if (Parameter* parameter = getParameterObject (tag))
147 {
148 return parameter->toPlain (valueNormalized);
149 }
150 return valueNormalized;
151}
152
153//------------------------------------------------------------------------
155{
156 if (Parameter* parameter = getParameterObject (tag))
157 {
158 return parameter->toNormalized (plainValue);
159 }
160 return plainValue;
161}
162
163//------------------------------------------------------------------------
165{
166 if (Parameter* parameter = getParameterObject (tag))
167 {
168 return parameter->getNormalized ();
169 }
170 return 0.;
171}
172
173//------------------------------------------------------------------------
175{
176 if (Parameter* parameter = getParameterObject (tag))
177 {
178 parameter->setNormalized (value);
179 return kResultTrue;
180 }
181 return kResultFalse;
182}
183
184//------------------------------------------------------------------------
186{
187 if (componentHandler == newHandler)
188 {
189 return kResultTrue;
190 }
191
193 {
194 componentHandler->release ();
195 }
196
197 componentHandler = newHandler;
199 {
200 componentHandler->addRef ();
201 }
202
203 // try to get the extended version
205 {
206 componentHandler2->release ();
207 componentHandler2 = nullptr;
208 }
209
210 if (newHandler)
211 {
213 }
214 return kResultTrue;
215}
216
217//------------------------------------------------------------------------
219{
221 {
222 return componentHandler->beginEdit (tag);
223 }
224 return kResultFalse;
225}
226
227//------------------------------------------------------------------------
229{
231 {
232 return componentHandler->performEdit (tag, valueNormalized);
233 }
234 return kResultFalse;
235}
236
237//------------------------------------------------------------------------
239{
241 {
242 return componentHandler->endEdit (tag);
243 }
244 return kResultFalse;
245}
246
247//------------------------------------------------------------------------
249{
251 {
252 return componentHandler2->startGroupEdit ();
253 }
254 return kNotImplemented;
255}
256
257//------------------------------------------------------------------------
259{
261 {
262 return componentHandler2->finishGroupEdit ();
263 }
264 return kNotImplemented;
265}
266
267//------------------------------------------------------------------------
269{
270 if (Parameter* parameter = getParameterObject (tag))
271 {
272 info = parameter->getInfo ();
273 return kResultTrue;
274 }
275 return kResultFalse;
276}
277
278//------------------------------------------------------------------------
280{
282 {
283 return componentHandler2->setDirty (state);
284 }
285 return kNotImplemented;
286}
287
288//------------------------------------------------------------------------
290{
292 {
293 return componentHandler2->requestOpenEditor (name);
294 }
295 return kNotImplemented;
296}
297
298#ifndef NO_PLUGUI
299//------------------------------------------------------------------------
300// EditorView Implementation
301//------------------------------------------------------------------------
303: CPluginView (size), controller (_controller)
304{
305 if (controller)
306 {
307 controller->addRef ();
308 }
309}
310
311//------------------------------------------------------------------------
313{
314 if (controller)
315 {
316 controller->editorDestroyed (this);
317 controller->release ();
318 }
319}
320
321//------------------------------------------------------------------------
323{
324 if (controller)
325 {
326 controller->editorAttached (this);
327 }
328}
329
330//------------------------------------------------------------------------
332{
333 if (controller)
334 {
335 controller->editorRemoved (this);
336 }
337}
338#endif // NO_PLUGUI
339
340//------------------------------------------------------------------------
341// EditControllerEx1 implementation
342//------------------------------------------------------------------------
344{
345 UpdateHandler::instance ();
346}
347
348//------------------------------------------------------------------------
352
353//------------------------------------------------------------------------
355{
356 units.clear ();
357
358 for (const auto& programList : programLists)
359 {
360 if (programList)
361 programList->removeDependent (this);
362 }
363 programLists.clear ();
364 programIndexMap.clear ();
365
367}
368
369//------------------------------------------------------------------------
371{
372 units.emplace_back (unit, false);
373 return true;
374}
375
376//------------------------------------------------------------------------
378{
379 if (Unit* unit = units.at (unitIndex))
380 {
381 info = unit->getInfo ();
382 return kResultTrue;
383 }
384 return kResultFalse;
385}
386
387//------------------------------------------------------------------------
389{
392 if (unitHandler)
393 result = unitHandler->notifyUnitSelection (selectedUnit);
394 return result;
395}
396
397//------------------------------------------------------------------------
399{
400 programIndexMap[list->getID ()] = programLists.size ();
401 programLists.emplace_back (list, false);
402 list->addDependent (this);
403 return true;
404}
405
406//------------------------------------------------------------------------
408{
409 auto it = programIndexMap.find (listId);
410 return it == programIndexMap.end () ? nullptr : programLists[it->second];
411}
412
413//------------------------------------------------------------------------
415{
418 if (unitHandler)
419 result = unitHandler->notifyProgramListChange (listId, programIndex);
420 return result;
421}
422
423//------------------------------------------------------------------------
425{
426 return static_cast<int32> (programLists.size ());
427}
428
429//------------------------------------------------------------------------
431 ProgramListInfo& info /*out*/)
432{
433 if (listIndex < 0 || listIndex >= static_cast<int32> (programLists.size ()))
434 return kResultFalse;
435 info = programLists[listIndex]->getInfo ();
436 return kResultTrue;
437}
438
439//------------------------------------------------------------------------
441 String128 name /*out*/)
442{
443 ProgramIndexMap::const_iterator it = programIndexMap.find (listId);
444 if (it != programIndexMap.end ())
445 {
446 return programLists[it->second]->getProgramName (programIndex, name);
447 }
448 return kResultFalse;
449}
450
451//------------------------------------------------------------------------
453 const String128 name /*in*/)
454{
455 ProgramIndexMap::const_iterator it = programIndexMap.find (listId);
456 if (it != programIndexMap.end ())
457 {
458 return programLists[it->second]->setProgramName (programIndex, name);
459 }
460 return kResultFalse;
461}
462
463//------------------------------------------------------------------------
465 CString attributeId /*in*/,
466 String128 attributeValue /*out*/)
467{
468 ProgramIndexMap::const_iterator it = programIndexMap.find (listId);
469 if (it != programIndexMap.end ())
470 {
471 return programLists[it->second]->getProgramInfo (programIndex, attributeId, attributeValue);
472 }
473 return kResultFalse;
474}
475
476//------------------------------------------------------------------------
478 int32 programIndex)
479{
480 ProgramIndexMap::const_iterator it = programIndexMap.find (listId);
481 if (it != programIndexMap.end ())
482 {
483 return programLists[it->second]->hasPitchNames (programIndex);
484 }
485 return kResultFalse;
486}
487
488//------------------------------------------------------------------------
490 int16 midiPitch, String128 name /*out*/)
491{
492 ProgramIndexMap::const_iterator it = programIndexMap.find (listId);
493 if (it != programIndexMap.end ())
494 {
495 return programLists[it->second]->getPitchName (programIndex, midiPitch, name);
496 }
497 return kResultFalse;
498}
499
500//------------------------------------------------------------------------
501void PLUGIN_API EditControllerEx1::update (FUnknown* changedUnknown, int32 /*message*/)
502{
503 auto* programList = FCast<ProgramList> (changedUnknown);
504 if (programList)
505 {
507 if (unitHandler)
508 unitHandler->notifyProgramListChange (programList->getID (), kAllProgramInvalid);
509 }
510}
511
512//------------------------------------------------------------------------
513// Unit implementation
514//------------------------------------------------------------------------
516{
517 memset (&info, 0, sizeof (UnitInfo));
518}
519
520//------------------------------------------------------------------------
521Unit::Unit (const String128 name, UnitID unitId, UnitID parentUnitId, ProgramListID programListId)
522{
523 setName (name);
524 info.id = unitId;
525 info.parentUnitId = parentUnitId;
526 info.programListId = programListId;
527}
528
529//------------------------------------------------------------------------
531{
532}
533
534//------------------------------------------------------------------------
535void Unit::setName (const String128 newName)
536{
537 UString128 (newName).copyTo (info.name, 128);
538}
539
540//------------------------------------------------------------------------
541// ProgramList implementation
542//------------------------------------------------------------------------
545{
546 UString128 (name).copyTo (info.name, 128);
547 info.id = listId;
548 info.programCount = 0;
549}
550
551//------------------------------------------------------------------------
553: info (programList.info)
554, unitId (programList.unitId)
555, programNames (programList.programNames)
557{
558}
559
560//------------------------------------------------------------------------
562{
563 ++info.programCount;
564 programNames.emplace_back (name);
565 programInfos.emplace_back ();
566 return static_cast<int32> (programNames.size ()) - 1;
567}
568
569//------------------------------------------------------------------------
570bool ProgramList::setProgramInfo (int32 programIndex, CString attributeId, const String128 value)
571{
572 if (programIndex >= 0 && programIndex < static_cast<int32> (programNames.size ()))
573 {
574 programInfos.at (programIndex).insert (std::make_pair (attributeId, value));
575 return true;
576 }
577 return false;
578}
579
580//------------------------------------------------------------------------
582 String128 value /*out*/)
583{
584 if (programIndex >= 0 && programIndex < static_cast<int32> (programNames.size ()))
585 {
586 StringMap::const_iterator it = programInfos[programIndex].find (attributeId);
587 if (it != programInfos[programIndex].end ())
588 {
589 if (!it->second.isEmpty ())
590 {
591 it->second.copyTo16 (value, 0, 128);
592 return kResultTrue;
593 }
594 }
595 }
596 return kResultFalse;
597}
598
599//------------------------------------------------------------------------
601{
602 if (programIndex >= 0 && programIndex < static_cast<int32> (programNames.size ()))
603 {
604 programNames.at (programIndex).copyTo16 (name, 0, 128);
605 return kResultTrue;
606 }
607 return kResultFalse;
608}
609
610//------------------------------------------------------------------------
612{
613 if (programIndex >= 0 && programIndex < static_cast<int32> (programNames.size ()))
614 {
615 programNames.at (programIndex) = name;
616 if (parameter)
617 {
618 static_cast<StringListParameter*> (parameter)->replaceString (programIndex, name);
619 }
620 return kResultTrue;
621 }
622 return kResultFalse;
623}
624
625//------------------------------------------------------------------------
627{
628 if (parameter == nullptr)
629 {
630 auto* listParameter = new StringListParameter (
631 info.name, info.id, nullptr,
633 unitId);
634 for (const auto& programName : programNames)
635 {
636 listParameter->appendString (programName);
637 }
638 parameter = listParameter;
639 }
640 return parameter;
641}
642
643//------------------------------------------------------------------------
644// ProgramListWithPitchNames implementation
645//-----------------------------------------------------------------------------
651
652//-----------------------------------------------------------------------------
654{
656 if (index >= 0)
657 pitchNames.emplace_back ();
658 return index;
659}
660
661//-----------------------------------------------------------------------------
663 const String128 pitchName)
664{
665 if (programIndex < 0 || programIndex >= getCount ())
666 return false;
667
668 bool nameChanged = true;
669 std::pair<PitchNameMap::iterator, bool> res =
670 pitchNames[programIndex].insert (std::make_pair (pitch, pitchName));
671 if (!res.second)
672 {
673 if (res.first->second == pitchName)
674 nameChanged = false;
675 else
676 res.first->second = pitchName;
677 }
678
679 if (nameChanged)
680 changed ();
681 return true;
682}
683
684//-----------------------------------------------------------------------------
686{
687 bool result = false;
688 if (programIndex >= 0 && programIndex < getCount ())
689 {
690 result = pitchNames.at (programIndex).erase (pitch) != 0;
691 }
692 if (result)
693 changed ();
694 return result;
695}
696
697//-----------------------------------------------------------------------------
699{
700 if (programIndex >= 0 && programIndex < getCount ())
701 return (pitchNames.at (programIndex).empty () == true) ? kResultFalse : kResultTrue;
702 return kResultFalse;
703}
704
705//-----------------------------------------------------------------------------
707 String128 name /*out*/)
708{
709 if (programIndex >= 0 && programIndex < getCount ())
710 {
711 PitchNameMap::const_iterator it = pitchNames[programIndex].find (midiPitch);
712 if (it != pitchNames[programIndex].end ())
713 {
714 it->second.copyTo16 (name, 0, 128);
715 return kResultTrue;
716 }
717 }
718 return kResultFalse;
719}
720
721//------------------------------------------------------------------------
722} // namespace Vst
723} // namespace Steinberg
#define nullptr
Definition DistrhoDefines.h:75
CPluginView(const ViewRect *rect=nullptr)
Definition pluginview.cpp:44
virtual void changed(int32 msg=kChanged)
Inform all dependents, that the object has changed.
Definition fobject.cpp:106
Definition funknown.h:361
virtual tresult PLUGIN_API queryInterface(const TUID _iid, void **obj)=0
Definition funknown.h:403
Definition ibstream.h:30
const UString & copyTo(char16 *dst, int32 dstSize) const
Definition ustring.cpp:125
tresult PLUGIN_API initialize(FUnknown *context) SMTG_OVERRIDE
Definition vstcomponentbase.cpp:56
tresult PLUGIN_API terminate() SMTG_OVERRIDE
Definition vstcomponentbase.cpp:68
tresult PLUGIN_API getProgramInfo(ProgramListID listId, int32 programIndex, CString attributeId, String128 attributeValue) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:464
tresult PLUGIN_API getProgramListInfo(int32 listIndex, ProgramListInfo &info) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:430
tresult PLUGIN_API getUnitInfo(int32 unitIndex, UnitInfo &info) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:377
tresult PLUGIN_API getProgramName(ProgramListID listId, int32 programIndex, String128 name) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:440
~EditControllerEx1() override
Definition vsteditcontroller.cpp:349
UnitVector units
Definition vsteditcontroller.h:366
ProgramList * getProgramList(ProgramListID listId) const
Definition vsteditcontroller.cpp:407
ProgramListVector programLists
Definition vsteditcontroller.h:367
virtual tresult notifyUnitSelection()
Definition vsteditcontroller.cpp:388
EditControllerEx1()
Definition vsteditcontroller.cpp:343
tresult PLUGIN_API getProgramPitchName(ProgramListID listId, int32 programIndex, int16 midiPitch, String128 name) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:489
UnitID selectedUnit
Definition vsteditcontroller.h:369
tresult notifyProgramListChange(ProgramListID listId, int32 programIndex=kAllProgramInvalid)
Definition vsteditcontroller.cpp:414
int32 PLUGIN_API getProgramListCount() SMTG_OVERRIDE
Definition vsteditcontroller.cpp:424
tresult PLUGIN_API terminate() SMTG_OVERRIDE
Definition vsteditcontroller.cpp:354
bool addProgramList(ProgramList *list)
Definition vsteditcontroller.cpp:398
virtual tresult setProgramName(ProgramListID listId, int32 programIndex, const String128 name)
Definition vsteditcontroller.cpp:452
tresult PLUGIN_API hasProgramPitchNames(ProgramListID listId, int32 programIndex) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:477
void PLUGIN_API update(FUnknown *changedUnknown, int32 message) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:501
ProgramIndexMap programIndexMap
Definition vsteditcontroller.h:368
bool addUnit(Unit *unit)
Definition vsteditcontroller.cpp:370
Definition vsteditcontroller.h:62
virtual Parameter * getParameterObject(ParamID tag)
Definition vsteditcontroller.h:105
virtual tresult getParameterInfoByTag(ParamID tag, ParameterInfo &info)
Definition vsteditcontroller.cpp:268
int32 PLUGIN_API getParameterCount() SMTG_OVERRIDE
Definition vsteditcontroller.cpp:100
tresult PLUGIN_API setComponentHandler(IComponentHandler *handler) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:185
IComponentHandler * componentHandler
Definition vsteditcontroller.h:128
virtual tresult performEdit(ParamID tag, ParamValue valueNormalized)
will inform the host about the value change
Definition vsteditcontroller.cpp:228
virtual tresult finishGroupEdit()
calls IComponentHandler2::finishGroupEdit() if host supports it
Definition vsteditcontroller.cpp:258
ParameterContainer parameters
Definition vsteditcontroller.h:131
tresult PLUGIN_API initialize(FUnknown *context) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:56
virtual tresult startGroupEdit()
calls IComponentHandler2::startGroupEdit() if host supports it
Definition vsteditcontroller.cpp:248
ParamValue PLUGIN_API plainParamToNormalized(ParamID tag, ParamValue plainValue) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:154
tresult PLUGIN_API setParamNormalized(ParamID tag, ParamValue value) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:174
ParamValue PLUGIN_API normalizedParamToPlain(ParamID tag, ParamValue valueNormalized) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:143
virtual tresult requestOpenEditor(FIDString name=ViewType::kEditor)
Definition vsteditcontroller.cpp:289
tresult PLUGIN_API getState(IBStream *state) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:94
virtual tresult setDirty(TBool state)
Definition vsteditcontroller.cpp:279
tresult PLUGIN_API getParamValueByString(ParamID tag, TChar *string, ParamValue &valueNormalized) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:129
static KnobMode hostKnobMode
Definition vsteditcontroller.h:133
tresult PLUGIN_API getParameterInfo(int32 paramIndex, ParameterInfo &info) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:106
virtual tresult beginEdit(ParamID tag)
to be called before a serie of performEdit
Definition vsteditcontroller.cpp:218
tresult PLUGIN_API getParamStringByValue(ParamID tag, ParamValue valueNormalized, String128 string) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:117
ParamValue PLUGIN_API getParamNormalized(ParamID tag) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:164
tresult PLUGIN_API terminate() SMTG_OVERRIDE
Definition vsteditcontroller.cpp:62
virtual tresult endEdit(ParamID tag)
to be called after a serie of performEdit
Definition vsteditcontroller.cpp:238
tresult PLUGIN_API setComponentState(IBStream *state) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:82
tresult PLUGIN_API setState(IBStream *state) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:88
IComponentHandler2 * componentHandler2
Definition vsteditcontroller.h:129
EditController()
Definition vsteditcontroller.cpp:51
void attachedToParent() SMTG_OVERRIDE
Definition vsteditcontroller.cpp:322
EditorView(EditController *controller, ViewRect *size=nullptr)
Definition vsteditcontroller.cpp:302
EditController * controller
Definition vsteditcontroller.h:156
void removedFromParent() SMTG_OVERRIDE
Definition vsteditcontroller.cpp:331
~EditorView() override
Definition vsteditcontroller.cpp:312
static const FUID iid
Definition ivsteditcontroller.h:270
Definition ivsteditcontroller.h:165
Definition vstparameters.h:55
Definition vsteditcontroller.h:204
StringVector programNames
Definition vsteditcontroller.h:249
virtual tresult getProgramInfo(int32 programIndex, CString attributeId, String128 value)
Definition vsteditcontroller.cpp:581
virtual int32 addProgram(const String128 name)
Definition vsteditcontroller.cpp:561
ProgramListInfo info
Definition vsteditcontroller.h:247
ProgramList(const String128 name, ProgramListID listId, UnitID unitId)
Definition vsteditcontroller.cpp:543
int32 getCount() const
Definition vsteditcontroller.h:213
virtual bool setProgramInfo(int32 programIndex, CString attributeId, const String128 value)
Definition vsteditcontroller.cpp:570
ProgramInfoVector programInfos
Definition vsteditcontroller.h:250
virtual tresult setProgramName(int32 programIndex, const String128 name)
Definition vsteditcontroller.cpp:611
virtual Parameter * getParameter()
Definition vsteditcontroller.cpp:626
Parameter * parameter
Definition vsteditcontroller.h:251
virtual tresult getProgramName(int32 programIndex, String128 name)
Definition vsteditcontroller.cpp:600
UnitID unitId
Definition vsteditcontroller.h:248
int32 addProgram(const String128 name) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:653
bool setPitchName(int32 programIndex, int16 pitch, const String128 pitchName)
Definition vsteditcontroller.cpp:662
bool removePitchName(int32 programIndex, int16 pitch)
Definition vsteditcontroller.cpp:685
tresult hasPitchNames(int32 programIndex) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:698
PitchNamesVector pitchNames
Definition vsteditcontroller.h:280
ProgramListWithPitchNames(const String128 name, ProgramListID listId, UnitID unitId)
Definition vsteditcontroller.cpp:646
tresult getPitchName(int32 programIndex, int16 midiPitch, String128 name) SMTG_OVERRIDE
Definition vsteditcontroller.cpp:706
Definition vstparameters.h:154
Definition vsteditcontroller.h:164
Unit()
Definition vsteditcontroller.cpp:515
UnitInfo info
Definition vsteditcontroller.h:196
void setName(const String128 newName)
Definition vsteditcontroller.cpp:535
static PuglViewHint int value
Definition pugl.h:1708
static const char * name
Definition pugl.h:1582
struct backing_store_struct * info
Definition jmemsys.h:183
Definition ivstattributes.h:28
int32 KnobMode
Definition ivsteditcontroller.h:458
uint32 ParamID
parameter identifier
Definition vsttypes.h:75
TChar String128[128]
128 character UTF-16 string
Definition vsttypes.h:63
static const int32 kAllProgramInvalid
all program information is invalid
Definition ivstunits.h:65
char16 TChar
UTF-16 character.
Definition vsttypes.h:62
double ParamValue
parameter value type
Definition vsttypes.h:74
int32 ProgramListID
program list identifier
Definition vsttypes.h:76
static const UnitID kRootUnitId
identifier for the top level unit (root)
Definition ivstunits.h:33
int32 UnitID
unit identifier
Definition vsttypes.h:73
const char8 * CString
C-String.
Definition vsttypes.h:64
@ kCircularMode
Circular with jump to clicked position.
Definition ivsteditcontroller.h:448
Definition baseiids.cpp:43
short int16
Definition ftypes.h:43
UStringBuffer< 128 > UString128
128 character UTF-16 string
Definition ustring.h:108
C * FCast(const FObject *object)
Definition fobject.h:158
int int32
Definition ftypes.h:50
const char8 * FIDString
Definition ftypes.h:117
@ kNotImplemented
Definition funknown.h:197
@ kResultFalse
Definition funknown.h:195
@ kResultTrue
Definition funknown.h:194
uint8 TBool
Definition ftypes.h:89
int32 tresult
Definition ftypes.h:76
png_const_structrp png_const_inforp int * unit
Definition png.h:2161
Definition iplugview.h:35
Definition ivsteditcontroller.h:47
@ kIsList
parameter should be displayed as list in generic editor or automation editing [SDK 3....
Definition ivsteditcontroller.h:65
@ kCanAutomate
parameter can be automated
Definition ivsteditcontroller.h:62
@ kIsProgramChange
Definition ivsteditcontroller.h:69
Definition ivstunits.h:57
Definition ivstunits.h:45
ulg size
Definition extract.c:2350
int result
Definition process.c:1455