-
Notifications
You must be signed in to change notification settings - Fork 0
/
IconButton.pde
88 lines (76 loc) · 2.5 KB
/
IconButton.pde
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
//
// IceTimer - Graphical timer and match scheduler for pick-up ice hockey
// Copyright (C) 2014 Joe Cridge
//
// This file is part of IceTimer.
//
// IceTimer is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// IceTimer is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with IceTimer. If not, see <http://www.gnu.org/licenses/>.
//
// Joe Cridge, June 2014.
// <joe.cridge@me.com>
//
class IconButton {
// Button which displays an icon instead of a string label.
// Icon should be a 48x48 pixel white/grayscale mask.
int xPos, yPos, xSize, ySize;
boolean isActive, wasPressed, displayLabel;
color activeColour, inactiveColour;
PImage icon;
IconButton(int xPos_, int yPos_, int xSize_, int ySize_, PImage icon_, color activeColour_, color inactiveColour_) {
xPos = xPos_;
yPos = yPos_;
xSize = xSize_;
ySize = ySize_;
icon = icon_;
activeColour = activeColour_;
inactiveColour = inactiveColour_;
isActive = true;
wasPressed = false;
}
void display() {
// Highlight background when hovered over
if (isActive && mouseX >= xPos && mouseX <= xPos+xSize && mouseY >= yPos && mouseY <= yPos+ySize) {
//fill(activeColour, 150);
fill(TIMER_AMBER, 200);
rect(xPos, yPos, xSize, ySize);
}
// Draw icon
tint(inactiveColour);
image(icon, xPos+xSize/2-23, yPos+ySize/2-23, 48, 48);
// Draw border
noFill();
strokeWeight(1.7);
stroke(inactiveColour);
rect(xPos, yPos, xSize, ySize);
noStroke();
}
void resizeTo(int newXPos, int newYPos, int newXSize, int newYSize) {
xPos = newXPos;
yPos = newYPos;
xSize = newXSize;
ySize = newYSize;
}
void respond(int clickX, int clickY) {
if (isActive && clickX >= xPos && clickX <= xPos+xSize && clickY >= yPos && clickY <= yPos+ySize) {
wasPressed = true;
}
}
void setActiveColour(color newColour) {
// Currently has no effect - see display()
activeColour = newColour;
}
void setIcon(PImage newIcon) {
icon = newIcon;
}
}