Fork of David Smart's RA8875 library for the purpose of adding touch screen support
Fork of RA8875 by
Revision 29:422616aa04bd, committed 2014-01-19
- Comitter:
- WiredHome
- Date:
- Sun Jan 19 04:24:16 2014 +0000
- Parent:
- 28:ed102fc442c4
- Child:
- 30:e0f2da88bdf6
- Commit message:
- Initial support for soft fonts compatible with mikroe font creator.
Changed in this revision
--- a/Arial12x12.h Fri Jan 17 17:24:05 2014 +0000 +++ b/Arial12x12.h Sun Jan 19 04:24:16 2014 +0000 @@ -5,105 +5,107 @@ //GLCD FontSize : 12 x 12 /** Arial Font with 12*12 matrix to use with SPI_TFT lib */ -__align(2) +//__align(2) + const unsigned char Arial12x12[] = { - 25,12,12,2, // Length,horz,vert,byte/vert - 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char - 0x02, 0x00, 0x00, 0x7F, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ! - 0x03, 0x07, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char " - 0x07, 0x24, 0x00, 0xA4, 0x01, 0x7C, 0x00, 0xA7, 0x01, 0x7C, 0x00, 0x27, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char # - 0x06, 0x00, 0x00, 0xCE, 0x00, 0x11, 0x01, 0xFF, 0x03, 0x11, 0x01, 0xE2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char $ - 0x0A, 0x00, 0x00, 0x0E, 0x00, 0x11, 0x00, 0x11, 0x01, 0xCE, 0x00, 0x38, 0x00, 0xE6, 0x00, 0x11, 0x01, 0x10, 0x01, 0xE0, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char % - 0x08, 0x00, 0x00, 0xE0, 0x00, 0x1E, 0x01, 0x11, 0x01, 0x29, 0x01, 0xC6, 0x00, 0xA0, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char & - 0x02, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ' - 0x04, 0x00, 0x00, 0xF8, 0x00, 0x06, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ( - 0x03, 0x01, 0x04, 0x06, 0x03, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ) - 0x05, 0x02, 0x00, 0x0A, 0x00, 0x07, 0x00, 0x0A, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char * - 0x06, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x7C, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char + - 0x02, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char , - 0x03, 0x20, 0x00, 0x20, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char - - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char . - 0x03, 0x80, 0x01, 0x7C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char / - 0x06, 0x00, 0x00, 0xFE, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 0 - 0x06, 0x00, 0x00, 0x04, 0x00, 0x02, 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 1 - 0x06, 0x00, 0x00, 0x02, 0x01, 0x81, 0x01, 0x41, 0x01, 0x31, 0x01, 0x0E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 2 - 0x06, 0x00, 0x00, 0x82, 0x00, 0x01, 0x01, 0x11, 0x01, 0x11, 0x01, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 3 - 0x06, 0x00, 0x00, 0x60, 0x00, 0x58, 0x00, 0x46, 0x00, 0xFF, 0x01, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 4 - 0x06, 0x00, 0x00, 0x9C, 0x00, 0x0B, 0x01, 0x09, 0x01, 0x09, 0x01, 0xF1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 5 - 0x06, 0x00, 0x00, 0xFE, 0x00, 0x11, 0x01, 0x09, 0x01, 0x09, 0x01, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 6 - 0x06, 0x00, 0x00, 0x01, 0x00, 0xC1, 0x01, 0x39, 0x00, 0x07, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 7 - 0x06, 0x00, 0x00, 0xEE, 0x00, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0xEE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 8 - 0x06, 0x00, 0x00, 0x9E, 0x00, 0x21, 0x01, 0x21, 0x01, 0x11, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 9 - 0x02, 0x00, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char : - 0x02, 0x00, 0x00, 0x40, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ; - 0x06, 0x00, 0x00, 0x10, 0x00, 0x28, 0x00, 0x28, 0x00, 0x44, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char < - 0x06, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char = - 0x06, 0x00, 0x00, 0x44, 0x00, 0x44, 0x00, 0x28, 0x00, 0x28, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char > - 0x06, 0x00, 0x00, 0x06, 0x00, 0x01, 0x00, 0x61, 0x01, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ? - 0x0C, 0x00, 0x00, 0xF0, 0x01, 0x0C, 0x02, 0xE2, 0x04, 0x12, 0x09, 0x09, 0x09, 0x09, 0x09, 0xF1, 0x09, 0x19, 0x09, 0x02, 0x05, 0x86, 0x04, 0x78, 0x02, // Code for char @ - 0x07, 0x80, 0x01, 0x70, 0x00, 0x2E, 0x00, 0x21, 0x00, 0x2E, 0x00, 0x70, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char A - 0x07, 0x00, 0x00, 0xFF, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0xFE, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char B - 0x08, 0x00, 0x00, 0x7C, 0x00, 0x82, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x82, 0x00, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char C - 0x08, 0x00, 0x00, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x82, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char D - 0x07, 0x00, 0x00, 0xFF, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char E - 0x06, 0x00, 0x00, 0xFF, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char F - 0x08, 0x00, 0x00, 0x7C, 0x00, 0x82, 0x00, 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x92, 0x00, 0x74, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char G - 0x08, 0x00, 0x00, 0xFF, 0x01, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0x10, 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char H - 0x02, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char I - 0x05, 0xC0, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char J - 0x08, 0x00, 0x00, 0xFF, 0x01, 0x20, 0x00, 0x10, 0x00, 0x28, 0x00, 0x44, 0x00, 0x82, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char K - 0x07, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char L - 0x08, 0x00, 0x00, 0xFF, 0x01, 0x06, 0x00, 0x78, 0x00, 0x80, 0x01, 0x78, 0x00, 0x06, 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char M - 0x08, 0x00, 0x00, 0xFF, 0x01, 0x02, 0x00, 0x0C, 0x00, 0x10, 0x00, 0x60, 0x00, 0x80, 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char N - 0x08, 0x00, 0x00, 0x7C, 0x00, 0x82, 0x00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x82, 0x00, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char O - 0x07, 0x00, 0x00, 0xFF, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x0E, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char P - 0x08, 0x00, 0x00, 0x7C, 0x00, 0x82, 0x00, 0x01, 0x01, 0x41, 0x01, 0x41, 0x01, 0x82, 0x00, 0x7C, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Q - 0x08, 0x00, 0x00, 0xFF, 0x01, 0x11, 0x00, 0x11, 0x00, 0x11, 0x00, 0x31, 0x00, 0xD1, 0x00, 0x0E, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char R - 0x07, 0x00, 0x00, 0xCE, 0x00, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0xE6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char S - 0x07, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0xFF, 0x01, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char T - 0x08, 0x00, 0x00, 0x7F, 0x00, 0x80, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x80, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char U - 0x07, 0x03, 0x00, 0x1C, 0x00, 0x60, 0x00, 0x80, 0x01, 0x60, 0x00, 0x1C, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char V - 0x0B, 0x07, 0x00, 0x78, 0x00, 0x80, 0x01, 0x70, 0x00, 0x0E, 0x00, 0x01, 0x00, 0x0E, 0x00, 0x70, 0x00, 0x80, 0x01, 0x7C, 0x00, 0x03, 0x00, 0x00, 0x00, // Code for char W - 0x07, 0x01, 0x01, 0xC6, 0x00, 0x28, 0x00, 0x10, 0x00, 0x28, 0x00, 0xC6, 0x00, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char X - 0x07, 0x01, 0x00, 0x06, 0x00, 0x08, 0x00, 0xF0, 0x01, 0x08, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Y - 0x07, 0x00, 0x01, 0x81, 0x01, 0x61, 0x01, 0x11, 0x01, 0x0D, 0x01, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char Z - 0x03, 0x00, 0x00, 0xFF, 0x07, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char [ - 0x03, 0x03, 0x00, 0x7C, 0x00, 0x80, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char BackSlash - 0x02, 0x01, 0x04, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ] - 0x05, 0x18, 0x00, 0x06, 0x00, 0x01, 0x00, 0x06, 0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ^ - 0x07, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char _ - 0x03, 0x00, 0x00, 0x01, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ` - 0x06, 0x00, 0x00, 0xC8, 0x00, 0x24, 0x01, 0x24, 0x01, 0xA4, 0x00, 0xF8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char a - 0x06, 0x00, 0x00, 0xFF, 0x01, 0x88, 0x00, 0x04, 0x01, 0x04, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char b - 0x05, 0x00, 0x00, 0xF8, 0x00, 0x04, 0x01, 0x04, 0x01, 0x88, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char c - 0x06, 0x00, 0x00, 0xF8, 0x00, 0x04, 0x01, 0x04, 0x01, 0x08, 0x01, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char d - 0x06, 0x00, 0x00, 0xF8, 0x00, 0x24, 0x01, 0x24, 0x01, 0x24, 0x01, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char e - 0x04, 0x04, 0x00, 0xFE, 0x01, 0x05, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char f - 0x06, 0x00, 0x00, 0xF8, 0x04, 0x04, 0x05, 0x04, 0x05, 0x88, 0x04, 0xFC, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char g - 0x06, 0x00, 0x00, 0xFF, 0x01, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0xF8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char h - 0x02, 0x00, 0x00, 0xFD, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char i - 0x02, 0x00, 0x04, 0xFD, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char j - 0x06, 0x00, 0x00, 0xFF, 0x01, 0x20, 0x00, 0x30, 0x00, 0xC8, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char k - 0x02, 0x00, 0x00, 0xFF, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char l - 0x0A, 0x00, 0x00, 0xFC, 0x01, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0xF8, 0x01, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0xF8, 0x01, 0x00, 0x00, 0x00, 0x00, // Code for char m - 0x06, 0x00, 0x00, 0xFC, 0x01, 0x08, 0x00, 0x04, 0x00, 0x04, 0x00, 0xF8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char n - 0x06, 0x00, 0x00, 0xF8, 0x00, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char o - 0x06, 0x00, 0x00, 0xFC, 0x07, 0x88, 0x00, 0x04, 0x01, 0x04, 0x01, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char p - 0x06, 0x00, 0x00, 0xF8, 0x00, 0x04, 0x01, 0x04, 0x01, 0x88, 0x00, 0xFC, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char q - 0x04, 0x00, 0x00, 0xFC, 0x01, 0x08, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char r - 0x06, 0x00, 0x00, 0x98, 0x00, 0x24, 0x01, 0x24, 0x01, 0x24, 0x01, 0xC8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char s - 0x03, 0x04, 0x00, 0xFF, 0x01, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char t - 0x06, 0x00, 0x00, 0xFC, 0x00, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0xFC, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char u - 0x05, 0x0C, 0x00, 0x70, 0x00, 0x80, 0x01, 0x70, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char v - 0x09, 0x0C, 0x00, 0x70, 0x00, 0x80, 0x01, 0x70, 0x00, 0x0C, 0x00, 0x70, 0x00, 0x80, 0x01, 0x70, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char w - 0x05, 0x04, 0x01, 0xD8, 0x00, 0x20, 0x00, 0xD8, 0x00, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char x - 0x05, 0x0C, 0x00, 0x70, 0x04, 0x80, 0x03, 0x70, 0x00, 0x0C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char y - 0x05, 0x04, 0x01, 0xC4, 0x01, 0x24, 0x01, 0x1C, 0x01, 0x04, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char z - 0x03, 0x20, 0x00, 0xDE, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char { - 0x02, 0x00, 0x00, 0xFF, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char | - 0x04, 0x00, 0x00, 0x01, 0x04, 0xDE, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char } - 0x07, 0x00, 0x00, 0x20, 0x00, 0x10, 0x00, 0x10, 0x00, 0x20, 0x00, 0x20, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ~ - 0x08, 0x00, 0x00, 0xFE, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFE, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Code for char + 25,12,12,2, // Bytes/char, horz, vert, byte/vert + //width, pixel stream .... + 0x07, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char + 0x02, 0X00, 0X00, 0x7F, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char ! + 0x03, 0x07, 0X00, 0X00, 0X00, 0x07, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char " + 0x07, 0x24, 0X00, 0xA4, 0x01, 0x7C, 0X00, 0xA7, 0x01, 0x7C, 0X00, 0x27, 0X00, 0x24, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char # + 0x06, 0X00, 0X00, 0xCE, 0X00, 0x11, 0x01, 0xFF, 0x03, 0x11, 0x01, 0xE2, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char $ + 0x0A, 0X00, 0X00, 0x0E, 0X00, 0x11, 0X00, 0x11, 0x01, 0xCE, 0X00, 0x38, 0X00, 0xE6, 0X00, 0x11, 0x01, 0x10, 0x01, 0xE0, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char % + 0x08, 0X00, 0X00, 0xE0, 0X00, 0x1E, 0x01, 0x11, 0x01, 0x29, 0x01, 0xC6, 0X00, 0xA0, 0X00, 0X00, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char & + 0x02, 0X00, 0X00, 0x07, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char ' + 0x04, 0X00, 0X00, 0xF8, 0X00, 0x06, 0x03, 0x01, 0x04, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char ( + 0x03, 0x01, 0x04, 0x06, 0x03, 0xF8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char ) + 0x05, 0x02, 0X00, 0x0A, 0X00, 0x07, 0X00, 0x0A, 0X00, 0x02, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char * + 0x06, 0X00, 0X00, 0x10, 0X00, 0x10, 0X00, 0x7C, 0X00, 0x10, 0X00, 0x10, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char + + 0x02, 0X00, 0X00, 0X00, 0x07, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char , + 0x03, 0x20, 0X00, 0x20, 0X00, 0x20, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char - + 0x02, 0X00, 0X00, 0X00, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char . + 0x03, 0x80, 0x01, 0x7C, 0X00, 0x03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char / + 0x06, 0X00, 0X00, 0xFE, 0X00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0xFE, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char 0 + 0x06, 0X00, 0X00, 0x04, 0X00, 0x02, 0X00, 0xFF, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char 1 + 0x06, 0X00, 0X00, 0x02, 0x01, 0x81, 0x01, 0x41, 0x01, 0x31, 0x01, 0x0E, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char 2 + 0x06, 0X00, 0X00, 0x82, 0X00, 0x01, 0x01, 0x11, 0x01, 0x11, 0x01, 0xEE, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char 3 + 0x06, 0X00, 0X00, 0x60, 0X00, 0x58, 0X00, 0x46, 0X00, 0xFF, 0x01, 0x40, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char 4 + 0x06, 0X00, 0X00, 0x9C, 0X00, 0x0B, 0x01, 0x09, 0x01, 0x09, 0x01, 0xF1, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char 5 + 0x06, 0X00, 0X00, 0xFE, 0X00, 0x11, 0x01, 0x09, 0x01, 0x09, 0x01, 0xF2, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char 6 + 0x06, 0X00, 0X00, 0x01, 0X00, 0xC1, 0x01, 0x39, 0X00, 0x07, 0X00, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char 7 + 0x06, 0X00, 0X00, 0xEE, 0X00, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0xEE, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char 8 + 0x06, 0X00, 0X00, 0x9E, 0X00, 0x21, 0x01, 0x21, 0x01, 0x11, 0x01, 0xFE, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char 9 + 0x02, 0X00, 0X00, 0x04, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char : + 0x02, 0X00, 0X00, 0x40, 0x07, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char ; + 0x06, 0X00, 0X00, 0x10, 0X00, 0x28, 0X00, 0x28, 0X00, 0x44, 0X00, 0x44, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char < + 0x06, 0x48, 0X00, 0x48, 0X00, 0x48, 0X00, 0x48, 0X00, 0x48, 0X00, 0x48, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char = + 0x06, 0X00, 0X00, 0x44, 0X00, 0x44, 0X00, 0x28, 0X00, 0x28, 0X00, 0x10, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char > + 0x06, 0X00, 0X00, 0x06, 0X00, 0x01, 0X00, 0x61, 0x01, 0x11, 0X00, 0x0E, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char ? + 0x0C, 0X00, 0X00, 0xF0, 0x01, 0x0C, 0x02, 0xE2, 0x04, 0x12, 0x09, 0x09, 0x09, 0x09, 0x09, 0xF1, 0x09, 0x19, 0x09, 0x02, 0x05, 0x86, 0x04, 0x78, 0x02, // Code for char @ + 0x07, 0x80, 0x01, 0x70, 0X00, 0x2E, 0X00, 0x21, 0X00, 0x2E, 0X00, 0x70, 0X00, 0x80, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char A + 0x07, 0X00, 0X00, 0xFF, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0xFE, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char B + 0x08, 0X00, 0X00, 0x7C, 0X00, 0x82, 0X00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x82, 0X00, 0x44, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char C + 0x08, 0X00, 0X00, 0xFF, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x82, 0X00, 0x7C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char D + 0x07, 0X00, 0X00, 0xFF, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char E + 0x06, 0X00, 0X00, 0xFF, 0x01, 0x11, 0X00, 0x11, 0X00, 0x11, 0X00, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char F + 0x08, 0X00, 0X00, 0x7C, 0X00, 0x82, 0X00, 0x01, 0x01, 0x01, 0x01, 0x11, 0x01, 0x92, 0X00, 0x74, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char G + 0x08, 0X00, 0X00, 0xFF, 0x01, 0x10, 0X00, 0x10, 0X00, 0x10, 0X00, 0x10, 0X00, 0x10, 0X00, 0xFF, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char H + 0x03, 0X00, 0X00, 0xFF, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char I + 0x05, 0xC0, 0X00, 0X00, 0x01, 0X00, 0x01, 0X00, 0x01, 0xFF, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char J + 0x08, 0X00, 0X00, 0xFF, 0x01, 0x20, 0X00, 0x10, 0X00, 0x28, 0X00, 0x44, 0X00, 0x82, 0X00, 0x01, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char K + 0x07, 0X00, 0X00, 0xFF, 0x01, 0X00, 0x01, 0X00, 0x01, 0X00, 0x01, 0X00, 0x01, 0X00, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char L + 0x08, 0X00, 0X00, 0xFF, 0x01, 0x06, 0X00, 0x78, 0X00, 0x80, 0x01, 0x78, 0X00, 0x06, 0X00, 0xFF, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char M + 0x08, 0X00, 0X00, 0xFF, 0x01, 0x02, 0X00, 0x0C, 0X00, 0x10, 0X00, 0x60, 0X00, 0x80, 0X00, 0xFF, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char N + 0x08, 0X00, 0X00, 0x7C, 0X00, 0x82, 0X00, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x82, 0X00, 0x7C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char O + 0x07, 0X00, 0X00, 0xFF, 0x01, 0x11, 0X00, 0x11, 0X00, 0x11, 0X00, 0x11, 0X00, 0x0E, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char P + 0x08, 0X00, 0X00, 0x7C, 0X00, 0x82, 0X00, 0x01, 0x01, 0x41, 0x01, 0x41, 0x01, 0x82, 0X00, 0x7C, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char Q + 0x08, 0X00, 0X00, 0xFF, 0x01, 0x11, 0X00, 0x11, 0X00, 0x11, 0X00, 0x31, 0X00, 0xD1, 0X00, 0x0E, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char R + 0x07, 0X00, 0X00, 0xCE, 0X00, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0x11, 0x01, 0xE6, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char S + 0x07, 0x01, 0X00, 0x01, 0X00, 0x01, 0X00, 0xFF, 0x01, 0x01, 0X00, 0x01, 0X00, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char T + 0x08, 0X00, 0X00, 0x7F, 0X00, 0x80, 0X00, 0X00, 0x01, 0X00, 0x01, 0X00, 0x01, 0x80, 0X00, 0x7F, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char U + 0x07, 0x03, 0X00, 0x1C, 0X00, 0x60, 0X00, 0x80, 0x01, 0x60, 0X00, 0x1C, 0X00, 0x03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char V + 0x0B, 0x07, 0X00, 0x78, 0X00, 0x80, 0x01, 0x70, 0X00, 0x0E, 0X00, 0x01, 0X00, 0x0E, 0X00, 0x70, 0X00, 0x80, 0x01, 0x7C, 0X00, 0x03, 0X00, 0X00, 0X00, // Code for char W + 0x07, 0x01, 0x01, 0xC6, 0X00, 0x28, 0X00, 0x10, 0X00, 0x28, 0X00, 0xC6, 0X00, 0x01, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char X + 0x07, 0x01, 0X00, 0x06, 0X00, 0x08, 0X00, 0xF0, 0x01, 0x08, 0X00, 0x06, 0X00, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char Y + 0x07, 0X00, 0x01, 0x81, 0x01, 0x61, 0x01, 0x11, 0x01, 0x0D, 0x01, 0x03, 0x01, 0x01, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char Z + 0x03, 0X00, 0X00, 0xFF, 0x07, 0x01, 0x04, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char [ + 0x03, 0x03, 0X00, 0x7C, 0X00, 0x80, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char BackSlash + 0x02, 0x01, 0x04, 0xFF, 0x07, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char ] + 0x05, 0x18, 0X00, 0x06, 0X00, 0x01, 0X00, 0x06, 0X00, 0x18, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char ^ + 0x07, 0X00, 0x04, 0X00, 0x04, 0X00, 0x04, 0X00, 0x04, 0X00, 0x04, 0X00, 0x04, 0X00, 0x04, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char _ + 0x03, 0X00, 0X00, 0x01, 0X00, 0x02, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char ` + 0x06, 0X00, 0X00, 0xC8, 0X00, 0x24, 0x01, 0x24, 0x01, 0xA4, 0X00, 0xF8, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char a + 0x06, 0X00, 0X00, 0xFF, 0x01, 0x88, 0X00, 0x04, 0x01, 0x04, 0x01, 0xF8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char b + 0x05, 0X00, 0X00, 0xF8, 0X00, 0x04, 0x01, 0x04, 0x01, 0x88, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char c + 0x06, 0X00, 0X00, 0xF8, 0X00, 0x04, 0x01, 0x04, 0x01, 0x08, 0x01, 0xFF, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char d + 0x06, 0X00, 0X00, 0xF8, 0X00, 0x24, 0x01, 0x24, 0x01, 0x24, 0x01, 0xB8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char e + 0x04, 0x04, 0X00, 0xFE, 0x01, 0x05, 0X00, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char f + 0x06, 0X00, 0X00, 0xF8, 0x04, 0x04, 0x05, 0x04, 0x05, 0x88, 0x04, 0xFC, 0x03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char g + 0x06, 0X00, 0X00, 0xFF, 0x01, 0x08, 0X00, 0x04, 0X00, 0x04, 0X00, 0xF8, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char h + 0x02, 0X00, 0X00, 0xFD, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char i + 0x02, 0X00, 0x04, 0xFD, 0x03, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char j + 0x06, 0X00, 0X00, 0xFF, 0x01, 0x20, 0X00, 0x30, 0X00, 0xC8, 0X00, 0x04, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char k + 0x02, 0X00, 0X00, 0xFF, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char l + 0x0A, 0X00, 0X00, 0xFC, 0x01, 0x08, 0X00, 0x04, 0X00, 0x04, 0X00, 0xF8, 0x01, 0x08, 0X00, 0x04, 0X00, 0x04, 0X00, 0xF8, 0x01, 0X00, 0X00, 0X00, 0X00, // Code for char m + 0x06, 0X00, 0X00, 0xFC, 0x01, 0x08, 0X00, 0x04, 0X00, 0x04, 0X00, 0xF8, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char n + 0x06, 0X00, 0X00, 0xF8, 0X00, 0x04, 0x01, 0x04, 0x01, 0x04, 0x01, 0xF8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char o + 0x06, 0X00, 0X00, 0xFC, 0x07, 0x88, 0X00, 0x04, 0x01, 0x04, 0x01, 0xF8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char p + 0x06, 0X00, 0X00, 0xF8, 0X00, 0x04, 0x01, 0x04, 0x01, 0x88, 0X00, 0xFC, 0x07, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char q + 0x04, 0X00, 0X00, 0xFC, 0x01, 0x08, 0X00, 0x04, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char r + 0x06, 0X00, 0X00, 0x98, 0X00, 0x24, 0x01, 0x24, 0x01, 0x24, 0x01, 0xC8, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char s + 0x03, 0x04, 0X00, 0xFF, 0x01, 0x04, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char t + 0x06, 0X00, 0X00, 0xFC, 0X00, 0X00, 0x01, 0X00, 0x01, 0X00, 0x01, 0xFC, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char u + 0x05, 0x0C, 0X00, 0x70, 0X00, 0x80, 0x01, 0x70, 0X00, 0x0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char v + 0x09, 0x0C, 0X00, 0x70, 0X00, 0x80, 0x01, 0x70, 0X00, 0x0C, 0X00, 0x70, 0X00, 0x80, 0x01, 0x70, 0X00, 0x0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char w + 0x05, 0x04, 0x01, 0xD8, 0X00, 0x20, 0X00, 0xD8, 0X00, 0x04, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char x + 0x05, 0x0C, 0X00, 0x70, 0x04, 0x80, 0x03, 0x70, 0X00, 0x0C, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char y + 0x05, 0x04, 0x01, 0xC4, 0x01, 0x24, 0x01, 0x1C, 0x01, 0x04, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char z + 0x03, 0x20, 0X00, 0xDE, 0x03, 0x01, 0x04, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char { + 0x02, 0X00, 0X00, 0xFF, 0x07, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char | + 0x04, 0X00, 0X00, 0x01, 0x04, 0xDE, 0x03, 0x20, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char } + 0x07, 0X00, 0X00, 0x20, 0X00, 0x10, 0X00, 0x10, 0X00, 0x20, 0X00, 0x20, 0X00, 0x10, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // Code for char ~ + 0x08, 0X00, 0X00, 0xFE, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0x02, 0x01, 0xFE, 0x01, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00 // Code for char <del> }; #endif // ARIAL12X12_H
--- a/GraphicsDisplay.cpp Fri Jan 17 17:24:05 2014 +0000 +++ b/GraphicsDisplay.cpp Sun Jan 19 04:24:16 2014 +0000 @@ -5,121 +5,164 @@ #include "GraphicsDisplay.h" +#define DEBUG "GD" +// ... +// INFO("Stuff to show %d", var); // new-line is automatically appended +// +#if (defined(DEBUG) && !defined(TARGET_LPC11U24)) +#define INFO(x, ...) std::printf("[INF %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); +#define WARN(x, ...) std::printf("[WRN %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); +#define ERR(x, ...) std::printf("[ERR %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); +#else +#define INFO(x, ...) +#define WARN(x, ...) +#define ERR(x, ...) +#endif + +// #define LOCALFONT + +#ifdef LOCALFONT const unsigned char FONT8x8[97][8] = { - 0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20 - 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // ! - 0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // " - 0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // # - 0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $ - 0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // % - 0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // & - 0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // ' - 0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // ( - 0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // ) - 0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // * - 0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // + - 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // , - 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // - - 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // . - 0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash) - 0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30 - 0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1 - 0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2 - 0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3 - 0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4 - 0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5 - 0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6 - 0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7 - 0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8 - 0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9 - 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // : - 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ; - 0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // < - 0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // = - 0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // > - 0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ? - 0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00, // @ 0x40 - 0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A - 0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B - 0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C - 0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D - 0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E - 0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F - 0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G - 0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H - 0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I - 0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J - 0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K - 0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L - 0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M - 0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N - 0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O - 0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50 - 0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q - 0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R - 0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S - 0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T - 0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U - 0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V - 0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W - 0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X - 0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y - 0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z - 0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [ - 0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash) - 0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ] - 0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^ - 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _ - 0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60 - 0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a - 0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b - 0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c - 0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d - 0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e - 0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f - 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g - 0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h - 0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i - 0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j - 0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k - 0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l - 0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m - 0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n - 0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o - 0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p - 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q - 0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r - 0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s - 0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t - 0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u - 0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v - 0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w - 0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x - 0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y - 0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z - 0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // { - 0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // | - 0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // } - 0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~ - 0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00 // DEL + 0x08, 0x08, 0x08, 0X00, 0X00, 0X00, 0X00, 0X00, // columns, rows, num_bytes_per_char + 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // space 0x20 + 0x30, 0x78, 0x78, 0x30, 0x30, 0X00, 0x30, 0X00, // ! + 0x6C, 0x6C, 0x6C, 0X00, 0X00, 0X00, 0X00, 0X00, // " + 0x6C, 0x6C, 0xFE, 0x6C, 0xFE, 0x6C, 0x6C, 0X00, // # + 0x18, 0x3E, 0x60, 0x3C, 0x06, 0x7C, 0x18, 0X00, // $ + 0X00, 0x63, 0x66, 0x0C, 0x18, 0x33, 0x63, 0X00, // % + 0x1C, 0x36, 0x1C, 0x3B, 0x6E, 0x66, 0x3B, 0X00, // & + 0x30, 0x30, 0x60, 0X00, 0X00, 0X00, 0X00, 0X00, // ' + 0x0C, 0x18, 0x30, 0x30, 0x30, 0x18, 0x0C, 0X00, // ( + 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0X00, // ) + 0X00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0X00, 0X00, // * + 0X00, 0x30, 0x30, 0xFC, 0x30, 0x30, 0X00, 0X00, // + + 0X00, 0X00, 0X00, 0X00, 0X00, 0x18, 0x18, 0x30, // , + 0X00, 0X00, 0X00, 0x7E, 0X00, 0X00, 0X00, 0X00, // - + 0X00, 0X00, 0X00, 0X00, 0X00, 0x18, 0x18, 0X00, // . + 0x03, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x40, 0X00, // / (forward slash) + 0x3E, 0x63, 0x63, 0x6B, 0x63, 0x63, 0x3E, 0X00, // 0 0x30 + 0x18, 0x38, 0x58, 0x18, 0x18, 0x18, 0x7E, 0X00, // 1 + 0x3C, 0x66, 0x06, 0x1C, 0x30, 0x66, 0x7E, 0X00, // 2 + 0x3C, 0x66, 0x06, 0x1C, 0x06, 0x66, 0x3C, 0X00, // 3 + 0x0E, 0x1E, 0x36, 0x66, 0x7F, 0x06, 0x0F, 0X00, // 4 + 0x7E, 0x60, 0x7C, 0x06, 0x06, 0x66, 0x3C, 0X00, // 5 + 0x1C, 0x30, 0x60, 0x7C, 0x66, 0x66, 0x3C, 0X00, // 6 + 0x7E, 0x66, 0x06, 0x0C, 0x18, 0x18, 0x18, 0X00, // 7 + 0x3C, 0x66, 0x66, 0x3C, 0x66, 0x66, 0x3C, 0X00, // 8 + 0x3C, 0x66, 0x66, 0x3E, 0x06, 0x0C, 0x38, 0X00, // 9 + 0X00, 0x18, 0x18, 0X00, 0X00, 0x18, 0x18, 0X00, // : + 0X00, 0x18, 0x18, 0X00, 0X00, 0x18, 0x18, 0x30, // ; + 0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, 0X00, // < + 0X00, 0X00, 0x7E, 0X00, 0X00, 0x7E, 0X00, 0X00, // = + 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0X00, // > + 0x3C, 0x66, 0x06, 0x0C, 0x18, 0X00, 0x18, 0X00, // ? + 0x3E, 0x63, 0x6F, 0x69, 0x6F, 0x60, 0x3E, 0X00, // @ 0x40 + 0x18, 0x3C, 0x66, 0x66, 0x7E, 0x66, 0x66, 0X00, // A + 0x7E, 0x33, 0x33, 0x3E, 0x33, 0x33, 0x7E, 0X00, // B + 0x1E, 0x33, 0x60, 0x60, 0x60, 0x33, 0x1E, 0X00, // C + 0x7C, 0x36, 0x33, 0x33, 0x33, 0x36, 0x7C, 0X00, // D + 0x7F, 0x31, 0x34, 0x3C, 0x34, 0x31, 0x7F, 0X00, // E + 0x7F, 0x31, 0x34, 0x3C, 0x34, 0x30, 0x78, 0X00, // F + 0x1E, 0x33, 0x60, 0x60, 0x67, 0x33, 0x1F, 0X00, // G + 0x66, 0x66, 0x66, 0x7E, 0x66, 0x66, 0x66, 0X00, // H + 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0X00, // I + 0x0F, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3C, 0X00, // J + 0x73, 0x33, 0x36, 0x3C, 0x36, 0x33, 0x73, 0X00, // K + 0x78, 0x30, 0x30, 0x30, 0x31, 0x33, 0x7F, 0X00, // L + 0x63, 0x77, 0x7F, 0x7F, 0x6B, 0x63, 0x63, 0X00, // M + 0x63, 0x73, 0x7B, 0x6F, 0x67, 0x63, 0x63, 0X00, // N + 0x3E, 0x63, 0x63, 0x63, 0x63, 0x63, 0x3E, 0X00, // O + 0x7E, 0x33, 0x33, 0x3E, 0x30, 0x30, 0x78, 0X00, // P 0x50 + 0x3C, 0x66, 0x66, 0x66, 0x6E, 0x3C, 0x0E, 0X00, // Q + 0x7E, 0x33, 0x33, 0x3E, 0x36, 0x33, 0x73, 0X00, // R + 0x3C, 0x66, 0x30, 0x18, 0x0C, 0x66, 0x3C, 0X00, // S + 0x7E, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x3C, 0X00, // T + 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7E, 0X00, // U + 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0X00, // V + 0x63, 0x63, 0x63, 0x6B, 0x7F, 0x77, 0x63, 0X00, // W + 0x63, 0x63, 0x36, 0x1C, 0x1C, 0x36, 0x63, 0X00, // X + 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x3C, 0X00, // Y + 0x7F, 0x63, 0x46, 0x0C, 0x19, 0x33, 0x7F, 0X00, // Z + 0x3C, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3C, 0X00, // [ + 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0X00, // \ (back slash) + 0x3C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x3C, 0X00, // ] + 0x08, 0x1C, 0x36, 0x63, 0X00, 0X00, 0X00, 0X00, // ^ + 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, 0xFF, // _ + 0x18, 0x18, 0x0C, 0X00, 0X00, 0X00, 0X00, 0X00, // ` 0x60 + 0X00, 0X00, 0x3C, 0x06, 0x3E, 0x66, 0x3B, 0X00, // a + 0x70, 0x30, 0x3E, 0x33, 0x33, 0x33, 0x6E, 0X00, // b + 0X00, 0X00, 0x3C, 0x66, 0x60, 0x66, 0x3C, 0X00, // c + 0x0E, 0x06, 0x3E, 0x66, 0x66, 0x66, 0x3B, 0X00, // d + 0X00, 0X00, 0x3C, 0x66, 0x7E, 0x60, 0x3C, 0X00, // e + 0x1C, 0x36, 0x30, 0x78, 0x30, 0x30, 0x78, 0X00, // f + 0X00, 0X00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x7C, // g + 0x70, 0x30, 0x36, 0x3B, 0x33, 0x33, 0x73, 0X00, // h + 0x18, 0X00, 0x38, 0x18, 0x18, 0x18, 0x3C, 0X00, // i + 0x06, 0X00, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3C, // j + 0x70, 0x30, 0x33, 0x36, 0x3C, 0x36, 0x73, 0X00, // k + 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0X00, // l + 0X00, 0X00, 0x66, 0x7F, 0x7F, 0x6B, 0x63, 0X00, // m + 0X00, 0X00, 0x7C, 0x66, 0x66, 0x66, 0x66, 0X00, // n + 0X00, 0X00, 0x3C, 0x66, 0x66, 0x66, 0x3C, 0X00, // o + 0X00, 0X00, 0x6E, 0x33, 0x33, 0x3E, 0x30, 0x78, // p + 0X00, 0X00, 0x3B, 0x66, 0x66, 0x3E, 0x06, 0x0F, // q + 0X00, 0X00, 0x6E, 0x3B, 0x33, 0x30, 0x78, 0X00, // r + 0X00, 0X00, 0x3E, 0x60, 0x3C, 0x06, 0x7C, 0X00, // s + 0x08, 0x18, 0x3E, 0x18, 0x18, 0x1A, 0x0C, 0X00, // t + 0X00, 0X00, 0x66, 0x66, 0x66, 0x66, 0x3B, 0X00, // u + 0X00, 0X00, 0x66, 0x66, 0x66, 0x3C, 0x18, 0X00, // v + 0X00, 0X00, 0x63, 0x6B, 0x7F, 0x7F, 0x36, 0X00, // w + 0X00, 0X00, 0x63, 0x36, 0x1C, 0x36, 0x63, 0X00, // x + 0X00, 0X00, 0x66, 0x66, 0x66, 0x3E, 0x06, 0x7C, // y + 0X00, 0X00, 0x7E, 0x4C, 0x18, 0x32, 0x7E, 0X00, // z + 0x0E, 0x18, 0x18, 0x70, 0x18, 0x18, 0x0E, 0X00, // { + 0x0C, 0x0C, 0x0C, 0X00, 0x0C, 0x0C, 0x0C, 0X00, // | + 0x70, 0x18, 0x18, 0x0E, 0x18, 0x18, 0x70, 0X00, // } + 0x3B, 0x6E, 0X00, 0X00, 0X00, 0X00, 0X00, 0X00, // ~ + 0x1C, 0x36, 0x36, 0x1C, 0X00, 0X00, 0X00, 0X00 // DEL }; - +#endif // LOCALFONT -GraphicsDisplay::GraphicsDisplay(const char *name):TextDisplay(name) +GraphicsDisplay::GraphicsDisplay(const char *name) + : TextDisplay(name) { + font = NULL; //foreground(0xFFFF); //background(0x0000); } - -void GraphicsDisplay::character(int column, int row, int value) +RetCode_t GraphicsDisplay::set_font(const unsigned char * _font) { - blitbit(column * 8, row * 8, 8, 8, (char*)&(FONT8x8[value - 0x1F][0])); + font = _font; + INFO("set_font(%lu) %lu", _font, font); + return noerror; // trusting them, but it might be good to put some checks in here... } +#ifdef LOCALFONT +int GraphicsDisplay::character(int x, int y, int value) +{ + INFO("character(%d,%d,%c)", x, t, value); + if (value <= 0x1F && value >= 7F) + return 0; + + return blitbit(x, y, FONT8X8[0][0], FONT8X8[0][1], + (char *)&(FONT8x8[value - 0x1F][0])); +} +#else +int GraphicsDisplay::character(int x, int y, int c) +{ + unsigned int offset; + const unsigned char * charRecord; + + if (c <= 0x1F || c >= 0x7F) + return 0; + offset = font[0]; // bytes / char + charRecord = &font[((c - ' ') * offset) + 4]; // start of char bitmap + return fontblit(x, y, font, charRecord); +} +#endif -void GraphicsDisplay::window(unsigned int x,unsigned int y,unsigned int w,unsigned int h) +void GraphicsDisplay::window(unsigned int x, unsigned int y, unsigned int w, unsigned int h) { // current pixel location _x = x; @@ -160,7 +203,7 @@ return noerror; } -void GraphicsDisplay::blit(int x, int y, int w, int h, const int *colour) +void GraphicsDisplay::blit(int x, int y, int w, int h, const int * colour) { window(x, y, w, h); for(int i=0; i<w*h; i++) { @@ -168,19 +211,53 @@ } } -void GraphicsDisplay::blitbit(int x, int y, int w, int h, const char* colour) +int GraphicsDisplay::blitbit(int x, int y, int w, int h, const char * colour) { + _foreground = 0xFFFF; + INFO("blitbit(%d,%d, %d,%d, %02X) [%04X,%04X]", x,y, w,h, *colour, _foreground, _background); + INFO("%lu %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X %02X", + colour, + colour[0], colour[1], colour[2], colour[3], colour[4], colour[5], colour[6], colour[7], + colour[8], colour[9], colour[10], colour[11], colour[12], colour[13], colour[14], colour[15]); window(x, y, w, h); - for(int i = 0; i < w*h; i++) { + for (int i = 0; i < w*h; i++) { char byte = colour[i >> 3]; int offset = i & 0x7; + if (offset == 0) + INFO(" %2d = %02X", i>>3, byte); int c = ((byte << offset) & 0x80) ? _foreground : _background; putp(c); + //wait_ms(100); } + return w; +} + + +int GraphicsDisplay::fontblit(int x, int y, const unsigned char * fontTable, const unsigned char * fontChar) +{ _foreground = 0xFFFF; - printf("blitbit colors %d,%d\r\n", _foreground, _background); + //int fontWidth = font[1]; // get hor size of font + int fontHeight = font[2]; // get vert size of font + int bytesPerLine = font[3]; // bytes per line + int charWidth = fontChar[0]; // width of this character + int px, py; + window(x, y, charWidth, fontHeight); + + for (py = 0; py < fontHeight; py++) { + int bitmask = 1 << (py & 7); + + for (px = 0; px < charWidth; px++) { + int offset = (py / 8) + px * bytesPerLine; + unsigned char byte = fontChar[offset + 1]; // skip the char's # bits wide value + int c = (byte & bitmask) ? _foreground : _background; + putp(c); + } + } + return charWidth; } + + int GraphicsDisplay::columns() { return width() / 8;
--- a/GraphicsDisplay.h Fri Jan 17 17:24:05 2014 +0000 +++ b/GraphicsDisplay.h Sun Jan 19 04:24:16 2014 +0000 @@ -31,15 +31,43 @@ virtual RetCode_t cls(); virtual void fill(int x, int y, int w, int h, int colour); - virtual void blit(int x, int y, int w, int h, const int *colour); - virtual void blitbit(int x, int y, int w, int h, const char* colour); + virtual void blit(int x, int y, int w, int h, const int * colour); + + virtual int blitbit(int x, int y, int w, int h, const char * colour); - virtual void character(int column, int row, int value); + /// This method transfers one character from the external font data + /// to the screen. + /// + /// @note the font data is in a special format as generate by + /// the mikroe font creator. \\ + /// See http://www.mikroe.com/glcd-font-creator/ + /// + /// @param x is the horizontal pixel coordinate + /// @param y is the vertical pixel coordinate + /// @param fontTable is the base of the table which has the metrics + /// @param fontChar is the start of that record in the table for the char (e.g. 'A' - 'Z') + /// @returns how far the cursor should advance to the right in pixels + /// + virtual int fontblit(int x, int y, const unsigned char * fontTable, const unsigned char * fontChar); + + /// prints one character at the specified coordinates. + /// + /// This will print the character at the specified pixel coordinates. + /// + /// @param x is the horizontal offset in pixels. + /// @param y is the vertical offset in pixels. + /// @param value is the character to print. + /// @returns number of pixels to index to the right if a character was printed, 0 otherwise. + /// + virtual int character(int x, int y, int value); + virtual int columns(); virtual int rows(); + virtual RetCode_t set_font(const unsigned char * font = NULL); protected: - + const unsigned char * font; ///< reference to an external font somewhere in memory + // pixel location short _x; short _y; @@ -49,7 +77,6 @@ short _x2; short _y1; short _y2; - }; #endif
--- a/RA8875.cpp Fri Jan 17 17:24:05 2014 +0000 +++ b/RA8875.cpp Sun Jan 19 04:24:16 2014 +0000 @@ -12,7 +12,7 @@ DigitalOut zz3(LED3); DigitalOut zz4(LED4); -//#define DEBUG "RAIO" +#define DEBUG "RAIO" // ... // INFO("Stuff to show %d", var); // new-line is automatically appended // @@ -148,7 +148,7 @@ if (font == NULL) return (((ReadCommand(0x22) >> 2) & 0x3) + 1) * 16; else - return width() / font[1]; + return font[1]; } unsigned int RA8875::fontheight(void) @@ -156,7 +156,7 @@ if (font == NULL) return (((ReadCommand(0x22) >> 0) & 0x3) + 1) * 16; else - return height() / font[2]; + return font[2]; } RetCode_t RA8875::locate(unsigned int x, unsigned int y) @@ -176,24 +176,42 @@ int RA8875::width(void) { - return RA8875_DISPLAY_WIDTH; + //return RA8875_DISPLAY_WIDTH; + return (ReadCommand(0x14) + 1) * 8; } int RA8875::height(void) { - return RA8875_DISPLAY_HEIGHT; + //return RA8875_DISPLAY_HEIGHT; + return (ReadCommand(0x19) | (ReadCommand(0x1A) << 8)) + 1; } RetCode_t RA8875::SetTextCursor(unsigned int x, unsigned int y) { + cursor_x = x; cursor_y = y; // for non-internal fonts WriteCommand(0x2A, x & 0xFF); WriteCommand(0x2B, x >> 8); WriteCommand(0x2C, y & 0xFF); WriteCommand(0x2D, y >> 8); - INFO("SetTextCursor(%d,%d)", x,y); return noerror; } +unsigned int RA8875::GetTextCursor_Y(void) +{ + if (font == NULL) + return ReadCommand(0x2C) | (ReadCommand(0x2D) << 8); + else + return cursor_y; +} + +unsigned int RA8875::GetTextCursor_X(void) +{ + if (font == NULL) + return ReadCommand(0x2A) | (ReadCommand(0x2B) << 8); + else + return cursor_x; +} + RetCode_t RA8875::SetTextCursorControl(cursor_t cursor, bool blink) { unsigned char mwcr0 = ReadCommand(0x40) & 0x0F; // retain direction, auto-increase @@ -282,8 +300,47 @@ int RA8875::_putc(int c) { + if (font == NULL) { + return _internal_putc(c); + } else { + return _external_putc(c); + } +} + +int RA8875::_external_putc(int c) +{ if (c) { if (c == '\r') { + cursor_x = 0; + } else if (c == '\n') { + cursor_y += font[2]; + } else { + int advance = character(cursor_x, cursor_y, c); // advance tells us how many pixels we advanced + if (advance) { + cursor_x += advance; + if (cursor_x >= width()) { + cursor_x = 0; + cursor_y += font[2]; + if (cursor_y >= height()) { + cursor_y = 0; // @todo Should it scroll? + } + } + } + } + } + return c; +} + +int RA8875::_internal_putc(int c) +{ + if (c) { + unsigned char mwcr0; + + mwcr0 = ReadCommand(0x40); + if ((mwcr0 & 0x80) == 0x00) { + WriteCommand(0x40, 0x80 | mwcr0); // Put in Text mode if not already + } + if (c == '\r') { unsigned int x; x = ReadCommand(0x30) | (ReadCommand(0x31) << 8); // Left edge of active window WriteCommand(0x2A, x & 0xFF); @@ -292,33 +349,23 @@ unsigned int y; y = ReadCommand(0x2C) | (ReadCommand(0x2D) << 8); // current y location y += fontheight(); - if (y > height()) // @TODO > active window, then scroll? + if (y > height()) // @TODO after bottom of active window, then scroll window? y = 0; WriteCommand(0x2C, y & 0xFF); WriteCommand(0x2D, y >> 8); } else { - if (font == NULL) { - unsigned char mwcr0 = ReadCommand(0x40); - - if (mwcr0 & 0x80 == 0x00) - WriteCommand(0x40,0x80); - WriteCommand(0x02); - select(true); - WriteData(c); - while (ReadStatus() & 0x80) - wait_us(POLLWAITuSec); // Chk_Busy(); - select(false); - } else { - unsigned int x = (ReadCommand(0x2A) | (ReadCommand(0x2B) << 8)) / fontwidth(); - unsigned int y = (ReadCommand(0x2C) | (ReadCommand(0x2D) << 8)) / fontheight(); - character(x,y,c); - } - // @TODO right of active window, then wrap? + WriteCommand(0x02); // RA8875 Internal Fonts + select(true); + WriteData(c); + while (ReadStatus() & 0x80) + wait_us(POLLWAITuSec); // Chk_Busy(); + select(false); } } return c; } + void RA8875::puts(unsigned int x, unsigned int y, const char * string) { SetTextCursor(x,y); @@ -327,14 +374,17 @@ void RA8875::puts(const char * string) { + unsigned char mwcr0 = ReadCommand(0x40); + + if ((mwcr0 & 0x80) == 0x00) + WriteCommand(0x40,0x80); // Put in Text mode if not already + if (*string != '\0') { - INFO("puts(%s)", string); #if 1 - while (*string) { // @TODO calling individual _putc is slower... anything to do? + while (*string) { // @TODO calling individual _putc is slower... optimizations? _putc(*string++); } #else - WriteCommand(0x40,0x80); // Put display into text mode WriteCommand(0x02); select(true); while (*string != '\0') { @@ -349,7 +399,6 @@ } RetCode_t RA8875::SetMemoryCursor(unsigned int x, unsigned int y) - { WriteCommand(0x46, x & 0xFF); WriteCommand(0x47, x >> 8); @@ -375,6 +424,7 @@ { PERFORMANCE_RESET; clsw(FULLWINDOW); + cursor_x = cursor_y = 0; REGISTERPERFORMANCE(PRF_CLS); return noerror; } @@ -400,7 +450,6 @@ RetCode_t ret; PERFORMANCE_RESET; - #if 1 color_t color = GetForeColor(); WriteCommand(0x40,0x00); // Graphics write mode SetMemoryCursor(x, y); @@ -408,11 +457,6 @@ WriteData(color & 0xFF); WriteData(color >> 8); ret = noerror; - #else - // There isn't actually a set pixel function that I found - // so we'll emulate it as we can. - ret = line(x,y, x,y); - #endif REGISTERPERFORMANCE(PRF_DRAWPOINT); return ret; } @@ -744,9 +788,9 @@ { unsigned char b; - if (brightness > 1.0) + if (brightness >= 1.0) b = 255; - else if (brightness < 0) + else if (brightness <= 0.0) b = 0; else b = (unsigned char)(brightness * 255); @@ -757,7 +801,8 @@ RetCode_t RA8875::set_font(const unsigned char * _font) { font = _font; - return noerror; // trusting them, but we could put some checks in here... + GraphicsDisplay::set_font(_font); + return noerror; // trusting them, but it might be good to put some checks in here... } RetCode_t RA8875::background(color_t color) @@ -961,15 +1006,21 @@ void BacklightTest(RA8875 & display, Serial & pc, float ramptime) { + char buf[60]; + pc.printf("Backlight Test - ramp over %f sec.\r\n", ramptime); display.Backlight_u8(0); - display.background(Black); + display.background(White); display.foreground(Blue); display.cls(); + wait_ms(200); display.puts(0,0, "RA8875 Backlight Test - Ramp up."); for (int i=0; i < 255; i++) { + unsigned int w = (ramptime * 1000)/ 256; + sprintf(buf, "%3d, %4d", i, w); + display.puts(0,40,buf); display.Backlight_u8(i); - wait_ms((ramptime * 1000)/ 256); + wait_ms(w); } } @@ -1092,21 +1143,6 @@ display.cls(); display.puts(0,0, "Rounded Rectangle Test"); - #if 0 - i = 3; - x1 = 30; y1 = 30; - x2 = 200; y2 = 100; - r1 = 10; r2 = 20; - pc.printf(" (%3d,%3d), (%3d,%3d): (%2d,%2d) - %04X\r\n", x1,y1, x2,y2, r1,r2, display.DOSColor(i)); - display.roundrect(x1,y1, x2,y2, r1,r2, display.DOSColor(i)); - - x1 = 230; y1 = 30; - x2 = 400; y2 = 100; - r1 = 30; r2 = 34; - pc.printf(" (%3d,%3d), (%3d,%3d): (%2d,%2d) - %04X\r\n", x1,y1, x2,y2, r1,r2, display.DOSColor(i)); - display.roundrect(x1,y1, x2,y2, r1,r2, display.DOSColor(i), NOFILL); - #endif - for (i=0; i<16; i++) { x1 = rand() % 240; y1 = 50 + rand() % 200; @@ -1262,7 +1298,7 @@ automode = 0; break; case 'B': - BacklightTest(lcd, pc, 2); + BacklightTest(lcd, pc, 4); break; case 'b': BacklightTest2(lcd, pc);
--- a/RA8875.h Fri Jan 17 17:24:05 2014 +0000 +++ b/RA8875.h Sun Jan 19 04:24:16 2014 +0000 @@ -12,7 +12,7 @@ // What better place for some test code than in here and the companion // .cpp file. See also the bottom of this file. -//#define TESTENABLE +#define TESTENABLE #define RGB(r,g,b) ( ((r<<8)&0xF800) | ((g<<3)&0x07E0) | (b>>3) ) @@ -66,25 +66,34 @@ BLOCK ///< Block cursor } cursor_t; -/// return values from functions +// return values from functions moved into TextDisplay.h //typedef enum //{ // noerror, // bad_parameter //} RetCode_t; + /// This is a graphics library for the Raio RA8875 Display Controller chip /// attached to a 4-wire SPI interface. /// -/// It offers both primitive and high level APIs. +/// It offers both primitive and high level APIs.\\ /// Central to this API is a coordinate system, where the origin (0,0) is in /// the top-left corner of the display, and the width extends positive to the /// right and the height extends positive toward the bottom. /// /// As there are both graphics and text commands, one must take care to use /// the proper coordinate system for each. Some of the text APIs are in units -/// of column and row, which is measured in character positions (so dependent -/// on the font size). +/// of column and row, which is measured in character positions (and dependent +/// on the font size), and other text APIs permit pixel level positioning. +/// +/// @todo Add 2-Layer support. +/// @todo Find out why it can't shift frequency after constructor runs. +/// @todo Bitmap support. +/// @todo Add Hardware reset signal. +/// @todo Add Touch Screen support. +/// @todo Add Keypad Support. +/// @todo Add high level objects - x-y graph, meter, others... /// class RA8875 : public GraphicsDisplay { @@ -240,7 +249,19 @@ /// @returns success/failure code. @see RetCode_t. /// RetCode_t SetTextCursor(unsigned int x, unsigned int y); - + + /// Get the current cursor horizontal position in pixels. + /// + /// @returns cursor position horizontal offset. + /// + unsigned int GetTextCursor_X(void); + + /// Get the current cursor vertical position in pixels. + /// + /// @returns cursor position vertical offset. + /// + unsigned int GetTextCursor_Y(void); + /// Configure additional Cursor Control settings. /// /// This API lets you modify other cursor control settings; @@ -770,7 +791,7 @@ /// - the number of bytes per vertical line (width of the array) /// @returns error code. /// - RetCode_t set_font(const unsigned char * font); + RetCode_t set_font(const unsigned char * font = NULL); /// Get the RGB value for a DOS color. /// @@ -824,6 +845,20 @@ /// RetCode_t init(void); + /// Internal function to put a character using the built-in (internal) font engine + /// + /// @param is the character to put to the screen. + /// @returns the character put. + /// + int _internal_putc(int c); + + /// Internal function to put a character using the external font engine + /// + /// @param is the character to put to the screen. + /// @returns the character put. + /// + int _external_putc(int c); + /// Select the peripheral to use it. /// /// @param chipsel when true will select the peripheral, and when false @@ -855,6 +890,7 @@ DigitalOut cs; ///< chip select pin, assumed active low DigitalOut res; ///< reset pin, assumed active low const unsigned char * font; ///< reference to an external font somewhere in memory + unsigned int cursor_x, cursor_y; ///< used for external fonts only #ifdef PERF_METRICS typedef enum
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Small_6.h Sun Jan 19 04:24:16 2014 +0000 @@ -0,0 +1,105 @@ + +#ifndef SMALL_6_H +#define SMALL_6_H + +const unsigned char Small_6[] = { + 9,8,8,1, // Length,horz,vert,byte/vert + 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char + 0x02, 0x00, 0x2F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ! + 0x04, 0x00, 0x03, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, // Code for char " + 0x06, 0x00, 0x12, 0x3F, 0x12, 0x3F, 0x12, 0x00, 0x00, // Code for char # + 0x04, 0x00, 0x26, 0x7F, 0x32, 0x00, 0x00, 0x00, 0x00, // Code for char $ + 0x05, 0x00, 0x13, 0x0B, 0x34, 0x32, 0x00, 0x00, 0x00, // Code for char % + 0x05, 0x00, 0x1A, 0x25, 0x1A, 0x28, 0x00, 0x00, 0x00, // Code for char & + 0x02, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ' + 0x03, 0x00, 0x7E, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ( + 0x03, 0x00, 0x81, 0x7E, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ) + 0x03, 0x00, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char * + 0x04, 0x00, 0x08, 0x1C, 0x08, 0x00, 0x00, 0x00, 0x00, // Code for char + + 0x02, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char , + 0x03, 0x00, 0x08, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char - + 0x02, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char . + 0x03, 0x00, 0x38, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char / + 0x05, 0x00, 0x1E, 0x21, 0x21, 0x1E, 0x00, 0x00, 0x00, // Code for char 0 + 0x05, 0x00, 0x02, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char 1 + 0x05, 0x00, 0x32, 0x29, 0x29, 0x26, 0x00, 0x00, 0x00, // Code for char 2 + 0x05, 0x00, 0x12, 0x21, 0x25, 0x1A, 0x00, 0x00, 0x00, // Code for char 3 + 0x05, 0x00, 0x18, 0x16, 0x3F, 0x10, 0x00, 0x00, 0x00, // Code for char 4 + 0x05, 0x00, 0x27, 0x25, 0x19, 0x00, 0x00, 0x00, 0x00, // Code for char 5 + 0x05, 0x00, 0x1E, 0x25, 0x25, 0x18, 0x00, 0x00, 0x00, // Code for char 6 + 0x05, 0x00, 0x01, 0x3D, 0x03, 0x00, 0x00, 0x00, 0x00, // Code for char 7 + 0x05, 0x00, 0x1A, 0x25, 0x25, 0x1A, 0x00, 0x00, 0x00, // Code for char 8 + 0x05, 0x00, 0x12, 0x25, 0x25, 0x1E, 0x00, 0x00, 0x00, // Code for char 9 + 0x02, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char : + 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ; + 0x04, 0x00, 0x08, 0x14, 0x22, 0x00, 0x00, 0x00, 0x00, // Code for char < + 0x04, 0x00, 0x14, 0x14, 0x14, 0x00, 0x00, 0x00, 0x00, // Code for char = + 0x04, 0x00, 0x22, 0x14, 0x08, 0x00, 0x00, 0x00, 0x00, // Code for char > + 0x05, 0x00, 0x02, 0x29, 0x05, 0x02, 0x00, 0x00, 0x00, // Code for char ? + 0x08, 0x00, 0x1C, 0x22, 0x49, 0x55, 0x59, 0x12, 0x0C, // Code for char @ + 0x06, 0x00, 0x30, 0x0C, 0x0B, 0x0C, 0x30, 0x00, 0x00, // Code for char A + 0x06, 0x00, 0x3F, 0x25, 0x25, 0x25, 0x1A, 0x00, 0x00, // Code for char B + 0x06, 0x00, 0x1E, 0x21, 0x21, 0x21, 0x12, 0x00, 0x00, // Code for char C + 0x06, 0x00, 0x3F, 0x21, 0x21, 0x21, 0x1E, 0x00, 0x00, // Code for char D + 0x05, 0x00, 0x3F, 0x25, 0x25, 0x21, 0x00, 0x00, 0x00, // Code for char E + 0x05, 0x00, 0x3F, 0x05, 0x05, 0x01, 0x00, 0x00, 0x00, // Code for char F + 0x06, 0x00, 0x1E, 0x21, 0x21, 0x29, 0x3A, 0x00, 0x00, // Code for char G + 0x05, 0x00, 0x3F, 0x04, 0x04, 0x3F, 0x00, 0x00, 0x00, // Code for char H + 0x02, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char I + 0x04, 0x00, 0x30, 0x20, 0x1F, 0x00, 0x00, 0x00, 0x00, // Code for char J + 0x05, 0x00, 0x3F, 0x0C, 0x12, 0x21, 0x00, 0x00, 0x00, // Code for char K + 0x04, 0x00, 0x3F, 0x20, 0x20, 0x00, 0x00, 0x00, 0x00, // Code for char L + 0x08, 0x00, 0x3F, 0x03, 0x0C, 0x30, 0x0C, 0x03, 0x3F, // Code for char M + 0x06, 0x00, 0x3F, 0x03, 0x0C, 0x30, 0x3F, 0x00, 0x00, // Code for char N + 0x06, 0x00, 0x1E, 0x21, 0x21, 0x21, 0x1E, 0x00, 0x00, // Code for char O + 0x05, 0x00, 0x3F, 0x09, 0x09, 0x06, 0x00, 0x00, 0x00, // Code for char P + 0x06, 0x00, 0x1E, 0x21, 0x29, 0x11, 0x2E, 0x00, 0x00, // Code for char Q + 0x06, 0x00, 0x3F, 0x09, 0x09, 0x09, 0x36, 0x00, 0x00, // Code for char R + 0x05, 0x00, 0x12, 0x25, 0x29, 0x12, 0x00, 0x00, 0x00, // Code for char S + 0x06, 0x00, 0x01, 0x01, 0x3F, 0x01, 0x01, 0x00, 0x00, // Code for char T + 0x06, 0x00, 0x1F, 0x20, 0x20, 0x20, 0x1F, 0x00, 0x00, // Code for char U + 0x06, 0x00, 0x03, 0x0C, 0x30, 0x0C, 0x03, 0x00, 0x00, // Code for char V + 0x08, 0x00, 0x03, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x03, // Code for char W + 0x06, 0x00, 0x21, 0x12, 0x0C, 0x12, 0x21, 0x00, 0x00, // Code for char X + 0x06, 0x00, 0x01, 0x02, 0x3C, 0x02, 0x01, 0x00, 0x00, // Code for char Y + 0x05, 0x00, 0x31, 0x29, 0x25, 0x23, 0x00, 0x00, 0x00, // Code for char Z + 0x03, 0x00, 0x7F, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char [ + 0x03, 0x00, 0x07, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char BackSlash + 0x03, 0x00, 0x41, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ] + 0x04, 0x00, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, // Code for char ^ + 0x05, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x00, 0x00, // Code for char _ + 0x03, 0x00, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char ` + 0x04, 0x00, 0x14, 0x24, 0x38, 0x00, 0x00, 0x00, 0x00, // Code for char a + 0x05, 0x00, 0x3F, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, // Code for char b + 0x04, 0x00, 0x18, 0x24, 0x24, 0x00, 0x00, 0x00, 0x00, // Code for char c + 0x05, 0x00, 0x18, 0x24, 0x24, 0x3F, 0x00, 0x00, 0x00, // Code for char d + 0x04, 0x00, 0x18, 0x34, 0x28, 0x00, 0x00, 0x00, 0x00, // Code for char e + 0x03, 0x00, 0x3E, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char f + 0x05, 0x00, 0x18, 0xA4, 0xA4, 0x7C, 0x00, 0x00, 0x00, // Code for char g + 0x04, 0x00, 0x3F, 0x04, 0x38, 0x00, 0x00, 0x00, 0x00, // Code for char h + 0x02, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char i + 0x02, 0x00, 0xFD, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char j + 0x04, 0x00, 0x3F, 0x08, 0x34, 0x00, 0x00, 0x00, 0x00, // Code for char k + 0x02, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char l + 0x06, 0x00, 0x3C, 0x04, 0x3C, 0x04, 0x38, 0x00, 0x00, // Code for char m + 0x04, 0x00, 0x3C, 0x04, 0x38, 0x00, 0x00, 0x00, 0x00, // Code for char n + 0x05, 0x00, 0x18, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, // Code for char o + 0x05, 0x00, 0xFC, 0x24, 0x24, 0x18, 0x00, 0x00, 0x00, // Code for char p + 0x05, 0x00, 0x18, 0x24, 0x24, 0xFC, 0x00, 0x00, 0x00, // Code for char q + 0x03, 0x00, 0x3C, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char r + 0x04, 0x00, 0x28, 0x24, 0x14, 0x00, 0x00, 0x00, 0x00, // Code for char s + 0x03, 0x00, 0x1E, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char t + 0x04, 0x00, 0x1C, 0x20, 0x3C, 0x00, 0x00, 0x00, 0x00, // Code for char u + 0x04, 0x00, 0x0C, 0x30, 0x0C, 0x00, 0x00, 0x00, 0x00, // Code for char v + 0x06, 0x00, 0x0C, 0x30, 0x0C, 0x30, 0x0C, 0x00, 0x00, // Code for char w + 0x04, 0x00, 0x24, 0x18, 0x24, 0x00, 0x00, 0x00, 0x00, // Code for char x + 0x04, 0x00, 0x9C, 0x60, 0x1C, 0x00, 0x00, 0x00, 0x00, // Code for char y + 0x04, 0x00, 0x34, 0x24, 0x2C, 0x00, 0x00, 0x00, 0x00, // Code for char z + 0x03, 0x00, 0x08, 0x77, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char { + 0x02, 0x00, 0x7F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char | + 0x03, 0x00, 0x77, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, // Code for char } + 0x04, 0x02, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00, // Code for char ~ + 0x02, 0x00, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 // Code for char + }; + +#endif // SMALL_6_H
--- a/TextDisplay.cpp Fri Jan 17 17:24:05 2014 +0000 +++ b/TextDisplay.cpp Sun Jan 19 04:24:16 2014 +0000 @@ -5,6 +5,20 @@ #include "TextDisplay.h" +#define DEBUG "Text" +// ... +// INFO("Stuff to show %d", var); // new-line is automatically appended +// +#if (defined(DEBUG) && !defined(TARGET_LPC11U24)) +#define INFO(x, ...) std::printf("[INF %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); +#define WARN(x, ...) std::printf("[WRN %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); +#define ERR(x, ...) std::printf("[ERR %s %3d] "x"\r\n", DEBUG, __LINE__, ##__VA_ARGS__); +#else +#define INFO(x, ...) +#define WARN(x, ...) +#define ERR(x, ...) +#endif + TextDisplay::TextDisplay(const char *name) : Stream(name) { _row = 0; @@ -19,6 +33,7 @@ int TextDisplay::_putc(int value) { + INFO("_putc(%d)", value); if(value == '\n') { _column = 0; _row++; @@ -42,6 +57,7 @@ // crude cls implementation, should generally be overwritten in derived class RetCode_t TextDisplay::cls() { + INFO("cls()"); locate(0, 0); for(int i=0; i<columns()*rows(); i++) { putc(' '); @@ -51,6 +67,7 @@ RetCode_t TextDisplay::locate(unsigned int column, unsigned int row) { + INFO("locate(%d,%d)", column, row); _column = column; _row = row; return noerror; @@ -63,25 +80,26 @@ RetCode_t TextDisplay::foreground(uint16_t colour) { + INFO("foreground(%4X)", colour); _foreground = colour; return noerror; } RetCode_t TextDisplay::background(uint16_t colour) { + INFO("background(%4X)", colour); _background = colour; return noerror; } -bool TextDisplay::claim (FILE *stream) +bool TextDisplay::claim(FILE *stream) { if ( _path == NULL) { fprintf(stderr, "claim requires a name to be given in the instantiator of the TextDisplay instance!\r\n"); return false; } if (freopen(_path, "w", stream) == NULL) { - // Failed, should not happen - return false; + return false; // Failed, should not happen } // make sure we use line buffering setvbuf(stdout, NULL, _IOLBF, columns());
--- a/TextDisplay.h Fri Jan 17 17:24:05 2014 +0000 +++ b/TextDisplay.h Sun Jan 19 04:24:16 2014 +0000 @@ -40,11 +40,12 @@ /** output a character at the given position * - * @param column column where charater must be written - * @param row where character must be written + * @param x position in pixels + * @param y position in pixels * @param c the character to be written to the TextDisplay + * @returns number of pixels to advance the cursor. */ - virtual void character(int column, int row, int c) = 0; + virtual int character(int x, int y, int c) = 0; /** return number if rows on TextDisplay * @result number of rows @@ -65,7 +66,7 @@ /** clear screen */ - virtual RetCode_t cls(); + virtual RetCode_t cls() = 0; virtual RetCode_t locate(unsigned int column, unsigned int row) = 0; virtual RetCode_t foreground(uint16_t colour) = 0; virtual RetCode_t background(uint16_t colour) = 0;