package com.codefixia.ui; import com.codefixia.drumcloud.DrumCloud; public class Clickable { boolean clicked = false; // Is the object being clicked? boolean overed = false; int strokeWeight=3; protected float x; // Location and size protected float y; protected float w; protected float h; protected float offsetX=0; // Mouseclick offset protected float offsetY=0; protected int fillColor=DrumCloud.X.color(127,128); protected int strokeColor=DrumCloud.X.color(100,128); public boolean isClicked() { return clicked; } public Clickable(float tempX, float tempY, float tempW, float tempH) { setX(tempX); setY(tempY); setW(tempW); setH(tempH); setOffsetX(0); setOffsetY(0); } public void drawState(){ if(clicked){ drawClicked(); }else if(overed){ drawOvered(); }else{ drawNormal(); } } public void draw(){ this.drawNormal(); } public void draw(int fillColor){ this.setFillColor(fillColor); this.drawNormal(); } public void draw(int fillColor,int strokeColor){ this.setFillColor(fillColor); this.setStrokeColor(strokeColor); this.drawNormal(); } public void drawNormal(){ DrumCloud.X.stroke(getStrokeColor()); DrumCloud.X.fill(DrumCloud.X.red(getFillColor()),DrumCloud.X.green(getFillColor()),DrumCloud.X.blue(getFillColor()),200); DrumCloud.X.rect(getX(),getY(),getW(),getH()); drawCommonContent(); } public void drawCommonContent(){ } public void drawOvered(){ DrumCloud.X.stroke(150); DrumCloud.X.fill(DrumCloud.X.red(getFillColor())*0.7f,DrumCloud.X.green(getFillColor())*0.7f,DrumCloud.X.blue(getFillColor())*0.7f,DrumCloud.X.alpha(getFillColor())); DrumCloud.X.rect(getX(),getY(),getW(),getH()); drawCommonContent(); } public void drawClicked(){ //stroke(red(strokeColor)*0.8,green(strokeColor)*0.8,blue(strokeColor)*0.8,alpha(strokeColor)*0.8); DrumCloud.X.stroke(200); DrumCloud.X.fill(DrumCloud.X.red(getFillColor())*0.5f,DrumCloud.X.green(getFillColor())*0.5f,DrumCloud.X.blue(getFillColor())*0.5f,DrumCloud.X.alpha(getFillColor())); DrumCloud.X.rect(getX(),getY(),getW(),getH()); drawCommonContent(); } // Is a point inside the rectangle (for click)? public boolean isClicked(int mx, int my) { if (isOver(mx,my)) { clicked = true; // If so, keep track of relative location of click to corner of rectangle setOffsetX(getX()-mx); setOffsetY(getY()-my); }else{ clicked =false; } return clicked; } public boolean isOver(int mx, int my) { if (mx > getX() && mx < getX() + getW() && my > getY() && my < getY() + getH()) { overed=true; }else{ overed=false; } return overed; } public void stopClick() { clicked=false; } public int getFillColor() { return fillColor; } public void setFillColor(int fillColor) { this.fillColor = fillColor; } public float getX() { return x; } public void setX(float x) { this.x = x; } public float getH() { return h; } public void setH(float h) { this.h = h; } public float getW() { return w; } public void setW(float w) { this.w = w; } public float getY() { return y; } public void setY(float y) { this.y = y; } public int getStrokeColor() { return strokeColor; } public void setStrokeColor(int strokeColor) { this.strokeColor = strokeColor; } public float getOffsetX() { return offsetX; } public void setOffsetX(float offsetX) { this.offsetX = offsetX; } public float getOffsetY() { return offsetY; } public void setOffsetY(float offsetY) { this.offsetY = offsetY; } }