26 #include "simplegfx.h"
29 const char gfxFontSmall[] = {
30 0x00, 0x00, 0x5F, 0x00, 0x00,
31 0x00, 0x07, 0x00, 0x07, 0x00,
32 0x14, 0x7F, 0x14, 0x7F, 0x14,
33 0x24, 0x2A, 0x7F, 0x2A, 0x12,
34 0x23, 0x13, 0x08, 0x64, 0x62,
35 0x36, 0x49, 0x56, 0x20, 0x50,
36 0x00, 0x08, 0x07, 0x03, 0x00,
37 0x00, 0x1C, 0x22, 0x41, 0x00,
38 0x00, 0x41, 0x22, 0x1C, 0x00,
39 0x2A, 0x1C, 0x7F, 0x1C, 0x2A,
40 0x08, 0x08, 0x3E, 0x08, 0x08,
41 0x00, 0x80, 0x70, 0x30, 0x00,
42 0x08, 0x08, 0x08, 0x08, 0x08,
43 0x00, 0x00, 0x60, 0x60, 0x00,
44 0x20, 0x10, 0x08, 0x04, 0x02,
45 0x3E, 0x51, 0x49, 0x45, 0x3E,
46 0x00, 0x42, 0x7F, 0x40, 0x00,
47 0x72, 0x49, 0x49, 0x49, 0x46,
48 0x21, 0x41, 0x49, 0x4D, 0x33,
49 0x18, 0x14, 0x12, 0x7F, 0x10,
50 0x27, 0x45, 0x45, 0x45, 0x39,
51 0x3C, 0x4A, 0x49, 0x49, 0x31,
52 0x41, 0x21, 0x11, 0x09, 0x07,
53 0x36, 0x49, 0x49, 0x49, 0x36,
54 0x46, 0x49, 0x49, 0x29, 0x1E,
55 0x00, 0x00, 0x14, 0x00, 0x00,
56 0x00, 0x40, 0x34, 0x00, 0x00,
57 0x00, 0x08, 0x14, 0x22, 0x41,
58 0x14, 0x14, 0x14, 0x14, 0x14,
59 0x00, 0x41, 0x22, 0x14, 0x08,
60 0x02, 0x01, 0x59, 0x09, 0x06,
61 0x3E, 0x41, 0x5D, 0x59, 0x4E,
62 0x7C, 0x12, 0x11, 0x12, 0x7C,
63 0x7F, 0x49, 0x49, 0x49, 0x36,
64 0x3E, 0x41, 0x41, 0x41, 0x22,
65 0x7F, 0x41, 0x41, 0x41, 0x3E,
66 0x7F, 0x49, 0x49, 0x49, 0x41,
67 0x7F, 0x09, 0x09, 0x09, 0x01,
68 0x3E, 0x41, 0x41, 0x51, 0x73,
69 0x7F, 0x08, 0x08, 0x08, 0x7F,
70 0x00, 0x41, 0x7F, 0x41, 0x00,
71 0x20, 0x40, 0x41, 0x3F, 0x01,
72 0x7F, 0x08, 0x14, 0x22, 0x41,
73 0x7F, 0x40, 0x40, 0x40, 0x40,
74 0x7F, 0x02, 0x1C, 0x02, 0x7F,
75 0x7F, 0x04, 0x08, 0x10, 0x7F,
76 0x3E, 0x41, 0x41, 0x41, 0x3E,
77 0x7F, 0x09, 0x09, 0x09, 0x06,
78 0x3E, 0x41, 0x51, 0x21, 0x5E,
79 0x7F, 0x09, 0x19, 0x29, 0x46,
80 0x26, 0x49, 0x49, 0x49, 0x32,
81 0x03, 0x01, 0x7F, 0x01, 0x03,
82 0x3F, 0x40, 0x40, 0x40, 0x3F,
83 0x1F, 0x20, 0x40, 0x20, 0x1F,
84 0x3F, 0x40, 0x38, 0x40, 0x3F,
85 0x63, 0x14, 0x08, 0x14, 0x63,
86 0x03, 0x04, 0x78, 0x04, 0x03,
87 0x61, 0x59, 0x49, 0x4D, 0x43,
88 0x00, 0x7F, 0x41, 0x41, 0x41,
89 0x02, 0x04, 0x08, 0x10, 0x20,
90 0x00, 0x41, 0x41, 0x41, 0x7F,
91 0x04, 0x02, 0x01, 0x02, 0x04,
92 0x40, 0x40, 0x40, 0x40, 0x40,
93 0x00, 0x03, 0x07, 0x08, 0x00,
94 0x20, 0x54, 0x54, 0x78, 0x40,
95 0x7F, 0x28, 0x44, 0x44, 0x38,
96 0x38, 0x44, 0x44, 0x44, 0x28,
97 0x38, 0x44, 0x44, 0x28, 0x7F,
98 0x38, 0x54, 0x54, 0x54, 0x18,
99 0x00, 0x08, 0x7E, 0x09, 0x02,
100 0x18, 0xA4, 0xA4, 0x9C, 0x78,
101 0x7F, 0x08, 0x04, 0x04, 0x78,
102 0x00, 0x44, 0x7D, 0x40, 0x00,
103 0x20, 0x40, 0x40, 0x3D, 0x00,
104 0x7F, 0x10, 0x28, 0x44, 0x00,
105 0x00, 0x41, 0x7F, 0x40, 0x00,
106 0x7C, 0x04, 0x78, 0x04, 0x78,
107 0x7C, 0x08, 0x04, 0x04, 0x78,
108 0x38, 0x44, 0x44, 0x44, 0x38,
109 0xFC, 0x18, 0x24, 0x24, 0x18,
110 0x18, 0x24, 0x24, 0x18, 0xFC,
111 0x7C, 0x08, 0x04, 0x04, 0x08,
112 0x48, 0x54, 0x54, 0x54, 0x24,
113 0x04, 0x04, 0x3F, 0x44, 0x24,
114 0x3C, 0x40, 0x40, 0x20, 0x7C,
115 0x1C, 0x20, 0x40, 0x20, 0x1C,
116 0x3C, 0x40, 0x30, 0x40, 0x3C,
117 0x44, 0x28, 0x10, 0x28, 0x44,
118 0x4C, 0x90, 0x90, 0x90, 0x7C,
119 0x44, 0x64, 0x54, 0x4C, 0x44,
120 0x00, 0x08, 0x36, 0x41, 0x00,
121 0x00, 0x00, 0x77, 0x00, 0x00,
122 0x00, 0x41, 0x36, 0x08, 0x00,
123 0x02, 0x01, 0x02, 0x04, 0x02,
127 void drawCharSmall(
screen_t *dev,
unsigned char c)
131 for (
char i = 0; i < 6; i++ )
135 if (i < 5) li = gfxFontSmall[c * 5 + i];
138 for (
char j = 0; j < 8; j++, li >>= 1)
149 void drawCharMedium(
screen_t *dev,
unsigned char c)
153 char gfxFontMedium[22];
154 i2c_in(dev->
eepromBus, 0b1010000, (dev->
font[1] + ((
unsigned int) c) * 22), 2, gfxFontMedium, 22);
156 for(
int xy = 0; xy < 22; xy++)
if(gfxFontMedium[xy] == 0xEA) gfxFontMedium[xy] = 0x19;
158 for (
char i = 0; i < 22; i += 2 )
162 if (i < 22) li = (gfxFontMedium[i] << 8) | gfxFontMedium[i+1];
165 for (
char j = 0; j < 16; j++, li >>= 1)
177 void drawCharLarge(
screen_t *dev,
unsigned char c)
184 char font_lg_index[95];
185 char font_lg_zeroMap[7];
186 char gfxFontLarge[51];
187 char current_character[51];
189 memset(current_character, 0, 51);
192 i2c_in(dev->
eepromBus, 0b1010000, ((dev->
font[3] & 0xFFFF) + 7*(c-33)), 2, font_lg_zeroMap, 7);
194 for(
int i = 1; i < (c-32); i++)
196 if(font_lg_index[i] == 0xEA) font_lg_index[i] = 0x19;
197 offset += font_lg_index[i];
200 i2c_in(dev->
eepromBus, 0b1010000, ((dev->
font[4] & 0xFFFF) + offset), 2, gfxFontLarge, 51);
204 for(
int k = 1; k < 8; k++)
206 li = font_lg_zeroMap[k - 1];
207 if(li == 0xEA) li = 0x19;
208 for(
int j = 0; j < 8; j++)
211 char t = li & (1 << (7-j));
212 if((t > 0) && ctr < 52)
214 current_character[ctr] = gfxFontLarge[offset];
215 if(current_character[ctr] == 0xEA) current_character[ctr] = 0x19;
217 }
else if(ctr < 52) {
218 current_character[ctr] = 0x00;
223 for (
char i = 1; i < 52; i += 3 )
226 if (i < 51) lj = (current_character[i] << 16) | (current_character[i + 1] << 8) | current_character[i + 2];
229 for (
char j = 0; j < 23; j++, lj >>= 1)