Krotos Modules 3
Loading...
Searching...
No Matches
Kwidget_XyPad.cpp
Go to the documentation of this file.
1namespace krotos
2{
3 const String Kwidget_XyPad::Parameters::posX = "posX";
4 const String Kwidget_XyPad::Parameters::posY = "posY";
5 const String Kwidget_XyPad::Parameters::onClick = "onClick";
6 const String Kwidget_XyPad::Parameters::toggleOn = "toggleOn";
7 const String Kwidget_XyPad::Parameters::editableLabelX = "editableLabelX";
8 const String Kwidget_XyPad::Parameters::editableLabelY = "editableLabelY";
9 const String Kwidget_XyPad::Parameters::editableLabelZ = "editableLabelZ";
10 const String Kwidget_XyPad::Parameters::editableLabelW = "editableLabelW";
11 const String Kwidget_XyPad::Parameters::editableLabelV = "editableLabelV";
12
13 const StringArray Kwidget_XyPad::modeStrings{
14 KwidgetFactory::KwidgetType::XyPad, // xyMode::Simple
19 };
20
21 Kwidget_XyPad::Kwidget_XyPad(const String& id, xyMode mode) : Kwidget(modeStrings[mode], id), m_currentMode(mode)
22 {
23 auto xLabelParam = createAndAddCustomParameter(Parameters::editableLabelX, "X-axis");
24 auto yLabelParam = createAndAddCustomParameter(Parameters::editableLabelY, "Y-axis");
25
26 init();
27 m_toggle = getParameter(Parameters::toggleOn);
28
29 xLabelParam->valueChanged = [this](const var& value) { labelXChange(value.toString()); };
30
31 yLabelParam->valueChanged = [this](const var& value) { labelYChange(value.toString()); };
32
33 // Switch between different xyModes to determine unique behaviour
34 switch (m_currentMode)
35 {
37 xLabelParam->setValue("X-Linear Axis");
38 yLabelParam->setValue("Y-Linear Axis");
39 auto zLabelParam = createAndAddCustomParameter(Parameters::editableLabelZ, "X-Peak Axis");
40 auto wLabelParam = createAndAddCustomParameter(Parameters::editableLabelW, "Y-Peak Axis");
41 zLabelParam->valueChanged = [this](const var& value) { labelZChange(value.toString()); };
42 wLabelParam->valueChanged = [this](const var& value) { labelWChange(value.toString()); };
43 break;
44 }
46 auto zLabelParam = createAndAddCustomParameter(Parameters::editableLabelZ, "Z-axis");
47 auto wLabelParam = createAndAddCustomParameter(Parameters::editableLabelW, "W-axis");
48 zLabelParam->valueChanged = [this](const var& value) { labelZChange(value.toString()); };
49 wLabelParam->valueChanged = [this](const var& value) { labelWChange(value.toString()); };
50 break;
51 }
53 xLabelParam->setValue("");
54 auto zLabelParam = createAndAddCustomParameter(Parameters::editableLabelZ, "Z-axis");
55 auto wLabelParam = createAndAddCustomParameter(Parameters::editableLabelW, "W-axis");
56 zLabelParam->valueChanged = [this](const var& value) { labelZChange(value.toString()); };
57 wLabelParam->valueChanged = [this](const var& value) { labelWChange(value.toString()); };
58 yLabelParam->setValue("Far");
59 zLabelParam->setValue("");
60 wLabelParam->setValue("Close");
61 break;
62 }
64 xLabelParam->setValue("X-Linear Axis");
65 yLabelParam->setValue("Y-Linear Axis");
66 auto wLabelParam = createAndAddCustomParameter(Parameters::editableLabelW, "Dist Decr");
67 wLabelParam->valueChanged = [this](const var& value) { labelWChange(value.toString()); };
68 auto zLabelParam = createAndAddCustomParameter(Parameters::editableLabelZ, "Dist Incr");
69 zLabelParam->valueChanged = [this](const var& value) { labelZChange(value.toString()); };
70 break;
71 }
72 }
73
74 createAndAddCustomParameter(Parameters::editableLabelV, "Velocity");
75 }
76
77 std::vector<Kwidget::ParameterInfo> Kwidget_XyPad::createParameters()
78 {
79 return {{Parameters::posX, Parameters::posX, {0.0f, 1.0f}, 0.5f},
80 {Parameters::posY, Parameters::posY, {0.0f, 1.0f}, 0.5f},
81 {Parameters::onClick, Parameters::onClick, {0.0f, 1.0f}, 0.0f},
82 {Parameters::toggleOn, Parameters::toggleOn, {0.0f, 1.0f}, 0.0f}};
83 }
84
85 std::unique_ptr<KwidgetProcessor> Kwidget_XyPad::createProcessor()
86 {
87 return std::make_unique<KwidgetProcessor_XyPad>(*this);
88 }
89
90 std::unique_ptr<KwidgetGUI> Kwidget_XyPad::createGUI() { return std::make_unique<KwidgetGUI_XyPad>(*this); }
91
92 void Kwidget_XyPad::addListener(Listener* listenerToAdd) { m_listeners.add(listenerToAdd); }
93
95 {
96 jassert(m_listeners.contains(listenerToRemove));
97 m_listeners.remove(listenerToRemove);
98 }
99
100 void Kwidget_XyPad::labelXChange(const String& newLabelX)
101 {
102 m_listeners.call([this, newLabelX](Listener& l) { l.labelXChanged(this, newLabelX); });
103 }
104
105 void Kwidget_XyPad::labelYChange(const String& newLabelY)
106 {
107 m_listeners.call([this, newLabelY](Listener& l) { l.labelYChanged(this, newLabelY); });
108 }
109
110 void Kwidget_XyPad::labelZChange(const String& newLabelZ)
111 {
112 m_listeners.call([this, newLabelZ](Listener& l) { l.labelZChanged(this, newLabelZ); });
113 }
114
115 void Kwidget_XyPad::labelWChange(const String& newLabelW)
116 {
117 m_listeners.call([this, newLabelW](Listener& l) { l.labelWChanged(this, newLabelW); });
118 }
119
120} // namespace krotos
Definition Kwidget_XyPad.h:7
virtual void labelZChanged(Kwidget_XyPad *xyPad, const String &newLabel)=0
virtual void labelYChanged(Kwidget_XyPad *xyPad, const String &newLabel)=0
virtual void labelXChanged(Kwidget_XyPad *xyPad, const String &newLabel)=0
virtual void labelWChanged(Kwidget_XyPad *xyPad, const String &newLabel)=0
void removeListener(Listener *listenerToRemove)
Definition Kwidget_XyPad.cpp:94
void addListener(Listener *listenerToAdd)
Definition Kwidget_XyPad.cpp:92
KParameter * m_toggle
Definition Kwidget_XyPad.h:71
std::vector< ParameterInfo > createParameters() override
Definition Kwidget_XyPad.cpp:77
xyMode m_currentMode
Definition Kwidget_XyPad.h:69
ListenerList< Listener > m_listeners
Definition Kwidget_XyPad.h:70
std::unique_ptr< KwidgetGUI > createGUI() override
Definition Kwidget_XyPad.cpp:90
void labelWChange(const String &newLabelX)
Definition Kwidget_XyPad.cpp:115
Kwidget_XyPad(const String &id, xyMode mode=xyMode::Simple)
Definition Kwidget_XyPad.cpp:21
void labelYChange(const String &newLabelX)
Definition Kwidget_XyPad.cpp:105
void labelXChange(const String &newLabelY)
Definition Kwidget_XyPad.cpp:100
std::unique_ptr< KwidgetProcessor > createProcessor() override
Definition Kwidget_XyPad.cpp:85
static const StringArray modeStrings
Definition Kwidget_XyPad.h:29
void labelZChange(const String &newLabelX)
Definition Kwidget_XyPad.cpp:110
xyMode
Definition Kwidget_XyPad.h:21
@ Peak
Definition Kwidget_XyPad.h:23
@ Polar
Definition Kwidget_XyPad.h:26
@ FourZone
Definition Kwidget_XyPad.h:24
@ Distance
Definition Kwidget_XyPad.h:25
Definition Kwidget.h:8
void init()
Definition Kwidget.cpp:27
KParameter * getParameter(const String &parameterID) const noexcept
Get a raw pointer to a KParameter belonging to this Kwidget's KwidgetProcessor. Useful for low overhe...
Definition Kwidget.cpp:168
CustomParameter * createAndAddCustomParameter(const String &paramID, const var &value)
Definition Kwidget.cpp:419
Definition AirAbsorptionFilter.cpp:2
static const String XYPadPolar
Definition KwidgetFactory.h:28
static const String XyPadPeak
Definition KwidgetFactory.h:25
static const String XyPad
Definition KwidgetFactory.h:21
static const String XYPad4Zone
Definition KwidgetFactory.h:26
static const String XYPadDistance
Definition KwidgetFactory.h:27