diff options
author | Damien Zammit <damien@zamaudio.com> | 2016-06-05 11:56:59 +1000 |
---|---|---|
committer | Damien Zammit <damien@zamaudio.com> | 2016-06-05 11:56:59 +1000 |
commit | e371bc62203710a168b3a088777f8a0dfcaab36e (patch) | |
tree | 5cf2c945645abe6a39785095d3e14a089f9bd84c | |
parent | c463b9d3aa246699204fc4b9df5723d74a5e3d08 (diff) |
Add numeric labels to plugins with break-out widgetlabelknobs
Signed-off-by: Damien Zammit <damien@zamaudio.com>
25 files changed, 877 insertions, 233 deletions
diff --git a/plugins/ZaMaximX2/ZaMaximX2UI.cpp b/plugins/ZaMaximX2/ZaMaximX2UI.cpp index 15d89bb..65ebed7 100644 --- a/plugins/ZaMaximX2/ZaMaximX2UI.cpp +++ b/plugins/ZaMaximX2/ZaMaximX2UI.cpp @@ -44,7 +44,7 @@ ZaMaximX2UI::ZaMaximX2UI() Image knobImage(ZaMaximX2Artwork::knobData, ZaMaximX2Artwork::knobWidth, ZaMaximX2Artwork::knobHeight); // knob - fKnobRelease = new ImageKnob(this, knobImage); + fKnobRelease = new ZamKnob(this, knobImage); fKnobRelease->setAbsolutePos(27, 46); fKnobRelease->setId(ZaMaximX2Plugin::paramRelease); fKnobRelease->setRange(1.0f, 100.0f); @@ -55,7 +55,7 @@ ZaMaximX2UI::ZaMaximX2UI() fKnobRelease->setRotationAngle(240); fKnobRelease->setCallback(this); - fKnobThresh = new ImageKnob(this, knobImage); + fKnobThresh = new ZamKnob(this, knobImage); fKnobThresh->setAbsolutePos(110, 46); fKnobThresh->setId(ZaMaximX2Plugin::paramThresh); fKnobThresh->setRange(-30.0f, 0.0f); @@ -65,7 +65,7 @@ ZaMaximX2UI::ZaMaximX2UI() fKnobThresh->setRotationAngle(240); fKnobThresh->setCallback(this); - fKnobCeiling = new ImageKnob(this, knobImage); + fKnobCeiling = new ZamKnob(this, knobImage); fKnobCeiling->setAbsolutePos(192, 46); fKnobCeiling->setId(ZaMaximX2Plugin::paramCeiling); fKnobCeiling->setRange(-30.0f, 0.0f); @@ -126,17 +126,17 @@ void ZaMaximX2UI::programLoaded(uint32_t index) // ----------------------------------------------------------------------- // Widget Callbacks -void ZaMaximX2UI::imageKnobDragStarted(ImageKnob* knob) +void ZaMaximX2UI::imageKnobDragStarted(ZamKnob* knob) { editParameter(knob->getId(), true); } -void ZaMaximX2UI::imageKnobDragFinished(ImageKnob* knob) +void ZaMaximX2UI::imageKnobDragFinished(ZamKnob* knob) { editParameter(knob->getId(), false); } -void ZaMaximX2UI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZaMaximX2UI::imageKnobValueChanged(ZamKnob* knob, float value) { setParameterValue(knob->getId(), value); } diff --git a/plugins/ZaMaximX2/ZaMaximX2UI.hpp b/plugins/ZaMaximX2/ZaMaximX2UI.hpp index 68c1ab2..759134e 100644 --- a/plugins/ZaMaximX2/ZaMaximX2UI.hpp +++ b/plugins/ZaMaximX2/ZaMaximX2UI.hpp @@ -20,18 +20,19 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" #include "ZaMaximX2Artwork.hpp" using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZaMaximX2UI : public UI, - public ImageKnob::Callback + public ZamKnob::Callback { public: ZaMaximX2UI(); @@ -46,16 +47,16 @@ protected: // ------------------------------------------------------------------- // Widget Callbacks - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void onDisplay() override; private: Image fImgBackground; - ScopedPointer<ImageKnob> fKnobRelease, fKnobThresh; - ScopedPointer<ImageKnob> fKnobCeiling; + ScopedPointer<ZamKnob> fKnobRelease, fKnobThresh; + ScopedPointer<ZamKnob> fKnobCeiling; Image fLedRedImg; float fLedRedValue; diff --git a/plugins/ZaMultiComp/ZaMultiCompUI.cpp b/plugins/ZaMultiComp/ZaMultiCompUI.cpp index 0e3f54c..6d54ae6 100644 --- a/plugins/ZaMultiComp/ZaMultiCompUI.cpp +++ b/plugins/ZaMultiComp/ZaMultiCompUI.cpp @@ -46,7 +46,7 @@ ZaMultiCompUI::ZaMultiCompUI() int x = 250; int y = 291; // knob - fKnobAttack1 = new ImageKnob(this, knobImage); + fKnobAttack1 = new ZamKnob(this, knobImage); fKnobAttack1->setAbsolutePos(26+x, 43+y); fKnobAttack1->setRange(0.1f, 200.0f); fKnobAttack1->setLabel(true); @@ -56,7 +56,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobAttack1->setRotationAngle(240); fKnobAttack1->setCallback(this); - fKnobAttack2 = new ImageKnob(this, knobImage); + fKnobAttack2 = new ZamKnob(this, knobImage); fKnobAttack2->setAbsolutePos(26+x, 43+y-50); fKnobAttack2->setRange(0.1f, 200.0f); fKnobAttack2->setLabel(true); @@ -66,7 +66,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobAttack2->setRotationAngle(240); fKnobAttack2->setCallback(this); - fKnobAttack3 = new ImageKnob(this, knobImage); + fKnobAttack3 = new ZamKnob(this, knobImage); fKnobAttack3->setAbsolutePos(26+x, 43+y-100); fKnobAttack3->setRange(0.1f, 200.0f); fKnobAttack3->setLabel(true); @@ -76,7 +76,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobAttack3->setRotationAngle(240); fKnobAttack3->setCallback(this); - fKnobRelease1 = new ImageKnob(this, knobImage); + fKnobRelease1 = new ZamKnob(this, knobImage); fKnobRelease1->setAbsolutePos(108+x, 43+y); fKnobRelease1->setRange(1.0f, 500.0f); fKnobRelease1->setLabel(true); @@ -85,7 +85,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobRelease1->setRotationAngle(240); fKnobRelease1->setCallback(this); - fKnobRelease2 = new ImageKnob(this, knobImage); + fKnobRelease2 = new ZamKnob(this, knobImage); fKnobRelease2->setAbsolutePos(108+x, 43+y-50); fKnobRelease2->setRange(1.0f, 500.0f); fKnobRelease2->setLabel(true); @@ -94,7 +94,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobRelease2->setRotationAngle(240); fKnobRelease2->setCallback(this); - fKnobRelease3 = new ImageKnob(this, knobImage); + fKnobRelease3 = new ZamKnob(this, knobImage); fKnobRelease3->setAbsolutePos(108+x, 43+y-100); fKnobRelease3->setRange(1.0f, 500.0f); fKnobRelease3->setLabel(true); @@ -103,7 +103,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobRelease3->setRotationAngle(240); fKnobRelease3->setCallback(this); - fKnobThresh3 = new ImageKnob(this, knobImage); + fKnobThresh3 = new ZamKnob(this, knobImage); fKnobThresh3->setAbsolutePos(94.5+31, 99+134); fKnobThresh3->setRange(-60.0f, 0.0f); fKnobThresh3->setLabel(true); @@ -112,7 +112,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobThresh3->setRotationAngle(240); fKnobThresh3->setCallback(this); - fKnobThresh2 = new ImageKnob(this, knobImage); + fKnobThresh2 = new ZamKnob(this, knobImage); fKnobThresh2->setAbsolutePos(94.5+31, 150+134); fKnobThresh2->setRange(-60.0f, 0.0f); fKnobThresh2->setLabel(true); @@ -121,7 +121,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobThresh2->setRotationAngle(240); fKnobThresh2->setCallback(this); - fKnobThresh1 = new ImageKnob(this, knobImage); + fKnobThresh1 = new ZamKnob(this, knobImage); fKnobThresh1->setAbsolutePos(94.5+31, 201+134); fKnobThresh1->setRange(-60.0f, 0.0f); fKnobThresh1->setLabel(true); @@ -130,7 +130,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobThresh1->setRotationAngle(240); fKnobThresh1->setCallback(this); - fKnobRatio1 = new ImageKnob(this, knobImage); + fKnobRatio1 = new ZamKnob(this, knobImage); fKnobRatio1->setAbsolutePos(191.5+x, 43+y); fKnobRatio1->setRange(1.0f, 20.0f); fKnobRatio1->setLabel(true); @@ -140,7 +140,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobRatio1->setRotationAngle(240); fKnobRatio1->setCallback(this); - fKnobRatio2 = new ImageKnob(this, knobImage); + fKnobRatio2 = new ZamKnob(this, knobImage); fKnobRatio2->setAbsolutePos(191.5+x, 43+y-50); fKnobRatio2->setRange(1.0f, 20.0f); fKnobRatio2->setLabel(true); @@ -150,7 +150,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobRatio2->setRotationAngle(240); fKnobRatio2->setCallback(this); - fKnobRatio3 = new ImageKnob(this, knobImage); + fKnobRatio3 = new ZamKnob(this, knobImage); fKnobRatio3->setAbsolutePos(191.5+x, 43+y-100); fKnobRatio3->setRange(1.0f, 20.0f); fKnobRatio3->setLabel(true); @@ -160,7 +160,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobRatio3->setRotationAngle(240); fKnobRatio3->setCallback(this); - fKnobKnee1 = new ImageKnob(this, knobImage); + fKnobKnee1 = new ZamKnob(this, knobImage); fKnobKnee1->setAbsolutePos(273+x, 43+y); fKnobKnee1->setRange(0.0f, 8.0f); fKnobKnee1->setLabel(true); @@ -169,7 +169,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobKnee1->setRotationAngle(240); fKnobKnee1->setCallback(this); - fKnobKnee2 = new ImageKnob(this, knobImage); + fKnobKnee2 = new ZamKnob(this, knobImage); fKnobKnee2->setAbsolutePos(273+x, 43+y-50); fKnobKnee2->setRange(0.0f, 8.0f); fKnobKnee2->setLabel(true); @@ -178,7 +178,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobKnee2->setRotationAngle(240); fKnobKnee2->setCallback(this); - fKnobKnee3 = new ImageKnob(this, knobImage); + fKnobKnee3 = new ZamKnob(this, knobImage); fKnobKnee3->setAbsolutePos(273+x, 43+y-100); fKnobKnee3->setRange(0.0f, 8.0f); fKnobKnee3->setLabel(true); @@ -187,7 +187,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobKnee3->setRotationAngle(240); fKnobKnee3->setCallback(this); - fKnobGlobalGain = new ImageKnob(this, knobImage); + fKnobGlobalGain = new ZamKnob(this, knobImage); fKnobGlobalGain->setAbsolutePos(427-170, 41); fKnobGlobalGain->setRange(-30.0f, 30.0f); fKnobGlobalGain->setLabel(true); @@ -196,7 +196,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobGlobalGain->setRotationAngle(240); fKnobGlobalGain->setCallback(this); - fKnobXover2 = new ImageKnob(this, knobImage); + fKnobXover2 = new ZamKnob(this, knobImage); fKnobXover2->setAbsolutePos(22+333, 121-80); fKnobXover2->setRange(1400.f, 14000.f); fKnobXover2->setLabel(true); @@ -206,7 +206,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobXover2->setRotationAngle(240); fKnobXover2->setCallback(this); - fKnobXover1 = new ImageKnob(this, knobImage); + fKnobXover1 = new ZamKnob(this, knobImage); fKnobXover1->setAbsolutePos(22+333, 175.5-80); fKnobXover1->setRange(20.0f, 1400.0f); fKnobXover1->setLabel(true); @@ -216,7 +216,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobXover1->setRotationAngle(240); fKnobXover1->setCallback(this); - fKnobMakeup3 = new ImageKnob(this, knobImage); + fKnobMakeup3 = new ZamKnob(this, knobImage); fKnobMakeup3->setAbsolutePos(167.75+30, 99.5+134); fKnobMakeup3->setRange(0.0f, 30.0f); fKnobMakeup3->setLabel(true); @@ -225,7 +225,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobMakeup3->setRotationAngle(240); fKnobMakeup3->setCallback(this); - fKnobMakeup2 = new ImageKnob(this, knobImage); + fKnobMakeup2 = new ZamKnob(this, knobImage); fKnobMakeup2->setAbsolutePos(167.75+30, 150.25+134); fKnobMakeup2->setRange(0.0f, 30.0f); fKnobMakeup2->setLabel(true); @@ -234,7 +234,7 @@ ZaMultiCompUI::ZaMultiCompUI() fKnobMakeup2->setRotationAngle(240); fKnobMakeup2->setCallback(this); - fKnobMakeup1 = new ImageKnob(this, knobImage); + fKnobMakeup1 = new ZamKnob(this, knobImage); fKnobMakeup1->setAbsolutePos(167.75+30, 201.4+134); fKnobMakeup1->setRange(0.0f, 30.0f); fKnobMakeup1->setLabel(true); @@ -627,7 +627,7 @@ void ZaMultiCompUI::stateChanged(const char*, const char*) // ----------------------------------------------------------------------- // Widget Callbacks -void ZaMultiCompUI::imageKnobDragStarted(ImageKnob* knob) +void ZaMultiCompUI::imageKnobDragStarted(ZamKnob* knob) { if (knob == fKnobAttack1) editParameter(ZaMultiCompPlugin::paramAttack1, true); @@ -673,7 +673,7 @@ void ZaMultiCompUI::imageKnobDragStarted(ImageKnob* knob) editParameter(ZaMultiCompPlugin::paramXover2, true); } -void ZaMultiCompUI::imageKnobDragFinished(ImageKnob* knob) +void ZaMultiCompUI::imageKnobDragFinished(ZamKnob* knob) { if (knob == fKnobAttack1) editParameter(ZaMultiCompPlugin::paramAttack1, false); @@ -719,7 +719,7 @@ void ZaMultiCompUI::imageKnobDragFinished(ImageKnob* knob) editParameter(ZaMultiCompPlugin::paramXover2, false); } -void ZaMultiCompUI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZaMultiCompUI::imageKnobValueChanged(ZamKnob* knob, float value) { if (knob == fKnobAttack1) setParameterValue(ZaMultiCompPlugin::paramAttack1, value); diff --git a/plugins/ZaMultiComp/ZaMultiCompUI.hpp b/plugins/ZaMultiComp/ZaMultiCompUI.hpp index f48d3d3..db1ff98 100644 --- a/plugins/ZaMultiComp/ZaMultiCompUI.hpp +++ b/plugins/ZaMultiComp/ZaMultiCompUI.hpp @@ -20,6 +20,7 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" #include "ZaMultiCompArtwork.hpp" @@ -27,7 +28,7 @@ #define MAX_COMP 3 using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; using DGL::ImageSwitch; START_NAMESPACE_DISTRHO @@ -35,7 +36,7 @@ START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZaMultiCompUI : public UI, - public ImageKnob::Callback, + public ZamKnob::Callback, public ImageSwitch::Callback { public: @@ -58,9 +59,9 @@ protected: // ------------------------------------------------------------------- // Widget Callbacks - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void imageSwitchClicked(ImageSwitch* toggle, bool down) override; @@ -86,18 +87,18 @@ sanitize_denormal(double value) { private: Image fImgBackground; - ScopedPointer<ImageKnob> fKnobAttack1, fKnobAttack2, fKnobAttack3; - ScopedPointer<ImageKnob> fKnobRelease1, fKnobRelease2, fKnobRelease3; - ScopedPointer<ImageKnob> fKnobThresh1, fKnobThresh2, fKnobThresh3; - ScopedPointer<ImageKnob> fKnobRatio1; - ScopedPointer<ImageKnob> fKnobRatio2; - ScopedPointer<ImageKnob> fKnobRatio3; - ScopedPointer<ImageKnob> fKnobKnee1; - ScopedPointer<ImageKnob> fKnobKnee2; - ScopedPointer<ImageKnob> fKnobKnee3; - ScopedPointer<ImageKnob> fKnobGlobalGain; - ScopedPointer<ImageKnob> fKnobMakeup1, fKnobMakeup2, fKnobMakeup3; - ScopedPointer<ImageKnob> fKnobXover1, fKnobXover2; + ScopedPointer<ZamKnob> fKnobAttack1, fKnobAttack2, fKnobAttack3; + ScopedPointer<ZamKnob> fKnobRelease1, fKnobRelease2, fKnobRelease3; + ScopedPointer<ZamKnob> fKnobThresh1, fKnobThresh2, fKnobThresh3; + ScopedPointer<ZamKnob> fKnobRatio1; + ScopedPointer<ZamKnob> fKnobRatio2; + ScopedPointer<ZamKnob> fKnobRatio3; + ScopedPointer<ZamKnob> fKnobKnee1; + ScopedPointer<ZamKnob> fKnobKnee2; + ScopedPointer<ZamKnob> fKnobKnee3; + ScopedPointer<ZamKnob> fKnobGlobalGain; + ScopedPointer<ZamKnob> fKnobMakeup1, fKnobMakeup2, fKnobMakeup3; + ScopedPointer<ZamKnob> fKnobXover1, fKnobXover2; ScopedPointer<ImageSwitch> fToggleBypass1, fToggleBypass2, fToggleBypass3; ScopedPointer<ImageSwitch> fToggleListen1, fToggleListen2, fToggleListen3; diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp b/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp index 4431098..52bde2e 100644 --- a/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp +++ b/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp @@ -47,7 +47,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() int x = 250; int y = 291; // knob - fKnobAttack1 = new ImageKnob(this, knobImage); + fKnobAttack1 = new ZamKnob(this, knobImage); fKnobAttack1->setAbsolutePos(26+x, 43+y); fKnobAttack1->setRange(0.1f, 200.0f); fKnobAttack1->setLabel(true); @@ -57,7 +57,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobAttack1->setRotationAngle(240); fKnobAttack1->setCallback(this); - fKnobAttack2 = new ImageKnob(this, knobImage); + fKnobAttack2 = new ZamKnob(this, knobImage); fKnobAttack2->setAbsolutePos(26+x, 43+y-50); fKnobAttack2->setRange(0.1f, 200.0f); fKnobAttack2->setLabel(true); @@ -67,7 +67,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobAttack2->setRotationAngle(240); fKnobAttack2->setCallback(this); - fKnobAttack3 = new ImageKnob(this, knobImage); + fKnobAttack3 = new ZamKnob(this, knobImage); fKnobAttack3->setAbsolutePos(26+x, 43+y-100); fKnobAttack3->setRange(0.1f, 200.0f); fKnobAttack3->setLabel(true); @@ -77,7 +77,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobAttack3->setRotationAngle(240); fKnobAttack3->setCallback(this); - fKnobRelease1 = new ImageKnob(this, knobImage); + fKnobRelease1 = new ZamKnob(this, knobImage); fKnobRelease1->setAbsolutePos(108+x, 43+y); fKnobRelease1->setRange(1.0f, 500.0f); fKnobRelease1->setLabel(true); @@ -86,7 +86,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobRelease1->setRotationAngle(240); fKnobRelease1->setCallback(this); - fKnobRelease2 = new ImageKnob(this, knobImage); + fKnobRelease2 = new ZamKnob(this, knobImage); fKnobRelease2->setAbsolutePos(108+x, 43+y-50); fKnobRelease2->setRange(1.0f, 500.0f); fKnobRelease2->setLabel(true); @@ -95,7 +95,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobRelease2->setRotationAngle(240); fKnobRelease2->setCallback(this); - fKnobRelease3 = new ImageKnob(this, knobImage); + fKnobRelease3 = new ZamKnob(this, knobImage); fKnobRelease3->setAbsolutePos(108+x, 43+y-100); fKnobRelease3->setRange(1.0f, 500.0f); fKnobRelease3->setLabel(true); @@ -104,7 +104,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobRelease3->setRotationAngle(240); fKnobRelease3->setCallback(this); - fKnobThresh3 = new ImageKnob(this, knobImage); + fKnobThresh3 = new ZamKnob(this, knobImage); fKnobThresh3->setAbsolutePos(94.5+31, 99+134); fKnobThresh3->setRange(-60.0f, 0.0f); fKnobThresh3->setLabel(true); @@ -113,7 +113,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobThresh3->setRotationAngle(240); fKnobThresh3->setCallback(this); - fKnobThresh2 = new ImageKnob(this, knobImage); + fKnobThresh2 = new ZamKnob(this, knobImage); fKnobThresh2->setAbsolutePos(94.5+31, 150+134); fKnobThresh2->setRange(-60.0f, 0.0f); fKnobThresh2->setLabel(true); @@ -122,7 +122,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobThresh2->setRotationAngle(240); fKnobThresh2->setCallback(this); - fKnobThresh1 = new ImageKnob(this, knobImage); + fKnobThresh1 = new ZamKnob(this, knobImage); fKnobThresh1->setAbsolutePos(94.5+31, 201+134); fKnobThresh1->setRange(-60.0f, 0.0f); fKnobThresh1->setLabel(true); @@ -131,7 +131,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobThresh1->setRotationAngle(240); fKnobThresh1->setCallback(this); - fKnobRatio1 = new ImageKnob(this, knobImage); + fKnobRatio1 = new ZamKnob(this, knobImage); fKnobRatio1->setAbsolutePos(191.5+x, 43+y); fKnobRatio1->setRange(1.0f, 20.0f); fKnobRatio1->setLabel(true); @@ -141,7 +141,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobRatio1->setRotationAngle(240); fKnobRatio1->setCallback(this); - fKnobRatio2 = new ImageKnob(this, knobImage); + fKnobRatio2 = new ZamKnob(this, knobImage); fKnobRatio2->setAbsolutePos(191.5+x, 43+y-50); fKnobRatio2->setRange(1.0f, 20.0f); fKnobRatio2->setLabel(true); @@ -151,7 +151,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobRatio2->setRotationAngle(240); fKnobRatio2->setCallback(this); - fKnobRatio3 = new ImageKnob(this, knobImage); + fKnobRatio3 = new ZamKnob(this, knobImage); fKnobRatio3->setAbsolutePos(191.5+x, 43+y-100); fKnobRatio3->setRange(1.0f, 20.0f); fKnobRatio3->setLabel(true); @@ -161,7 +161,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobRatio3->setRotationAngle(240); fKnobRatio3->setCallback(this); - fKnobKnee1 = new ImageKnob(this, knobImage); + fKnobKnee1 = new ZamKnob(this, knobImage); fKnobKnee1->setAbsolutePos(273+x, 43+y); fKnobKnee1->setRange(0.0f, 8.0f); fKnobKnee1->setLabel(true); @@ -170,7 +170,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobKnee1->setRotationAngle(240); fKnobKnee1->setCallback(this); - fKnobKnee2 = new ImageKnob(this, knobImage); + fKnobKnee2 = new ZamKnob(this, knobImage); fKnobKnee2->setAbsolutePos(273+x, 43+y-50); fKnobKnee2->setRange(0.0f, 8.0f); fKnobKnee2->setLabel(true); @@ -179,7 +179,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobKnee2->setRotationAngle(240); fKnobKnee2->setCallback(this); - fKnobKnee3 = new ImageKnob(this, knobImage); + fKnobKnee3 = new ZamKnob(this, knobImage); fKnobKnee3->setAbsolutePos(273+x, 43+y-100); fKnobKnee3->setRange(0.0f, 8.0f); fKnobKnee3->setLabel(true); @@ -188,7 +188,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobKnee3->setRotationAngle(240); fKnobKnee3->setCallback(this); - fKnobGlobalGain = new ImageKnob(this, knobImage); + fKnobGlobalGain = new ZamKnob(this, knobImage); fKnobGlobalGain->setAbsolutePos(427-170, 41); fKnobGlobalGain->setRange(-30.0f, 30.0f); fKnobGlobalGain->setLabel(true); @@ -197,7 +197,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobGlobalGain->setRotationAngle(240); fKnobGlobalGain->setCallback(this); - fKnobXover2 = new ImageKnob(this, knobImage); + fKnobXover2 = new ZamKnob(this, knobImage); fKnobXover2->setAbsolutePos(22+333, 121-80); fKnobXover2->setRange(1400.f, 14000.f); fKnobXover2->setLabel(true); @@ -207,7 +207,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobXover2->setRotationAngle(240); fKnobXover2->setCallback(this); - fKnobXover1 = new ImageKnob(this, knobImage); + fKnobXover1 = new ZamKnob(this, knobImage); fKnobXover1->setAbsolutePos(22+333, 175.5-80); fKnobXover1->setRange(20.0f, 1400.0f); fKnobXover1->setLabel(true); @@ -217,7 +217,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobXover1->setRotationAngle(240); fKnobXover1->setCallback(this); - fKnobMakeup3 = new ImageKnob(this, knobImage); + fKnobMakeup3 = new ZamKnob(this, knobImage); fKnobMakeup3->setAbsolutePos(167.75+30, 99.5+134); fKnobMakeup3->setRange(0.0f, 30.0f); fKnobMakeup3->setLabel(true); @@ -226,7 +226,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobMakeup3->setRotationAngle(240); fKnobMakeup3->setCallback(this); - fKnobMakeup2 = new ImageKnob(this, knobImage); + fKnobMakeup2 = new ZamKnob(this, knobImage); fKnobMakeup2->setAbsolutePos(167.75+30, 150.25+134); fKnobMakeup2->setRange(0.0f, 30.0f); fKnobMakeup2->setLabel(true); @@ -235,7 +235,7 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobMakeup2->setRotationAngle(240); fKnobMakeup2->setCallback(this); - fKnobMakeup1 = new ImageKnob(this, knobImage); + fKnobMakeup1 = new ZamKnob(this, knobImage); fKnobMakeup1->setAbsolutePos(167.75+30, 201.4+134); fKnobMakeup1->setRange(0.0f, 30.0f); fKnobMakeup1->setLabel(true); @@ -640,7 +640,7 @@ void ZaMultiCompX2UI::programLoaded(uint32_t index) // ----------------------------------------------------------------------- // Widget Callbacks -void ZaMultiCompX2UI::imageKnobDragStarted(ImageKnob* knob) +void ZaMultiCompX2UI::imageKnobDragStarted(ZamKnob* knob) { if (knob == fKnobAttack1) editParameter(ZaMultiCompX2Plugin::paramAttack1, true); @@ -686,7 +686,7 @@ void ZaMultiCompX2UI::imageKnobDragStarted(ImageKnob* knob) editParameter(ZaMultiCompX2Plugin::paramXover2, true); } -void ZaMultiCompX2UI::imageKnobDragFinished(ImageKnob* knob) +void ZaMultiCompX2UI::imageKnobDragFinished(ZamKnob* knob) { if (knob == fKnobAttack1) editParameter(ZaMultiCompX2Plugin::paramAttack1, false); @@ -732,7 +732,7 @@ void ZaMultiCompX2UI::imageKnobDragFinished(ImageKnob* knob) editParameter(ZaMultiCompX2Plugin::paramXover2, false); } -void ZaMultiCompX2UI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZaMultiCompX2UI::imageKnobValueChanged(ZamKnob* knob, float value) { if (knob == fKnobAttack1) setParameterValue(ZaMultiCompX2Plugin::paramAttack1, value); diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2UI.hpp b/plugins/ZaMultiCompX2/ZaMultiCompX2UI.hpp index 98c8eb3..d8919e0 100644 --- a/plugins/ZaMultiCompX2/ZaMultiCompX2UI.hpp +++ b/plugins/ZaMultiCompX2/ZaMultiCompX2UI.hpp @@ -20,6 +20,7 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" #include "ZaMultiCompX2Artwork.hpp" @@ -27,7 +28,7 @@ #define MAX_COMP 3 using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; using DGL::ImageSwitch; START_NAMESPACE_DISTRHO @@ -35,7 +36,7 @@ START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZaMultiCompX2UI : public UI, - public ImageKnob::Callback, + public ZamKnob::Callback, public ImageSwitch::Callback { public: @@ -57,9 +58,9 @@ protected: // ------------------------------------------------------------------- // Widget Callbacks - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void imageSwitchClicked(ImageSwitch* toggle, bool down) override; @@ -85,18 +86,18 @@ sanitize_denormal(double value) { private: Image fImgBackground; - ScopedPointer<ImageKnob> fKnobAttack1, fKnobAttack2, fKnobAttack3; - ScopedPointer<ImageKnob> fKnobRelease1, fKnobRelease2, fKnobRelease3; - ScopedPointer<ImageKnob> fKnobThresh1, fKnobThresh2, fKnobThresh3; - ScopedPointer<ImageKnob> fKnobRatio1; - ScopedPointer<ImageKnob> fKnobRatio2; - ScopedPointer<ImageKnob> fKnobRatio3; - ScopedPointer<ImageKnob> fKnobKnee1; - ScopedPointer<ImageKnob> fKnobKnee2; - ScopedPointer<ImageKnob> fKnobKnee3; - ScopedPointer<ImageKnob> fKnobGlobalGain; - ScopedPointer<ImageKnob> fKnobMakeup1, fKnobMakeup2, fKnobMakeup3; - ScopedPointer<ImageKnob> fKnobXover1, fKnobXover2; + ScopedPointer<ZamKnob> fKnobAttack1, fKnobAttack2, fKnobAttack3; + ScopedPointer<ZamKnob> fKnobRelease1, fKnobRelease2, fKnobRelease3; + ScopedPointer<ZamKnob> fKnobThresh1, fKnobThresh2, fKnobThresh3; + ScopedPointer<ZamKnob> fKnobRatio1; + ScopedPointer<ZamKnob> fKnobRatio2; + ScopedPointer<ZamKnob> fKnobRatio3; + ScopedPointer<ZamKnob> fKnobKnee1; + ScopedPointer<ZamKnob> fKnobKnee2; + ScopedPointer<ZamKnob> fKnobKnee3; + ScopedPointer<ZamKnob> fKnobGlobalGain; + ScopedPointer<ZamKnob> fKnobMakeup1, fKnobMakeup2, fKnobMakeup3; + ScopedPointer<ZamKnob> fKnobXover1, fKnobXover2; ScopedPointer<ImageSwitch> fToggleBypass1, fToggleBypass2, fToggleBypass3; ScopedPointer<ImageSwitch> fToggleListen1, fToggleListen2, fToggleListen3; ScopedPointer<ImageSwitch> fToggleStereo; diff --git a/plugins/ZamComp/ZamCompUI.cpp b/plugins/ZamComp/ZamCompUI.cpp index 11c58b9..739978a 100644 --- a/plugins/ZamComp/ZamCompUI.cpp +++ b/plugins/ZamComp/ZamCompUI.cpp @@ -47,7 +47,7 @@ ZamCompUI::ZamCompUI() Image knobImage(ZamCompArtwork::knobData, ZamCompArtwork::knobWidth, ZamCompArtwork::knobHeight); // knob - fKnobAttack = new ImageKnob(this, knobImage); + fKnobAttack = new ZamKnob(this, knobImage); fKnobAttack->setAbsolutePos(24, 45); fKnobAttack->setId(ZamCompPlugin::paramAttack); fKnobAttack->setRange(0.1f, 200.0f); @@ -58,7 +58,7 @@ ZamCompUI::ZamCompUI() fKnobAttack->setRotationAngle(240); fKnobAttack->setCallback(this); - fKnobRelease = new ImageKnob(this, knobImage); + fKnobRelease = new ZamKnob(this, knobImage); fKnobRelease->setAbsolutePos(108, 45); fKnobRelease->setId(ZamCompPlugin::paramRelease); fKnobRelease->setRange(1.0f, 500.0f); @@ -68,7 +68,7 @@ ZamCompUI::ZamCompUI() fKnobRelease->setRotationAngle(240); fKnobRelease->setCallback(this); - fKnobThresh = new ImageKnob(this, knobImage); + fKnobThresh = new ZamKnob(this, knobImage); fKnobThresh->setAbsolutePos(191.5, 45); fKnobThresh->setId(ZamCompPlugin::paramThresh); fKnobThresh->setRange(-60.0f, 0.0f); @@ -78,7 +78,7 @@ ZamCompUI::ZamCompUI() fKnobThresh->setRotationAngle(240); fKnobThresh->setCallback(this); - fKnobRatio = new ImageKnob(this, knobImage); + fKnobRatio = new ZamKnob(this, knobImage); fKnobRatio->setAbsolutePos(270, 45); fKnobRatio->setId(ZamCompPlugin::paramRatio); fKnobRatio->setRange(1.0f, 20.0f); @@ -89,7 +89,7 @@ ZamCompUI::ZamCompUI() fKnobRatio->setRotationAngle(240); fKnobRatio->setCallback(this); - fKnobKnee = new ImageKnob(this, knobImage); + fKnobKnee = new ZamKnob(this, knobImage); fKnobKnee->setAbsolutePos(348.5, 45); fKnobKnee->setId(ZamCompPlugin::paramKnee); fKnobKnee->setRange(0.0f, 8.0f); @@ -99,7 +99,7 @@ ZamCompUI::ZamCompUI() fKnobKnee->setRotationAngle(240); fKnobKnee->setCallback(this); - fKnobMakeup = new ImageKnob(this, knobImage); + fKnobMakeup = new ZamKnob(this, knobImage); fKnobMakeup->setAbsolutePos(638, 62); fKnobMakeup->setId(ZamCompPlugin::paramMakeup); fKnobMakeup->setRange(-30.0f, 30.0f); @@ -109,7 +109,7 @@ ZamCompUI::ZamCompUI() fKnobMakeup->setRotationAngle(240); fKnobMakeup->setCallback(this); - fKnobSlew = new ImageKnob(this, knobImage); + fKnobSlew = new ZamKnob(this, knobImage); fKnobSlew->setAbsolutePos(427.3, 45); fKnobSlew->setId(ZamCompPlugin::paramSlew); fKnobSlew->setRange(1.0f, 150.0f); @@ -215,17 +215,17 @@ void ZamCompUI::programLoaded(uint32_t index) // ----------------------------------------------------------------------- // Widget Callbacks -void ZamCompUI::imageKnobDragStarted(ImageKnob* knob) +void ZamCompUI::imageKnobDragStarted(ZamKnob* knob) { editParameter(knob->getId(), true); } -void ZamCompUI::imageKnobDragFinished(ImageKnob* knob) +void ZamCompUI::imageKnobDragFinished(ZamKnob* knob) { editParameter(knob->getId(), false); } -void ZamCompUI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZamCompUI::imageKnobValueChanged(ZamKnob* knob, float value) { setParameterValue(knob->getId(), value); } diff --git a/plugins/ZamComp/ZamCompUI.hpp b/plugins/ZamComp/ZamCompUI.hpp index cb7f524..b04f32d 100644 --- a/plugins/ZamComp/ZamCompUI.hpp +++ b/plugins/ZamComp/ZamCompUI.hpp @@ -20,18 +20,19 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" #include "ZamCompArtwork.hpp" using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZamCompUI : public UI, - public ImageKnob::Callback, + public ZamKnob::Callback, public ImageSwitch::Callback { public: @@ -47,17 +48,17 @@ protected: // ------------------------------------------------------------------- // Widget Callbacks - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void imageSwitchClicked(ImageSwitch* tog, bool down) override; void onDisplay() override; private: Image fImgBackground; - ScopedPointer<ImageKnob> fKnobAttack, fKnobRelease, fKnobThresh; - ScopedPointer<ImageKnob> fKnobRatio, fKnobKnee, fKnobMakeup, fKnobSlew; + ScopedPointer<ZamKnob> fKnobAttack, fKnobRelease, fKnobThresh; + ScopedPointer<ZamKnob> fKnobRatio, fKnobKnee, fKnobMakeup, fKnobSlew; ScopedPointer<ImageSwitch> fToggleSidechain; Image fLedRedImg; diff --git a/plugins/ZamCompX2/ZamCompX2UI.cpp b/plugins/ZamCompX2/ZamCompX2UI.cpp index 63982d0..a932983 100644 --- a/plugins/ZamCompX2/ZamCompX2UI.cpp +++ b/plugins/ZamCompX2/ZamCompX2UI.cpp @@ -48,7 +48,7 @@ ZamCompX2UI::ZamCompX2UI() Image knobImage(ZamCompX2Artwork::knobData, ZamCompX2Artwork::knobWidth, ZamCompX2Artwork::knobHeight); // knob - fKnobAttack = new ImageKnob(this, knobImage); + fKnobAttack = new ZamKnob(this, knobImage); fKnobAttack->setAbsolutePos(24, 45); fKnobAttack->setId(ZamCompX2Plugin::paramAttack); fKnobAttack->setRange(0.1f, 200.0f); @@ -59,7 +59,7 @@ ZamCompX2UI::ZamCompX2UI() fKnobAttack->setRotationAngle(240); fKnobAttack->setCallback(this); - fKnobRelease = new ImageKnob(this, knobImage); + fKnobRelease = new ZamKnob(this, knobImage); fKnobRelease->setAbsolutePos(108, 45); fKnobRelease->setId(ZamCompX2Plugin::paramRelease); fKnobRelease->setRange(1.0f, 500.0f); @@ -69,7 +69,7 @@ ZamCompX2UI::ZamCompX2UI() fKnobRelease->setRotationAngle(240); fKnobRelease->setCallback(this); - fKnobThresh = new ImageKnob(this, knobImage); + fKnobThresh = new ZamKnob(this, knobImage); fKnobThresh->setAbsolutePos(191.5, 45); fKnobThresh->setId(ZamCompX2Plugin::paramThresh); fKnobThresh->setRange(-60.0f, 0.0f); @@ -79,7 +79,7 @@ ZamCompX2UI::ZamCompX2UI() fKnobThresh->setRotationAngle(240); fKnobThresh->setCallback(this); - fKnobRatio = new ImageKnob(this, knobImage); + fKnobRatio = new ZamKnob(this, knobImage); fKnobRatio->setAbsolutePos(270, 45); fKnobRatio->setId(ZamCompX2Plugin::paramRatio); fKnobRatio->setRange(1.0f, 20.0f); @@ -90,7 +90,7 @@ ZamCompX2UI::ZamCompX2UI() fKnobRatio->setRotationAngle(240); fKnobRatio->setCallback(this); - fKnobKnee = new ImageKnob(this, knobImage); + fKnobKnee = new ZamKnob(this, knobImage); fKnobKnee->setAbsolutePos(348.5, 45); fKnobKnee->setId(ZamCompX2Plugin::paramKnee); fKnobKnee->setRange(0.0f, 8.0f); @@ -100,7 +100,7 @@ ZamCompX2UI::ZamCompX2UI() fKnobKnee->setRotationAngle(240); fKnobKnee->setCallback(this); - fKnobMakeup = new ImageKnob(this, knobImage); + fKnobMakeup = new ZamKnob(this, knobImage); fKnobMakeup->setAbsolutePos(638, 62); fKnobMakeup->setId(ZamCompX2Plugin::paramMakeup); fKnobMakeup->setRange(-30.0f, 30.0f); @@ -110,7 +110,7 @@ ZamCompX2UI::ZamCompX2UI() fKnobMakeup->setRotationAngle(240); fKnobMakeup->setCallback(this); - fKnobSlew = new ImageKnob(this, knobImage); + fKnobSlew = new ZamKnob(this, knobImage); fKnobSlew->setAbsolutePos(427.3, 45); fKnobSlew->setId(ZamCompX2Plugin::paramSlew); fKnobSlew->setRange(1.0f, 150.0f); @@ -227,17 +227,17 @@ void ZamCompX2UI::programLoaded(uint32_t index) // ----------------------------------------------------------------------- // Widget Callbacks -void ZamCompX2UI::imageKnobDragStarted(ImageKnob* knob) +void ZamCompX2UI::imageKnobDragStarted(ZamKnob* knob) { editParameter(knob->getId(), true); } -void ZamCompX2UI::imageKnobDragFinished(ImageKnob* knob) +void ZamCompX2UI::imageKnobDragFinished(ZamKnob* knob) { editParameter(knob->getId(), false); } -void ZamCompX2UI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZamCompX2UI::imageKnobValueChanged(ZamKnob* knob, float value) { setParameterValue(knob->getId(), value); } diff --git a/plugins/ZamCompX2/ZamCompX2UI.hpp b/plugins/ZamCompX2/ZamCompX2UI.hpp index 97e9d4f..5f02400 100644 --- a/plugins/ZamCompX2/ZamCompX2UI.hpp +++ b/plugins/ZamCompX2/ZamCompX2UI.hpp @@ -20,11 +20,12 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" #include "ZamCompX2Artwork.hpp" using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; using DGL::ImageSwitch; START_NAMESPACE_DISTRHO @@ -32,7 +33,7 @@ START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZamCompX2UI : public UI, - public ImageKnob::Callback, + public ZamKnob::Callback, public ImageSwitch::Callback { public: @@ -48,17 +49,17 @@ protected: // ------------------------------------------------------------------- // Widget Callbacks - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void imageSwitchClicked(ImageSwitch* toggle, bool down) override; void onDisplay() override; private: Image fImgBackground; - ScopedPointer<ImageKnob> fKnobAttack, fKnobRelease, fKnobThresh; - ScopedPointer<ImageKnob> fKnobRatio, fKnobKnee, fKnobMakeup, fKnobSlew; + ScopedPointer<ZamKnob> fKnobAttack, fKnobRelease, fKnobThresh; + ScopedPointer<ZamKnob> fKnobRatio, fKnobKnee, fKnobMakeup, fKnobSlew; ScopedPointer<ImageSwitch> fToggleStereo, fToggleSidechain; Image fLedRedImg; diff --git a/plugins/ZamDelay/ZamDelayUI.cpp b/plugins/ZamDelay/ZamDelayUI.cpp index 2228fa6..e4d8475 100644 --- a/plugins/ZamDelay/ZamDelayUI.cpp +++ b/plugins/ZamDelay/ZamDelayUI.cpp @@ -47,7 +47,7 @@ ZamDelayUI::ZamDelayUI() Image triangleImage(ZamDelayArtwork::triangleData, ZamDelayArtwork::triangleWidth, ZamDelayArtwork::triangleHeight); // knob - fKnobDelaytime = new ImageKnob(this, knobImage); + fKnobDelaytime = new ZamKnob(this, knobImage); fKnobDelaytime->setAbsolutePos(190, 79); fKnobDelaytime->setId(ZamDelayPlugin::paramDelaytime); fKnobDelaytime->setRange(1.0f, 8000.0f); @@ -68,7 +68,7 @@ ZamDelayUI::ZamDelayUI() fToggleBPM->setId(ZamDelayPlugin::paramSync); fToggleBPM->setCallback(this); - fKnobLPF = new ImageKnob(this, knobImage); + fKnobLPF = new ZamKnob(this, knobImage); fKnobLPF->setAbsolutePos(67.5, 79); fKnobLPF->setId(ZamDelayPlugin::paramLPF); fKnobLPF->setRange(20.0f, 20000.0f); @@ -79,7 +79,7 @@ ZamDelayUI::ZamDelayUI() fKnobLPF->setRotationAngle(240); fKnobLPF->setCallback(this); - fKnobGain = new ImageKnob(this, knobImage); + fKnobGain = new ZamKnob(this, knobImage); fKnobGain->setAbsolutePos(66, 201); fKnobGain->setId(ZamDelayPlugin::paramGain); fKnobGain->setRange(-60.0f, 0.0f); @@ -88,7 +88,7 @@ ZamDelayUI::ZamDelayUI() fKnobGain->setRotationAngle(240); fKnobGain->setCallback(this); - fKnobDrywet = new ImageKnob(this, knobImage); + fKnobDrywet = new ZamKnob(this, knobImage); fKnobDrywet->setAbsolutePos(332, 231); fKnobDrywet->setId(ZamDelayPlugin::paramDrywet); fKnobDrywet->setRange(0.0f, 1.0f); @@ -98,7 +98,7 @@ ZamDelayUI::ZamDelayUI() fKnobDrywet->setRotationAngle(240); fKnobDrywet->setCallback(this); - fKnobFeedback = new ImageKnob(this, knobImage); + fKnobFeedback = new ZamKnob(this, knobImage); fKnobFeedback->setAbsolutePos(332, 138); fKnobFeedback->setId(ZamDelayPlugin::paramFeedback); fKnobFeedback->setRange(0.0f, 1.0f); @@ -196,17 +196,17 @@ void ZamDelayUI::imageSliderValueChanged(ImageSlider* s, float value) setParameterValue(s->getId(), value); } -void ZamDelayUI::imageKnobDragStarted(ImageKnob* knob) +void ZamDelayUI::imageKnobDragStarted(ZamKnob* knob) { editParameter(knob->getId(), true); } -void ZamDelayUI::imageKnobDragFinished(ImageKnob* knob) +void ZamDelayUI::imageKnobDragFinished(ZamKnob* knob) { editParameter(knob->getId(), false); } -void ZamDelayUI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZamDelayUI::imageKnobValueChanged(ZamKnob* knob, float value) { setParameterValue(knob->getId(), value); } diff --git a/plugins/ZamDelay/ZamDelayUI.hpp b/plugins/ZamDelay/ZamDelayUI.hpp index 6110eab..b0307e4 100644 --- a/plugins/ZamDelay/ZamDelayUI.hpp +++ b/plugins/ZamDelay/ZamDelayUI.hpp @@ -20,11 +20,12 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" #include "ZamDelayArtwork.hpp" using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; using DGL::ImageSwitch; using DGL::ImageSlider; @@ -33,7 +34,7 @@ START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZamDelayUI : public UI, - public ImageKnob::Callback, + public ZamKnob::Callback, public ImageSwitch::Callback, public ImageSlider::Callback { @@ -50,9 +51,9 @@ protected: // ------------------------------------------------------------------- // Widget Callbacks - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void imageSwitchClicked(ImageSwitch* tog, bool down) override; @@ -64,7 +65,7 @@ protected: private: Image fImgBackground; - ScopedPointer<ImageKnob> fKnobDelaytime, fKnobLPF, fKnobGain, fKnobDrywet, fKnobFeedback; + ScopedPointer<ZamKnob> fKnobDelaytime, fKnobLPF, fKnobGain, fKnobDrywet, fKnobFeedback; ScopedPointer<ImageSwitch> fToggleInvert, fToggleBPM; ScopedPointer<ImageSlider> fSliderDiv; }; diff --git a/plugins/ZamEQ2/ZamEQ2UI.cpp b/plugins/ZamEQ2/ZamEQ2UI.cpp index d7c067c..a909c53 100644 --- a/plugins/ZamEQ2/ZamEQ2UI.cpp +++ b/plugins/ZamEQ2/ZamEQ2UI.cpp @@ -38,7 +38,7 @@ ZamEQ2UI::ZamEQ2UI() Image knobImage(ZamEQ2Artwork::knobData, ZamEQ2Artwork::knobWidth, ZamEQ2Artwork::knobHeight); // knob - fKnobGain1 = new ImageKnob(this, knobImage); + fKnobGain1 = new ZamKnob(this, knobImage); fKnobGain1->setAbsolutePos(91, 172); fKnobGain1->setRange(-50.f, 20.0f); fKnobGain1->setLabel(true); @@ -47,7 +47,7 @@ ZamEQ2UI::ZamEQ2UI() fKnobGain1->setDefault(0.0f); fKnobGain1->setCallback(this); - fKnobQ1 = new ImageKnob(this, knobImage); + fKnobQ1 = new ZamKnob(this, knobImage); fKnobQ1->setAbsolutePos(91, 122); fKnobQ1->setRange(0.1f, 6.0f); fKnobQ1->setLabel(true); @@ -56,7 +56,7 @@ ZamEQ2UI::ZamEQ2UI() fKnobQ1->setDefault(1.0f); fKnobQ1->setCallback(this); - fKnobFreq1 = new ImageKnob(this, knobImage); + fKnobFreq1 = new ZamKnob(this, knobImage); fKnobFreq1->setAbsolutePos(23, 144); fKnobFreq1->setUsingLogScale(true); fKnobFreq1->setRange(20.f, 14000.0f); @@ -66,7 +66,7 @@ ZamEQ2UI::ZamEQ2UI() fKnobFreq1->setDefault(500.0f); fKnobFreq1->setCallback(this); - fKnobGain2 = new ImageKnob(this, knobImage); + fKnobGain2 = new ZamKnob(this, knobImage); fKnobGain2->setAbsolutePos(567, 172); fKnobGain2->setRange(-50.f, 20.0f); fKnobGain2->setLabel(true); @@ -75,7 +75,7 @@ ZamEQ2UI::ZamEQ2UI() fKnobGain2->setDefault(0.0f); fKnobGain2->setCallback(this); - fKnobQ2 = new ImageKnob(this, knobImage); + fKnobQ2 = new ZamKnob(this, knobImage); fKnobQ2->setAbsolutePos(567, 122); fKnobQ2->setRange(0.1f, 6.0f); fKnobQ2->setLabel(true); @@ -84,7 +84,7 @@ ZamEQ2UI::ZamEQ2UI() fKnobQ2->setDefault(1.0f); fKnobQ2->setCallback(this); - fKnobFreq2 = new ImageKnob(this, knobImage); + fKnobFreq2 = new ZamKnob(this, knobImage); fKnobFreq2->setAbsolutePos(499, 144); fKnobFreq2->setUsingLogScale(true); fKnobFreq2->setRange(20.f, 14000.0f); @@ -94,7 +94,7 @@ ZamEQ2UI::ZamEQ2UI() fKnobFreq2->setDefault(3000.0f); fKnobFreq2->setCallback(this); - fKnobGainL = new ImageKnob(this, knobImage); + fKnobGainL = new ZamKnob(this, knobImage); fKnobGainL->setAbsolutePos(91, 52); fKnobGainL->setRange(-50.f, 20.0f); fKnobGainL->setLabel(true); @@ -103,7 +103,7 @@ ZamEQ2UI::ZamEQ2UI() fKnobGainL->setDefault(0.0f); fKnobGainL->setCallback(this); - fKnobFreqL = new ImageKnob(this, knobImage); + fKnobFreqL = new ZamKnob(this, knobImage); fKnobFreqL->setAbsolutePos(23, 23); fKnobFreqL->setUsingLogScale(true); fKnobFreqL->setRange(20.f, 14000.0f); @@ -113,7 +113,7 @@ ZamEQ2UI::ZamEQ2UI() fKnobFreqL->setDefault(250.0f); fKnobFreqL->setCallback(this); - fKnobGainH = new ImageKnob(this, knobImage); + fKnobGainH = new ZamKnob(this, knobImage); fKnobGainH->setAbsolutePos(567, 53); fKnobGainH->setRange(-50.f, 20.0f); fKnobGainH->setLabel(true); @@ -122,7 +122,7 @@ ZamEQ2UI::ZamEQ2UI() fKnobGainH->setDefault(0.0f); fKnobGainH->setCallback(this); - fKnobFreqH = new ImageKnob(this, knobImage); + fKnobFreqH = new ZamKnob(this, knobImage); fKnobFreqH->setAbsolutePos(499, 24); fKnobFreqH->setUsingLogScale(true); fKnobFreqH->setRange(20.f, 14000.0f); @@ -254,7 +254,7 @@ void ZamEQ2UI::programLoaded(uint32_t index) // ----------------------------------------------------------------------- // Widget Callbacks -void ZamEQ2UI::imageKnobDragStarted(ImageKnob* knob) +void ZamEQ2UI::imageKnobDragStarted(ZamKnob* knob) { if (knob == fKnobGain1) editParameter(ZamEQ2Plugin::paramGain1, true); @@ -278,7 +278,7 @@ void ZamEQ2UI::imageKnobDragStarted(ImageKnob* knob) editParameter(ZamEQ2Plugin::paramFreqH, true); } -void ZamEQ2UI::imageKnobDragFinished(ImageKnob* knob) +void ZamEQ2UI::imageKnobDragFinished(ZamKnob* knob) { if (knob == fKnobGain1) editParameter(ZamEQ2Plugin::paramGain1, false); @@ -302,7 +302,7 @@ void ZamEQ2UI::imageKnobDragFinished(ImageKnob* knob) editParameter(ZamEQ2Plugin::paramFreqH, false); } -void ZamEQ2UI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZamEQ2UI::imageKnobValueChanged(ZamKnob* knob, float value) { if (knob == fKnobGain1) setParameterValue(ZamEQ2Plugin::paramGain1, value); diff --git a/plugins/ZamEQ2/ZamEQ2UI.hpp b/plugins/ZamEQ2/ZamEQ2UI.hpp index 7ce00e1..d714834 100644 --- a/plugins/ZamEQ2/ZamEQ2UI.hpp +++ b/plugins/ZamEQ2/ZamEQ2UI.hpp @@ -20,6 +20,7 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" #include "ZamEQ2Artwork.hpp" #include "ZamEQ2Plugin.hpp" @@ -28,7 +29,7 @@ #include <complex> using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; using DGL::ImageSlider; START_NAMESPACE_DISTRHO @@ -36,7 +37,7 @@ START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZamEQ2UI : public UI, - public ImageKnob::Callback, + public ZamKnob::Callback, public ImageSlider::Callback { public: @@ -105,9 +106,9 @@ protected: // ------------------------------------------------------------------- // Widget Callbacks - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void imageSliderDragStarted(ImageSlider* slider) override; void imageSliderDragFinished(ImageSlider* slider) override; @@ -117,11 +118,11 @@ protected: private: Image fImgBackground; - ScopedPointer<ImageKnob> fKnobGain1; - ScopedPointer<ImageKnob> fKnobQ1, fKnobFreq1, fKnobGain2; - ScopedPointer<ImageKnob> fKnobQ2, fKnobFreq2; - ScopedPointer<ImageKnob> fKnobGainL, fKnobFreqL; - ScopedPointer<ImageKnob> fKnobGainH, fKnobFreqH; + ScopedPointer<ZamKnob> fKnobGain1; + ScopedPointer<ZamKnob> fKnobQ1, fKnobFreq1, fKnobGain2; + ScopedPointer<ZamKnob> fKnobQ2, fKnobFreq2; + ScopedPointer<ZamKnob> fKnobGainL, fKnobFreqL; + ScopedPointer<ZamKnob> fKnobGainH, fKnobFreqH; ScopedPointer<ImageSlider> fSliderMaster; float eqx[EQPOINTS]; float eqy[EQPOINTS]; diff --git a/plugins/ZamGEQ31/ZamGEQ31UI.cpp b/plugins/ZamGEQ31/ZamGEQ31UI.cpp index 440bc35..3c5583a 100644 --- a/plugins/ZamGEQ31/ZamGEQ31UI.cpp +++ b/plugins/ZamGEQ31/ZamGEQ31UI.cpp @@ -36,7 +36,7 @@ ZamGEQ31UI::ZamGEQ31UI() Image knobImage(ZamGEQ31Artwork::knobData, ZamGEQ31Artwork::knobWidth, ZamGEQ31Artwork::knobHeight); // master knob - fKnobMaster = new ImageKnob(this, knobImage); + fKnobMaster = new ZamKnob(this, knobImage); fKnobMaster->setAbsolutePos(103, 122); fKnobMaster->setRange(-20.f, 20.f); fKnobMaster->setLabel(true); @@ -513,19 +513,19 @@ void ZamGEQ31UI::programLoaded(uint32_t index) // ----------------------------------------------------------------------- // Widget Callbacks -void ZamGEQ31UI::imageKnobDragStarted(ImageKnob* knob) +void ZamGEQ31UI::imageKnobDragStarted(ZamKnob* knob) { if (knob == fKnobMaster) editParameter(ZamGEQ31Plugin::paramMaster, true); } -void ZamGEQ31UI::imageKnobDragFinished(ImageKnob* knob) +void ZamGEQ31UI::imageKnobDragFinished(ZamKnob* knob) { if (knob == fKnobMaster) editParameter(ZamGEQ31Plugin::paramMaster, false); } -void ZamGEQ31UI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZamGEQ31UI::imageKnobValueChanged(ZamKnob* knob, float value) { if (knob == fKnobMaster) setParameterValue(ZamGEQ31Plugin::paramMaster, value); diff --git a/plugins/ZamGEQ31/ZamGEQ31UI.hpp b/plugins/ZamGEQ31/ZamGEQ31UI.hpp index 4ccbde4..95fcfbd 100644 --- a/plugins/ZamGEQ31/ZamGEQ31UI.hpp +++ b/plugins/ZamGEQ31/ZamGEQ31UI.hpp @@ -20,12 +20,13 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" #include "ZamGEQ31Artwork.hpp" #include "ZamGEQ31Plugin.hpp" using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; using DGL::ImageSlider; START_NAMESPACE_DISTRHO @@ -33,7 +34,7 @@ START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZamGEQ31UI : public UI, - public ImageKnob::Callback, + public ZamKnob::Callback, public ImageSlider::Callback { public: @@ -61,9 +62,9 @@ protected: // ------------------------------------------------------------------- // Widget Callbacks - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void imageSliderDragStarted(ImageSlider* slider) override; void imageSliderDragFinished(ImageSlider* slider) override; @@ -73,8 +74,8 @@ protected: private: Image fImgBackground; - ScopedPointer<ImageKnob> fKnobMaster; - ScopedPointer<ImageKnob> fKnobQ; + ScopedPointer<ZamKnob> fKnobMaster; + ScopedPointer<ZamKnob> fKnobQ; ScopedPointer<ImageSlider> fSliderGain1; ScopedPointer<ImageSlider> fSliderGain2; ScopedPointer<ImageSlider> fSliderGain3; diff --git a/plugins/ZamGate/ZamGateUI.cpp b/plugins/ZamGate/ZamGateUI.cpp index 355c7ac..325651d 100644 --- a/plugins/ZamGate/ZamGateUI.cpp +++ b/plugins/ZamGate/ZamGateUI.cpp @@ -44,7 +44,7 @@ ZamGateUI::ZamGateUI() Image knobImage(ZamGateArtwork::knobData, ZamGateArtwork::knobWidth, ZamGateArtwork::knobHeight); // knob - fKnobAttack = new ImageKnob(this, knobImage); + fKnobAttack = new ZamKnob(this, knobImage); fKnobAttack->setAbsolutePos(24, 45); fKnobAttack->setId(ZamGatePlugin::paramAttack); fKnobAttack->setRange(0.1f, 500.0f); @@ -54,7 +54,7 @@ ZamGateUI::ZamGateUI() fKnobAttack->setRotationAngle(240); fKnobAttack->setCallback(this); - fKnobRelease = new ImageKnob(this, knobImage); + fKnobRelease = new ZamKnob(this, knobImage); fKnobRelease->setAbsolutePos(108, 45); fKnobRelease->setId(ZamGatePlugin::paramRelease); fKnobRelease->setRange(0.1f, 500.0f); @@ -64,7 +64,7 @@ ZamGateUI::ZamGateUI() fKnobRelease->setRotationAngle(240); fKnobRelease->setCallback(this); - fKnobThresh = new ImageKnob(this, knobImage); + fKnobThresh = new ZamKnob(this, knobImage); fKnobThresh->setAbsolutePos(191.7, 45); fKnobThresh->setId(ZamGatePlugin::paramThresh); fKnobThresh->setRange(-60.0f, 0.0f); @@ -74,7 +74,7 @@ ZamGateUI::ZamGateUI() fKnobThresh->setRotationAngle(240); fKnobThresh->setCallback(this); - fKnobMakeup = new ImageKnob(this, knobImage); + fKnobMakeup = new ZamKnob(this, knobImage); fKnobMakeup->setAbsolutePos(273, 45); fKnobMakeup->setId(ZamGatePlugin::paramMakeup); fKnobMakeup->setRange(-30.0f, 30.0f); @@ -84,7 +84,7 @@ ZamGateUI::ZamGateUI() fKnobMakeup->setRotationAngle(240); fKnobMakeup->setCallback(this); - fKnobGateclose = new ImageKnob(this, knobImage); + fKnobGateclose = new ZamKnob(this, knobImage); fKnobGateclose->setAbsolutePos(480, 62); fKnobGateclose->setId(ZamGatePlugin::paramGateclose); fKnobGateclose->setRange(-50.0f, 0.0f); @@ -159,17 +159,17 @@ void ZamGateUI::programLoaded(uint32_t index) // ----------------------------------------------------------------------- // Widget Callbacks -void ZamGateUI::imageKnobDragStarted(ImageKnob* knob) +void ZamGateUI::imageKnobDragStarted(ZamKnob* knob) { editParameter(knob->getId(), true); } -void ZamGateUI::imageKnobDragFinished(ImageKnob* knob) +void ZamGateUI::imageKnobDragFinished(ZamKnob* knob) { editParameter(knob->getId(), false); } -void ZamGateUI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZamGateUI::imageKnobValueChanged(ZamKnob* knob, float value) { setParameterValue(knob->getId(), value); } diff --git a/plugins/ZamGate/ZamGateUI.hpp b/plugins/ZamGate/ZamGateUI.hpp index 1a0e35f..42d59c4 100644 --- a/plugins/ZamGate/ZamGateUI.hpp +++ b/plugins/ZamGate/ZamGateUI.hpp @@ -20,10 +20,12 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" + #include "ZamGateArtwork.hpp" using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; using DGL::ImageSwitch; START_NAMESPACE_DISTRHO @@ -31,7 +33,7 @@ START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZamGateUI : public UI, - public ImageKnob::Callback, + public ZamKnob::Callback, public ImageSwitch::Callback { public: @@ -46,17 +48,17 @@ protected: // ------------------------------------------------------------------- - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void imageSwitchClicked(ImageSwitch* tog, bool down) override; void onDisplay() override; private: Image fImgBackground; - ScopedPointer<ImageKnob> fKnobAttack, fKnobRelease, fKnobThresh; - ScopedPointer<ImageKnob> fKnobMakeup, fKnobGateclose; + ScopedPointer<ZamKnob> fKnobAttack, fKnobRelease, fKnobThresh; + ScopedPointer<ZamKnob> fKnobMakeup, fKnobGateclose; ScopedPointer<ImageSwitch> fToggleSidechain; Image fLedRedImg; diff --git a/plugins/ZamGateX2/ZamGateX2UI.cpp b/plugins/ZamGateX2/ZamGateX2UI.cpp index 1449c8d..4120959 100644 --- a/plugins/ZamGateX2/ZamGateX2UI.cpp +++ b/plugins/ZamGateX2/ZamGateX2UI.cpp @@ -44,7 +44,7 @@ ZamGateX2UI::ZamGateX2UI() Image knobImage(ZamGateX2Artwork::knobData, ZamGateX2Artwork::knobWidth, ZamGateX2Artwork::knobHeight); // knob - fKnobAttack = new ImageKnob(this, knobImage); + fKnobAttack = new ZamKnob(this, knobImage); fKnobAttack->setAbsolutePos(24, 45); fKnobAttack->setId(ZamGateX2Plugin::paramAttack); fKnobAttack->setRange(0.1f, 500.0f); @@ -54,7 +54,7 @@ ZamGateX2UI::ZamGateX2UI() fKnobAttack->setRotationAngle(240); fKnobAttack->setCallback(this); - fKnobRelease = new ImageKnob(this, knobImage); + fKnobRelease = new ZamKnob(this, knobImage); fKnobRelease->setAbsolutePos(108, 45); fKnobRelease->setId(ZamGateX2Plugin::paramRelease); fKnobRelease->setRange(0.1f, 500.0f); @@ -64,7 +64,7 @@ ZamGateX2UI::ZamGateX2UI() fKnobRelease->setRotationAngle(240); fKnobRelease->setCallback(this); - fKnobThresh = new ImageKnob(this, knobImage); + fKnobThresh = new ZamKnob(this, knobImage); fKnobThresh->setAbsolutePos(191.7, 45); fKnobThresh->setId(ZamGateX2Plugin::paramThresh); fKnobThresh->setRange(-60.0f, 0.0f); @@ -74,7 +74,7 @@ ZamGateX2UI::ZamGateX2UI() fKnobThresh->setRotationAngle(240); fKnobThresh->setCallback(this); - fKnobMakeup = new ImageKnob(this, knobImage); + fKnobMakeup = new ZamKnob(this, knobImage); fKnobMakeup->setAbsolutePos(273, 45); fKnobMakeup->setId(ZamGateX2Plugin::paramMakeup); fKnobMakeup->setRange(-30.0f, 30.0f); @@ -84,7 +84,7 @@ ZamGateX2UI::ZamGateX2UI() fKnobMakeup->setRotationAngle(240); fKnobMakeup->setCallback(this); - fKnobGateclose = new ImageKnob(this, knobImage); + fKnobGateclose = new ZamKnob(this, knobImage); fKnobGateclose->setAbsolutePos(480, 61); fKnobGateclose->setId(ZamGateX2Plugin::paramGateclose); fKnobGateclose->setRange(-50.0f, 0.0f); @@ -159,17 +159,17 @@ void ZamGateX2UI::programLoaded(uint32_t index) // ----------------------------------------------------------------------- // Widget Callbacks -void ZamGateX2UI::imageKnobDragStarted(ImageKnob* knob) +void ZamGateX2UI::imageKnobDragStarted(ZamKnob* knob) { editParameter(knob->getId(), true); } -void ZamGateX2UI::imageKnobDragFinished(ImageKnob* knob) +void ZamGateX2UI::imageKnobDragFinished(ZamKnob* knob) { editParameter(knob->getId(), false); } -void ZamGateX2UI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZamGateX2UI::imageKnobValueChanged(ZamKnob* knob, float value) { setParameterValue(knob->getId(), value); } diff --git a/plugins/ZamGateX2/ZamGateX2UI.hpp b/plugins/ZamGateX2/ZamGateX2UI.hpp index 32117d6..c1ee025 100644 --- a/plugins/ZamGateX2/ZamGateX2UI.hpp +++ b/plugins/ZamGateX2/ZamGateX2UI.hpp @@ -20,10 +20,11 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" #include "ZamGateX2Artwork.hpp" using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; using DGL::ImageSwitch; START_NAMESPACE_DISTRHO @@ -31,7 +32,7 @@ START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZamGateX2UI : public UI, - public ImageKnob::Callback, + public ZamKnob::Callback, public ImageSwitch::Callback { public: @@ -46,17 +47,17 @@ protected: // ------------------------------------------------------------------- - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void imageSwitchClicked(ImageSwitch* tog, bool down) override; void onDisplay() override; private: Image fImgBackground; - ScopedPointer<ImageKnob> fKnobAttack, fKnobRelease, fKnobThresh; - ScopedPointer<ImageKnob> fKnobMakeup, fKnobGateclose; + ScopedPointer<ZamKnob> fKnobAttack, fKnobRelease, fKnobThresh; + ScopedPointer<ZamKnob> fKnobMakeup, fKnobGateclose; ScopedPointer<ImageSwitch> fToggleSidechain; Image fLedRedImg; diff --git a/plugins/ZamHeadX2/ZamHeadX2UI.cpp b/plugins/ZamHeadX2/ZamHeadX2UI.cpp index f9841ca..162c674 100644 --- a/plugins/ZamHeadX2/ZamHeadX2UI.cpp +++ b/plugins/ZamHeadX2/ZamHeadX2UI.cpp @@ -34,7 +34,7 @@ ZamHeadX2UI::ZamHeadX2UI() Image knobImage(ZamHeadX2Artwork::knobData, ZamHeadX2Artwork::knobWidth, ZamHeadX2Artwork::knobHeight); // knob - fKnobAzimuth = new ImageKnob(this, knobImage); + fKnobAzimuth = new ZamKnob(this, knobImage); fKnobAzimuth->setAbsolutePos(229, 33); fKnobAzimuth->setId(ZamHeadX2Plugin::paramAzimuth); fKnobAzimuth->setRange(-120.f, 120.0f); @@ -44,7 +44,7 @@ ZamHeadX2UI::ZamHeadX2UI() fKnobAzimuth->setRotationAngle(240); fKnobAzimuth->setCallback(this); - fKnobElevation = new ImageKnob(this, knobImage); + fKnobElevation = new ZamKnob(this, knobImage); fKnobElevation->setAbsolutePos(62, 78); fKnobElevation->setId(ZamHeadX2Plugin::paramElevation); fKnobElevation->setRange(-30.0f, 90.0f); @@ -54,7 +54,7 @@ ZamHeadX2UI::ZamHeadX2UI() fKnobElevation->setRotationAngle(120); fKnobElevation->setCallback(this); - fKnobWidth = new ImageKnob(this, knobImage); + fKnobWidth = new ZamKnob(this, knobImage); fKnobWidth->setAbsolutePos(45, 170); fKnobWidth->setId(ZamHeadX2Plugin::paramWidth); fKnobWidth->setRange(0.0f, 2.5f); @@ -101,17 +101,17 @@ void ZamHeadX2UI::programLoaded(uint32_t index) // ----------------------------------------------------------------------- // Widget Callbacks -void ZamHeadX2UI::imageKnobDragStarted(ImageKnob* knob) +void ZamHeadX2UI::imageKnobDragStarted(ZamKnob* knob) { editParameter(knob->getId(), true); } -void ZamHeadX2UI::imageKnobDragFinished(ImageKnob* knob) +void ZamHeadX2UI::imageKnobDragFinished(ZamKnob* knob) { editParameter(knob->getId(), false); } -void ZamHeadX2UI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZamHeadX2UI::imageKnobValueChanged(ZamKnob* knob, float value) { setParameterValue(knob->getId(), value); } diff --git a/plugins/ZamHeadX2/ZamHeadX2UI.hpp b/plugins/ZamHeadX2/ZamHeadX2UI.hpp index 9ba87d0..b390b1f 100644 --- a/plugins/ZamHeadX2/ZamHeadX2UI.hpp +++ b/plugins/ZamHeadX2/ZamHeadX2UI.hpp @@ -20,18 +20,19 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" #include "ZamHeadX2Artwork.hpp" using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZamHeadX2UI : public UI, - public ImageKnob::Callback + public ZamKnob::Callback { public: ZamHeadX2UI(); @@ -46,15 +47,15 @@ protected: // ------------------------------------------------------------------- // Widget Callbacks - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void onDisplay() override; private: Image fImgBackground; - ScopedPointer<ImageKnob> fKnobAzimuth, fKnobElevation, fKnobWidth; + ScopedPointer<ZamKnob> fKnobAzimuth, fKnobElevation, fKnobWidth; }; // ----------------------------------------------------------------------- diff --git a/plugins/ZamTube/ZamTubeUI.cpp b/plugins/ZamTube/ZamTubeUI.cpp index 29c8ac4..efc7fe1 100644 --- a/plugins/ZamTube/ZamTubeUI.cpp +++ b/plugins/ZamTube/ZamTubeUI.cpp @@ -47,7 +47,7 @@ ZamTubeUI::ZamTubeUI() // knobs - fKnobTube = new ImageKnob(this, knobImage); + fKnobTube = new ZamKnob(this, knobImage); fKnobTube->setAbsolutePos(177, 76); fKnobTube->setRange(0.f, 30.0f); fKnobTube->setLabel(true); @@ -56,7 +56,7 @@ ZamTubeUI::ZamTubeUI() fKnobTube->setRotationAngle(240); fKnobTube->setCallback(this); - fKnobBass = new ImageKnob(this, knobImage); + fKnobBass = new ZamKnob(this, knobImage); fKnobBass->setAbsolutePos(63, 140.5); fKnobBass->setRange(0.f, 1.0f); fKnobBass->setLabel(true); @@ -65,7 +65,7 @@ ZamTubeUI::ZamTubeUI() fKnobBass->setRotationAngle(240); fKnobBass->setCallback(this); - fKnobMids = new ImageKnob(this, knobImage); + fKnobMids = new ZamKnob(this, knobImage); fKnobMids->setAbsolutePos(63, 87); fKnobMids->setRange(0.f, 1.0f); fKnobMids->setLabel(true); @@ -74,7 +74,7 @@ ZamTubeUI::ZamTubeUI() fKnobMids->setRotationAngle(240); fKnobMids->setCallback(this); - fKnobTreb = new ImageKnob(this, knobImage); + fKnobTreb = new ZamKnob(this, knobImage); fKnobTreb->setAbsolutePos(63, 33); fKnobTreb->setRange(0.f, 1.0f); fKnobTreb->setLabel(true); @@ -83,7 +83,7 @@ ZamTubeUI::ZamTubeUI() fKnobTreb->setRotationAngle(240); fKnobTreb->setCallback(this); - fKnobGain = new ImageKnob(this, knobImage); + fKnobGain = new ZamKnob(this, knobImage); fKnobGain->setAbsolutePos(63, 231); fKnobGain->setRange(-30.f, 30.0f); fKnobGain->setLabel(true); @@ -162,7 +162,7 @@ void ZamTubeUI::programLoaded(uint32_t index) // ----------------------------------------------------------------------- // Widget Callbacks -void ZamTubeUI::imageKnobDragStarted(ImageKnob* knob) +void ZamTubeUI::imageKnobDragStarted(ZamKnob* knob) { if (knob == fKnobTube) editParameter(ZamTubePlugin::paramTubedrive, true); @@ -176,7 +176,7 @@ void ZamTubeUI::imageKnobDragStarted(ImageKnob* knob) editParameter(ZamTubePlugin::paramGain, true); } -void ZamTubeUI::imageKnobDragFinished(ImageKnob* knob) +void ZamTubeUI::imageKnobDragFinished(ZamKnob* knob) { if (knob == fKnobTube) editParameter(ZamTubePlugin::paramTubedrive, false); @@ -190,7 +190,7 @@ void ZamTubeUI::imageKnobDragFinished(ImageKnob* knob) editParameter(ZamTubePlugin::paramGain, false); } -void ZamTubeUI::imageKnobValueChanged(ImageKnob* knob, float value) +void ZamTubeUI::imageKnobValueChanged(ZamKnob* knob, float value) { if (knob == fKnobTube) setParameterValue(ZamTubePlugin::paramTubedrive, value); diff --git a/plugins/ZamTube/ZamTubeUI.hpp b/plugins/ZamTube/ZamTubeUI.hpp index f7b0768..3c6f367 100644 --- a/plugins/ZamTube/ZamTubeUI.hpp +++ b/plugins/ZamTube/ZamTubeUI.hpp @@ -20,11 +20,12 @@ #include "DistrhoUI.hpp" #include "ImageWidgets.hpp" +#include "../../widgets/ZamWidgets.hpp" #include "ZamTubeArtwork.hpp" using DGL::Image; -using DGL::ImageKnob; +using DGL::ZamKnob; using DGL::ImageSlider; using DGL::ImageSwitch; @@ -33,7 +34,7 @@ START_NAMESPACE_DISTRHO // ----------------------------------------------------------------------- class ZamTubeUI : public UI, - public ImageKnob::Callback, + public ZamKnob::Callback, public ImageSlider::Callback, public ImageSwitch::Callback { @@ -50,9 +51,9 @@ protected: // ------------------------------------------------------------------- // Widget Callbacks - void imageKnobDragStarted(ImageKnob* knob) override; - void imageKnobDragFinished(ImageKnob* knob) override; - void imageKnobValueChanged(ImageKnob* knob, float value) override; + void imageKnobDragStarted(ZamKnob* knob) override; + void imageKnobDragFinished(ZamKnob* knob) override; + void imageKnobValueChanged(ZamKnob* knob, float value) override; void imageSliderDragStarted(ImageSlider* slider) override; void imageSliderDragFinished(ImageSlider* slider) override; @@ -66,7 +67,7 @@ private: Image fImgBackground; ScopedPointer<ImageSlider> fSliderNotch; ScopedPointer<ImageSwitch> fToggleInsane; - ScopedPointer<ImageKnob> fKnobTube, fKnobBass, fKnobMids, fKnobTreb, fKnobGain; + ScopedPointer<ZamKnob> fKnobTube, fKnobBass, fKnobMids, fKnobTreb, fKnobGain; }; // ----------------------------------------------------------------------- diff --git a/widgets/ZamWidgets.hpp b/widgets/ZamWidgets.hpp new file mode 100644 index 0000000..bf09a93 --- /dev/null +++ b/widgets/ZamWidgets.hpp @@ -0,0 +1,631 @@ +/* + * DISTRHO Plugin Framework (DPF) + * Copyright (C) 2012-2016 Filipe Coelho <falktx@falktx.com> + * + * Permission to use, copy, modify, and/or distribute this software for any purpose with + * or without fee is hereby granted, provided that the above copyright notice and this + * permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD + * TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN + * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER + * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN + * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +// This is a custom knob widget for DPF with numeric label for zam-plugins + +#ifndef DGL_ZAM_WIDGETS_HPP_INCLUDED +#define DGL_ZAM_WIDGETS_HPP_INCLUDED + +#include "../dpf/dgl/Image.hpp" +#include "../dpf/dgl/Widget.hpp" +#include "../dpf/dgl/Window.hpp" +#include "../dpf/dgl/NanoVG.hpp" +#include "../dpf/dgl/src/Common.hpp" +#include "../dpf/dgl/src/WidgetPrivateData.hpp" + +START_NAMESPACE_DGL + +// ----------------------------------------------------------------------- + +class ZamKnob : public Widget, + public NanoVG +{ +public: + enum Orientation { + Horizontal, + Vertical + }; + + class Callback + { + public: + virtual ~Callback() {} + virtual void imageKnobDragStarted(ZamKnob* imageKnob) = 0; + virtual void imageKnobDragFinished(ZamKnob* imageKnob) = 0; + virtual void imageKnobValueChanged(ZamKnob* imageKnob, float value) = 0; + }; + + explicit ZamKnob(Window& parent, const Image& image, Orientation orientation = Vertical) noexcept; + explicit ZamKnob(Widget* widget, const Image& image, Orientation orientation = Vertical) noexcept; + explicit ZamKnob(const ZamKnob& imageKnob); + ZamKnob& operator=(const ZamKnob& imageKnob); + ~ZamKnob() override; + + float getValue() const noexcept; + + void setDefault(float def) noexcept; + void setRange(float min, float max) noexcept; + void setStep(float step) noexcept; + void setScrollStep(float step) noexcept; + void setLabel(bool label) noexcept; + void setValue(float value, bool sendCallback = false) noexcept; + void setUsingLogScale(bool yesNo) noexcept; + + void setCallback(Callback* callback) noexcept; + void setOrientation(Orientation orientation) noexcept; + void setRotationAngle(int angle); + + void setImageLayerCount(uint count) noexcept; + +protected: + void onDisplay() override; + bool onMouse(const MouseEvent&) override; + bool onMotion(const MotionEvent&) override; + bool onScroll(const ScrollEvent&) override; + +private: + Image fImage; + bool fLabel; + float fMinimum; + float fMaximum; + float fScrollStep; + float fStep; + float fValue; + float fValueDef; + float fValueTmp; + bool fUsingDefault; + bool fUsingLog; + Orientation fOrientation; + + int fRotationAngle; + bool fDragging; + int fLastX; + int fLastY; + + Callback* fCallback; + + bool fIsImgVertical; + uint fImgLayerWidth; + uint fImgLayerHeight; + uint fImgLayerCount; + bool fIsReady; + GLuint fTextureId; + + float _logscale(float value) const; + float _invlogscale(float value) const; + void labelDisplay(void); + + DISTRHO_LEAK_DETECTOR(ZamKnob) +}; + +// ----------------------------------------------------------------------- + +ZamKnob::ZamKnob(Window& parent, const Image& image, Orientation orientation) noexcept + : Widget(parent), + NanoVG(CREATE_ANTIALIAS), + fLabel(false), + fImage(image), + fMinimum(0.0f), + fMaximum(1.0f), + fScrollStep(0.0f), + fStep(0.0f), + fValue(0.5f), + fValueDef(fValue), + fValueTmp(fValue), + fUsingDefault(false), + fUsingLog(false), + fOrientation(orientation), + fRotationAngle(0), + fDragging(false), + fLastX(0), + fLastY(0), + fCallback(nullptr), + fIsImgVertical(image.getHeight() > image.getWidth()), + fImgLayerWidth(fIsImgVertical ? image.getWidth() : image.getHeight()), + fImgLayerHeight(fImgLayerWidth), + fImgLayerCount(fIsImgVertical ? image.getHeight()/fImgLayerHeight : image.getWidth()/fImgLayerWidth), + fIsReady(false), + fTextureId(0) +{ + glGenTextures(1, &fTextureId); + setSize(fImgLayerWidth, fImgLayerHeight); + NanoVG::loadSharedResources(); +} + +ZamKnob::ZamKnob(Widget* widget, const Image& image, Orientation orientation) noexcept + : Widget(widget->getParentWindow()), + NanoVG(CREATE_ANTIALIAS), + fImage(image), + fLabel(false), + fMinimum(0.0f), + fMaximum(1.0f), + fScrollStep(0.0f), + fStep(0.0f), + fValue(0.5f), + fValueDef(fValue), + fValueTmp(fValue), + fUsingDefault(false), + fUsingLog(false), + fOrientation(orientation), + fRotationAngle(0), + fDragging(false), + fLastX(0), + fLastY(0), + fCallback(nullptr), + fIsImgVertical(image.getHeight() > image.getWidth()), + fImgLayerWidth(fIsImgVertical ? image.getWidth() : image.getHeight()), + fImgLayerHeight(fImgLayerWidth), + fImgLayerCount(fIsImgVertical ? image.getHeight()/fImgLayerHeight : image.getWidth()/fImgLayerWidth), + fIsReady(false), + fTextureId(0) +{ + glGenTextures(1, &fTextureId); + setSize(fImgLayerWidth, fImgLayerHeight); + NanoVG::loadSharedResources(); +} + +ZamKnob::ZamKnob(const ZamKnob& imageKnob) + : Widget(imageKnob.getParentWindow()), + NanoVG(CREATE_ANTIALIAS), + fImage(imageKnob.fImage), + fLabel(false), + fMinimum(imageKnob.fMinimum), + fMaximum(imageKnob.fMaximum), + fScrollStep(imageKnob.fScrollStep), + fStep(imageKnob.fStep), + fValue(imageKnob.fValue), + fValueDef(imageKnob.fValueDef), + fValueTmp(fValue), + fUsingDefault(imageKnob.fUsingDefault), + fUsingLog(imageKnob.fUsingLog), + fOrientation(imageKnob.fOrientation), + fRotationAngle(imageKnob.fRotationAngle), + fDragging(false), + fLastX(0), + fLastY(0), + fCallback(imageKnob.fCallback), + fIsImgVertical(imageKnob.fIsImgVertical), + fImgLayerWidth(imageKnob.fImgLayerWidth), + fImgLayerHeight(imageKnob.fImgLayerHeight), + fImgLayerCount(imageKnob.fImgLayerCount), + fIsReady(false), + fTextureId(0) +{ + glGenTextures(1, &fTextureId); + setSize(fImgLayerWidth, fImgLayerHeight); + NanoVG::loadSharedResources(); +} + +ZamKnob& ZamKnob::operator=(const ZamKnob& imageKnob) +{ + fImage = imageKnob.fImage; + fMinimum = imageKnob.fMinimum; + fMaximum = imageKnob.fMaximum; + fScrollStep = imageKnob.fScrollStep; + fStep = imageKnob.fStep; + fValue = imageKnob.fValue; + fValueDef = imageKnob.fValueDef; + fValueTmp = fValue; + fUsingDefault = imageKnob.fUsingDefault; + fUsingLog = imageKnob.fUsingLog; + fOrientation = imageKnob.fOrientation; + fRotationAngle = imageKnob.fRotationAngle; + fDragging = false; + fLastX = 0; + fLastY = 0; + fCallback = imageKnob.fCallback; + fIsImgVertical = imageKnob.fIsImgVertical; + fImgLayerWidth = imageKnob.fImgLayerWidth; + fImgLayerHeight = imageKnob.fImgLayerHeight; + fImgLayerCount = imageKnob.fImgLayerCount; + fIsReady = false; + + if (fTextureId != 0) + { + glDeleteTextures(1, &fTextureId); + fTextureId = 0; + } + + glGenTextures(1, &fTextureId); + setSize(fImgLayerWidth, fImgLayerHeight); + + return *this; +} + +ZamKnob::~ZamKnob() +{ + if (fTextureId != 0) + { + glDeleteTextures(1, &fTextureId); + fTextureId = 0; + } +} + +float ZamKnob::getValue() const noexcept +{ + return fValue; +} + +// NOTE: value is assumed to be scaled if using log +void ZamKnob::setDefault(float value) noexcept +{ + fValueDef = value; + fUsingDefault = true; +} + +void ZamKnob::setRange(float min, float max) noexcept +{ + DISTRHO_SAFE_ASSERT_RETURN(max > min,); + + if (fValue < min) + { + fValue = min; + repaint(); + + if (fCallback != nullptr) + { + try { + fCallback->imageKnobValueChanged(this, fValue); + } DISTRHO_SAFE_EXCEPTION("ZamKnob::setRange < min"); + } + } + else if (fValue > max) + { + fValue = max; + repaint(); + + if (fCallback != nullptr) + { + try { + fCallback->imageKnobValueChanged(this, fValue); + } DISTRHO_SAFE_EXCEPTION("ZamKnob::setRange > max"); + } + } + + fMinimum = min; + fMaximum = max; +} + +void ZamKnob::setScrollStep(float step) noexcept +{ + fScrollStep = step; +} + +void ZamKnob::setLabel(bool label) noexcept +{ + fLabel = label; +} + +void ZamKnob::setStep(float step) noexcept +{ + fStep = step; +} + +// NOTE: value is assumed to be scaled if using log +void ZamKnob::setValue(float value, bool sendCallback) noexcept +{ + if (d_isEqual(fValue, value)) + return; + + fValue = value; + + if (d_isZero(fStep)) + fValueTmp = value; + + if (fRotationAngle == 0) + fIsReady = false; + + repaint(); + + if (sendCallback && fCallback != nullptr) + { + try { + fCallback->imageKnobValueChanged(this, fValue); + } DISTRHO_SAFE_EXCEPTION("ZamKnob::setValue"); + } +} + +void ZamKnob::setUsingLogScale(bool yesNo) noexcept +{ + fUsingLog = yesNo; +} + +void ZamKnob::setCallback(Callback* callback) noexcept +{ + fCallback = callback; +} + +void ZamKnob::setOrientation(Orientation orientation) noexcept +{ + if (fOrientation == orientation) + return; + + fOrientation = orientation; +} + +void ZamKnob::setRotationAngle(int angle) +{ + if (fRotationAngle == angle) + return; + + fRotationAngle = angle; + fIsReady = false; +} + +void ZamKnob::setImageLayerCount(uint count) noexcept +{ + DISTRHO_SAFE_ASSERT_RETURN(count > 1,); + + fImgLayerCount = count; + + if (fIsImgVertical) + fImgLayerHeight = fImage.getHeight()/count; + else + fImgLayerWidth = fImage.getWidth()/count; + + setSize(fImgLayerWidth, fImgLayerHeight); +} + +void ZamKnob::labelDisplay() +{ + char txt[16]; + float ww = (float)getParentWindow().getWidth(); + float wh = (float)getParentWindow().getHeight(); + float w = (float)fImage.getWidth(); + float h = (float)fImage.getHeight(); + + NanoVG::beginFrame(ww, wh); + if (fValue > 1000.f) { + snprintf(txt, sizeof(txt), "%.0f", fValue); + } else { + snprintf(txt, sizeof(txt), "%.1f", fValue); + } + FontId fid = findFont(NANOVG_DEJAVU_SANS_TTF); + fontFaceId(fid); + fontSize(14.f); + fillColor(255, 255, 255, 255); + strokeColor(255, 255, 255, 255); + textAlign(ALIGN_CENTER | ALIGN_MIDDLE); + textLineHeight(14.f); + text(w/2., h/2., txt, NULL); + NanoVG::endFrame(); +} + +void ZamKnob::onDisplay() +{ + const float normValue = ((fUsingLog ? _invlogscale(fValue) : fValue) - fMinimum) / (fMaximum - fMinimum); + + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, fTextureId); + + if (! fIsReady) + { + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER); + + static const float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f }; + glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, trans); + + glPixelStorei(GL_PACK_ALIGNMENT, 1); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + + uint imageDataOffset = 0; + + if (fRotationAngle == 0) + { + DISTRHO_SAFE_ASSERT_RETURN(fImgLayerCount > 0,); + DISTRHO_SAFE_ASSERT_RETURN(normValue >= 0.0f,); + + const uint& v1(fIsImgVertical ? fImgLayerWidth : fImgLayerHeight); + const uint& v2(fIsImgVertical ? fImgLayerHeight : fImgLayerWidth); + + const uint layerDataSize = v1 * v2 * ((fImage.getFormat() == GL_BGRA || fImage.getFormat() == GL_RGBA) ? 4 : 3); + imageDataOffset = layerDataSize * uint(normValue * float(fImgLayerCount-1)); + } + + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, + static_cast<GLsizei>(getWidth()), static_cast<GLsizei>(getHeight()), 0, + fImage.getFormat(), fImage.getType(), fImage.getRawData() + imageDataOffset); + + fIsReady = true; + } + + const int w = static_cast<int>(getWidth()); + const int h = static_cast<int>(getHeight()); + + if (fRotationAngle != 0) + { + glPushMatrix(); + + const int w2 = w/2; + const int h2 = h/2; + + glTranslatef(static_cast<float>(w2), static_cast<float>(h2), 0.0f); + glRotatef(normValue*static_cast<float>(fRotationAngle), 0.0f, 0.0f, 1.0f); + + Rectangle<int>(-w2, -h2, w, h).draw(); + + glPopMatrix(); + } + else + { + Rectangle<int>(0, 0, w, h).draw(); + } + + glBindTexture(GL_TEXTURE_2D, 0); + glDisable(GL_TEXTURE_2D); + + if (fLabel) + labelDisplay(); +} + +bool ZamKnob::onMouse(const MouseEvent& ev) +{ + if (ev.button != 1) + return false; + + if (ev.press) + { + if (! contains(ev.pos)) + return false; + + if ((ev.mod & kModifierShift) != 0 && fUsingDefault) + { + setValue(fValueDef, true); + fValueTmp = fValue; + return true; + } + + fDragging = true; + fLastX = ev.pos.getX(); + fLastY = ev.pos.getY(); + + if (fCallback != nullptr) + fCallback->imageKnobDragStarted(this); + + return true; + } + else if (fDragging) + { + if (fCallback != nullptr) + fCallback->imageKnobDragFinished(this); + + fDragging = false; + return true; + } + + return false; +} + +bool ZamKnob::onMotion(const MotionEvent& ev) +{ + if (! fDragging) + return false; + + bool doVal = false; + float d, value = 0.0f; + + if (fOrientation == ZamKnob::Horizontal) + { + if (const int movX = ev.pos.getX() - fLastX) + { + d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * float(movX)); + doVal = true; + } + } + else if (fOrientation == ZamKnob::Vertical) + { + if (const int movY = fLastY - ev.pos.getY()) + { + d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * float(movY)); + doVal = true; + } + } + + if (! doVal) + return false; + + if (fUsingLog) + value = _logscale(value); + + if (value < fMinimum) + { + fValueTmp = value = fMinimum; + } + else if (value > fMaximum) + { + fValueTmp = value = fMaximum; + } + else if (d_isNotZero(fStep)) + { + fValueTmp = value; + const float rest = std::fmod(value, fStep); + value = value - rest + (rest > fStep/2.0f ? fStep : 0.0f); + } + + setValue(value, true); + + fLastX = ev.pos.getX(); + fLastY = ev.pos.getY(); + + return true; +} + +bool ZamKnob::onScroll(const ScrollEvent& ev) +{ + if (! contains(ev.pos)) + return false; + + float value, d; + + if (d_isZero(fScrollStep)) { + d = (ev.mod & kModifierControl) ? 2000.0f : 200.0f; + value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * 10.f * ev.delta.getY()); + } else { + d = (ev.mod & kModifierControl) ? fScrollStep * 0.1f : fScrollStep; + value = (fUsingLog ? _invlogscale(fValueTmp + d * ev.delta.getY()) + : fValueTmp + d * ev.delta.getY()); + } + + if (fUsingLog) + value = _logscale(value); + + if (value < fMinimum) + { + fValueTmp = value = fMinimum; + } + else if (value > fMaximum) + { + fValueTmp = value = fMaximum; + } + else if (d_isNotZero(fStep)) + { + fValueTmp = value; + const float rest = std::fmod(value, fStep); + value = value - rest + (rest > fStep/2.0f ? fStep : 0.0f); + } + + setValue(value, true); + return true; +} + +// ----------------------------------------------------------------------- + +float ZamKnob::_logscale(float value) const +{ + const float b = std::log(fMaximum/fMinimum)/(fMaximum-fMinimum); + const float a = fMaximum/std::exp(fMaximum*b); + if (value < fMinimum) value = fMinimum; + if (value > fMaximum) value = fMaximum; + return a * std::exp(b*value); +} + +float ZamKnob::_invlogscale(float value) const +{ + const float b = std::log(fMaximum/fMinimum)/(fMaximum-fMinimum); + const float a = fMaximum/std::exp(fMaximum*b); + if (value < fMinimum) value = fMinimum; + if (value > fMaximum) value = fMaximum; + return std::log(value/a)/b; +} + +END_NAMESPACE_DGL + +#endif |