-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSmallFont.cpp
More file actions
160 lines (156 loc) · 8.24 KB
/
SmallFont.cpp
File metadata and controls
160 lines (156 loc) · 8.24 KB
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
// SmallFont.c
// Jonathan Valvano
// draws small numbers
// 11/5/2023
#include <stdint.h>
#include <SmallFont.h>
#include "../inc/ST7735.h"
// 5 wide, 6 tall images
const unsigned short SmallFontVertical[10][30] = {
{
0x0000, 0x056C, 0x079F, 0x057F, 0x0000, 0x0300, 0x067F, 0x0007, 0x0672, 0x0316, 0x0300, 0x057F, 0x0000, 0x0447, 0x0316, 0x0300,
0x057F, 0x0000, 0x0447, 0x0316, 0x0300, 0x067F, 0x0007, 0x0672, 0x0316, 0x0000, 0x056C, 0x079F, 0x057F, 0x0000},
{
0x0447, 0x079F, 0x079F, 0x079F, 0x045B, 0x0000, 0x0000, 0x0796, 0x000C, 0x0000, 0x0000, 0x0000, 0x0796, 0x000C, 0x0000, 0x0000,
0x0000, 0x0796, 0x000C, 0x0000, 0x0000, 0x0000, 0x0796, 0x000C, 0x0000, 0x0300, 0x079F, 0x079F, 0x000C, 0x0000},
{
0x056C, 0x079F, 0x079F, 0x079F, 0x0316, 0x0000, 0x0672, 0x045B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0447, 0x0316, 0x0000, 0x0000,
0x0000, 0x0000, 0x056C, 0x01B2, 0x0300, 0x057F, 0x0000, 0x0672, 0x0316, 0x0000, 0x0672, 0x079F, 0x067F, 0x0007},
{
0x0300, 0x079F, 0x079F, 0x079F, 0x000C, 0x0000, 0x0000, 0x0000, 0x0447, 0x045B, 0x0000, 0x0000, 0x0000, 0x056C, 0x0316, 0x0000,
0x01A0, 0x079B, 0x067F, 0x0007, 0x0000, 0x0000, 0x0000, 0x056C, 0x0316, 0x0000, 0x0796, 0x079F, 0x079F, 0x000C},
{
0x0000, 0x01A0, 0x079B, 0x079F, 0x045B, 0x0000, 0x0000, 0x01A0, 0x067B, 0x0007, 0x0447, 0x079F, 0x079F, 0x079F, 0x045B, 0x01A0,
0x079B, 0x0312, 0x067B, 0x0007, 0x0000, 0x0447, 0x057B, 0x067B, 0x0007, 0x0000, 0x0000, 0x0672, 0x067F, 0x0007},
{
0x0300, 0x079F, 0x079F, 0x079F, 0x000C, 0x0000, 0x0000, 0x0000, 0x0447, 0x045B, 0x0000, 0x0000, 0x0000, 0x0447, 0x045B, 0x0000,
0x0796, 0x079F, 0x079F, 0x000C, 0x0000, 0x0676, 0x0007, 0x0000, 0x0000, 0x0000, 0x0796, 0x079F, 0x079F, 0x01B2},
{
0x0000, 0x0447, 0x079F, 0x079F, 0x000C, 0x0000, 0x0796, 0x000C, 0x0447, 0x045B, 0x01A0, 0x079B, 0x01B2, 0x0447, 0x045B, 0x01A0,
0x067B, 0x0676, 0x079F, 0x000C, 0x0000, 0x0672, 0x045B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0672, 0x079F, 0x045B},
{
0x0000, 0x0000, 0x0672, 0x01B2, 0x0000, 0x0000, 0x0000, 0x056C, 0x0316, 0x0000, 0x0000, 0x0000, 0x0300, 0x057F, 0x0000, 0x0000,
0x0000, 0x0000, 0x0676, 0x0007, 0x0300, 0x057F, 0x0000, 0x056C, 0x01B2, 0x0300, 0x079F, 0x079F, 0x079F, 0x01B2},
{
0x0000, 0x0672, 0x079F, 0x067F, 0x0007, 0x0300, 0x057F, 0x0000, 0x056C, 0x0316, 0x0300, 0x067F, 0x0007, 0x056C, 0x0316, 0x0000,
0x056C, 0x079F, 0x057F, 0x0000, 0x0300, 0x057F, 0x0000, 0x0447, 0x0316, 0x0000, 0x0672, 0x079F, 0x079F, 0x000C},
{
0x01A0, 0x079B, 0x079F, 0x0316, 0x0000, 0x0000, 0x0000, 0x01A0, 0x079B, 0x01B2, 0x0000, 0x056C, 0x079F, 0x067B, 0x045B, 0x01A0,
0x067B, 0x0007, 0x056C, 0x045B, 0x01A0, 0x067B, 0x0007, 0x056C, 0x0316, 0x0000, 0x056C, 0x079F, 0x067F, 0x0007}
};
const unsigned short dblank[] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
};
// 6 wide, 5 tall images
const unsigned short SmallFontHorizontal[10][30] = {
{ //0
// 0x0000, 0x0316, 0x0316, 0x0316, 0x0316, 0x0000, 0x057F, 0x0672, 0x0447, 0x0447, 0x0672, 0x057F, 0x079F, 0x0007, 0x0000, 0x0000,
// 0x0007, 0x079F, 0x056C, 0x067F, 0x057F, 0x057F, 0x067F, 0x056C, 0x0000, 0x0300, 0x0300, 0x0300, 0x0300, 0x0000
0x0000, 0x0316, 0x0316, 0x0316, 0x0316, 0x0000, 0x057F, 0x079F, 0x0E5F, 0x0E5F, 0x079F, 0x057F, 0x079F, 0x0007, 0x0000, 0x0000,
0x0007, 0x079F, 0x056C, 0x067F, 0x057F, 0x057F, 0x067F, 0x056C, 0x0000, 0x0300, 0x0300, 0x0300, 0x0300, 0x0000
},
{ //1
0x045B, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x079F, 0x000C, 0x000C, 0x000C, 0x000C, 0x000C, 0x079F, 0x0796, 0x0796, 0x0796,
0x0796, 0x079F, 0x079F, 0x0000, 0x0000, 0x0000, 0x0000, 0x079F, 0x0447, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300 },
{ //2
0x0316, 0x0000, 0x0000, 0x01B2, 0x0316, 0x0007, 0x079F, 0x0000, 0x0316, 0x056C, 0x0672, 0x067F, 0x079F, 0x045B, 0x0447, 0x0000,
0x0000, 0x079F, 0x079F, 0x0672, 0x0000, 0x0000, 0x057F, 0x0672, 0x056C, 0x0000, 0x0000, 0x0000, 0x0300, 0x0000 },
{ //3
0x000C, 0x045B, 0x0316, 0x0007, 0x0316, 0x000C, 0x079F, 0x0447, 0x056C, 0x067F, 0x056C, 0x079F, 0x079F, 0x0000, 0x0000, 0x079B,
0x0000, 0x079F, 0x079F, 0x0000, 0x0000, 0x01A0, 0x0000, 0x0796, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
{ //4
0x045B, 0x0007, 0x045B, 0x0007, 0x0007, 0x0007, 0x079F, 0x067B, 0x079F, 0x067B, 0x067B, 0x067F, 0x079B, 0x01A0, 0x079F, 0x0312,
0x057B, 0x0672, 0x01A0, 0x0000, 0x079F, 0x079B, 0x0447, 0x0000, 0x0000, 0x0000, 0x0447, 0x01A0, 0x0000, 0x0000},
{ //5
0x000C, 0x045B, 0x045B, 0x000C, 0x0000, 0x01B2, 0x079F, 0x0447, 0x0447, 0x079F, 0x0000, 0x079F, 0x079F, 0x0000, 0x0000, 0x079F,
0x0007, 0x079F, 0x079F, 0x0000, 0x0000, 0x0796, 0x0676, 0x0796, 0x0300, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 },
{ //6
0x000C, 0x045B, 0x045B, 0x000C, 0x0000, 0x045B, 0x079F, 0x0447, 0x0447, 0x079F, 0x0000, 0x079F, 0x079F, 0x000C, 0x01B2, 0x0676,
0x045B, 0x0672, 0x0447, 0x0796, 0x079B, 0x067B, 0x0672, 0x0000, 0x0000, 0x0000, 0x01A0, 0x01A0, 0x0000, 0x0000 },
{ //7
0x0000, 0x0000, 0x0000, 0x0007, 0x01B2, 0x01B2, 0x01B2, 0x0316, 0x057F, 0x0676, 0x056C, 0x079F, 0x0672, 0x056C, 0x0300, 0x0000,
0x0000, 0x079F, 0x0000, 0x0000, 0x0000, 0x0000, 0x057F, 0x079F, 0x0000, 0x0000, 0x0000, 0x0000, 0x0300, 0x0300 },
{ //8
0x0007, 0x0316, 0x0316, 0x0000, 0x0316, 0x000C, 0x067F, 0x056C, 0x056C, 0x057F, 0x0447, 0x079F, 0x079F, 0x0000, 0x0007, 0x079F,
0x0000, 0x079F, 0x0672, 0x057F, 0x067F, 0x056C, 0x057F, 0x0672, 0x0000, 0x0300, 0x0300, 0x0000, 0x0300, 0x0000 },
{ //9
0x0000, 0x01B2, 0x045B, 0x045B, 0x0316, 0x0007, 0x0316, 0x079B, 0x067B, 0x056C, 0x056C, 0x067F, 0x079F, 0x01A0, 0x079F, 0x0007,
0x0007, 0x079F, 0x079B, 0x0000, 0x056C, 0x067B, 0x067B, 0x056C, 0x01A0, 0x0000, 0x0000, 0x01A0, 0x01A0, 0x0000 }
};
const unsigned short eblank[] = {
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000,
};
// digit 1 108-112
// digit 2 113-117
// digit 3 118-122
// digit 4 123-127
// **********SmallFont_OutVertical*******************
// draw score on screen vertically as 4-digit number
// font is 5 wide-6 high Courier bold yellow on black
// Input: n is between 0 and 9999
// x horizontal position of the bottom left corner of the image, columns from the left edge
// y vertical position of the bottom left corner of the image, rows from the top edge
// Output: none
void SmallFont_OutVertical(uint32_t n, int16_t x, int16_t y){
uint32_t d1,d2,d3,d4; int notZero=0;
if(n>9999)n=9999;
d1 = n/1000; n = n%1000;
d2 = n/100; n = n%100;
d3 = n/10;
d4 = n%10;
if(d1){ // 1000 to 9999
ST7735_DrawBitmap(x,y,&SmallFontVertical[d1][0],5,6);
notZero = 1;
} else {
ST7735_DrawBitmap(x,y,dblank,5,6);
}
if(d2||notZero){
ST7735_DrawBitmap(x+5,y,&SmallFontVertical[d2][0],5,6);
notZero = 1;
} else {
ST7735_DrawBitmap(x+5,y,dblank,5,6);
}
if(d3||notZero){
ST7735_DrawBitmap(x+10,y,&SmallFontVertical[d3][0],5,6);
notZero = 1;
} else {
ST7735_DrawBitmap(x+10,y,dblank,5,6);
}
ST7735_DrawBitmap(x+15,y,&SmallFontVertical[d4][0],5,6);
}
// **********SmallFont_OutHorizontal*******************
// draw score on screen horizontally as 4-digit number
// font is 6 wide-5 high Courier bold yellow on black
// Input: n is between 0 and 9999
// x horizontal position of the bottom left corner of the image, columns from the left edge
// y vertical position of the bottom left corner of the image, rows from the top edge
// Output: none
void SmallFont_OutHorizontal(uint32_t n, int16_t x, int16_t y){
uint32_t d1,d2,d3,d4; int notZero=0;
if(n>9999)n=9999;
d1 = n/1000; n = n%1000;
d2 = n/100; n = n%100;
d3 = n/10;
d4 = n%10;
if(d1){ // 1000 to 9999
ST7735_DrawBitmap(x,y,&SmallFontHorizontal[d1][0],6,5);
notZero = 1;
} else {
ST7735_DrawBitmap(x,y,eblank,6,5);
}
if(d2||notZero){
ST7735_DrawBitmap(x,y+5,&SmallFontHorizontal[d2][0],6,5);
notZero = 1;
} else {
ST7735_DrawBitmap(x,y+5,eblank,6,5);
}
if(d3||notZero){
ST7735_DrawBitmap(x,y+10,&SmallFontHorizontal[d3][0],6,5);
notZero = 1;
} else {
ST7735_DrawBitmap(x,y+10,eblank,6,5);
}
ST7735_DrawBitmap(x,y+15,&SmallFontHorizontal[d4][0],6,5);
}