class JakeSlider { int xloc, yloc; int sliderwidth, sliderheight; float startvalue; boolean integerslider; boolean over; boolean visible; boolean mouseDRAG; int xinside; float slidervalue; color outsidecolor; color insidecolor; float lower, upper; PFont sliderfont; int fontsize; int leftdigits, rightdigits; boolean mouseDRAGoutside; JakeSlider(int x, int y, int swidth, int sheight, float start, float slower, float supper, boolean sinteger, color inside, color outside,PFont afont, int fsize,int ldigits, int rdigits) { xloc = x; yloc = y; sliderwidth = swidth; sliderheight = sheight; visible = true; mouseDRAG = false; integerslider = sinteger; insidecolor = inside; outsidecolor = outside; lower = slower; upper = supper; xinside = (int)map(start,slower,supper,x,x+swidth-10); slidervalue = start; fontsize = fsize; sliderfont = afont; leftdigits = ldigits; rightdigits = rdigits; mouseDRAGoutside = false; } void setRange(float slower,float supper) { lower = slower; upper = supper; } void setDigits(int ldigits, int rdigits) { leftdigits = ldigits; rightdigits = rdigits; } void setValue(float start) { xinside = (int)map(start,lower,upper,xloc,xloc+sliderwidth-10); slidervalue = start; } float getValue() { return(slidervalue); } void setVisible(boolean state) { visible = state; } boolean overButton() { if ((mouseX >= xloc) && (mouseX <= (xloc + sliderwidth)) && (mouseY >= yloc) && (mouseY <= (yloc + sliderheight))) { return true; } else { return false; } } void updateSlider() { if (visible) { over = overButton(); boolean mouseValue = mousePressed; if (!mouseDRAGoutside) { if (mouseValue & over) { mouseDRAG = true; } } if(!mouseValue) { mouseDRAG = false; mouseDRAGoutside = false; } if(mouseValue) mouseDRAGoutside = true; if(mouseDRAG) { xinside = constrain(mouseX,xloc,xloc+sliderwidth-10); slidervalue = map(xinside, xloc,xloc+sliderwidth-10,lower,upper); if (integerslider) slidervalue = (int)slidervalue; } } else { mouseDRAG = false; over = false; mouseDRAGoutside = false; } } void drawSlider() { if (visible) { fill(outsidecolor); rect(xloc,yloc,sliderwidth,sliderheight); fill(insidecolor); rect(xinside,yloc,10,sliderheight); textFont(sliderfont,fontsize); fill(255); text(nf(slidervalue, leftdigits,rightdigits),xloc+5,yloc+sliderheight-10); } } }