commit 8137eacc16efe9bd2ba43f016fb6e02c13737a8e
parent 3cab16194504b070f1252ac1449cfeb14ff03005
Author: falkTX <falktx@gmail.com>
Date: Tue, 6 May 2014 22:31:25 +0200
Simplify ImageKnob drawing
Diffstat:
1 file changed, 7 insertions(+), 17 deletions(-)
diff --git a/dgl/src/ImageKnob.cpp b/dgl/src/ImageKnob.cpp
@@ -185,7 +185,7 @@ void ImageKnob::setRotationAngle(int angle)
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
- float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f };
+ static const float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f };
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, trans);
glBindTexture(GL_TEXTURE_2D, 0);
@@ -207,8 +207,8 @@ void ImageKnob::onDisplay()
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, fTextureId);
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, getWidth(), getHeight(), 0, fImage.getFormat(), fImage.getType(), fImage.getRawData());
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
@@ -216,7 +216,7 @@ void ImageKnob::onDisplay()
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_BORDER);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_BORDER);
- float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f };
+ static const float trans[] = { 0.0f, 0.0f, 0.0f, 0.0f };
glTexParameterfv(GL_TEXTURE_2D, GL_TEXTURE_BORDER_COLOR, trans);
glPushMatrix();
@@ -227,19 +227,7 @@ void ImageKnob::onDisplay()
glTranslatef(static_cast<float>(getX()+w2), static_cast<float>(getY()+h2), 0.0f);
glRotatef(normValue*static_cast<float>(fRotationAngle), 0.0f, 0.0f, 1.0f);
- glBegin(GL_QUADS);
- glTexCoord2f(0.0f, 0.0f);
- glVertex2i(-w2, -h2);
-
- glTexCoord2f(1.0f, 0.0f);
- glVertex2i(getWidth()-w2, -h2);
-
- glTexCoord2f(1.0f, 1.0f);
- glVertex2i(getWidth()-w2, getHeight()-h2);
-
- glTexCoord2f(0.0f, 1.0f);
- glVertex2i(-w2, getHeight()-h2);
- glEnd();
+ Rectangle<int>(-w2, -h2, getWidth(), getHeight()).draw();
glPopMatrix();
@@ -248,12 +236,14 @@ void ImageKnob::onDisplay()
}
else
{
+ // FIXME - DO NOT USE glDrawPixels!
+
const int layerDataSize = fImgLayerSize * fImgLayerSize * ((fImage.getFormat() == GL_BGRA || fImage.getFormat() == GL_RGBA) ? 4 : 3);
const int imageDataSize = layerDataSize * fImgLayerCount;
const int imageDataOffset = imageDataSize - layerDataSize - (layerDataSize * int(normValue * float(fImgLayerCount-1)));
- glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glPixelStorei(GL_PACK_ALIGNMENT, 1);
+ glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glRasterPos2i(getX(), getY()+getHeight());
glDrawPixels(fImgLayerSize, fImgLayerSize, fImage.getFormat(), fImage.getType(), fImage.getRawData() + imageDataOffset);
}