|
|
@@ -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); |
|
|
|
} |
|
|
|