MaryOB

Dependencies:   mbed

Committer:
s_s_s
Date:
Mon Jul 18 01:30:20 2011 +0000
Revision:
0:4ef525e32ebc

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
s_s_s 0:4ef525e32ebc 1 /* mbed Nokia LCD Library
s_s_s 0:4ef525e32ebc 2 * Copyright (c) 2007-2010, sford
s_s_s 0:4ef525e32ebc 3 */
s_s_s 0:4ef525e32ebc 4
s_s_s 0:4ef525e32ebc 5 #include "Moled.h"
s_s_s 0:4ef525e32ebc 6 #include "small_font.h"
s_s_s 0:4ef525e32ebc 7 #include "mbed.h"
s_s_s 0:4ef525e32ebc 8
s_s_s 0:4ef525e32ebc 9 #define Moled_ROWS 15
s_s_s 0:4ef525e32ebc 10 #define Moled_COLS 16
s_s_s 0:4ef525e32ebc 11 #define Moled_WIDTH 128
s_s_s 0:4ef525e32ebc 12 #define Moled_HEIGHT 128
s_s_s 0:4ef525e32ebc 13 #define Moled_FREQUENCY 20000000
s_s_s 0:4ef525e32ebc 14
s_s_s 0:4ef525e32ebc 15 #define countof(x) ( sizeof(x) / sizeof(x[0]) ) //for Japanese
s_s_s 0:4ef525e32ebc 16
s_s_s 0:4ef525e32ebc 17 /** Constants for power() function */
s_s_s 0:4ef525e32ebc 18 enum {
s_s_s 0:4ef525e32ebc 19 OFF = 0, /**< : to turning-OFF */
s_s_s 0:4ef525e32ebc 20 ON /**< : to turning-ON */
s_s_s 0:4ef525e32ebc 21 };
s_s_s 0:4ef525e32ebc 22
s_s_s 0:4ef525e32ebc 23
s_s_s 0:4ef525e32ebc 24 bool kstate = false; //for Japnaese
s_s_s 0:4ef525e32ebc 25 unsigned int kbuf; //for Japanese
s_s_s 0:4ef525e32ebc 26
s_s_s 0:4ef525e32ebc 27 Moled::Moled(PinName mosi, PinName sclk, PinName cs, PinName rst, PinName power)
s_s_s 0:4ef525e32ebc 28 : _spi(mosi, NC, sclk)
s_s_s 0:4ef525e32ebc 29 , _rst(rst)
s_s_s 0:4ef525e32ebc 30 , _cs(cs)
s_s_s 0:4ef525e32ebc 31 , _power(power){
s_s_s 0:4ef525e32ebc 32 //power( ON );
s_s_s 0:4ef525e32ebc 33 _power=1;
s_s_s 0:4ef525e32ebc 34 _row = 0;
s_s_s 0:4ef525e32ebc 35 _column = 0;
s_s_s 0:4ef525e32ebc 36 _foreground = 0x00FFFFFF;
s_s_s 0:4ef525e32ebc 37 _background = 0x00000000;
s_s_s 0:4ef525e32ebc 38 _yokosize = 1; //1:8x8 2:bai x bai
s_s_s 0:4ef525e32ebc 39 _tatesize = 1;//
s_s_s 0:4ef525e32ebc 40 reset();
s_s_s 0:4ef525e32ebc 41 }
s_s_s 0:4ef525e32ebc 42
s_s_s 0:4ef525e32ebc 43 void Moled::reset() {
s_s_s 0:4ef525e32ebc 44
s_s_s 0:4ef525e32ebc 45 #define GAMMA_LUT_SIZE 63
s_s_s 0:4ef525e32ebc 46 unsigned char gamma_LUT[ GAMMA_LUT_SIZE ];
s_s_s 0:4ef525e32ebc 47
s_s_s 0:4ef525e32ebc 48 for ( int i = 0; i < GAMMA_LUT_SIZE; i++ )
s_s_s 0:4ef525e32ebc 49 gamma_LUT[ i ] = (unsigned char)(powf( ((float)i / 62.0), (1.0 / 0.58) ) * 178.0 + 2.0);
s_s_s 0:4ef525e32ebc 50
s_s_s 0:4ef525e32ebc 51 // setup the SPI interface and bring display out of reset
s_s_s 0:4ef525e32ebc 52
s_s_s 0:4ef525e32ebc 53 _cs = 1;
s_s_s 0:4ef525e32ebc 54 _rst = 0;
s_s_s 0:4ef525e32ebc 55 _spi.format(9); wait_ms(10);
s_s_s 0:4ef525e32ebc 56 _spi.frequency(Moled_FREQUENCY); wait_ms(10);
s_s_s 0:4ef525e32ebc 57 _rst = 1; wait_ms(10);
s_s_s 0:4ef525e32ebc 58
s_s_s 0:4ef525e32ebc 59 _cs = 0;
s_s_s 0:4ef525e32ebc 60
s_s_s 0:4ef525e32ebc 61 //initalize
s_s_s 0:4ef525e32ebc 62 _power=0;
s_s_s 0:4ef525e32ebc 63 command( SET_DISPLAY_MODE_ALL_OFF );
s_s_s 0:4ef525e32ebc 64 command( SET_COMMAND_LOCK );
s_s_s 0:4ef525e32ebc 65 data( 0x12 );
s_s_s 0:4ef525e32ebc 66
s_s_s 0:4ef525e32ebc 67 command( SET_COMMAND_LOCK );
s_s_s 0:4ef525e32ebc 68 data( 0xb1 );
s_s_s 0:4ef525e32ebc 69
s_s_s 0:4ef525e32ebc 70 command( SET_SLEEP_MODE_ON );
s_s_s 0:4ef525e32ebc 71
s_s_s 0:4ef525e32ebc 72 command( FRONT_CLOCK_DRIVER_OSC_FREQ );
s_s_s 0:4ef525e32ebc 73 data( 0xF1 );
s_s_s 0:4ef525e32ebc 74
s_s_s 0:4ef525e32ebc 75 command( SET_MUX_RATIO );
s_s_s 0:4ef525e32ebc 76 data( 0x7F );
s_s_s 0:4ef525e32ebc 77
s_s_s 0:4ef525e32ebc 78 command( SET_DISPAY_OFFSET );
s_s_s 0:4ef525e32ebc 79 data( 0x00 );
s_s_s 0:4ef525e32ebc 80
s_s_s 0:4ef525e32ebc 81 command( SET_DISPAY_START_LINE );
s_s_s 0:4ef525e32ebc 82 data( 0x00 );
s_s_s 0:4ef525e32ebc 83
s_s_s 0:4ef525e32ebc 84 command( SET_REMAP_COLOR_DEPTH );
s_s_s 0:4ef525e32ebc 85 data( 0x74 );
s_s_s 0:4ef525e32ebc 86
s_s_s 0:4ef525e32ebc 87 command( SET_GPIO );
s_s_s 0:4ef525e32ebc 88 data( 0x00);
s_s_s 0:4ef525e32ebc 89
s_s_s 0:4ef525e32ebc 90 command( FUNCTION_SELECTION );
s_s_s 0:4ef525e32ebc 91 data( 0x01 );
s_s_s 0:4ef525e32ebc 92
s_s_s 0:4ef525e32ebc 93 command( SET_SEGMENT_LOW_VOLTAGE );
s_s_s 0:4ef525e32ebc 94 data( 0xA0 );
s_s_s 0:4ef525e32ebc 95 data( 0xB5 );
s_s_s 0:4ef525e32ebc 96 data( 0x55 );
s_s_s 0:4ef525e32ebc 97
s_s_s 0:4ef525e32ebc 98 command( SET_CONTRAST_CURRENT_FOR_COLOR_ABC );
s_s_s 0:4ef525e32ebc 99 data( 0xC8 );
s_s_s 0:4ef525e32ebc 100 data( 0x80 );
s_s_s 0:4ef525e32ebc 101 data( 0xC8 );
s_s_s 0:4ef525e32ebc 102
s_s_s 0:4ef525e32ebc 103 command( MASTER_CONTRAST_CURRENT_CONTROL );
s_s_s 0:4ef525e32ebc 104 data( 0x0F );
s_s_s 0:4ef525e32ebc 105
s_s_s 0:4ef525e32ebc 106 command( LOOKUP_TABLE_FOR_GRAYSCALE_PULSE_WIDTH );
s_s_s 0:4ef525e32ebc 107 for ( int i = 0; i < GAMMA_LUT_SIZE; i++ )
s_s_s 0:4ef525e32ebc 108 data( gamma_LUT[ i ] );
s_s_s 0:4ef525e32ebc 109
s_s_s 0:4ef525e32ebc 110 command( SET_RESET_PRECHARGE_PERIOD );
s_s_s 0:4ef525e32ebc 111 data( 0x32 );
s_s_s 0:4ef525e32ebc 112
s_s_s 0:4ef525e32ebc 113 command( ENHANCE_DRIVING_SCHEME_CAPABILITY );
s_s_s 0:4ef525e32ebc 114 data( 0x04 );
s_s_s 0:4ef525e32ebc 115 data( 0x00 );
s_s_s 0:4ef525e32ebc 116 data( 0x00 );
s_s_s 0:4ef525e32ebc 117
s_s_s 0:4ef525e32ebc 118 command( SET_PRECHARGE_VOLTAGE );
s_s_s 0:4ef525e32ebc 119 data( 0x17 );
s_s_s 0:4ef525e32ebc 120
s_s_s 0:4ef525e32ebc 121 command( SET_SECOND_PRECHARGE_VOLTAGE );
s_s_s 0:4ef525e32ebc 122 data( 0x01 );
s_s_s 0:4ef525e32ebc 123
s_s_s 0:4ef525e32ebc 124 command( SET_VCOMH_VOLTAGE );
s_s_s 0:4ef525e32ebc 125 data( 0x05 );
s_s_s 0:4ef525e32ebc 126
s_s_s 0:4ef525e32ebc 127 command( SET_DISPLAY_MODE_RESET );
s_s_s 0:4ef525e32ebc 128
s_s_s 0:4ef525e32ebc 129 #if 0
s_s_s 0:4ef525e32ebc 130 command( SET_COLUMN_ADDRESS );
s_s_s 0:4ef525e32ebc 131 data( 0x00 );
s_s_s 0:4ef525e32ebc 132 data( 0x7F );
s_s_s 0:4ef525e32ebc 133
s_s_s 0:4ef525e32ebc 134 command( SET_ROW_ADDRESS );
s_s_s 0:4ef525e32ebc 135 data( 0x00 );
s_s_s 0:4ef525e32ebc 136 data( 0x7F);
s_s_s 0:4ef525e32ebc 137
s_s_s 0:4ef525e32ebc 138 command( WRITE_RAM_COMMAND );
s_s_s 0:4ef525e32ebc 139 for ( int i = 0; i < WIDTH * HEIGHT; i++ )
s_s_s 0:4ef525e32ebc 140 data( 0x00 );
s_s_s 0:4ef525e32ebc 141 #endif
s_s_s 0:4ef525e32ebc 142 //cls();
s_s_s 0:4ef525e32ebc 143 _power=1;
s_s_s 0:4ef525e32ebc 144 wait_ms( 200 );
s_s_s 0:4ef525e32ebc 145 command( SET_SLEEP_MODE_OFF );
s_s_s 0:4ef525e32ebc 146
s_s_s 0:4ef525e32ebc 147 // _cs = 1;
s_s_s 0:4ef525e32ebc 148
s_s_s 0:4ef525e32ebc 149 } // void Moled::reset()
s_s_s 0:4ef525e32ebc 150
s_s_s 0:4ef525e32ebc 151
s_s_s 0:4ef525e32ebc 152 void Moled::command(int value) {
s_s_s 0:4ef525e32ebc 153 _spi.write(value & 0xFF);
s_s_s 0:4ef525e32ebc 154 }
s_s_s 0:4ef525e32ebc 155
s_s_s 0:4ef525e32ebc 156 void Moled::data(int value) {
s_s_s 0:4ef525e32ebc 157 _spi.write(value | 0x100);
s_s_s 0:4ef525e32ebc 158 }
s_s_s 0:4ef525e32ebc 159
s_s_s 0:4ef525e32ebc 160 void Moled::_window( int x, int y, int width, int height ) {
s_s_s 0:4ef525e32ebc 161 int x1 = x + 0;
s_s_s 0:4ef525e32ebc 162 int y1 = y + 0;
s_s_s 0:4ef525e32ebc 163 int x2 = x1 + width - 1;
s_s_s 0:4ef525e32ebc 164 int y2 = y1 + height - 1;
s_s_s 0:4ef525e32ebc 165
s_s_s 0:4ef525e32ebc 166 command( SET_COLUMN_ADDRESS );
s_s_s 0:4ef525e32ebc 167 data( x1 );
s_s_s 0:4ef525e32ebc 168 data( x2 );
s_s_s 0:4ef525e32ebc 169 command( SET_ROW_ADDRESS );
s_s_s 0:4ef525e32ebc 170 data( y1 );
s_s_s 0:4ef525e32ebc 171 data( y2 );
s_s_s 0:4ef525e32ebc 172 command( WRITE_RAM_COMMAND );
s_s_s 0:4ef525e32ebc 173 }
s_s_s 0:4ef525e32ebc 174 void Moled::window( int x, int y, int width, int height ) {
s_s_s 0:4ef525e32ebc 175 _cs = 0;
s_s_s 0:4ef525e32ebc 176 _window( x, y, width, height );
s_s_s 0:4ef525e32ebc 177 _cs = 1;
s_s_s 0:4ef525e32ebc 178 }
s_s_s 0:4ef525e32ebc 179
s_s_s 0:4ef525e32ebc 180 void Moled::_putp(int colour) {
s_s_s 0:4ef525e32ebc 181
s_s_s 0:4ef525e32ebc 182 int cnv = 0;
s_s_s 0:4ef525e32ebc 183
s_s_s 0:4ef525e32ebc 184 cnv = (colour >> 8) & 0xf800;
s_s_s 0:4ef525e32ebc 185 cnv |= (colour >> 5) & 0x07e0;
s_s_s 0:4ef525e32ebc 186 cnv |= (colour >> 3) & 0x001f;
s_s_s 0:4ef525e32ebc 187
s_s_s 0:4ef525e32ebc 188 data( cnv >> 8);
s_s_s 0:4ef525e32ebc 189 data( cnv );
s_s_s 0:4ef525e32ebc 190 }
s_s_s 0:4ef525e32ebc 191
s_s_s 0:4ef525e32ebc 192
s_s_s 0:4ef525e32ebc 193 void Moled::locate(int column, int row) {
s_s_s 0:4ef525e32ebc 194 _column = column;
s_s_s 0:4ef525e32ebc 195 _row = row;
s_s_s 0:4ef525e32ebc 196 }
s_s_s 0:4ef525e32ebc 197 void Moled::fontsize(int yoko,int tate){
s_s_s 0:4ef525e32ebc 198 _yokosize=yoko;
s_s_s 0:4ef525e32ebc 199 _tatesize=tate;
s_s_s 0:4ef525e32ebc 200 }
s_s_s 0:4ef525e32ebc 201
s_s_s 0:4ef525e32ebc 202 void Moled::newline() {
s_s_s 0:4ef525e32ebc 203 _column = 0;
s_s_s 0:4ef525e32ebc 204 _row++;
s_s_s 0:4ef525e32ebc 205 if (_row >= Moled_ROWS) {
s_s_s 0:4ef525e32ebc 206 _row = 0;
s_s_s 0:4ef525e32ebc 207 }
s_s_s 0:4ef525e32ebc 208 }
s_s_s 0:4ef525e32ebc 209
s_s_s 0:4ef525e32ebc 210 unsigned int Moled::findface(unsigned short c) {
s_s_s 0:4ef525e32ebc 211 unsigned int p = 0;
s_s_s 0:4ef525e32ebc 212 int i, sum;
s_s_s 0:4ef525e32ebc 213 for (sum = i = 0; i < countof(font8table); i++) {
s_s_s 0:4ef525e32ebc 214 if (font8table[i].start <= c && c <= font8table[i].end) {
s_s_s 0:4ef525e32ebc 215 p = (sum + c - font8table[i].start);
s_s_s 0:4ef525e32ebc 216 break;
s_s_s 0:4ef525e32ebc 217 }
s_s_s 0:4ef525e32ebc 218 sum += font8table[i].end - font8table[i].start + 1;
s_s_s 0:4ef525e32ebc 219 }
s_s_s 0:4ef525e32ebc 220 return p;
s_s_s 0:4ef525e32ebc 221 }
s_s_s 0:4ef525e32ebc 222
s_s_s 0:4ef525e32ebc 223 int Moled::_putc(int value) {
s_s_s 0:4ef525e32ebc 224 int x = _column * 8 ; // FIXME: Char sizes
s_s_s 0:4ef525e32ebc 225 int y = _row * 8;
s_s_s 0:4ef525e32ebc 226
s_s_s 0:4ef525e32ebc 227 if(value == '\n') {
s_s_s 0:4ef525e32ebc 228 newline();
s_s_s 0:4ef525e32ebc 229 } else if (kstate) { // 2nd byte of shift-jis
s_s_s 0:4ef525e32ebc 230 kstate = false;
s_s_s 0:4ef525e32ebc 231 int p = findface(kbuf << 8 | value);
s_s_s 0:4ef525e32ebc 232 bitblit(x + 1, y + 1, 8,8, (char*)&(FontLookup[p][0]));
s_s_s 0:4ef525e32ebc 233
s_s_s 0:4ef525e32ebc 234 //printf("%x %x",( kbuf << 8 | value),p); //for debug
s_s_s 0:4ef525e32ebc 235 _column++;
s_s_s 0:4ef525e32ebc 236 if (_column >= Moled_COLS) {
s_s_s 0:4ef525e32ebc 237 _row++;
s_s_s 0:4ef525e32ebc 238 _column = 0;
s_s_s 0:4ef525e32ebc 239 }
s_s_s 0:4ef525e32ebc 240 if (_row >= Moled_ROWS) {
s_s_s 0:4ef525e32ebc 241 _row = 0;
s_s_s 0:4ef525e32ebc 242 }
s_s_s 0:4ef525e32ebc 243 } else if ((0x81 <= value && value <= 0x9f) || (0xe0 <= value && value <= 0xfc)) { // 1st byte of shift-jis
s_s_s 0:4ef525e32ebc 244 kstate = true;
s_s_s 0:4ef525e32ebc 245 kbuf = value;
s_s_s 0:4ef525e32ebc 246 } else {
s_s_s 0:4ef525e32ebc 247 bitblit(x + 1, y + 1, 8, 8, (char*)&(FontLookup_ABC[value-32][0]));
s_s_s 0:4ef525e32ebc 248 _column++;
s_s_s 0:4ef525e32ebc 249 if (_column >= Moled_COLS) {
s_s_s 0:4ef525e32ebc 250 _row++;
s_s_s 0:4ef525e32ebc 251 _column = 0;
s_s_s 0:4ef525e32ebc 252 }
s_s_s 0:4ef525e32ebc 253 if (_row >= Moled_ROWS) {
s_s_s 0:4ef525e32ebc 254 _row = 0;
s_s_s 0:4ef525e32ebc 255 }
s_s_s 0:4ef525e32ebc 256 }
s_s_s 0:4ef525e32ebc 257
s_s_s 0:4ef525e32ebc 258 return value;
s_s_s 0:4ef525e32ebc 259 }
s_s_s 0:4ef525e32ebc 260
s_s_s 0:4ef525e32ebc 261 void Moled::cls() {
s_s_s 0:4ef525e32ebc 262 fill(0, 0, Moled_WIDTH, Moled_HEIGHT, _background);
s_s_s 0:4ef525e32ebc 263 _row = 0;
s_s_s 0:4ef525e32ebc 264 _column = 0;
s_s_s 0:4ef525e32ebc 265 }
s_s_s 0:4ef525e32ebc 266
s_s_s 0:4ef525e32ebc 267 void Moled::putp(int colour) {
s_s_s 0:4ef525e32ebc 268 _cs = 0;
s_s_s 0:4ef525e32ebc 269 _putp(colour);
s_s_s 0:4ef525e32ebc 270 _cs = 1;
s_s_s 0:4ef525e32ebc 271 }
s_s_s 0:4ef525e32ebc 272
s_s_s 0:4ef525e32ebc 273 void Moled::pixel(int x, int y, int colour) {
s_s_s 0:4ef525e32ebc 274 _cs = 0;
s_s_s 0:4ef525e32ebc 275 _window(x, y, 1, 1);
s_s_s 0:4ef525e32ebc 276 _putp(colour);
s_s_s 0:4ef525e32ebc 277 _cs = 1;
s_s_s 0:4ef525e32ebc 278 }
s_s_s 0:4ef525e32ebc 279
s_s_s 0:4ef525e32ebc 280 void Moled::fill(int x, int y, int width, int height, int colour) {
s_s_s 0:4ef525e32ebc 281 _cs = 0;
s_s_s 0:4ef525e32ebc 282 _window(x, y, width, height);
s_s_s 0:4ef525e32ebc 283 for (int i=0; i<width*height; i++) {
s_s_s 0:4ef525e32ebc 284 _putp(colour);
s_s_s 0:4ef525e32ebc 285 }
s_s_s 0:4ef525e32ebc 286 _window(0, 0, Moled_WIDTH, Moled_HEIGHT);
s_s_s 0:4ef525e32ebc 287 _cs = 1;
s_s_s 0:4ef525e32ebc 288 }
s_s_s 0:4ef525e32ebc 289
s_s_s 0:4ef525e32ebc 290 void Moled::blit(int x, int y, int width, int height, const int* colour) {
s_s_s 0:4ef525e32ebc 291 _cs = 0;
s_s_s 0:4ef525e32ebc 292 _window(x, y, width, height);
s_s_s 0:4ef525e32ebc 293 for (int i=0; i<width*height; i++) {
s_s_s 0:4ef525e32ebc 294 _putp(colour[i]);
s_s_s 0:4ef525e32ebc 295 }
s_s_s 0:4ef525e32ebc 296 _window(0, 0, Moled_WIDTH, Moled_HEIGHT);
s_s_s 0:4ef525e32ebc 297 _cs = 1;
s_s_s 0:4ef525e32ebc 298 }
s_s_s 0:4ef525e32ebc 299
s_s_s 0:4ef525e32ebc 300 void Moled::bitblit(int x, int y, int width, int height, const char* bitstream) {
s_s_s 0:4ef525e32ebc 301 /*
s_s_s 0:4ef525e32ebc 302 _cs = 0;
s_s_s 0:4ef525e32ebc 303 _window(x, y, width*2, height); //add *2
s_s_s 0:4ef525e32ebc 304 for (int i=0; i<height*width; i++) {
s_s_s 0:4ef525e32ebc 305 int byte = i / 8;
s_s_s 0:4ef525e32ebc 306 int bit = i % 8;
s_s_s 0:4ef525e32ebc 307 int colour = ((bitstream[byte] << bit) & 0x80) ? _foreground : _background;
s_s_s 0:4ef525e32ebc 308 _putp(colour); // add shu 7/17
s_s_s 0:4ef525e32ebc 309 _putp(colour);
s_s_s 0:4ef525e32ebc 310 }
s_s_s 0:4ef525e32ebc 311 _window(0, 0, _width, _height);
s_s_s 0:4ef525e32ebc 312 _cs = 1;
s_s_s 0:4ef525e32ebc 313 */
s_s_s 0:4ef525e32ebc 314 _cs = 0;
s_s_s 0:4ef525e32ebc 315 int ii=0;
s_s_s 0:4ef525e32ebc 316 _window(x*_yokosize, y*_tatesize, width*_yokosize, height*_tatesize); //add *2
s_s_s 0:4ef525e32ebc 317 for (int i=0; i<height*_tatesize; i++) {
s_s_s 0:4ef525e32ebc 318 ii=i/_tatesize;
s_s_s 0:4ef525e32ebc 319 for (int j=0;j<width;j++){
s_s_s 0:4ef525e32ebc 320 int byte = (ii*width+j) / 8;
s_s_s 0:4ef525e32ebc 321 int bit = (ii*width+j) % 8;
s_s_s 0:4ef525e32ebc 322 int colour = ((bitstream[byte] << bit) & 0x80) ? _foreground : _background;
s_s_s 0:4ef525e32ebc 323 for (int jj=0;jj<_yokosize;jj++){
s_s_s 0:4ef525e32ebc 324 _putp(colour);
s_s_s 0:4ef525e32ebc 325 }
s_s_s 0:4ef525e32ebc 326 }
s_s_s 0:4ef525e32ebc 327
s_s_s 0:4ef525e32ebc 328 }
s_s_s 0:4ef525e32ebc 329 }
s_s_s 0:4ef525e32ebc 330
s_s_s 0:4ef525e32ebc 331
s_s_s 0:4ef525e32ebc 332 void Moled::foreground(int c) {
s_s_s 0:4ef525e32ebc 333 _foreground = c;
s_s_s 0:4ef525e32ebc 334 }
s_s_s 0:4ef525e32ebc 335
s_s_s 0:4ef525e32ebc 336 void Moled::background(int c) {
s_s_s 0:4ef525e32ebc 337 _background = c;
s_s_s 0:4ef525e32ebc 338 }
s_s_s 0:4ef525e32ebc 339
s_s_s 0:4ef525e32ebc 340 int Moled::width() {
s_s_s 0:4ef525e32ebc 341 return Moled_WIDTH;
s_s_s 0:4ef525e32ebc 342 }
s_s_s 0:4ef525e32ebc 343
s_s_s 0:4ef525e32ebc 344 int Moled::height() {
s_s_s 0:4ef525e32ebc 345 return Moled_HEIGHT;
s_s_s 0:4ef525e32ebc 346 }
s_s_s 0:4ef525e32ebc 347
s_s_s 0:4ef525e32ebc 348 int Moled::columns() {
s_s_s 0:4ef525e32ebc 349 return Moled_COLS;
s_s_s 0:4ef525e32ebc 350 }
s_s_s 0:4ef525e32ebc 351
s_s_s 0:4ef525e32ebc 352 int Moled::rows() {
s_s_s 0:4ef525e32ebc 353 return Moled_ROWS;
s_s_s 0:4ef525e32ebc 354 }