-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathfont.hpp
138 lines (131 loc) · 6.32 KB
/
font.hpp
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#include "libs.hpp"
// 95 character 8x8 bitmap font, top and left is empty column
const array<array<uint8_t, 8>, 1> nesfont({
array<uint8_t, 8>({ 0x1c, 0x3e, 0x77, 0x63, 0x63, 0x7f, 0x63, 0x63 })
});
unsigned char letters[96][8] = {
{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x3c, 0x18},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x6c, 0x6c, 0x6c},
{0x6c, 0x6c, 0xfe, 0x6c, 0x6c, 0xfe, 0x6c, 0x6c},
{0x00, 0x18, 0x3e, 0x60, 0x3c, 0x06, 0x7c, 0x38},
{0xc6, 0xcc, 0x18, 0x30, 0x66, 0xc6, 0x00, 0x00},
{0xdc, 0x66, 0x76, 0xdc, 0x38, 0x6c, 0x38, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x0c, 0x00},
{0x18, 0x0c, 0x06, 0x06, 0x06, 0x0c, 0x18, 0x00},
{0x30, 0x60, 0xc0, 0xc0, 0xc0, 0x60, 0x30, 0x00},
{0x66, 0x3c, 0xff, 0x3c, 0x66, 0x00, 0x00, 0x00},
{0x18, 0x18, 0x18, 0xff, 0x18, 0x18, 0x18, 0x00},
{0x18, 0x30, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x00},
{0x18, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x02, 0x06, 0x0c, 0x18, 0x30, 0x60, 0x00},
{0x38, 0x4c, 0xc6, 0xc6, 0xc6, 0x64, 0x38, 0x00}, // 0
{0xfc, 0x30, 0x30, 0x30, 0x38, 0x30, 0x30, 0x00}, // 1
{0xfe, 0x0e, 0x3c, 0x78, 0xe0, 0xc6, 0x7c, 0x00}, // 2
{0x7c, 0xc6, 0xc0, 0x78, 0x30, 0x60, 0xfc, 0x00}, // 3
{0x60, 0x60, 0xfe, 0x66, 0x6c, 0x78, 0x70, 0x00}, // 4
{0x7c, 0xc6, 0xc0, 0xc0, 0x7e, 0x06, 0x7e, 0x00}, // 5
{0x7c, 0xc6, 0xc6, 0x7e, 0x06, 0x0c, 0x78, 0x00}, // 6
{0x18, 0x18, 0x18, 0x30, 0x60, 0xc6, 0xfe, 0x00}, // 7
{0x7c, 0xc6, 0xc6, 0x7c, 0xc6, 0xc6, 0x7c, 0x00}, // 8
{0x3c, 0x60, 0xc0, 0xfc, 0xc6, 0xc6, 0x7c, 0x00}, // 9
{0x00, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x00},
{0x18, 0x30, 0x30, 0x00, 0x30, 0x30, 0x00, 0x00},
{0x18, 0x0c, 0x06, 0x03, 0x06, 0x0c, 0x18, 0x00},
{0x00, 0x00, 0x7e, 0x00, 0x00, 0x7e, 0x00, 0x00},
{0x0c, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0c, 0x00},
{0x18, 0x00, 0x18, 0x30, 0x60, 0x66, 0x3c, 0x00},
{0x3c, 0x06, 0x76, 0x76, 0x76, 0x46, 0x3c, 0x00},
{0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0x6c, 0x38, 0x00}, // A
{0x7e, 0xc6, 0xc6, 0x7e, 0xc6, 0xc6, 0x7e, 0x00},
{0x78, 0xcc, 0x06, 0x06, 0x06, 0xcc, 0x78, 0x00},
{0x3e, 0x66, 0xc6, 0xc6, 0xc6, 0x66, 0x3e, 0x00},
{0xfe, 0x06, 0x06, 0x7e, 0x06, 0x06, 0xfe, 0x00},
{0x06, 0x06, 0x06, 0x7e, 0x06, 0x06, 0xfe, 0x00},
{0xf8, 0xcc, 0xc6, 0xe6, 0x06, 0x0c, 0xf8, 0x00},
{0xc6, 0xc6, 0xc6, 0xfe, 0xc6, 0xc6, 0xc6, 0x00},
{0xfc, 0x30, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x00},
{0x7c, 0xc6, 0xc6, 0xc0, 0xc0, 0xc0, 0xf0, 0x00},
{0xe6, 0x76, 0x3e, 0x1e, 0x36, 0x66, 0xc6, 0x00},
{0xfc, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00},
{0xc6, 0xc6, 0xd6, 0xfe, 0xfe, 0xee, 0xc6, 0x00},
{0xc6, 0xe6, 0xf6, 0xfe, 0xde, 0xce, 0xc6, 0x00},
{0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00},
{0x06, 0x06, 0x7e, 0xc6, 0xc6, 0xc6, 0x7e, 0x00},
{0xbc, 0x66, 0xf6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00},
{0xe6, 0x76, 0x3e, 0xe6, 0xc6, 0xc6, 0x7e, 0x00},
{0x7c, 0xc6, 0xc0, 0x7c, 0x06, 0xc6, 0x7c, 0x00},
{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x00},
{0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00},
{0x10, 0x38, 0x7c, 0xee, 0xc6, 0xc6, 0xc6, 0x00},
{0xc6, 0xee, 0xfe, 0xfe, 0xd6, 0xc6, 0xc6, 0x00},
{0xc6, 0xee, 0x7c, 0x38, 0x7c, 0xee, 0xc6, 0x00},
{0x30, 0x30, 0x30, 0x78, 0xcc, 0xcc, 0xcc, 0x00},
{0xfe, 0x0e, 0x1c, 0x38, 0x70, 0xe0, 0xfe, 0x00},
{0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c, 0x00},
{0x80, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x00},
{0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c, 0x00},
{0x00, 0x00, 0x00, 0xc6, 0x6c, 0x38, 0x10, 0x00},
{0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x30, 0x18, 0x18, 0x00},
{0xdc, 0x66, 0x66, 0x66, 0x3c, 0x00, 0x00, 0x00},
{0x7c, 0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x00},
{0xf8, 0x0c, 0x0c, 0x0c, 0x0c, 0xf8, 0x00, 0x00},
{0xf8, 0xcc, 0xcc, 0xcc, 0xf8, 0xc0, 0xc0, 0x00},
{0xf8, 0x0c, 0xfc, 0xcc, 0x78, 0x00, 0x00, 0x00},
{0x30, 0x30, 0x30, 0xfc, 0x30, 0x30, 0xe0, 0x00},
{0x78, 0xc0, 0xf8, 0xcc, 0xcc, 0xf8, 0x00, 0x00},
{0xcc, 0xcc, 0xcc, 0x7c, 0x0c, 0x0c, 0x0c, 0x00},
{0x30, 0x30, 0x30, 0x30, 0x00, 0x30, 0x00, 0x00},
{0x78, 0xcc, 0xc0, 0xc0, 0xc0, 0x00, 0xc0, 0x00},
{0xcc, 0x7c, 0x2c, 0x4c, 0x8c, 0x0c, 0x0c, 0x00},
{0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x00},
{0xd6, 0xd6, 0xd6, 0xd6, 0x6e, 0x00, 0x00, 0x00},
{0xcc, 0xcc, 0xcc, 0xcc, 0x7c, 0x00, 0x00, 0x00},
{0x78, 0xcc, 0xcc, 0xcc, 0x78, 0x00, 0x00, 0x00},
{0x0c, 0x0c, 0x7c, 0xcc, 0xcc, 0x7c, 0x00, 0x00},
{0xc0, 0xc0, 0xf8, 0xcc, 0xcc, 0xf8, 0x00, 0x00},
{0x0c, 0x0c, 0x0c, 0x1c, 0xec, 0x00, 0x00, 0x00},
{0x7c, 0xc0, 0x78, 0x04, 0x78, 0x00, 0x00, 0x00},
{0xe0, 0x30, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x00},
{0x78, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00},
{0x30, 0x48, 0xcc, 0xcc, 0xcc, 0xcc, 0x00, 0x00},
{0x6c, 0xd6, 0xd6, 0xd6, 0xc6, 0x00, 0x00, 0x00},
{0xc6, 0x6c, 0x38, 0x6c, 0xc6, 0x00, 0x00, 0x00},
{0x06, 0x06, 0x0c, 0x18, 0x34, 0x66, 0x66, 0x00},
{0xfc, 0x18, 0x30, 0x60, 0xfc, 0x00, 0x00, 0x00},
{0x70, 0x18, 0x18, 0x0e, 0x18, 0x18, 0x70, 0x00},
{0x30, 0x30, 0x30, 0x00, 0x30, 0x30, 0x30, 0x00},
{0x1c, 0x30, 0x30, 0xe0, 0x30, 0x30, 0x1c, 0x00},
{0x00, 0x00, 0x00, 0x00, 0x00, 0x76, 0xdc, 0x00},
{0xfe, 0xc6, 0xc6, 0x6c, 0x38, 0x10, 0x00, 0x00},
};
void drawText(string text, int sqsize, Vector2f pos, Color color, RenderWindow& win)
{
float pix = sqsize/8.0f;
RectangleShape pixel(Vector2f(pix, pix));
pixel.setFillColor(color);
pixel.setOutlineThickness(0);
Vector2f base(pos.x + sqsize, pos.y + sqsize);
for (int c = 0; c < text.size(); ++c)
{
// set pixel to top right of square
pixel.setPosition(base);
for (int row = 0; row < 8; ++row)
{
for (int col = 7; col >= 0; --col)
{
// lower pixel 1 col
pixel.setPosition(pixel.getPosition().x - pix, pixel.getPosition().y);
uint8_t current = letters[text[c]-32][row];
if (current >> col & 1 == 1)
win.draw(pixel);
}
// lower pixel 1 row
pixel.setPosition(pixel.getPosition().x + sqsize, pixel.getPosition().y - pix);
}
// inc square
base.x += sqsize;
}
}