Subversion Repositories group.electronics

Rev

Rev 126 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
126 pfowler 1
/*
2
 * gfx.h
3
 *
4
 *  Created on: 28/11/2013
5
 *      Author: pfowler
6
 */
7
 
8
#ifndef GFX_H_
9
#define GFX_H_
10
 
11
#include <avr/pgmspace.h>
12
 
13
typedef void (*pixelptr)(uint8_t* buffer, uint16_t x, uint16_t y, uint8_t color);
14
typedef void (*flipptr)();
15
 
16
struct {
17
	uint8_t width;
18
	uint8_t height;
19
	uint8_t rotation;
20
	pixelptr drawPixel;
21
	flipptr flip;
22
	uint8_t* buffer;
23
} gfx;
24
 
25
struct {
26
	uint8_t cursor_x;
27
	uint8_t cursor_y;
28
	uint8_t textsize;
29
	uint8_t textcolor;
30
	uint8_t textbgcolor;
31
	uint8_t wrap;
32
} gfx_font;
33
 
34
void gfx_drawPixel(uint16_t x, uint16_t y, uint8_t color);
35
void gfx_drawLine(uint8_t x0, uint8_t y0, uint8_t x1, uint8_t y1, uint8_t color);
36
 
37
void gfx_drawFastVLine(uint8_t x, uint8_t y, uint8_t h, uint8_t color);
38
void gfx_drawFastHLine(uint8_t x, uint8_t y, uint8_t w, uint8_t color);
39
void gfx_drawRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t color);
40
void gfx_fillRect(uint8_t x, uint8_t y, uint8_t w, uint8_t h, uint8_t color);
41
 
42
void gfx_init(uint8_t* buffer, uint8_t width, uint8_t height);
43
void gfx_clear(void);
44
 
45
void gfx_flip(void);
46
 
47
void gfx_setDrawFunc(pixelptr ptr);
48
void gfx_setFlipFunc(flipptr ptr);
49
 
50
void gfx_drawChar(uint8_t x, uint8_t y, unsigned char c, uint8_t color, uint8_t bg, uint8_t size);
51
 
52
void gfx_write(uint8_t c);
53
void gfx_writeb(uint8_t *buffer, size_t size);
54
void gfx_writes(char* s);
55
void gfx_printNumber(unsigned long n, uint8_t base);
56
void gfx_printFloat(double number, uint8_t digits);
57
 
58
void gfx_setCursor(uint8_t x, uint8_t y);
59
void gfx_setTextSize(uint8_t s);
60
void gfx_setTextColor(uint8_t c);
61
void gfx_setTextBgColor(uint8_t bg);
62
void gfx_setTextWrap(uint8_t w);
63
 
64
static const unsigned char gfx_font_data[] PROGMEM = {
65
        0x00, 0x00, 0x00, 0x00, 0x00,
66
        0x3E, 0x5B, 0x4F, 0x5B, 0x3E,
67
        0x3E, 0x6B, 0x4F, 0x6B, 0x3E,
68
        0x1C, 0x3E, 0x7C, 0x3E, 0x1C,
69
        0x18, 0x3C, 0x7E, 0x3C, 0x18,
70
        0x1C, 0x57, 0x7D, 0x57, 0x1C,
71
        0x1C, 0x5E, 0x7F, 0x5E, 0x1C,
72
        0x00, 0x18, 0x3C, 0x18, 0x00,
73
        0xFF, 0xE7, 0xC3, 0xE7, 0xFF,
74
        0x00, 0x18, 0x24, 0x18, 0x00,
75
        0xFF, 0xE7, 0xDB, 0xE7, 0xFF,
76
        0x30, 0x48, 0x3A, 0x06, 0x0E,
77
        0x26, 0x29, 0x79, 0x29, 0x26,
78
        0x40, 0x7F, 0x05, 0x05, 0x07,
79
        0x40, 0x7F, 0x05, 0x25, 0x3F,
80
        0x5A, 0x3C, 0xE7, 0x3C, 0x5A,
81
        0x7F, 0x3E, 0x1C, 0x1C, 0x08,
82
        0x08, 0x1C, 0x1C, 0x3E, 0x7F,
83
        0x14, 0x22, 0x7F, 0x22, 0x14,
84
        0x5F, 0x5F, 0x00, 0x5F, 0x5F,
85
        0x06, 0x09, 0x7F, 0x01, 0x7F,
86
        0x00, 0x66, 0x89, 0x95, 0x6A,
87
        0x60, 0x60, 0x60, 0x60, 0x60,
88
        0x94, 0xA2, 0xFF, 0xA2, 0x94,
89
        0x08, 0x04, 0x7E, 0x04, 0x08,
90
        0x10, 0x20, 0x7E, 0x20, 0x10,
91
        0x08, 0x08, 0x2A, 0x1C, 0x08,
92
        0x08, 0x1C, 0x2A, 0x08, 0x08,
93
        0x1E, 0x10, 0x10, 0x10, 0x10,
94
        0x0C, 0x1E, 0x0C, 0x1E, 0x0C,
95
        0x30, 0x38, 0x3E, 0x38, 0x30,
96
        0x06, 0x0E, 0x3E, 0x0E, 0x06,
97
        0x00, 0x00, 0x00, 0x00, 0x00,
98
        0x00, 0x00, 0x5F, 0x00, 0x00,
99
        0x00, 0x07, 0x00, 0x07, 0x00,
100
        0x14, 0x7F, 0x14, 0x7F, 0x14,
101
        0x24, 0x2A, 0x7F, 0x2A, 0x12,
102
        0x23, 0x13, 0x08, 0x64, 0x62,
103
        0x36, 0x49, 0x56, 0x20, 0x50,
104
        0x00, 0x08, 0x07, 0x03, 0x00,
105
        0x00, 0x1C, 0x22, 0x41, 0x00,
106
        0x00, 0x41, 0x22, 0x1C, 0x00,
107
        0x2A, 0x1C, 0x7F, 0x1C, 0x2A,
108
        0x08, 0x08, 0x3E, 0x08, 0x08,
109
        0x00, 0x80, 0x70, 0x30, 0x00,
110
        0x08, 0x08, 0x08, 0x08, 0x08,
111
        0x00, 0x00, 0x60, 0x60, 0x00,
112
        0x20, 0x10, 0x08, 0x04, 0x02,
113
        0x3E, 0x51, 0x49, 0x45, 0x3E,
114
        0x00, 0x42, 0x7F, 0x40, 0x00,
115
        0x72, 0x49, 0x49, 0x49, 0x46,
116
        0x21, 0x41, 0x49, 0x4D, 0x33,
117
        0x18, 0x14, 0x12, 0x7F, 0x10,
118
        0x27, 0x45, 0x45, 0x45, 0x39,
119
        0x3C, 0x4A, 0x49, 0x49, 0x31,
120
        0x41, 0x21, 0x11, 0x09, 0x07,
121
        0x36, 0x49, 0x49, 0x49, 0x36,
122
        0x46, 0x49, 0x49, 0x29, 0x1E,
123
        0x00, 0x00, 0x14, 0x00, 0x00,
124
        0x00, 0x40, 0x34, 0x00, 0x00,
125
        0x00, 0x08, 0x14, 0x22, 0x41,
126
        0x14, 0x14, 0x14, 0x14, 0x14,
127
        0x00, 0x41, 0x22, 0x14, 0x08,
128
        0x02, 0x01, 0x59, 0x09, 0x06,
129
        0x3E, 0x41, 0x5D, 0x59, 0x4E,
130
        0x7C, 0x12, 0x11, 0x12, 0x7C,
131
        0x7F, 0x49, 0x49, 0x49, 0x36,
132
        0x3E, 0x41, 0x41, 0x41, 0x22,
133
        0x7F, 0x41, 0x41, 0x41, 0x3E,
134
        0x7F, 0x49, 0x49, 0x49, 0x41,
135
        0x7F, 0x09, 0x09, 0x09, 0x01,
136
        0x3E, 0x41, 0x41, 0x51, 0x73,
137
        0x7F, 0x08, 0x08, 0x08, 0x7F,
138
        0x00, 0x41, 0x7F, 0x41, 0x00,
139
        0x20, 0x40, 0x41, 0x3F, 0x01,
140
        0x7F, 0x08, 0x14, 0x22, 0x41,
141
        0x7F, 0x40, 0x40, 0x40, 0x40,
142
        0x7F, 0x02, 0x1C, 0x02, 0x7F,
143
        0x7F, 0x04, 0x08, 0x10, 0x7F,
144
        0x3E, 0x41, 0x41, 0x41, 0x3E,
145
        0x7F, 0x09, 0x09, 0x09, 0x06,
146
        0x3E, 0x41, 0x51, 0x21, 0x5E,
147
        0x7F, 0x09, 0x19, 0x29, 0x46,
148
        0x26, 0x49, 0x49, 0x49, 0x32,
149
        0x03, 0x01, 0x7F, 0x01, 0x03,
150
        0x3F, 0x40, 0x40, 0x40, 0x3F,
151
        0x1F, 0x20, 0x40, 0x20, 0x1F,
152
        0x3F, 0x40, 0x38, 0x40, 0x3F,
153
        0x63, 0x14, 0x08, 0x14, 0x63,
154
        0x03, 0x04, 0x78, 0x04, 0x03,
155
        0x61, 0x59, 0x49, 0x4D, 0x43,
156
        0x00, 0x7F, 0x41, 0x41, 0x41,
157
        0x02, 0x04, 0x08, 0x10, 0x20,
158
        0x00, 0x41, 0x41, 0x41, 0x7F,
159
        0x04, 0x02, 0x01, 0x02, 0x04,
160
        0x40, 0x40, 0x40, 0x40, 0x40,
161
        0x00, 0x03, 0x07, 0x08, 0x00,
162
        0x20, 0x54, 0x54, 0x78, 0x40,
163
        0x7F, 0x28, 0x44, 0x44, 0x38,
164
        0x38, 0x44, 0x44, 0x44, 0x28,
165
        0x38, 0x44, 0x44, 0x28, 0x7F,
166
        0x38, 0x54, 0x54, 0x54, 0x18,
167
        0x00, 0x08, 0x7E, 0x09, 0x02,
168
        0x18, 0xA4, 0xA4, 0x9C, 0x78,
169
        0x7F, 0x08, 0x04, 0x04, 0x78,
170
        0x00, 0x44, 0x7D, 0x40, 0x00,
171
        0x20, 0x40, 0x40, 0x3D, 0x00,
172
        0x7F, 0x10, 0x28, 0x44, 0x00,
173
        0x00, 0x41, 0x7F, 0x40, 0x00,
174
        0x7C, 0x04, 0x78, 0x04, 0x78,
175
        0x7C, 0x08, 0x04, 0x04, 0x78,
176
        0x38, 0x44, 0x44, 0x44, 0x38,
177
        0xFC, 0x18, 0x24, 0x24, 0x18,
178
        0x18, 0x24, 0x24, 0x18, 0xFC,
179
        0x7C, 0x08, 0x04, 0x04, 0x08,
180
        0x48, 0x54, 0x54, 0x54, 0x24,
181
        0x04, 0x04, 0x3F, 0x44, 0x24,
182
        0x3C, 0x40, 0x40, 0x20, 0x7C,
183
        0x1C, 0x20, 0x40, 0x20, 0x1C,
184
        0x3C, 0x40, 0x30, 0x40, 0x3C,
185
        0x44, 0x28, 0x10, 0x28, 0x44,
186
        0x4C, 0x90, 0x90, 0x90, 0x7C,
187
        0x44, 0x64, 0x54, 0x4C, 0x44,
188
        0x00, 0x08, 0x36, 0x41, 0x00,
189
        0x00, 0x00, 0x77, 0x00, 0x00,
190
        0x00, 0x41, 0x36, 0x08, 0x00,
191
        0x02, 0x01, 0x02, 0x04, 0x02,
192
        0x3C, 0x26, 0x23, 0x26, 0x3C,
193
        0x1E, 0xA1, 0xA1, 0x61, 0x12,
194
        0x3A, 0x40, 0x40, 0x20, 0x7A,
195
        0x38, 0x54, 0x54, 0x55, 0x59,
196
        0x21, 0x55, 0x55, 0x79, 0x41,
197
        0x21, 0x54, 0x54, 0x78, 0x41,
198
        0x21, 0x55, 0x54, 0x78, 0x40,
199
        0x20, 0x54, 0x55, 0x79, 0x40,
200
        0x0C, 0x1E, 0x52, 0x72, 0x12,
201
        0x39, 0x55, 0x55, 0x55, 0x59,
202
        0x39, 0x54, 0x54, 0x54, 0x59,
203
        0x39, 0x55, 0x54, 0x54, 0x58,
204
        0x00, 0x00, 0x45, 0x7C, 0x41,
205
        0x00, 0x02, 0x45, 0x7D, 0x42,
206
        0x00, 0x01, 0x45, 0x7C, 0x40,
207
        0xF0, 0x29, 0x24, 0x29, 0xF0,
208
        0xF0, 0x28, 0x25, 0x28, 0xF0,
209
        0x7C, 0x54, 0x55, 0x45, 0x00,
210
        0x20, 0x54, 0x54, 0x7C, 0x54,
211
        0x7C, 0x0A, 0x09, 0x7F, 0x49,
212
        0x32, 0x49, 0x49, 0x49, 0x32,
213
        0x32, 0x48, 0x48, 0x48, 0x32,
214
        0x32, 0x4A, 0x48, 0x48, 0x30,
215
        0x3A, 0x41, 0x41, 0x21, 0x7A,
216
        0x3A, 0x42, 0x40, 0x20, 0x78,
217
        0x00, 0x9D, 0xA0, 0xA0, 0x7D,
218
        0x39, 0x44, 0x44, 0x44, 0x39,
219
        0x3D, 0x40, 0x40, 0x40, 0x3D,
220
        0x3C, 0x24, 0xFF, 0x24, 0x24,
221
        0x48, 0x7E, 0x49, 0x43, 0x66,
222
        0x2B, 0x2F, 0xFC, 0x2F, 0x2B,
223
        0xFF, 0x09, 0x29, 0xF6, 0x20,
224
        0xC0, 0x88, 0x7E, 0x09, 0x03,
225
        0x20, 0x54, 0x54, 0x79, 0x41,
226
        0x00, 0x00, 0x44, 0x7D, 0x41,
227
        0x30, 0x48, 0x48, 0x4A, 0x32,
228
        0x38, 0x40, 0x40, 0x22, 0x7A,
229
        0x00, 0x7A, 0x0A, 0x0A, 0x72,
230
        0x7D, 0x0D, 0x19, 0x31, 0x7D,
231
        0x26, 0x29, 0x29, 0x2F, 0x28,
232
        0x26, 0x29, 0x29, 0x29, 0x26,
233
        0x30, 0x48, 0x4D, 0x40, 0x20,
234
        0x38, 0x08, 0x08, 0x08, 0x08,
235
        0x08, 0x08, 0x08, 0x08, 0x38,
236
        0x2F, 0x10, 0xC8, 0xAC, 0xBA,
237
        0x2F, 0x10, 0x28, 0x34, 0xFA,
238
        0x00, 0x00, 0x7B, 0x00, 0x00,
239
        0x08, 0x14, 0x2A, 0x14, 0x22,
240
        0x22, 0x14, 0x2A, 0x14, 0x08,
241
        0xAA, 0x00, 0x55, 0x00, 0xAA,
242
        0xAA, 0x55, 0xAA, 0x55, 0xAA,
243
        0x00, 0x00, 0x00, 0xFF, 0x00,
244
        0x10, 0x10, 0x10, 0xFF, 0x00,
245
        0x14, 0x14, 0x14, 0xFF, 0x00,
246
        0x10, 0x10, 0xFF, 0x00, 0xFF,
247
        0x10, 0x10, 0xF0, 0x10, 0xF0,
248
        0x14, 0x14, 0x14, 0xFC, 0x00,
249
        0x14, 0x14, 0xF7, 0x00, 0xFF,
250
        0x00, 0x00, 0xFF, 0x00, 0xFF,
251
        0x14, 0x14, 0xF4, 0x04, 0xFC,
252
        0x14, 0x14, 0x17, 0x10, 0x1F,
253
        0x10, 0x10, 0x1F, 0x10, 0x1F,
254
        0x14, 0x14, 0x14, 0x1F, 0x00,
255
        0x10, 0x10, 0x10, 0xF0, 0x00,
256
        0x00, 0x00, 0x00, 0x1F, 0x10,
257
        0x10, 0x10, 0x10, 0x1F, 0x10,
258
        0x10, 0x10, 0x10, 0xF0, 0x10,
259
        0x00, 0x00, 0x00, 0xFF, 0x10,
260
        0x10, 0x10, 0x10, 0x10, 0x10,
261
        0x10, 0x10, 0x10, 0xFF, 0x10,
262
        0x00, 0x00, 0x00, 0xFF, 0x14,
263
        0x00, 0x00, 0xFF, 0x00, 0xFF,
264
        0x00, 0x00, 0x1F, 0x10, 0x17,
265
        0x00, 0x00, 0xFC, 0x04, 0xF4,
266
        0x14, 0x14, 0x17, 0x10, 0x17,
267
        0x14, 0x14, 0xF4, 0x04, 0xF4,
268
        0x00, 0x00, 0xFF, 0x00, 0xF7,
269
        0x14, 0x14, 0x14, 0x14, 0x14,
270
        0x14, 0x14, 0xF7, 0x00, 0xF7,
271
        0x14, 0x14, 0x14, 0x17, 0x14,
272
        0x10, 0x10, 0x1F, 0x10, 0x1F,
273
        0x14, 0x14, 0x14, 0xF4, 0x14,
274
        0x10, 0x10, 0xF0, 0x10, 0xF0,
275
        0x00, 0x00, 0x1F, 0x10, 0x1F,
276
        0x00, 0x00, 0x00, 0x1F, 0x14,
277
        0x00, 0x00, 0x00, 0xFC, 0x14,
278
        0x00, 0x00, 0xF0, 0x10, 0xF0,
279
        0x10, 0x10, 0xFF, 0x10, 0xFF,
280
        0x14, 0x14, 0x14, 0xFF, 0x14,
281
        0x10, 0x10, 0x10, 0x1F, 0x00,
282
        0x00, 0x00, 0x00, 0xF0, 0x10,
283
        0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
284
        0xF0, 0xF0, 0xF0, 0xF0, 0xF0,
285
        0xFF, 0xFF, 0xFF, 0x00, 0x00,
286
        0x00, 0x00, 0x00, 0xFF, 0xFF,
287
        0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
288
        0x38, 0x44, 0x44, 0x38, 0x44,
289
        0x7C, 0x2A, 0x2A, 0x3E, 0x14,
290
        0x7E, 0x02, 0x02, 0x06, 0x06,
291
        0x02, 0x7E, 0x02, 0x7E, 0x02,
292
        0x63, 0x55, 0x49, 0x41, 0x63,
293
        0x38, 0x44, 0x44, 0x3C, 0x04,
294
        0x40, 0x7E, 0x20, 0x1E, 0x20,
295
        0x06, 0x02, 0x7E, 0x02, 0x02,
296
        0x99, 0xA5, 0xE7, 0xA5, 0x99,
297
        0x1C, 0x2A, 0x49, 0x2A, 0x1C,
298
        0x4C, 0x72, 0x01, 0x72, 0x4C,
299
        0x30, 0x4A, 0x4D, 0x4D, 0x30,
300
        0x30, 0x48, 0x78, 0x48, 0x30,
301
        0xBC, 0x62, 0x5A, 0x46, 0x3D,
302
        0x3E, 0x49, 0x49, 0x49, 0x00,
303
        0x7E, 0x01, 0x01, 0x01, 0x7E,
304
        0x2A, 0x2A, 0x2A, 0x2A, 0x2A,
305
        0x44, 0x44, 0x5F, 0x44, 0x44,
306
        0x40, 0x51, 0x4A, 0x44, 0x40,
307
        0x40, 0x44, 0x4A, 0x51, 0x40,
308
        0x00, 0x00, 0xFF, 0x01, 0x03,
309
        0xE0, 0x80, 0xFF, 0x00, 0x00,
310
        0x08, 0x08, 0x6B, 0x6B, 0x08,
311
        0x36, 0x12, 0x36, 0x24, 0x36,
312
        0x06, 0x0F, 0x09, 0x0F, 0x06,
313
        0x00, 0x00, 0x18, 0x18, 0x00,
314
        0x00, 0x00, 0x10, 0x10, 0x00,
315
        0x30, 0x40, 0xFF, 0x01, 0x01,
316
        0x00, 0x1F, 0x01, 0x01, 0x1E,
317
        0x00, 0x19, 0x1D, 0x17, 0x12,
318
        0x00, 0x3C, 0x3C, 0x3C, 0x3C,
319
        0x00, 0x00, 0x00, 0x00, 0x00
320
};
321
 
322
#endif /* GFX_H_ */