-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathchinese.hpp
More file actions
170 lines (158 loc) · 8.79 KB
/
chinese.hpp
File metadata and controls
170 lines (158 loc) · 8.79 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
161
162
163
164
165
166
167
168
169
170
//
// Created by Ferfoui on 13/04/2025.
//
#ifndef EMBEDDED_DISPLAY_CHINESE_HPP
#define EMBEDDED_DISPLAY_CHINESE_HPP
#include <Arduino.h>
#include <Screen.hpp>
#define GAP_BETWEEN_CHARS 2
#define CHAR_HEIGHT 16
#define CHAR_WIDTH 16
// Chinese character bitmaps
static const uint8_t PROGMEM char_zhong1_bmp[] =
{
0x01, 0x00, 0x01, 0x00, 0x21, 0x08, 0x3F, 0xFC, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x21, 0x08, 0x3F,
0xF8, 0x21, 0x08, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00
};
static const uint8_t PROGMEM char_wen2_bmp[] =
{
0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFF, 0xFE, 0x08, 0x20, 0x08, 0x20, 0x08, 0x20, 0x04, 0x40, 0x04, 0x40, 0x02,
0x80, 0x01, 0x00, 0x02, 0x80, 0x04, 0x60, 0x18, 0x1E, 0xE0, 0x08, 0x00, 0x00
};
const uint8_t PROGMEM char_xi4_bmp[] = {
0x00, 0x7C, 0x3F, 0x80, 0x02, 0x20, 0x04, 0x20, 0x08, 0x40, 0x1F, 0x80, 0x03, 0x20, 0x0C, 0x10, 0x3F, 0xF8, 0x10,
0x8C, 0x04, 0xA0, 0x08, 0x90, 0x10, 0x88, 0x20, 0x84, 0x42, 0x84, 0x01, 0x00
};
const uint8_t PROGMEM char_tong3_bmp[] = {
0x10, 0x40, 0x10, 0x20, 0x23, 0xFE, 0x20, 0x40, 0x44, 0x40, 0xF8, 0x88, 0x09, 0x04, 0x13, 0xFE, 0x20, 0x94, 0x7C,
0x90, 0x00, 0x90, 0x00, 0x90, 0x1D, 0x12, 0xE1, 0x12, 0x02, 0x0E, 0x04, 0x00
};
const uint8_t PROGMEM char_yi3_bmp[] = {
0x00, 0x00, 0x3F, 0xF0, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x20, 0x10, 0x3F, 0xF0, 0x20, 0x00, 0x20, 0x00, 0x20,
0x00, 0x20, 0x04, 0x20, 0x04, 0x20, 0x06, 0x3F, 0xFC, 0x00, 0x00, 0x00, 0x00
};
const uint8_t PROGMEM char_chu1_bmp[] = {
0x10, 0x00, 0x08, 0x00, 0x08, 0x04, 0x7E, 0xFE, 0x04, 0x24, 0x08, 0x24, 0x12, 0x24, 0x34, 0x24, 0x58, 0x24, 0x94,
0x24, 0x12, 0x44, 0x10, 0x44, 0x10, 0x84, 0x11, 0x14, 0x12, 0x08, 0x00, 0x00
};
const uint8_t PROGMEM char_shi3_bmp[] = {
0x10, 0x20, 0x18, 0x30, 0x10, 0x20, 0x10, 0x48, 0xFC, 0x84, 0x25, 0xFE, 0x24, 0x84, 0x44, 0x00, 0x44, 0xFC, 0x28,
0x84, 0x18, 0x84, 0x14, 0x84, 0x22, 0x84, 0x42, 0xFC, 0x80, 0x84, 0x00, 0x00
};
const uint8_t PROGMEM char_hua4_bmp[] = {
0x08, 0x80, 0x0C, 0x80, 0x08, 0x88, 0x10, 0x8C, 0x10, 0x98, 0x30, 0xB0, 0x50, 0xE0, 0x90, 0xC0, 0x11, 0x80, 0x12,
0x80, 0x14, 0x80, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x7C, 0x00, 0x00
};
const uint8_t PROGMEM char_she4_bmp[] = {
0x40, 0x00, 0x21, 0xF0, 0x31, 0x10, 0x21, 0x10, 0x01, 0x10, 0x01, 0x10, 0xE2, 0x0E, 0x25, 0xF8, 0x21, 0x08, 0x21,
0x08, 0x20, 0x90, 0x20, 0x90, 0x28, 0x60, 0x30, 0x90, 0x23, 0x0E, 0x0C, 0x04
};
const uint8_t PROGMEM char_bei4_bmp[] = {
0x08, 0x00, 0x0F, 0xF0, 0x08, 0x20, 0x14, 0x20, 0x22, 0x40, 0x41, 0x80, 0x02, 0x40, 0x0C, 0x30, 0x30, 0x1E, 0xDF,
0xF4, 0x11, 0x10, 0x1F, 0xF0, 0x11, 0x10, 0x11, 0x10, 0x1F, 0xF0, 0x10, 0x10
};
const uint8_t PROGMEM char_lian2_bmp[] = {
0x40, 0x80, 0x20, 0x80, 0x37, 0xFC, 0x21, 0x00, 0x01, 0x40, 0x02, 0x40, 0xF7, 0xF8, 0x12, 0x40, 0x10, 0x40, 0x1F,
0xFE, 0x10, 0x40, 0x10, 0x40, 0x10, 0x40, 0x28, 0x00, 0x47, 0xFE, 0x00, 0x00
};
const uint8_t PROGMEM char_jie1_bmp[] = {
0x10, 0x40, 0x10, 0x20, 0x13, 0xFC, 0xFD, 0x08, 0x10, 0x90, 0x17, 0xFE, 0x14, 0x00, 0x18, 0x80, 0x30, 0x80, 0xDF,
0xFE, 0x11, 0x10, 0x13, 0x10, 0x10, 0xE0, 0x10, 0x50, 0x51, 0x8C, 0x26, 0x04
};
const uint8_t PROGMEM char_jian4_bmp[] = {
0x00, 0x40, 0x78, 0x40, 0x0B, 0xF8, 0x10, 0x48, 0x17, 0xFE, 0x20, 0x48, 0x7B, 0xF8, 0x08, 0x40, 0x4B, 0xFC, 0x48,
0x40, 0x28, 0x40, 0x17, 0xFC, 0x28, 0x40, 0x46, 0x40, 0x81, 0xFE, 0x00, 0x00
};
const uint8_t PROGMEM char_li4_bmp[] = {
0x02, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7F, 0xFC, 0x00, 0x20, 0x00, 0x30, 0x10, 0x20, 0x08, 0x40, 0x0C,
0x40, 0x04, 0x40, 0x04, 0x80, 0x00, 0x80, 0x01, 0x04, 0xFF, 0xFE, 0x00, 0x00
};
const uint8_t PROGMEM char_lan2_bmp[] = {
0x08, 0x40, 0x08, 0x40, 0xFF, 0xFE, 0x08, 0x40, 0x04, 0x80, 0x24, 0xFC, 0x24, 0xA0, 0x25, 0x10, 0x26, 0x10, 0x04,
0x00, 0x1F, 0xF0, 0x12, 0x90, 0x12, 0x90, 0x12, 0x90, 0xFF, 0xFE, 0x00, 0x00
};
const uint8_t PROGMEM char_ya2_bmp[] = {
0x00, 0x00, 0x3F, 0xFC, 0x00, 0x40, 0x08, 0x40, 0x08, 0x40, 0x10, 0x40, 0x3F, 0xFE, 0x10, 0xC0, 0x01, 0x40, 0x02,
0x40, 0x04, 0x40, 0x08, 0x40, 0x10, 0x40, 0x20, 0x40, 0x41, 0x40, 0x00, 0x80
};
const uint8_t PROGMEM char_duan4_bmp[] = {
0x04, 0x00, 0x44, 0x0E, 0x65, 0x70, 0x55, 0x40, 0x56, 0x40, 0x44, 0x40, 0x7F, 0x7E, 0x4C, 0x48, 0x56, 0x48, 0x55,
0x48, 0x64, 0x48, 0x44, 0x88, 0x44, 0x88, 0x7F, 0x08, 0x02, 0x08, 0x00, 0x08
};
const uint8_t PROGMEM char_kai1_bmp[] = {
0x00, 0x00, 0x7F, 0xFE, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0x04, 0x20, 0xFF, 0xFE, 0x04, 0x20, 0x04, 0x20, 0x04,
0x20, 0x08, 0x20, 0x08, 0x20, 0x10, 0x20, 0x20, 0x20, 0x40, 0x20, 0x00, 0x00
};
const uint8_t PROGMEM char_xiao1_bmp[] = {
0x20, 0x40, 0x10, 0x40, 0x12, 0x44, 0x81, 0x48, 0x49, 0x50, 0x4B, 0xFC, 0x12, 0x04, 0x12, 0x04, 0x23, 0xFC, 0x22,
0x04, 0xE2, 0x04, 0x23, 0xFC, 0x22, 0x04, 0x22, 0x04, 0x22, 0x14, 0x22, 0x08
};
const uint8_t PROGMEM char_xi1_bmp[] = {
0x01, 0x00, 0x02, 0x00, 0x1F, 0xF0, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10, 0x1F, 0xF0, 0x00,
0x00, 0x09, 0x00, 0x28, 0x84, 0x28, 0x92, 0x68, 0x12, 0x07, 0xF0, 0x00, 0x00
};
const uint8_t PROGMEM char_ni3_bmp[] = {
0x09, 0x00, 0x09, 0x80, 0x11, 0x04, 0x13, 0xFE, 0x22, 0x04, 0x34, 0x48, 0x68, 0x40, 0xA2, 0x50, 0x23, 0x48, 0x22,
0x48, 0x24, 0x44, 0x24, 0x46, 0x28, 0x44, 0x21, 0x40, 0x20, 0x80, 0x00, 0x00
};
const uint8_t PROGMEM char_hao3_bmp[] = {
0x10, 0x00, 0x11, 0xFC, 0x10, 0x08, 0x10, 0x10, 0xFC, 0x20, 0x24, 0x20, 0x24, 0x20, 0x27, 0xFE, 0x44, 0x20, 0x64,
0x20, 0x18, 0x20, 0x08, 0x20, 0x14, 0x20, 0x26, 0x20, 0x44, 0xA0, 0x80, 0x40
};
const uint8_t PROGMEM char_wo3_bmp[] = {
0x06, 0x40, 0x38, 0x50, 0x08, 0x48, 0x08, 0x48, 0x08, 0x40, 0xFF, 0xFE, 0x08, 0x40, 0x08, 0x48, 0x0E, 0x28, 0x38,
0x30, 0xC8, 0x20, 0x08, 0x50, 0x09, 0x92, 0x08, 0x0A, 0x28, 0x06, 0x10, 0x02
};
const uint8_t PROGMEM char_shi4_bmp[] = {
0x00, 0x00, 0x0F, 0xF0, 0x08, 0x10, 0x0F, 0xF0, 0x08, 0x10, 0x0F, 0xF0, 0x00, 0x00, 0xFF, 0xFE, 0x01, 0x00, 0x09,
0x00, 0x09, 0xF8, 0x09, 0x00, 0x15, 0x00, 0x23, 0x00, 0x40, 0xFE, 0x00, 0x00
};
const uint8_t PROGMEM char_dian4_bmp[] = {
0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x3F, 0xF8, 0x21, 0x08, 0x21, 0x08, 0x3F, 0xF8, 0x21, 0x08, 0x21, 0x08, 0x21,
0x08, 0x3F, 0xF8, 0x21, 0x08, 0x01, 0x02, 0x01, 0x02, 0x00, 0xFE, 0x00, 0x00
};
const uint8_t PROGMEM char_zi3_bmp[] = {
0x00, 0x00, 0x3F, 0xF0, 0x00, 0x20, 0x00, 0x40, 0x00, 0x80, 0x01, 0x00, 0x01, 0x00, 0x01, 0x04, 0xFF, 0xFE, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00
};
const uint8_t PROGMEM char_ping2_bmp[] = {
0x3F, 0xFC, 0x20, 0x04, 0x20, 0x04, 0x3F, 0xFC, 0x24, 0x10, 0x22, 0x20, 0x2F, 0xFC, 0x22, 0x20, 0x22, 0x20, 0x3F,
0xFE, 0x22, 0x20, 0x22, 0x20, 0x44, 0x20, 0x44, 0x20, 0x88, 0x20, 0x10, 0x20
};
const uint8_t PROGMEM char_mu4_bmp[] = {
0x04, 0x40, 0xFF, 0xFE, 0x04, 0x40, 0x1F, 0xF0, 0x10, 0x10, 0x1F, 0xF0, 0x10, 0x10, 0x1F, 0xF0, 0x02, 0x00, 0xFF,
0xFE, 0x09, 0x10, 0x1F, 0xE8, 0x29, 0x26, 0xC9, 0x24, 0x09, 0x60, 0x01, 0x00
};
const uint8_t PROGMEM char_ao4_bmp[] = {
0x02, 0x00, 0x3F, 0xF8, 0x21, 0x08, 0x29, 0x28, 0x25, 0x48, 0x3F, 0xF8, 0x23, 0x88, 0x25, 0x68, 0x29, 0x28, 0x01,
0x00, 0x7F, 0xFE, 0x02, 0x80, 0x04, 0x40, 0x08, 0x30, 0x30, 0x0E, 0xC0, 0x04
};
const uint8_t PROGMEM char_jian4_2_bmp[] = {
0x08, 0x04, 0x08, 0x04, 0x14, 0x24, 0x12, 0x24, 0x21, 0x24, 0x7F, 0xA4, 0x80, 0x24, 0x11, 0x24, 0x49, 0xA4, 0x25,
0x24, 0x15, 0x24, 0x12, 0x24, 0x07, 0x84, 0x78, 0x04, 0x00, 0x14, 0x00, 0x08
};
const uint8_t PROGMEM char_zhi4_bmp[] = {
0x20, 0x40, 0x10, 0x40, 0x10, 0x80, 0x00, 0x90, 0x89, 0x08, 0x4A, 0x3C, 0x57, 0xC4, 0x10, 0x00, 0x10, 0x00, 0x23,
0xF8, 0xE2, 0x08, 0x22, 0x08, 0x22, 0x08, 0x22, 0x08, 0x23, 0xF8, 0x22, 0x08
};
const uint8_t PROGMEM char_ji4_bmp[] = {
0x40, 0x20, 0x20, 0x20, 0x30, 0x20, 0x20, 0x20, 0x00, 0x20, 0xF3, 0xFE, 0x10, 0x20, 0x10, 0x20, 0x10, 0x20, 0x10,
0x20, 0x10, 0x20, 0x12, 0x20, 0x14, 0x20, 0x18, 0x20, 0x10, 0x20, 0x00, 0x20
};
const uint8_t PROGMEM char_le5_bmp[] = {
0x00, 0x00, 0x7F, 0xFC, 0x00, 0x18, 0x00, 0x60, 0x01, 0x80, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01,
0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x05, 0x00, 0x02, 0x00
};
const uint8_t PROGMEM char_placeholder_bmp[] = {
0xFF, 0xFF, 0xFF, 0xFF, 0xFC, 0x3F, 0xF8, 0x1F, 0xF1, 0x8F, 0xE3, 0xC7, 0xC7, 0xE3, 0x8F, 0xF1, 0x9F, 0xF9, 0xC7,
0xE3, 0xE3, 0xC7, 0xF1, 0x8F, 0xF8, 0x1F, 0xFC, 0x3F, 0xFF, 0xFF, 0xFF, 0xFF
};
typedef struct
{
char utf8[4]; // UTF-8 encoding (e.g., "中" = {0xE4, 0xB8, 0xAD, 0x00}) (4 bytes for null terminator)
const uint8_t* bitmap;
} ChineseChar;
extern ChineseChar chineseDictionary[];
void drawChineseChar(short x, short y, const char* character, Screen* screen);
void drawChineseString(short x, short y, const char* characters, Screen* screen);
#endif //EMBEDDED_DISPLAY_CHINESE_HPP