pplugins/pui/knob.cpp

54 lines
1.1 KiB
C++

#include <pugl/pugl.h>
#include "pui.h"
float Knob::GetNewValue(int x, int y)
{
int p = 20;
if (false) {
int x2 = this->x + p;
int w2 = this->w - p - p;
if (x <= x2) return min;
if (x >= x2 + w2) return max;
return (x - x2) * (max - min) / w2 + min;
} else {
int y2 = this->y + p;
int h2 = this->h - p - p;
if (y <= y2) return max;
if (y >= y2 + h2) return min;
return (y2 + h2 - y) * (max - min) / h2 + min;
}
}
void Knob::OnPaint(const PUi *pui) const
{
// float m = (value - min) / (max - min);
// printf("%d\n", tex[TEX_TROUGH1]);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND);
glEnable(GL_TEXTURE_2D);
int t = TEX_KNOB;
int w2 = pui->w[t];
int h2 = pui->h[t];
int mx, my;
mx = (w - w2) * 0.5f + x;
my = (h - h2) * 0.5f + y;
glBindTexture(GL_TEXTURE_2D, pui->tex[t]);
glBegin(GL_QUADS);
glColor3f(1.0, 1.0, 1.0);
glTexCoord2f(0.0, 0.0);
glVertex2f( mx, my);
glTexCoord2f(0.0, 1.0);
glVertex2f( mx, h2 + my);
glTexCoord2f(1.0, 1.0);
glVertex2f(w2 + mx, h2 + my);
glTexCoord2f(1.0, 0.0);
glVertex2f(w2 + mx, my);
glEnd();
glDisable(GL_TEXTURE_2D);
}