class Slider extends Control { float min,max,value; int labelW = 8; Slider(int x, int y, int w, int h, float min, float max, float value,String label) { super(x,y,w,h,label); this.min = min; this.max = max; this.value = value; } void mouseDragged() { setValueToMouse(); } boolean mousePressed() { boolean down; if (down = super.mousePressed()) setValueToMouse(); return down; } void setValueToMouse() { int mw = (w-labelW)-1; float mv = (mouseX-(x+labelW+1.0))/mw; if (mv>0) value = min+(mv*mv)*(max-min); else value = min; value = min(value,max); } void drawContents() { fill(0x00,0x99,0xFF); noStroke(); int mw = (w-labelW)-1; float vw = sqrt((value-min)/(max-min))*mw; rect(x+labelW+1,y+1,vw,h-1); } void display() { super.display(); stroke(0x00,0x99,0xFF); line(x+labelW,y,x+labelW,y+h); } }