54 lines
1.1 KiB
C++
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);
|
|
}
|
|
|