-
Notifications
You must be signed in to change notification settings - Fork 0
/
BarDrawable.pde
97 lines (83 loc) · 1.97 KB
/
BarDrawable.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
88
89
90
91
92
93
94
95
96
class BarDrawable implements Drawable {
private Integrator x, y;
private Integrator bwidth, bheight;
private Integrator r, g, b, a;
boolean controlPoint = false;
boolean comparing = false;
boolean swapping = false;
BarDrawable(float bwidth, float bheight, int r, int g, int b, int a) {
this.bwidth = new Integrator(bwidth);
this.bheight = new Integrator(bheight);
this.r = new Integrator((float)r);
this.g = new Integrator((float)g);
this.b = new Integrator((float)b);
this.a = new Integrator((float)a);
}
public void place(Point p) {
this.x = new Integrator(p.x);
this.y = new Integrator(p.y);
}
public float getWidth() {
return bwidth.target;
}
public float getHeight() {
return bheight.target;
}
public void setup() { }
public void tick() {
x.tick();
y.tick();
bwidth.tick();
bheight.tick();
r.tick();
g.tick();
b.tick();
a.tick();
}
public void setControlPoint(boolean test) {
controlPoint = test;
}
public void setComparing(boolean test) {
comparing = test;
}
public void setSwapping(boolean test) {
swapping = test;
}
private int barAccentColor() {
if(comparing && !swapping) {
return color(255, 0, 0, 200);
}
else if(controlPoint) {
return color(0, 0, 255, 200);
}
return -1;
}
public void draw() {
pushStyle();
noStroke();
fill((int)r.value, (int)g.value, (int)b.value, (int)a.value);
pushMatrix();
translate(x.value, y.value);
rect(0f, 0f, bwidth.value, bheight.value);
int barAccent = barAccentColor();
if(barAccent != -1) {
fill(barAccent);
rect(0f, bheight.value-2f, bwidth.value, 2f);
}
if(comparing) {
fill(0, 0, 0, 255);
beginShape(TRIANGLES);
vertex(bwidth.value/2f-3f, bheight.value+5f);
vertex(bwidth.value/2f+3f, bheight.value+5f);
vertex(bwidth.value/2f , bheight.value+2f);
endShape();
}
popMatrix();
popStyle();
}
public void exchange(BarDrawable in) {
float tmpX = this.x.target;
this.x.target(in.x.target);
in.x.target(tmpX);
}
}