summaryrefslogtreecommitdiff
path: root/libs/dgl/src/ImageKnob.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libs/dgl/src/ImageKnob.cpp')
-rw-r--r--libs/dgl/src/ImageKnob.cpp60
1 files changed, 25 insertions, 35 deletions
diff --git a/libs/dgl/src/ImageKnob.cpp b/libs/dgl/src/ImageKnob.cpp
index 0fc8c69..57dae6a 100644
--- a/libs/dgl/src/ImageKnob.cpp
+++ b/libs/dgl/src/ImageKnob.cpp
@@ -22,10 +22,9 @@ START_NAMESPACE_DGL
// -----------------------------------------------------------------------
-ImageKnob::ImageKnob(Window& parent, const Image& image, Orientation orientation, int id) noexcept
+ImageKnob::ImageKnob(Window& parent, const Image& image, Orientation orientation) noexcept
: Widget(parent),
fImage(image),
- fId(id),
fMinimum(0.0f),
fMaximum(1.0f),
fStep(0.0f),
@@ -43,19 +42,17 @@ ImageKnob::ImageKnob(Window& parent, const Image& image, Orientation orientation
fIsImgVertical(image.getHeight() > image.getWidth()),
fImgLayerSize(fIsImgVertical ? image.getWidth() : image.getHeight()),
fImgLayerCount(fIsImgVertical ? image.getHeight()/fImgLayerSize : image.getWidth()/fImgLayerSize),
- fKnobArea(0, 0, fImgLayerSize, fImgLayerSize),
- fTextureId(0),
fIsReady(false),
+ fTextureId(0),
leakDetector_ImageKnob()
{
glGenTextures(1, &fTextureId);
setSize(fImgLayerSize, fImgLayerSize);
}
-ImageKnob::ImageKnob(Widget* widget, const Image& image, Orientation orientation, int id) noexcept
+ImageKnob::ImageKnob(Widget* widget, const Image& image, Orientation orientation) noexcept
: Widget(widget->getParentWindow()),
fImage(image),
- fId(id),
fMinimum(0.0f),
fMaximum(1.0f),
fStep(0.0f),
@@ -73,9 +70,8 @@ ImageKnob::ImageKnob(Widget* widget, const Image& image, Orientation orientation
fIsImgVertical(image.getHeight() > image.getWidth()),
fImgLayerSize(fIsImgVertical ? image.getWidth() : image.getHeight()),
fImgLayerCount(fIsImgVertical ? image.getHeight()/fImgLayerSize : image.getWidth()/fImgLayerSize),
- fKnobArea(0, 0, fImgLayerSize, fImgLayerSize),
- fTextureId(0),
fIsReady(false),
+ fTextureId(0),
leakDetector_ImageKnob()
{
glGenTextures(1, &fTextureId);
@@ -85,7 +81,6 @@ ImageKnob::ImageKnob(Widget* widget, const Image& image, Orientation orientation
ImageKnob::ImageKnob(const ImageKnob& imageKnob)
: Widget(imageKnob.getParentWindow()),
fImage(imageKnob.fImage),
- fId(imageKnob.fId),
fMinimum(imageKnob.fMinimum),
fMaximum(imageKnob.fMaximum),
fStep(imageKnob.fStep),
@@ -103,9 +98,8 @@ ImageKnob::ImageKnob(const ImageKnob& imageKnob)
fIsImgVertical(imageKnob.fIsImgVertical),
fImgLayerSize(imageKnob.fImgLayerSize),
fImgLayerCount(imageKnob.fImgLayerCount),
- fKnobArea(imageKnob.fKnobArea),
- fTextureId(0),
fIsReady(false),
+ fTextureId(0),
leakDetector_ImageKnob()
{
glGenTextures(1, &fTextureId);
@@ -115,7 +109,6 @@ ImageKnob::ImageKnob(const ImageKnob& imageKnob)
ImageKnob& ImageKnob::operator=(const ImageKnob& imageKnob)
{
fImage = imageKnob.fImage;
- fId = imageKnob.fId;
fMinimum = imageKnob.fMinimum;
fMaximum = imageKnob.fMaximum;
fStep = imageKnob.fStep;
@@ -133,7 +126,6 @@ ImageKnob& ImageKnob::operator=(const ImageKnob& imageKnob)
fIsImgVertical = imageKnob.fIsImgVertical;
fImgLayerSize = imageKnob.fImgLayerSize;
fImgLayerCount = imageKnob.fImgLayerCount;
- fKnobArea = imageKnob.fKnobArea;
fIsReady = false;
if (fTextureId != 0)
@@ -157,16 +149,6 @@ ImageKnob::~ImageKnob()
}
}
-int ImageKnob::getId() const noexcept
-{
- return fId;
-}
-
-void ImageKnob::setId(int id) noexcept
-{
- fId = id;
-}
-
float ImageKnob::getValue() const noexcept
{
return fValue;
@@ -220,12 +202,12 @@ void ImageKnob::setStep(float step) noexcept
// NOTE: value is assumed to be scaled if using log
void ImageKnob::setValue(float value, bool sendCallback) noexcept
{
- if (fValue == value)
+ if (d_isEqual(fValue, value))
return;
fValue = value;
- if (fStep == 0.0f)
+ if (d_isZero(fStep))
fValueTmp = value;
if (fRotationAngle == 0)
@@ -288,36 +270,44 @@ void ImageKnob::onDisplay()
glPixelStorei(GL_PACK_ALIGNMENT, 1);
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
- int imageDataOffset = 0;
+ uint imageDataOffset = 0;
if (fRotationAngle == 0)
{
- int layerDataSize = fImgLayerSize * fImgLayerSize * ((fImage.getFormat() == GL_BGRA || fImage.getFormat() == GL_RGBA) ? 4 : 3);
- imageDataOffset = layerDataSize * int(normValue * float(fImgLayerCount-1));
+ DISTRHO_SAFE_ASSERT_RETURN(fImgLayerCount > 0,);
+ DISTRHO_SAFE_ASSERT_RETURN(normValue >= 0.0f,);
+
+ const uint layerDataSize = fImgLayerSize * fImgLayerSize * ((fImage.getFormat() == GL_BGRA || fImage.getFormat() == GL_RGBA) ? 4 : 3);
+ /* */ imageDataOffset = layerDataSize * uint(normValue * float(fImgLayerCount-1));
}
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, getWidth(), getHeight(), 0, fImage.getFormat(), fImage.getType(), fImage.getRawData() + imageDataOffset);
+ 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 GLint w2 = getWidth()/2;
- const GLint h2 = getHeight()/2;
+ 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, getWidth(), getHeight()).draw();
+ Rectangle<int>(-w2, -h2, w, h).draw();
glPopMatrix();
}
else
{
- Rectangle<int>(0, 0, getWidth(), getHeight()).draw();
+ Rectangle<int>(0, 0, w, h).draw();
}
glBindTexture(GL_TEXTURE_2D, 0);
@@ -403,7 +393,7 @@ bool ImageKnob::onMotion(const MotionEvent& ev)
{
fValueTmp = value = fMaximum;
}
- else if (fStep != 0.0f)
+ else if (d_isNotZero(fStep))
{
fValueTmp = value;
const float rest = std::fmod(value, fStep);
@@ -437,7 +427,7 @@ bool ImageKnob::onScroll(const ScrollEvent& ev)
{
fValueTmp = value = fMaximum;
}
- else if (fStep != 0.0f)
+ else if (d_isNotZero(fStep))
{
fValueTmp = value;
const float rest = std::fmod(value, fStep);