a port of the Processing Visualization Language

Button

Click on one of the colored squares in the center of the image to change the color of the background.

Original Processing.org Example: Button

// All Examples Written by Casey Reas and Ben Fry

// unless otherwise stated.

int rectX, rectY;      // Position of square button

int circleX, circleY;  // Position of circle button

int rectSize = 50;     // Diameter of rect

int circleSize = 53;   // Diameter of circle

color rectColor, circleColor, baseColor;

color rectHighlight, circleHighlight;

color currentColor;

boolean rectOver = false;

boolean circleOver = false;



void setup()

{

  size(200, 200);

  smooth();

  rectColor = color(0);

  rectHighlight = color(51);

  circleColor = color(255);

  circleHighlight = color(204);

  baseColor = color(102);

  currentColor = baseColor;

  circleX = width/2+circleSize/2+10;

  circleY = height/2;

  rectX = width/2-rectSize-10;

  rectY = height/2-rectSize/2;

  ellipseMode(CENTER);

}



void draw()

{

  update(mouseX, mouseY);

  background(currentColor);

  

  if(rectOver) {

    fill(rectHighlight);

  } else {

    fill(rectColor);

  }

  stroke(255);

  rect(rectX, rectY, rectSize, rectSize);

  

  if(circleOver) {

    fill(circleHighlight);

  } else {

    fill(circleColor);

  }

  stroke(0);

  ellipse(circleX, circleY, circleSize, circleSize);

}



void update(int x, int y)

{

  if( overCircle(circleX, circleY, circleSize) ) {

    circleOver = true;

    rectOver = false;

  } else if ( overRect(rectX, rectY, rectSize, rectSize) ) {

    rectOver = true;

    circleOver = false;

  } else {

    circleOver = rectOver = false;

  }

}



void mousePressed()

{

  if(circleOver) {

    currentColor = circleColor;

  }

  if(rectOver) {

    currentColor = rectColor;

  }

}



boolean overRect(int x, int y, int width, int height) 

{

  if (mouseX >= x && mouseX <= x+width && 

      mouseY >= y && mouseY <= y+height) {

    return true;

  } else {

    return false;

  }

}



boolean overCircle(int x, int y, int diameter) 

{

  float disX = x - mouseX;

  float disY = y - mouseY;

  if(sqrt(sq(disX) + sq(disY)) < diameter/2 ) {

    return true;

  } else {

    return false;

  }

}
Fork me on GitHub