diff options
author | Damien Zammit <damien@zamaudio.com> | 2014-04-19 14:23:31 +1000 |
---|---|---|
committer | Damien Zammit <damien@zamaudio.com> | 2014-04-19 14:23:31 +1000 |
commit | 384f9c1c9542979d1fc532c2ed3fa8661972fabc (patch) | |
tree | e3d0ff63928afa1dac65b1b91330948c08ea66e3 | |
parent | 74720107acb57a9338e3b2086afc60144c45f002 (diff) |
Fixed knob bouncing DGL
Signed-off-by: Damien Zammit <damien@zamaudio.com>
-rw-r--r-- | libs/dgl/ImageKnob.hpp | 3 | ||||
-rw-r--r-- | libs/dgl/src/ImageKnob.cpp | 34 | ||||
-rw-r--r-- | plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp | 23 |
3 files changed, 29 insertions, 31 deletions
diff --git a/libs/dgl/ImageKnob.hpp b/libs/dgl/ImageKnob.hpp index a2aaa5c..dea8f22 100644 --- a/libs/dgl/ImageKnob.hpp +++ b/libs/dgl/ImageKnob.hpp @@ -70,7 +70,8 @@ private: float fMinimum; float fMaximum; float fStep; - float fLog; + bool fLog; + bool fFirst; float fValue; float fValueTmp; Orientation fOrientation; diff --git a/libs/dgl/src/ImageKnob.cpp b/libs/dgl/src/ImageKnob.cpp index 7872331..8ffbc84 100644 --- a/libs/dgl/src/ImageKnob.cpp +++ b/libs/dgl/src/ImageKnob.cpp @@ -30,6 +30,7 @@ ImageKnob::ImageKnob(Window& parent, const Image& image, Orientation orientation fMaximum(1.0f), fStep(0.0f), fLog(false), + fFirst(true), fValue(0.5f), fValueTmp(fValue), fOrientation(orientation), @@ -54,6 +55,7 @@ ImageKnob::ImageKnob(Widget* widget, const Image& image, Orientation orientation fMaximum(1.0f), fStep(0.0f), fLog(false), + fFirst(true), fValue(0.5f), fValueTmp(fValue), fOrientation(orientation), @@ -78,6 +80,7 @@ ImageKnob::ImageKnob(const ImageKnob& imageKnob) fMaximum(imageKnob.fMaximum), fStep(imageKnob.fStep), fLog(imageKnob.fLog), + fFirst(true), fValue(imageKnob.fValue), fValueTmp(fValue), fOrientation(imageKnob.fOrientation), @@ -176,10 +179,12 @@ void ImageKnob::setValue(float value, bool sendCallback) if (fValue == value) return; - fValue = value; + fValue = logscale(value); - if (fStep == 0.0f) + if (fStep == 0.0f || fFirst) { + fFirst = false; fValueTmp = value; + } repaint(); @@ -329,25 +334,18 @@ bool ImageKnob::onMotion(int x, int y) bool doVal = false; float d, value; + int movX, movY, movR; + movX = x - fLastX; + movY = fLastY - y; + movR = (movX + movY); - if (fOrientation == ImageKnob::Horizontal) - { - if (int movX = x - fLastX) - { - d = (getModifiers() & MODIFIER_SHIFT) ? 2000.0f : 200.0f; - value = (fValueTmp) + (float(fMaximum - fMinimum) / d * float((movX))); - doVal = true; - } - } - else if (fOrientation == ImageKnob::Vertical) - { - if (int movY = fLastY - y) + if (movR) { - d = (getModifiers() & MODIFIER_SHIFT) ? 2000.0f : 200.0f; - value = (fValueTmp) + (float(fMaximum - fMinimum) / d * float((movY))); + printf("movR=%d\n",movR); + d = (getModifiers() & MODIFIER_SHIFT) ? 2000.0f : 200.0f; + value = (fValueTmp) + (float(fMaximum - fMinimum) / d * float((movR))); doVal = true; } - } if (! doVal) return false; @@ -369,7 +367,7 @@ bool ImageKnob::onMotion(int x, int y) value = value - rest + (rest > fStep/2.0f ? fStep : 0.0f); } - setValue(logscale(value), true); + setValue(value, true); fLastX = x; fLastY = y; diff --git a/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp b/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp index 02904ff..e8f0ec9 100644 --- a/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp +++ b/plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp @@ -48,15 +48,15 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobAttack = new ImageKnob(this, knobImage); fKnobAttack->setPos(24, 43); fKnobAttack->setRange(0.1f, 200.0f); - fKnobAttack->setStep(0.1f); + fKnobAttack->setLogScale(true); fKnobAttack->setValue(10.0f); + fKnobAttack->setStep(0.1f); fKnobAttack->setRotationAngle(240); fKnobAttack->setCallback(this); fKnobRelease = new ImageKnob(this, knobImage); fKnobRelease->setPos(108, 43); fKnobRelease->setRange(50.0f, 500.0f); - fKnobRelease->setStep(1.0f); fKnobRelease->setValue(80.0f); fKnobRelease->setRotationAngle(240); fKnobRelease->setCallback(this); @@ -64,7 +64,6 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobThresh = new ImageKnob(this, knobImage); fKnobThresh->setPos(191.5, 43); fKnobThresh->setRange(-60.0f, 0.0f); - fKnobThresh->setStep(1.0f); fKnobThresh->setValue(0.0f); fKnobThresh->setRotationAngle(240); fKnobThresh->setCallback(this); @@ -72,7 +71,6 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobRatio = new ImageKnob(this, knobImage); fKnobRatio->setPos(270, 43); fKnobRatio->setRange(1.0f, 20.0f); - fKnobRatio->setStep(0.1f); fKnobRatio->setValue(4.0f); fKnobRatio->setRotationAngle(240); fKnobRatio->setCallback(this); @@ -80,7 +78,6 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobKnee = new ImageKnob(this, knobImage); fKnobKnee->setPos(348.5, 43); fKnobKnee->setRange(0.0f, 8.0f); - fKnobKnee->setStep(0.1f); fKnobKnee->setValue(0.0f); fKnobKnee->setRotationAngle(240); fKnobKnee->setCallback(this); @@ -88,7 +85,6 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobGlobalGain = new ImageKnob(this, knobImage); fKnobGlobalGain->setPos(427.3, 43); fKnobGlobalGain->setRange(-30.0f, 30.0f); - fKnobGlobalGain->setStep(1.0f); fKnobGlobalGain->setValue(0.0f); fKnobGlobalGain->setRotationAngle(240); fKnobGlobalGain->setCallback(this); @@ -96,23 +92,24 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobXover2 = new ImageKnob(this, knobImage); fKnobXover2->setPos(84, 121); fKnobXover2->setRange(1400.f, 14000.f); - fKnobXover2->setStep(1.0f); + fKnobXover2->setLogScale(true); fKnobXover2->setValue(1400.f); + fKnobXover2->setStep(5.f); fKnobXover2->setRotationAngle(240); fKnobXover2->setCallback(this); fKnobXover1 = new ImageKnob(this, knobImage); fKnobXover1->setPos(84, 176); fKnobXover1->setRange(20.0f, 1400.0f); - fKnobXover1->setStep(1.0f); + fKnobXover1->setLogScale(true); fKnobXover1->setValue(250.0f); + fKnobXover1->setStep(1.f); fKnobXover1->setRotationAngle(240); fKnobXover1->setCallback(this); fKnobMakeup3 = new ImageKnob(this, knobImage); fKnobMakeup3->setPos(167.75, 99.5); fKnobMakeup3->setRange(0.0f, 30.0f); - fKnobMakeup3->setStep(0.1f); fKnobMakeup3->setValue(0.0f); fKnobMakeup3->setRotationAngle(240); fKnobMakeup3->setCallback(this); @@ -120,7 +117,6 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobMakeup2 = new ImageKnob(this, knobImage); fKnobMakeup2->setPos(167.75, 150.25); fKnobMakeup2->setRange(0.0f, 30.0f); - fKnobMakeup2->setStep(0.1f); fKnobMakeup2->setValue(0.0f); fKnobMakeup2->setRotationAngle(240); fKnobMakeup2->setCallback(this); @@ -128,7 +124,6 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fKnobMakeup1 = new ImageKnob(this, knobImage); fKnobMakeup1->setPos(167.75, 201.4); fKnobMakeup1->setRange(0.0f, 30.0f); - fKnobMakeup1->setStep(0.1f); fKnobMakeup1->setValue(0.0f); fKnobMakeup1->setRotationAngle(240); fKnobMakeup1->setCallback(this); @@ -218,13 +213,17 @@ ZaMultiCompX2UI::ZaMultiCompX2UI() fCanvasArea.setPos(530, 30); fCanvasArea.setSize(110, 110); - fThresh = -20.f; + fThresh = 0.f; fRatio = 4.f; fKnee = 0.f; fMakeup[0] = 0.f; fMakeup[1] = 0.f; fMakeup[2] = 0.f; + fBypass[0] = 0.f; + fBypass[1] = 0.f; + fBypass[2] = 0.f; fMaster = 0.f; + int i,k; for (k = 0; k < MAX_COMP; ++k) { |