summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2014-04-19 14:23:31 +1000
committerDamien Zammit <damien@zamaudio.com>2014-04-19 14:23:31 +1000
commit384f9c1c9542979d1fc532c2ed3fa8661972fabc (patch)
treee3d0ff63928afa1dac65b1b91330948c08ea66e3
parent74720107acb57a9338e3b2086afc60144c45f002 (diff)
Fixed knob bouncing DGL
Signed-off-by: Damien Zammit <damien@zamaudio.com>
-rw-r--r--libs/dgl/ImageKnob.hpp3
-rw-r--r--libs/dgl/src/ImageKnob.cpp34
-rw-r--r--plugins/ZaMultiCompX2/ZaMultiCompX2UI.cpp23
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) {