Creating a project for TT_Mxx

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?

UserRevisionLine numberNew 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