Button
button.pde
/**
* Button.
*
* Click on one of the colored shapes in the
* center of the image to change the color of
* the background.
*/
int rectX, rectY;
int circleX, circleY;
int rectSize = 90;
int circleSize = 93;
color rectColor, circleColor, baseColor;
color rectHighlight, circleHighlight;
color currentColor;
bool rectOver = false;
bool circleOver = false;
void setup() {
size(640, 360);
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;
}
}
bool overRect(int x, int y, int w, int h) {
if (mouseX >= x && mouseX <= x + w &&
mouseY >= y && mouseY <= y + h) {
return true;
} else {
return false;
}
}
bool 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;
}
}