Browse Source

Fix knob log scale

gh-pages
falkTX 9 years ago
parent
commit
0b834cfc8c
1 changed files with 14 additions and 6 deletions
  1. +14
    -6
      dgl/src/ImageKnob.cpp

+ 14
- 6
dgl/src/ImageKnob.cpp View File

@@ -125,7 +125,7 @@ int ImageKnob::getId() const noexcept

void ImageKnob::setId(int id) noexcept
{
fId = id;;
fId = id;
}

float ImageKnob::getValue() const noexcept
@@ -133,6 +133,7 @@ float ImageKnob::getValue() const noexcept
return fValue;
}

// NOTE: value is assumed to be scaled if using log
void ImageKnob::setDefault(float value) noexcept
{
fValueDef = value;
@@ -177,12 +178,13 @@ void ImageKnob::setStep(float step) noexcept
fStep = step;
}

// NOTE: value is assumed to be scaled if using log
void ImageKnob::setValue(float value, bool sendCallback) noexcept
{
if (fValue == value)
return;

fValue = fUsingLog ? _logscale(value) : value;
fValue = value;

if (fStep == 0.0f)
fValueTmp = value;
@@ -229,7 +231,7 @@ void ImageKnob::setRotationAngle(int angle)

void ImageKnob::onDisplay()
{
const float normValue = (fUsingLog ? _invlogscale(fValue) : fValue - fMinimum) / (fMaximum - fMinimum);
const float normValue = ((fUsingLog ? _invlogscale(fValue) : fValue) - fMinimum) / (fMaximum - fMinimum);

glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, fTextureId);
@@ -334,7 +336,7 @@ bool ImageKnob::onMotion(const MotionEvent& ev)
if (const int movX = ev.pos.getX() - fLastX)
{
d = (ev.mod & MODIFIER_CTRL) ? 2000.0f : 200.0f;
value = fValueTmp + (float(fMaximum - fMinimum) / d * float(movX));
value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * float(movX));
doVal = true;
}
}
@@ -343,7 +345,7 @@ bool ImageKnob::onMotion(const MotionEvent& ev)
if (const int movY = fLastY - ev.pos.getY())
{
d = (ev.mod & MODIFIER_CTRL) ? 2000.0f : 200.0f;
value = fValueTmp + (float(fMaximum - fMinimum) / d * float(movY));
value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * float(movY));
doVal = true;
}
}
@@ -351,6 +353,9 @@ bool ImageKnob::onMotion(const MotionEvent& ev)
if (! doVal)
return false;

if (fUsingLog)
value = _logscale(value);

if (value < fMinimum)
{
fValueTmp = value = fMinimum;
@@ -380,7 +385,10 @@ bool ImageKnob::onScroll(const ScrollEvent& ev)
return false;

const float d = (ev.mod & MODIFIER_CTRL) ? 2000.0f : 200.0f;
float value = (fValueTmp) + (float(fMaximum - fMinimum) / d * 10.f * ev.delta.getY());
float value = (fUsingLog ? _invlogscale(fValueTmp) : fValueTmp) + (float(fMaximum - fMinimum) / d * 10.f * ev.delta.getY());

if (fUsingLog)
value = _logscale(value);

if (value < fMinimum)
{


Loading…
Cancel
Save