-
Notifications
You must be signed in to change notification settings - Fork 0
/
matrixBorders.h
85 lines (79 loc) · 1.98 KB
/
matrixBorders.h
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
#include <MatrixGL.h>
#include "State.h"
void clearBorder(MatrixGL &matrix, State &st){
int points[] = {0,0, st.lenX,0, st.lenX,st.lenY, 0,st.lenY, 0,0};
matrix.drawPath(points,10, false);
//matrix.drawLine(0,0, 8,8, false);
}
void border(MatrixGL &matrix, State &st){
clearBorder(matrix, st);
if(st.sb > 300){
matrix.drawLine(0,0, 0,st.lenY);
}else if(st.sb > 200){
matrix.drawLine(st.lenX,0, 0,0);
}else if(st.sb > 100){
matrix.drawLine(st.lenX,st.lenY, st.lenX,0);
}else{
matrix.drawLine(0,st.lenY, st.lenX,st.lenY);
}
st.sb+=10;
if(st.sb>400){
st.sb=0;
}
}
void border2(MatrixGL &matrix, State &st)
{
clearBorder(matrix, st);
if(st.sb>31){
//reverse
int sx = st.sb - 31;
matrix.drawPoint(0,sx/4);
matrix.drawPoint(st.lenX,st.lenY-sx/4);
matrix.drawPoint(sx,0);
matrix.drawPoint(st.lenX-sx,st.lenY);
}else{
matrix.drawPoint(0,st.lenY-st.sb/4);
matrix.drawPoint(st.lenX,st.sb/4);
matrix.drawPoint(st.lenX-st.sb,0);
matrix.drawPoint(st.sb,st.lenY);
}
st.sb++;
if(st.sb>63){
st.sb=0;
}
}
void border3(MatrixGL &matrix, State &st){
clearBorder(matrix, st);
matrix.drawPoint(random(st.lenX),0);
matrix.drawPoint(random(st.lenX),st.lenY);
matrix.drawPoint(0,random(st.lenY));
matrix.drawPoint(st.lenX,random(st.lenY));
matrix.drawPoint(random(st.lenX),0);
matrix.drawPoint(random(st.lenX),st.lenY);
matrix.drawPoint(0,random(st.lenY));
matrix.drawPoint(st.lenX,random(st.lenY));
matrix.drawPoint(random(st.lenX),0);
matrix.drawPoint(random(st.lenX),st.lenY);
matrix.drawPoint(0,random(st.lenY));
matrix.drawPoint(st.lenX,random(st.lenY));
}
void runBorder(MatrixGL &matrix, State &st){
switch (st.modeB){
case 0:
clearBorder(matrix, st);
break;
case 1:
border(matrix, st);
break;
case 2:
border2(matrix, st);
break;
case 3:
border3(matrix, st);
break;
default:
clearBorder(matrix, st);
st.modeB=0;
break;
}
}