#include #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); }