MobileLCD library for the Phillips controlled Nokia LCD from sparkfun

Committer:
PetePT
Date:
Wed May 15 09:06:05 2013 +0000
Revision:
0:7b46826310c5
MobileLCD library for the Phillips controlled Nokia LCD from sparkfun

Who changed what in which revision?

UserRevisionLine numberNew contents of line
PetePT 0:7b46826310c5 1 /* mbed Library - Nokia LCD Labelled "X3"
PetePT 0:7b46826310c5 2 * This is using the Philips PCF8833 controller
PetePT 0:7b46826310c5 3 * Copyright (c) 2009 P.R.Green
PetePT 0:7b46826310c5 4 */
PetePT 0:7b46826310c5 5
PetePT 0:7b46826310c5 6 #include "MobileLCD.h"
PetePT 0:7b46826310c5 7
PetePT 0:7b46826310c5 8 #include "mbed.h"
PetePT 0:7b46826310c5 9
PetePT 0:7b46826310c5 10 using namespace mbed;
PetePT 0:7b46826310c5 11
PetePT 0:7b46826310c5 12 MobileLCD::MobileLCD(PinName mosi, PinName miso, PinName clk, PinName cs, PinName rst)
PetePT 0:7b46826310c5 13 : _spi(mosi, miso, clk)
PetePT 0:7b46826310c5 14 , _rst(rst)
PetePT 0:7b46826310c5 15 , _cs(cs) {
PetePT 0:7b46826310c5 16 _row = 0;
PetePT 0:7b46826310c5 17 _column = 0;
PetePT 0:7b46826310c5 18 _rows = 16;
PetePT 0:7b46826310c5 19 _columns = 16;
PetePT 0:7b46826310c5 20 _width = 130;
PetePT 0:7b46826310c5 21 _height = 130;
PetePT 0:7b46826310c5 22 foreground(0xFFFF);
PetePT 0:7b46826310c5 23 background(0x0000);
PetePT 0:7b46826310c5 24 reset();
PetePT 0:7b46826310c5 25 }
PetePT 0:7b46826310c5 26
PetePT 0:7b46826310c5 27 void MobileLCD::reset() {
PetePT 0:7b46826310c5 28 long i;
PetePT 0:7b46826310c5 29 _cs = 1;
PetePT 0:7b46826310c5 30 _rst = 0;
PetePT 0:7b46826310c5 31 _spi.format(9);
PetePT 0:7b46826310c5 32 _spi.frequency(5000000);
PetePT 0:7b46826310c5 33 wait(0.020);
PetePT 0:7b46826310c5 34 _rst = 1;
PetePT 0:7b46826310c5 35 wait(0.020);
PetePT 0:7b46826310c5 36 _select();
PetePT 0:7b46826310c5 37 command(0x11);//SLEEPOUT
PetePT 0:7b46826310c5 38 command(0x3A);//COLMOD
PetePT 0:7b46826310c5 39 data(0x05);//0x03 = 16bits-per-pixel 5:6:5 mode
PetePT 0:7b46826310c5 40 command(0x36);//MADCTL
PetePT 0:7b46826310c5 41 data(0x60);// 0x60 = mirror x, vertical RAM write
PetePT 0:7b46826310c5 42 command(0x25);//SETCON
PetePT 0:7b46826310c5 43 data(0x30);// contrast 0x30
PetePT 0:7b46826310c5 44 wait(0.002);
PetePT 0:7b46826310c5 45 command(0x29);//DISPON
PetePT 0:7b46826310c5 46 command(0x03);//BSTRON
PetePT 0:7b46826310c5 47
PetePT 0:7b46826310c5 48 command(0x2B);//Row Address Set
PetePT 0:7b46826310c5 49 data(0);
PetePT 0:7b46826310c5 50 data(131);
PetePT 0:7b46826310c5 51
PetePT 0:7b46826310c5 52 command(0x2A);//Column Address Set
PetePT 0:7b46826310c5 53 data(0);
PetePT 0:7b46826310c5 54 data(131);
PetePT 0:7b46826310c5 55
PetePT 0:7b46826310c5 56 command(0x2C);//RAMWR
PetePT 0:7b46826310c5 57 //Clear RAM to black
PetePT 0:7b46826310c5 58 for (i=0; i < (132 * 132); i++) {
PetePT 0:7b46826310c5 59 data(0);
PetePT 0:7b46826310c5 60 data(0);
PetePT 0:7b46826310c5 61 }
PetePT 0:7b46826310c5 62 _deselect();
PetePT 0:7b46826310c5 63 }
PetePT 0:7b46826310c5 64
PetePT 0:7b46826310c5 65 void MobileLCD::command(int value) {
PetePT 0:7b46826310c5 66 _spi.write(value & 0xFF);
PetePT 0:7b46826310c5 67 }
PetePT 0:7b46826310c5 68
PetePT 0:7b46826310c5 69 void MobileLCD::data(int value) {
PetePT 0:7b46826310c5 70 _spi.write(value | 0x100);
PetePT 0:7b46826310c5 71 }
PetePT 0:7b46826310c5 72
PetePT 0:7b46826310c5 73 void MobileLCD::_select() {
PetePT 0:7b46826310c5 74 _spi.format(9);
PetePT 0:7b46826310c5 75 _spi.frequency(5000000);
PetePT 0:7b46826310c5 76 _cs = 0;
PetePT 0:7b46826310c5 77 }
PetePT 0:7b46826310c5 78
PetePT 0:7b46826310c5 79 void MobileLCD::_deselect() {
PetePT 0:7b46826310c5 80 _cs = 1;
PetePT 0:7b46826310c5 81 }
PetePT 0:7b46826310c5 82
PetePT 0:7b46826310c5 83 void MobileLCD::_window(int x, int y, int width, int height) {
PetePT 0:7b46826310c5 84 int x1, x2, y1, y2;
PetePT 0:7b46826310c5 85 switch (0) { //_rotation) {
PetePT 0:7b46826310c5 86 default:
PetePT 0:7b46826310c5 87 case 0:
PetePT 0:7b46826310c5 88 x1 = x + 1;
PetePT 0:7b46826310c5 89 y1 = y + 1;
PetePT 0:7b46826310c5 90 x2 = x1 + width - 1;
PetePT 0:7b46826310c5 91 y2 = y1 + height -1 ;
PetePT 0:7b46826310c5 92 break;
PetePT 0:7b46826310c5 93 case 1:
PetePT 0:7b46826310c5 94 x1 = y + 1;
PetePT 0:7b46826310c5 95 y1 = x + 1;
PetePT 0:7b46826310c5 96 x2 = x1 + height - 1;
PetePT 0:7b46826310c5 97 y2 = y1 + width - 1;
PetePT 0:7b46826310c5 98 break;
PetePT 0:7b46826310c5 99 case 2:
PetePT 0:7b46826310c5 100 x1 = x + 1;
PetePT 0:7b46826310c5 101 y1 = y + 3;
PetePT 0:7b46826310c5 102 x2 = x1 + width - 1;
PetePT 0:7b46826310c5 103 y2 = y1 + height - 1;
PetePT 0:7b46826310c5 104 break;
PetePT 0:7b46826310c5 105 case 3:
PetePT 0:7b46826310c5 106 x1 = y + 3;
PetePT 0:7b46826310c5 107 y1 = x + 3;
PetePT 0:7b46826310c5 108 x2 = x1 + height - 1;
PetePT 0:7b46826310c5 109 y2 = y1 + width - 1;
PetePT 0:7b46826310c5 110 break;
PetePT 0:7b46826310c5 111 }
PetePT 0:7b46826310c5 112 command(0x2A); //CASET column
PetePT 0:7b46826310c5 113 data(x1);
PetePT 0:7b46826310c5 114 data(x2);
PetePT 0:7b46826310c5 115 command(0x2B); //PASET page
PetePT 0:7b46826310c5 116 data(y1);
PetePT 0:7b46826310c5 117 data(y2);
PetePT 0:7b46826310c5 118 command(0x2C); //RAMWR start write to ram
PetePT 0:7b46826310c5 119 }
PetePT 0:7b46826310c5 120
PetePT 0:7b46826310c5 121 void MobileLCD::_putp(int colour) {
PetePT 0:7b46826310c5 122
PetePT 0:7b46826310c5 123 data((colour >> 8) & 0xFF);
PetePT 0:7b46826310c5 124 data(colour & 0xFF);
PetePT 0:7b46826310c5 125
PetePT 0:7b46826310c5 126 }
PetePT 0:7b46826310c5 127 /*
PetePT 0:7b46826310c5 128 void MobileLCD::orientation() {
PetePT 0:7b46826310c5 129 int m;
PetePT 0:7b46826310c5 130 switch (0) { //_rotation) {
PetePT 0:7b46826310c5 131 case 0:
PetePT 0:7b46826310c5 132 default:
PetePT 0:7b46826310c5 133 m = 3;
PetePT 0:7b46826310c5 134 break;
PetePT 0:7b46826310c5 135 case 2:
PetePT 0:7b46826310c5 136 m = 0;
PetePT 0:7b46826310c5 137 break;
PetePT 0:7b46826310c5 138 case 1:
PetePT 0:7b46826310c5 139 m = 5;
PetePT 0:7b46826310c5 140 break;
PetePT 0:7b46826310c5 141 case 3:
PetePT 0:7b46826310c5 142 m = 6;
PetePT 0:7b46826310c5 143 break;
PetePT 0:7b46826310c5 144 }
PetePT 0:7b46826310c5 145
PetePT 0:7b46826310c5 146 command(0xBC); // data control
PetePT 0:7b46826310c5 147 data(m); // scan dirs
PetePT 0:7b46826310c5 148 data(1); // RGB
PetePT 0:7b46826310c5 149 data(4); // grayscale
PetePT 0:7b46826310c5 150 }
PetePT 0:7b46826310c5 151 */
PetePT 0:7b46826310c5 152
PetePT 0:7b46826310c5 153 const unsigned char FONT8x8[97][8] = {
PetePT 0:7b46826310c5 154 0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char
PetePT 0:7b46826310c5 155 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20
PetePT 0:7b46826310c5 156 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // !
PetePT 0:7b46826310c5 157 0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // "
PetePT 0:7b46826310c5 158 0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // #
PetePT 0:7b46826310c5 159 0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $
PetePT 0:7b46826310c5 160 0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // %
PetePT 0:7b46826310c5 161 0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // &
PetePT 0:7b46826310c5 162 0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // '
PetePT 0:7b46826310c5 163 0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // (
PetePT 0:7b46826310c5 164 0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // )
PetePT 0:7b46826310c5 165 0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // *
PetePT 0:7b46826310c5 166 0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // +
PetePT 0:7b46826310c5 167 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // ,
PetePT 0:7b46826310c5 168 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // -
PetePT 0:7b46826310c5 169 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // .
PetePT 0:7b46826310c5 170 0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash)
PetePT 0:7b46826310c5 171 0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30
PetePT 0:7b46826310c5 172 0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1
PetePT 0:7b46826310c5 173 0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2
PetePT 0:7b46826310c5 174 0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3
PetePT 0:7b46826310c5 175 0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4
PetePT 0:7b46826310c5 176 0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5
PetePT 0:7b46826310c5 177 0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6
PetePT 0:7b46826310c5 178 0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7
PetePT 0:7b46826310c5 179 0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8
PetePT 0:7b46826310c5 180 0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9
PetePT 0:7b46826310c5 181 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // :
PetePT 0:7b46826310c5 182 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ;
PetePT 0:7b46826310c5 183 0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // <
PetePT 0:7b46826310c5 184 0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // =
PetePT 0:7b46826310c5 185 0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // >
PetePT 0:7b46826310c5 186 0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ?
PetePT 0:7b46826310c5 187 0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00, // @ 0x40
PetePT 0:7b46826310c5 188 0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A
PetePT 0:7b46826310c5 189 0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B
PetePT 0:7b46826310c5 190 0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C
PetePT 0:7b46826310c5 191 0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D
PetePT 0:7b46826310c5 192 0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E
PetePT 0:7b46826310c5 193 0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F
PetePT 0:7b46826310c5 194 0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G
PetePT 0:7b46826310c5 195 0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H
PetePT 0:7b46826310c5 196 0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I
PetePT 0:7b46826310c5 197 0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J
PetePT 0:7b46826310c5 198 0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K
PetePT 0:7b46826310c5 199 0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L
PetePT 0:7b46826310c5 200 0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M
PetePT 0:7b46826310c5 201 0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N
PetePT 0:7b46826310c5 202 0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O
PetePT 0:7b46826310c5 203 0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50
PetePT 0:7b46826310c5 204 0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q
PetePT 0:7b46826310c5 205 0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R
PetePT 0:7b46826310c5 206 0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S
PetePT 0:7b46826310c5 207 0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T
PetePT 0:7b46826310c5 208 0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U
PetePT 0:7b46826310c5 209 0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V
PetePT 0:7b46826310c5 210 0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W
PetePT 0:7b46826310c5 211 0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X
PetePT 0:7b46826310c5 212 0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y
PetePT 0:7b46826310c5 213 0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z
PetePT 0:7b46826310c5 214 0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [
PetePT 0:7b46826310c5 215 0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash)
PetePT 0:7b46826310c5 216 0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ]
PetePT 0:7b46826310c5 217 0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^
PetePT 0:7b46826310c5 218 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _
PetePT 0:7b46826310c5 219 0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60
PetePT 0:7b46826310c5 220 0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a
PetePT 0:7b46826310c5 221 0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b
PetePT 0:7b46826310c5 222 0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c
PetePT 0:7b46826310c5 223 0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d
PetePT 0:7b46826310c5 224 0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e
PetePT 0:7b46826310c5 225 0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f
PetePT 0:7b46826310c5 226 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g
PetePT 0:7b46826310c5 227 0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h
PetePT 0:7b46826310c5 228 0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i
PetePT 0:7b46826310c5 229 0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j
PetePT 0:7b46826310c5 230 0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k
PetePT 0:7b46826310c5 231 0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l
PetePT 0:7b46826310c5 232 0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m
PetePT 0:7b46826310c5 233 0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n
PetePT 0:7b46826310c5 234 0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o
PetePT 0:7b46826310c5 235 0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p
PetePT 0:7b46826310c5 236 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q
PetePT 0:7b46826310c5 237 0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r
PetePT 0:7b46826310c5 238 0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s
PetePT 0:7b46826310c5 239 0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t
PetePT 0:7b46826310c5 240 0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u
PetePT 0:7b46826310c5 241 0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v
PetePT 0:7b46826310c5 242 0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w
PetePT 0:7b46826310c5 243 0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x
PetePT 0:7b46826310c5 244 0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y
PetePT 0:7b46826310c5 245 0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z
PetePT 0:7b46826310c5 246 0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // {
PetePT 0:7b46826310c5 247 0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // |
PetePT 0:7b46826310c5 248 0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // }
PetePT 0:7b46826310c5 249 0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~
PetePT 0:7b46826310c5 250 0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00
PetePT 0:7b46826310c5 251 }; // DEL
PetePT 0:7b46826310c5 252
PetePT 0:7b46826310c5 253 void MobileLCD::locate(int column, int row) {
PetePT 0:7b46826310c5 254 _row = row;
PetePT 0:7b46826310c5 255 _column = column;
PetePT 0:7b46826310c5 256 }
PetePT 0:7b46826310c5 257
PetePT 0:7b46826310c5 258 void MobileLCD::newline() {
PetePT 0:7b46826310c5 259 _column = 0;
PetePT 0:7b46826310c5 260 _row++;
PetePT 0:7b46826310c5 261 if (_row >= _rows) {
PetePT 0:7b46826310c5 262 _row = 0;
PetePT 0:7b46826310c5 263 }
PetePT 0:7b46826310c5 264 }
PetePT 0:7b46826310c5 265
PetePT 0:7b46826310c5 266 int MobileLCD::_putc(int value) {
PetePT 0:7b46826310c5 267 int x = _column * 8; // FIXME: Char sizes
PetePT 0:7b46826310c5 268 int y = _row * 8;
PetePT 0:7b46826310c5 269 bitblit(x , y , 8, 8, (char*)&(FONT8x8[value - 0x1F][0]));
PetePT 0:7b46826310c5 270
PetePT 0:7b46826310c5 271 _column++;
PetePT 0:7b46826310c5 272
PetePT 0:7b46826310c5 273 if (_column >= _columns) {
PetePT 0:7b46826310c5 274 _row++;
PetePT 0:7b46826310c5 275 _column = 0;
PetePT 0:7b46826310c5 276 }
PetePT 0:7b46826310c5 277
PetePT 0:7b46826310c5 278 if (_row >= _rows) {
PetePT 0:7b46826310c5 279 _row = 0;
PetePT 0:7b46826310c5 280 }
PetePT 0:7b46826310c5 281
PetePT 0:7b46826310c5 282 return value;
PetePT 0:7b46826310c5 283 }
PetePT 0:7b46826310c5 284
PetePT 0:7b46826310c5 285 void MobileLCD::cls() {
PetePT 0:7b46826310c5 286 fill(0, 0, _width, _height, _background);
PetePT 0:7b46826310c5 287 _row = 0;
PetePT 0:7b46826310c5 288 _column = 0;
PetePT 0:7b46826310c5 289 }
PetePT 0:7b46826310c5 290
PetePT 0:7b46826310c5 291 int MobileLCD::width() {
PetePT 0:7b46826310c5 292 return _width;
PetePT 0:7b46826310c5 293 }
PetePT 0:7b46826310c5 294
PetePT 0:7b46826310c5 295 int MobileLCD::height() {
PetePT 0:7b46826310c5 296 return _height;
PetePT 0:7b46826310c5 297 }
PetePT 0:7b46826310c5 298
PetePT 0:7b46826310c5 299 int MobileLCD::columns() {
PetePT 0:7b46826310c5 300 return _columns;
PetePT 0:7b46826310c5 301 }
PetePT 0:7b46826310c5 302
PetePT 0:7b46826310c5 303 int MobileLCD::rows() {
PetePT 0:7b46826310c5 304 return _rows;
PetePT 0:7b46826310c5 305 }
PetePT 0:7b46826310c5 306
PetePT 0:7b46826310c5 307 void MobileLCD::window(int x, int y, int width, int height) {
PetePT 0:7b46826310c5 308 _select();
PetePT 0:7b46826310c5 309 _window(x, y, width, height);
PetePT 0:7b46826310c5 310 _deselect();
PetePT 0:7b46826310c5 311 }
PetePT 0:7b46826310c5 312
PetePT 0:7b46826310c5 313 void MobileLCD::putp(int colour) {
PetePT 0:7b46826310c5 314 _select();
PetePT 0:7b46826310c5 315 _putp(colour);
PetePT 0:7b46826310c5 316 _deselect();
PetePT 0:7b46826310c5 317 }
PetePT 0:7b46826310c5 318
PetePT 0:7b46826310c5 319 void MobileLCD::pixel(int x, int y, int colour) {
PetePT 0:7b46826310c5 320 _select();
PetePT 0:7b46826310c5 321 _window(x, y, 1, 1);
PetePT 0:7b46826310c5 322 _putp(colour);
PetePT 0:7b46826310c5 323 _deselect();
PetePT 0:7b46826310c5 324 }
PetePT 0:7b46826310c5 325
PetePT 0:7b46826310c5 326 void MobileLCD::fill(int x, int y, int width, int height, int colour) {
PetePT 0:7b46826310c5 327 _select();
PetePT 0:7b46826310c5 328 _window(x, y, width, height);
PetePT 0:7b46826310c5 329 for (int i=0; i<width*height; i++) {
PetePT 0:7b46826310c5 330 _putp(colour);
PetePT 0:7b46826310c5 331 }
PetePT 0:7b46826310c5 332 _window(0, 0, _width, _height);
PetePT 0:7b46826310c5 333 _deselect();
PetePT 0:7b46826310c5 334 }
PetePT 0:7b46826310c5 335
PetePT 0:7b46826310c5 336
PetePT 0:7b46826310c5 337 void MobileLCD::blit(int x, int y, int width, int height, const int* colour) {
PetePT 0:7b46826310c5 338 _select();
PetePT 0:7b46826310c5 339 _window(x, y, width, height);
PetePT 0:7b46826310c5 340 for (int i=0; i<width*height; i++) {
PetePT 0:7b46826310c5 341 _putp(colour[i]);
PetePT 0:7b46826310c5 342 }
PetePT 0:7b46826310c5 343 _window(0, 0, _width, _height);
PetePT 0:7b46826310c5 344 _deselect();
PetePT 0:7b46826310c5 345 }
PetePT 0:7b46826310c5 346
PetePT 0:7b46826310c5 347 void MobileLCD::foreground(int v) {
PetePT 0:7b46826310c5 348 _foreground = v;
PetePT 0:7b46826310c5 349 }
PetePT 0:7b46826310c5 350
PetePT 0:7b46826310c5 351 void MobileLCD::background(int v) {
PetePT 0:7b46826310c5 352 _background = v;
PetePT 0:7b46826310c5 353 }
PetePT 0:7b46826310c5 354
PetePT 0:7b46826310c5 355 void MobileLCD::bitblit(int x, int y, int width, int height, const char* bitstream) {
PetePT 0:7b46826310c5 356 _select();
PetePT 0:7b46826310c5 357 _window(x, y, width, height);
PetePT 0:7b46826310c5 358
PetePT 0:7b46826310c5 359 for (int i=0; i<height*width; i++) {
PetePT 0:7b46826310c5 360 unsigned char byte = i / 8;
PetePT 0:7b46826310c5 361 unsigned char bit = i % 8;
PetePT 0:7b46826310c5 362 int colour = (((bitstream[byte] << bit) & 0x80) ? _foreground : _background);
PetePT 0:7b46826310c5 363 _putp(colour);
PetePT 0:7b46826310c5 364 }
PetePT 0:7b46826310c5 365 _window(0, 0, _width, _height);
PetePT 0:7b46826310c5 366 _deselect();
PetePT 0:7b46826310c5 367 }
PetePT 0:7b46826310c5 368
PetePT 0:7b46826310c5 369