Creating a project for TT_Mxx
LCD/LCD_HX8347/GraphicsDisplay.cpp@2:e8d138dfbebc, 2019-03-22 (annotated)
- Committer:
- ThunderSoft
- Date:
- Fri Mar 22 06:05:15 2019 +0000
- Revision:
- 2:e8d138dfbebc
- Parent:
- 0:7f36c2de1de6
Update LCD code
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ThunderSoft | 0:7f36c2de1de6 | 1 | /* mbed GraphicsDisplay Display Library Base Class |
ThunderSoft | 0:7f36c2de1de6 | 2 | * Copyright (c) 2007-2009 sford |
ThunderSoft | 0:7f36c2de1de6 | 3 | * Released under the MIT License: http://mbed.org/license/mit |
ThunderSoft | 0:7f36c2de1de6 | 4 | */ |
ThunderSoft | 0:7f36c2de1de6 | 5 | |
ThunderSoft | 0:7f36c2de1de6 | 6 | #include "GraphicsDisplay.h" |
ThunderSoft | 0:7f36c2de1de6 | 7 | extern uint8_t font[]; |
ThunderSoft | 0:7f36c2de1de6 | 8 | |
ThunderSoft | 0:7f36c2de1de6 | 9 | const unsigned char FONT8x8[97][8] = { |
ThunderSoft | 0:7f36c2de1de6 | 10 | 0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char |
ThunderSoft | 0:7f36c2de1de6 | 11 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20 |
ThunderSoft | 0:7f36c2de1de6 | 12 | 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // ! |
ThunderSoft | 0:7f36c2de1de6 | 13 | 0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // " |
ThunderSoft | 0:7f36c2de1de6 | 14 | 0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // # |
ThunderSoft | 0:7f36c2de1de6 | 15 | 0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $ |
ThunderSoft | 0:7f36c2de1de6 | 16 | 0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // % |
ThunderSoft | 0:7f36c2de1de6 | 17 | 0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // & |
ThunderSoft | 0:7f36c2de1de6 | 18 | 0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // ' |
ThunderSoft | 0:7f36c2de1de6 | 19 | 0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // ( |
ThunderSoft | 0:7f36c2de1de6 | 20 | 0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // ) |
ThunderSoft | 0:7f36c2de1de6 | 21 | 0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // * |
ThunderSoft | 0:7f36c2de1de6 | 22 | 0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // + |
ThunderSoft | 0:7f36c2de1de6 | 23 | 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // , |
ThunderSoft | 0:7f36c2de1de6 | 24 | 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // - |
ThunderSoft | 0:7f36c2de1de6 | 25 | 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // . |
ThunderSoft | 0:7f36c2de1de6 | 26 | 0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash) |
ThunderSoft | 0:7f36c2de1de6 | 27 | 0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30 |
ThunderSoft | 0:7f36c2de1de6 | 28 | 0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1 |
ThunderSoft | 0:7f36c2de1de6 | 29 | 0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2 |
ThunderSoft | 0:7f36c2de1de6 | 30 | 0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3 |
ThunderSoft | 0:7f36c2de1de6 | 31 | 0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4 |
ThunderSoft | 0:7f36c2de1de6 | 32 | 0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5 |
ThunderSoft | 0:7f36c2de1de6 | 33 | 0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6 |
ThunderSoft | 0:7f36c2de1de6 | 34 | 0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7 |
ThunderSoft | 0:7f36c2de1de6 | 35 | 0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8 |
ThunderSoft | 0:7f36c2de1de6 | 36 | 0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9 |
ThunderSoft | 0:7f36c2de1de6 | 37 | 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // : |
ThunderSoft | 0:7f36c2de1de6 | 38 | 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ; |
ThunderSoft | 0:7f36c2de1de6 | 39 | 0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // < |
ThunderSoft | 0:7f36c2de1de6 | 40 | 0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // = |
ThunderSoft | 0:7f36c2de1de6 | 41 | 0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // > |
ThunderSoft | 0:7f36c2de1de6 | 42 | 0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ? |
ThunderSoft | 0:7f36c2de1de6 | 43 | 0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00, // @ 0x40 |
ThunderSoft | 0:7f36c2de1de6 | 44 | 0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A |
ThunderSoft | 0:7f36c2de1de6 | 45 | 0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B |
ThunderSoft | 0:7f36c2de1de6 | 46 | 0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C |
ThunderSoft | 0:7f36c2de1de6 | 47 | 0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D |
ThunderSoft | 0:7f36c2de1de6 | 48 | 0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E |
ThunderSoft | 0:7f36c2de1de6 | 49 | 0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F |
ThunderSoft | 0:7f36c2de1de6 | 50 | 0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G |
ThunderSoft | 0:7f36c2de1de6 | 51 | 0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H |
ThunderSoft | 0:7f36c2de1de6 | 52 | 0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I |
ThunderSoft | 0:7f36c2de1de6 | 53 | 0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J |
ThunderSoft | 0:7f36c2de1de6 | 54 | 0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K |
ThunderSoft | 0:7f36c2de1de6 | 55 | 0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L |
ThunderSoft | 0:7f36c2de1de6 | 56 | 0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M |
ThunderSoft | 0:7f36c2de1de6 | 57 | 0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N |
ThunderSoft | 0:7f36c2de1de6 | 58 | 0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O |
ThunderSoft | 0:7f36c2de1de6 | 59 | 0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50 |
ThunderSoft | 0:7f36c2de1de6 | 60 | 0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q |
ThunderSoft | 0:7f36c2de1de6 | 61 | 0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R |
ThunderSoft | 0:7f36c2de1de6 | 62 | 0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S |
ThunderSoft | 0:7f36c2de1de6 | 63 | 0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T |
ThunderSoft | 0:7f36c2de1de6 | 64 | 0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U |
ThunderSoft | 0:7f36c2de1de6 | 65 | 0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V |
ThunderSoft | 0:7f36c2de1de6 | 66 | 0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W |
ThunderSoft | 0:7f36c2de1de6 | 67 | 0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X |
ThunderSoft | 0:7f36c2de1de6 | 68 | 0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y |
ThunderSoft | 0:7f36c2de1de6 | 69 | 0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z |
ThunderSoft | 0:7f36c2de1de6 | 70 | 0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [ |
ThunderSoft | 0:7f36c2de1de6 | 71 | 0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash) |
ThunderSoft | 0:7f36c2de1de6 | 72 | 0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ] |
ThunderSoft | 0:7f36c2de1de6 | 73 | 0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^ |
ThunderSoft | 0:7f36c2de1de6 | 74 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _ |
ThunderSoft | 0:7f36c2de1de6 | 75 | 0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60 |
ThunderSoft | 0:7f36c2de1de6 | 76 | 0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a |
ThunderSoft | 0:7f36c2de1de6 | 77 | 0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b |
ThunderSoft | 0:7f36c2de1de6 | 78 | 0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c |
ThunderSoft | 0:7f36c2de1de6 | 79 | 0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d |
ThunderSoft | 0:7f36c2de1de6 | 80 | 0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e |
ThunderSoft | 0:7f36c2de1de6 | 81 | 0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f |
ThunderSoft | 0:7f36c2de1de6 | 82 | 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g |
ThunderSoft | 0:7f36c2de1de6 | 83 | 0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h |
ThunderSoft | 0:7f36c2de1de6 | 84 | 0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i |
ThunderSoft | 0:7f36c2de1de6 | 85 | 0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j |
ThunderSoft | 0:7f36c2de1de6 | 86 | 0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k |
ThunderSoft | 0:7f36c2de1de6 | 87 | 0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l |
ThunderSoft | 0:7f36c2de1de6 | 88 | 0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m |
ThunderSoft | 0:7f36c2de1de6 | 89 | 0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n |
ThunderSoft | 0:7f36c2de1de6 | 90 | 0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o |
ThunderSoft | 0:7f36c2de1de6 | 91 | 0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p |
ThunderSoft | 0:7f36c2de1de6 | 92 | 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q |
ThunderSoft | 0:7f36c2de1de6 | 93 | 0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r |
ThunderSoft | 0:7f36c2de1de6 | 94 | 0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s |
ThunderSoft | 0:7f36c2de1de6 | 95 | 0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t |
ThunderSoft | 0:7f36c2de1de6 | 96 | 0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u |
ThunderSoft | 0:7f36c2de1de6 | 97 | 0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v |
ThunderSoft | 0:7f36c2de1de6 | 98 | 0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w |
ThunderSoft | 0:7f36c2de1de6 | 99 | 0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x |
ThunderSoft | 0:7f36c2de1de6 | 100 | 0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y |
ThunderSoft | 0:7f36c2de1de6 | 101 | 0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z |
ThunderSoft | 0:7f36c2de1de6 | 102 | 0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // { |
ThunderSoft | 0:7f36c2de1de6 | 103 | 0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // | |
ThunderSoft | 0:7f36c2de1de6 | 104 | 0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // } |
ThunderSoft | 0:7f36c2de1de6 | 105 | 0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~ |
ThunderSoft | 0:7f36c2de1de6 | 106 | 0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00}; // DEL |
ThunderSoft | 0:7f36c2de1de6 | 107 | #define read_font_line(__char, __line) font[((uint16_t)(__char)) * FONT_CHAR_HEIGHT+(__line)] |
ThunderSoft | 0:7f36c2de1de6 | 108 | |
ThunderSoft | 0:7f36c2de1de6 | 109 | GraphicsDisplay::GraphicsDisplay(const char *name):TextDisplay(name) { |
ThunderSoft | 0:7f36c2de1de6 | 110 | foreground(WHITE); |
ThunderSoft | 0:7f36c2de1de6 | 111 | background(BLACK); |
ThunderSoft | 0:7f36c2de1de6 | 112 | } |
ThunderSoft | 0:7f36c2de1de6 | 113 | |
ThunderSoft | 0:7f36c2de1de6 | 114 | void GraphicsDisplay::character(int column, int row, int value) |
ThunderSoft | 0:7f36c2de1de6 | 115 | { |
ThunderSoft | 0:7f36c2de1de6 | 116 | blitbit(column * 8, row * 8, 8, 8, (char*)&(FONT8x8[value - 0x1F][0])); |
ThunderSoft | 0:7f36c2de1de6 | 117 | } |
ThunderSoft | 0:7f36c2de1de6 | 118 | |
ThunderSoft | 0:7f36c2de1de6 | 119 | void GraphicsDisplay::character_(int x, int y, char ch,int colour) { |
ThunderSoft | 0:7f36c2de1de6 | 120 | uint8_t temp; |
ThunderSoft | 0:7f36c2de1de6 | 121 | uint8_t pos,t; |
ThunderSoft | 0:7f36c2de1de6 | 122 | //blitbit(column * 8, row * 8, 8, 8, (char*)&(FONT8x8[value - 0x1F][0])); |
ThunderSoft | 0:7f36c2de1de6 | 123 | if ((x > (width() - FONT_CHAR_WIDTH)) || (y > (height() - FONT_CHAR_HEIGHT))) { |
ThunderSoft | 0:7f36c2de1de6 | 124 | return; |
ThunderSoft | 0:7f36c2de1de6 | 125 | } |
ThunderSoft | 0:7f36c2de1de6 | 126 | |
ThunderSoft | 0:7f36c2de1de6 | 127 | for(pos=0;pos<FONT_CHAR_HEIGHT;pos++) { |
ThunderSoft | 0:7f36c2de1de6 | 128 | temp = read_font_line(ch, pos); |
ThunderSoft | 0:7f36c2de1de6 | 129 | for(t=0;t<FONT_CHAR_WIDTH;t++) { |
ThunderSoft | 0:7f36c2de1de6 | 130 | if (temp & 0x01) { |
ThunderSoft | 0:7f36c2de1de6 | 131 | //setAddress(x + t, y + pos, x + t, y + pos); |
ThunderSoft | 0:7f36c2de1de6 | 132 | pixel(x + t,y + pos,colour); |
ThunderSoft | 0:7f36c2de1de6 | 133 | //sendData(colour); |
ThunderSoft | 0:7f36c2de1de6 | 134 | //drawPoint(x + t, y + pos); |
ThunderSoft | 0:7f36c2de1de6 | 135 | } |
ThunderSoft | 0:7f36c2de1de6 | 136 | temp>>=1; |
ThunderSoft | 0:7f36c2de1de6 | 137 | } |
ThunderSoft | 0:7f36c2de1de6 | 138 | } |
ThunderSoft | 0:7f36c2de1de6 | 139 | |
ThunderSoft | 0:7f36c2de1de6 | 140 | } |
ThunderSoft | 0:7f36c2de1de6 | 141 | |
ThunderSoft | 0:7f36c2de1de6 | 142 | void GraphicsDisplay::window(unsigned int x,unsigned int y,unsigned int w,unsigned int h) { |
ThunderSoft | 0:7f36c2de1de6 | 143 | // current pixel location |
ThunderSoft | 0:7f36c2de1de6 | 144 | _x = x; |
ThunderSoft | 0:7f36c2de1de6 | 145 | _y = y; |
ThunderSoft | 0:7f36c2de1de6 | 146 | // window settings |
ThunderSoft | 0:7f36c2de1de6 | 147 | _x1 = x; |
ThunderSoft | 0:7f36c2de1de6 | 148 | _x2 = x + w - 1; |
ThunderSoft | 0:7f36c2de1de6 | 149 | _y1 = y; |
ThunderSoft | 0:7f36c2de1de6 | 150 | _y2 = y + h - 1; |
ThunderSoft | 0:7f36c2de1de6 | 151 | } |
ThunderSoft | 0:7f36c2de1de6 | 152 | |
ThunderSoft | 0:7f36c2de1de6 | 153 | void GraphicsDisplay::putp(int colour) { |
ThunderSoft | 0:7f36c2de1de6 | 154 | // put pixel at current pixel location |
ThunderSoft | 0:7f36c2de1de6 | 155 | pixel(_x, _y, colour); |
ThunderSoft | 0:7f36c2de1de6 | 156 | // update pixel location based on window settings |
ThunderSoft | 0:7f36c2de1de6 | 157 | _x++; |
ThunderSoft | 0:7f36c2de1de6 | 158 | if(_x > _x2) { |
ThunderSoft | 0:7f36c2de1de6 | 159 | _x = _x1; |
ThunderSoft | 0:7f36c2de1de6 | 160 | _y++; |
ThunderSoft | 0:7f36c2de1de6 | 161 | if(_y > _y2) { |
ThunderSoft | 0:7f36c2de1de6 | 162 | _y = _y1; |
ThunderSoft | 0:7f36c2de1de6 | 163 | } |
ThunderSoft | 0:7f36c2de1de6 | 164 | } |
ThunderSoft | 0:7f36c2de1de6 | 165 | } |
ThunderSoft | 0:7f36c2de1de6 | 166 | |
ThunderSoft | 0:7f36c2de1de6 | 167 | void GraphicsDisplay::fill(int x, int y, int w, int h, int colour) { |
ThunderSoft | 0:7f36c2de1de6 | 168 | window(x, y, w, h); |
ThunderSoft | 0:7f36c2de1de6 | 169 | for(int i=0; i<w*h; i++) { |
ThunderSoft | 0:7f36c2de1de6 | 170 | putp(colour); |
ThunderSoft | 0:7f36c2de1de6 | 171 | } |
ThunderSoft | 0:7f36c2de1de6 | 172 | } |
ThunderSoft | 0:7f36c2de1de6 | 173 | |
ThunderSoft | 0:7f36c2de1de6 | 174 | void GraphicsDisplay::cls() { |
ThunderSoft | 0:7f36c2de1de6 | 175 | fill(0, 0, width(), height(), _background); |
ThunderSoft | 0:7f36c2de1de6 | 176 | } |
ThunderSoft | 0:7f36c2de1de6 | 177 | |
ThunderSoft | 0:7f36c2de1de6 | 178 | void GraphicsDisplay::blit(int x, int y, int w, int h, const int *colour) { |
ThunderSoft | 0:7f36c2de1de6 | 179 | window(x, y, w, h); |
ThunderSoft | 0:7f36c2de1de6 | 180 | for(int i=0; i<w*h; i++) { |
ThunderSoft | 0:7f36c2de1de6 | 181 | putp(colour[i]); |
ThunderSoft | 0:7f36c2de1de6 | 182 | } |
ThunderSoft | 0:7f36c2de1de6 | 183 | } |
ThunderSoft | 0:7f36c2de1de6 | 184 | |
ThunderSoft | 0:7f36c2de1de6 | 185 | void GraphicsDisplay::lcd_display_char(uint16_t hwXpos, //specify x position. |
ThunderSoft | 0:7f36c2de1de6 | 186 | uint16_t hwYpos, //specify y position. |
ThunderSoft | 0:7f36c2de1de6 | 187 | uint8_t chChr, //a char is display. |
ThunderSoft | 0:7f36c2de1de6 | 188 | uint8_t chSize, //specify the size of the char |
ThunderSoft | 0:7f36c2de1de6 | 189 | uint16_t hwColor) |
ThunderSoft | 0:7f36c2de1de6 | 190 | { |
ThunderSoft | 0:7f36c2de1de6 | 191 | uint8_t i, j, chTemp; |
ThunderSoft | 0:7f36c2de1de6 | 192 | uint16_t hwYpos0 = hwYpos, hwColorVal = 0; |
ThunderSoft | 0:7f36c2de1de6 | 193 | |
ThunderSoft | 0:7f36c2de1de6 | 194 | if (hwXpos >= width() || hwYpos >= height()) { |
ThunderSoft | 0:7f36c2de1de6 | 195 | return; |
ThunderSoft | 0:7f36c2de1de6 | 196 | } |
ThunderSoft | 0:7f36c2de1de6 | 197 | |
ThunderSoft | 0:7f36c2de1de6 | 198 | |
ThunderSoft | 0:7f36c2de1de6 | 199 | for (i = 0; i < chSize; i ++) { |
ThunderSoft | 0:7f36c2de1de6 | 200 | // if (FONT_1206 == chSize) { |
ThunderSoft | 0:7f36c2de1de6 | 201 | // chTemp = FONT8x8[chChr - 0x20][i]; |
ThunderSoft | 0:7f36c2de1de6 | 202 | // } else if (FONT_1608 == chSize) { |
ThunderSoft | 0:7f36c2de1de6 | 203 | // chTemp = FONT8x8[chChr - 0x20][i]; |
ThunderSoft | 0:7f36c2de1de6 | 204 | // } |
ThunderSoft | 0:7f36c2de1de6 | 205 | chTemp = FONT8x8[chChr - 0x20][i]; |
ThunderSoft | 0:7f36c2de1de6 | 206 | |
ThunderSoft | 0:7f36c2de1de6 | 207 | for (j = 0; j < 8; j ++) { |
ThunderSoft | 0:7f36c2de1de6 | 208 | if (chTemp & 0x80) { |
ThunderSoft | 0:7f36c2de1de6 | 209 | hwColorVal = hwColor; |
ThunderSoft | 0:7f36c2de1de6 | 210 | //lcd_draw_point(hwXpos, hwYpos, hwColorVal); |
ThunderSoft | 0:7f36c2de1de6 | 211 | pixel(hwXpos,hwYpos,hwColor); |
ThunderSoft | 0:7f36c2de1de6 | 212 | } |
ThunderSoft | 0:7f36c2de1de6 | 213 | chTemp <<= 1; |
ThunderSoft | 0:7f36c2de1de6 | 214 | hwYpos ++; |
ThunderSoft | 0:7f36c2de1de6 | 215 | if ((hwYpos - hwYpos0) == chSize) { |
ThunderSoft | 0:7f36c2de1de6 | 216 | hwYpos = hwYpos0; |
ThunderSoft | 0:7f36c2de1de6 | 217 | hwXpos ++; |
ThunderSoft | 0:7f36c2de1de6 | 218 | break; |
ThunderSoft | 0:7f36c2de1de6 | 219 | } |
ThunderSoft | 0:7f36c2de1de6 | 220 | } |
ThunderSoft | 0:7f36c2de1de6 | 221 | } |
ThunderSoft | 0:7f36c2de1de6 | 222 | } |
ThunderSoft | 0:7f36c2de1de6 | 223 | |
ThunderSoft | 0:7f36c2de1de6 | 224 | void GraphicsDisplay::blitbit(int x, int y, int w, int h, const char* colour) { |
ThunderSoft | 0:7f36c2de1de6 | 225 | window(x, y, w, h); |
ThunderSoft | 0:7f36c2de1de6 | 226 | for(int i = 0; i < w*h; i++) { |
ThunderSoft | 0:7f36c2de1de6 | 227 | char byte = colour[i >> 3]; |
ThunderSoft | 0:7f36c2de1de6 | 228 | int offset = i & 0x7; |
ThunderSoft | 0:7f36c2de1de6 | 229 | int c = ((byte << offset) & 0x80) ? _foreground : _background; |
ThunderSoft | 0:7f36c2de1de6 | 230 | putp(c); |
ThunderSoft | 0:7f36c2de1de6 | 231 | } |
ThunderSoft | 0:7f36c2de1de6 | 232 | } |
ThunderSoft | 0:7f36c2de1de6 | 233 | |
ThunderSoft | 0:7f36c2de1de6 | 234 | int GraphicsDisplay::columns() { |
ThunderSoft | 0:7f36c2de1de6 | 235 | return width() / 8; |
ThunderSoft | 0:7f36c2de1de6 | 236 | } |
ThunderSoft | 0:7f36c2de1de6 | 237 | |
ThunderSoft | 0:7f36c2de1de6 | 238 | int GraphicsDisplay::rows() { |
ThunderSoft | 0:7f36c2de1de6 | 239 | return height() / 8; |
ThunderSoft | 0:7f36c2de1de6 | 240 | } |
ThunderSoft | 0:7f36c2de1de6 | 241 | |
ThunderSoft | 0:7f36c2de1de6 | 242 |