package com.codefixia.ui; import com.codefixia.drumcloud.DrumCloud; import com.codefixia.utils.FontAdjuster; public class HorizontalSlider extends Draggable{ float divisions=10; float divWidth=0.0f; int outStroke=3; private String text=""; float minValue=0.0f,maxValue=1.0f,defaultValue=0.5f; public HorizontalSlider(float x, float y, float w, float h) { super(x,y,w,h); //expandedFactor=1.2; } public void limitX(float min,float max){ limitedX=true; minX=min; maxX=max; calculateClickZone(); divWidth=(maxXZone-minXZone)/divisions; //DrumCloud.println("totalW:"+(maxXZone-minXZone)+" divWidth:"+divWidth); } public void valuesX(float min,float max,float def){ minValue=min; maxValue=max; defaultValue=def; setX(DrumCloud.map(def,minValue,maxValue,minX,maxX)); } public float normalizedValue(){ return DrumCloud.map(getX(), minX, maxX, 0, 1); } public float value(){ return DrumCloud.map(getX(), minX, maxX, minValue, maxValue); } public void draw() { DrumCloud.X.strokeWeight(outStroke); DrumCloud.X.stroke(100,100,100,255); DrumCloud.X.fill(DrumCloud.map(normalizedValue(),0,1,50,127),255); DrumCloud.X.rect(minXZone,minYZone,maxX-minX+getW(),maxYZone-minYZone); DrumCloud.X.strokeWeight(2); DrumCloud.X.stroke(255,255,255,255); for(int i=1;i<divisions;i++){ float xPos=minXZone+i*divWidth; if(i%2==0){ DrumCloud.X.line(xPos,minYZone+outStroke,xPos,minYZone+getH()*0.4f); DrumCloud.X.line(xPos,maxYZone-getH()*0.4f,xPos,maxYZone-outStroke); } else{ DrumCloud.X.line(xPos,minYZone+outStroke,xPos,minYZone+getH()*0.3f); DrumCloud.X.line(xPos,maxYZone-getH()*0.3f,xPos,maxYZone-outStroke); } } DrumCloud.X.strokeWeight(outStroke); DrumCloud.X.stroke(200); if (isDragging()) DrumCloud.X.fill (50,180); else if (rollover) DrumCloud.X.fill(140,180); else DrumCloud.X.fill(100,180); DrumCloud.X.rect(getX(),getY()+outStroke,getW(),getH()-2*outStroke); DrumCloud.X.fill(200); //textSize(20); //text(round(normalizedValue()*100)+"%",x+w*.5,maxYZone+h*.7); DrumCloud.X.textSize(FontAdjuster.getSize(20)); float posY; if(DrumCloud.isAndroidDevice()) posY=getY()+getH()*.7f; else posY=getY()+getH()*.75f; DrumCloud.X.text(DrumCloud.round(value()),getX()+getW()*.5f,posY); DrumCloud.X.textSize(FontAdjuster.getSize(12)); DrumCloud.X.textLeading(FontAdjuster.getSize(12)); DrumCloud.X.text(getText(),getX()+getW()*.5f,maxYZone+getH()*.5f); } public String getText() { return text; } public void setText(String text) { this.text = text; } }