Ethernetwebsoc
Dependencies: C12832_lcd LM75B WebSocketClient mbed-rtos mbed Socket lwip-eth lwip-sys lwip
C12832_lcd/GraphicsDisplay.cpp@0:0ed2a7c7190c, 2013-05-31 (annotated)
- Committer:
- GordonSin
- Date:
- Fri May 31 04:09:54 2013 +0000
- Revision:
- 0:0ed2a7c7190c
31/5/2013;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
GordonSin | 0:0ed2a7c7190c | 1 | /* mbed GraphicsDisplay Display Library Base Class |
GordonSin | 0:0ed2a7c7190c | 2 | * Copyright (c) 2007-2009 sford |
GordonSin | 0:0ed2a7c7190c | 3 | * Released under the MIT License: http://mbed.org/license/mit |
GordonSin | 0:0ed2a7c7190c | 4 | */ |
GordonSin | 0:0ed2a7c7190c | 5 | |
GordonSin | 0:0ed2a7c7190c | 6 | #include "GraphicsDisplay.h" |
GordonSin | 0:0ed2a7c7190c | 7 | |
GordonSin | 0:0ed2a7c7190c | 8 | const unsigned char FONT8x8[97][8] = { |
GordonSin | 0:0ed2a7c7190c | 9 | 0x08,0x08,0x08,0x00,0x00,0x00,0x00,0x00, // columns, rows, num_bytes_per_char |
GordonSin | 0:0ed2a7c7190c | 10 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, // space 0x20 |
GordonSin | 0:0ed2a7c7190c | 11 | 0x30,0x78,0x78,0x30,0x30,0x00,0x30,0x00, // ! |
GordonSin | 0:0ed2a7c7190c | 12 | 0x6C,0x6C,0x6C,0x00,0x00,0x00,0x00,0x00, // " |
GordonSin | 0:0ed2a7c7190c | 13 | 0x6C,0x6C,0xFE,0x6C,0xFE,0x6C,0x6C,0x00, // # |
GordonSin | 0:0ed2a7c7190c | 14 | 0x18,0x3E,0x60,0x3C,0x06,0x7C,0x18,0x00, // $ |
GordonSin | 0:0ed2a7c7190c | 15 | 0x00,0x63,0x66,0x0C,0x18,0x33,0x63,0x00, // % |
GordonSin | 0:0ed2a7c7190c | 16 | 0x1C,0x36,0x1C,0x3B,0x6E,0x66,0x3B,0x00, // & |
GordonSin | 0:0ed2a7c7190c | 17 | 0x30,0x30,0x60,0x00,0x00,0x00,0x00,0x00, // ' |
GordonSin | 0:0ed2a7c7190c | 18 | 0x0C,0x18,0x30,0x30,0x30,0x18,0x0C,0x00, // ( |
GordonSin | 0:0ed2a7c7190c | 19 | 0x30,0x18,0x0C,0x0C,0x0C,0x18,0x30,0x00, // ) |
GordonSin | 0:0ed2a7c7190c | 20 | 0x00,0x66,0x3C,0xFF,0x3C,0x66,0x00,0x00, // * |
GordonSin | 0:0ed2a7c7190c | 21 | 0x00,0x30,0x30,0xFC,0x30,0x30,0x00,0x00, // + |
GordonSin | 0:0ed2a7c7190c | 22 | 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x30, // , |
GordonSin | 0:0ed2a7c7190c | 23 | 0x00,0x00,0x00,0x7E,0x00,0x00,0x00,0x00, // - |
GordonSin | 0:0ed2a7c7190c | 24 | 0x00,0x00,0x00,0x00,0x00,0x18,0x18,0x00, // . |
GordonSin | 0:0ed2a7c7190c | 25 | 0x03,0x06,0x0C,0x18,0x30,0x60,0x40,0x00, // / (forward slash) |
GordonSin | 0:0ed2a7c7190c | 26 | 0x3E,0x63,0x63,0x6B,0x63,0x63,0x3E,0x00, // 0 0x30 |
GordonSin | 0:0ed2a7c7190c | 27 | 0x18,0x38,0x58,0x18,0x18,0x18,0x7E,0x00, // 1 |
GordonSin | 0:0ed2a7c7190c | 28 | 0x3C,0x66,0x06,0x1C,0x30,0x66,0x7E,0x00, // 2 |
GordonSin | 0:0ed2a7c7190c | 29 | 0x3C,0x66,0x06,0x1C,0x06,0x66,0x3C,0x00, // 3 |
GordonSin | 0:0ed2a7c7190c | 30 | 0x0E,0x1E,0x36,0x66,0x7F,0x06,0x0F,0x00, // 4 |
GordonSin | 0:0ed2a7c7190c | 31 | 0x7E,0x60,0x7C,0x06,0x06,0x66,0x3C,0x00, // 5 |
GordonSin | 0:0ed2a7c7190c | 32 | 0x1C,0x30,0x60,0x7C,0x66,0x66,0x3C,0x00, // 6 |
GordonSin | 0:0ed2a7c7190c | 33 | 0x7E,0x66,0x06,0x0C,0x18,0x18,0x18,0x00, // 7 |
GordonSin | 0:0ed2a7c7190c | 34 | 0x3C,0x66,0x66,0x3C,0x66,0x66,0x3C,0x00, // 8 |
GordonSin | 0:0ed2a7c7190c | 35 | 0x3C,0x66,0x66,0x3E,0x06,0x0C,0x38,0x00, // 9 |
GordonSin | 0:0ed2a7c7190c | 36 | 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x00, // : |
GordonSin | 0:0ed2a7c7190c | 37 | 0x00,0x18,0x18,0x00,0x00,0x18,0x18,0x30, // ; |
GordonSin | 0:0ed2a7c7190c | 38 | 0x0C,0x18,0x30,0x60,0x30,0x18,0x0C,0x00, // < |
GordonSin | 0:0ed2a7c7190c | 39 | 0x00,0x00,0x7E,0x00,0x00,0x7E,0x00,0x00, // = |
GordonSin | 0:0ed2a7c7190c | 40 | 0x30,0x18,0x0C,0x06,0x0C,0x18,0x30,0x00, // > |
GordonSin | 0:0ed2a7c7190c | 41 | 0x3C,0x66,0x06,0x0C,0x18,0x00,0x18,0x00, // ? |
GordonSin | 0:0ed2a7c7190c | 42 | 0x3E,0x63,0x6F,0x69,0x6F,0x60,0x3E,0x00, // @ 0x40 |
GordonSin | 0:0ed2a7c7190c | 43 | 0x18,0x3C,0x66,0x66,0x7E,0x66,0x66,0x00, // A |
GordonSin | 0:0ed2a7c7190c | 44 | 0x7E,0x33,0x33,0x3E,0x33,0x33,0x7E,0x00, // B |
GordonSin | 0:0ed2a7c7190c | 45 | 0x1E,0x33,0x60,0x60,0x60,0x33,0x1E,0x00, // C |
GordonSin | 0:0ed2a7c7190c | 46 | 0x7C,0x36,0x33,0x33,0x33,0x36,0x7C,0x00, // D |
GordonSin | 0:0ed2a7c7190c | 47 | 0x7F,0x31,0x34,0x3C,0x34,0x31,0x7F,0x00, // E |
GordonSin | 0:0ed2a7c7190c | 48 | 0x7F,0x31,0x34,0x3C,0x34,0x30,0x78,0x00, // F |
GordonSin | 0:0ed2a7c7190c | 49 | 0x1E,0x33,0x60,0x60,0x67,0x33,0x1F,0x00, // G |
GordonSin | 0:0ed2a7c7190c | 50 | 0x66,0x66,0x66,0x7E,0x66,0x66,0x66,0x00, // H |
GordonSin | 0:0ed2a7c7190c | 51 | 0x3C,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // I |
GordonSin | 0:0ed2a7c7190c | 52 | 0x0F,0x06,0x06,0x06,0x66,0x66,0x3C,0x00, // J |
GordonSin | 0:0ed2a7c7190c | 53 | 0x73,0x33,0x36,0x3C,0x36,0x33,0x73,0x00, // K |
GordonSin | 0:0ed2a7c7190c | 54 | 0x78,0x30,0x30,0x30,0x31,0x33,0x7F,0x00, // L |
GordonSin | 0:0ed2a7c7190c | 55 | 0x63,0x77,0x7F,0x7F,0x6B,0x63,0x63,0x00, // M |
GordonSin | 0:0ed2a7c7190c | 56 | 0x63,0x73,0x7B,0x6F,0x67,0x63,0x63,0x00, // N |
GordonSin | 0:0ed2a7c7190c | 57 | 0x3E,0x63,0x63,0x63,0x63,0x63,0x3E,0x00, // O |
GordonSin | 0:0ed2a7c7190c | 58 | 0x7E,0x33,0x33,0x3E,0x30,0x30,0x78,0x00, // P 0x50 |
GordonSin | 0:0ed2a7c7190c | 59 | 0x3C,0x66,0x66,0x66,0x6E,0x3C,0x0E,0x00, // Q |
GordonSin | 0:0ed2a7c7190c | 60 | 0x7E,0x33,0x33,0x3E,0x36,0x33,0x73,0x00, // R |
GordonSin | 0:0ed2a7c7190c | 61 | 0x3C,0x66,0x30,0x18,0x0C,0x66,0x3C,0x00, // S |
GordonSin | 0:0ed2a7c7190c | 62 | 0x7E,0x5A,0x18,0x18,0x18,0x18,0x3C,0x00, // T |
GordonSin | 0:0ed2a7c7190c | 63 | 0x66,0x66,0x66,0x66,0x66,0x66,0x7E,0x00, // U |
GordonSin | 0:0ed2a7c7190c | 64 | 0x66,0x66,0x66,0x66,0x66,0x3C,0x18,0x00, // V |
GordonSin | 0:0ed2a7c7190c | 65 | 0x63,0x63,0x63,0x6B,0x7F,0x77,0x63,0x00, // W |
GordonSin | 0:0ed2a7c7190c | 66 | 0x63,0x63,0x36,0x1C,0x1C,0x36,0x63,0x00, // X |
GordonSin | 0:0ed2a7c7190c | 67 | 0x66,0x66,0x66,0x3C,0x18,0x18,0x3C,0x00, // Y |
GordonSin | 0:0ed2a7c7190c | 68 | 0x7F,0x63,0x46,0x0C,0x19,0x33,0x7F,0x00, // Z |
GordonSin | 0:0ed2a7c7190c | 69 | 0x3C,0x30,0x30,0x30,0x30,0x30,0x3C,0x00, // [ |
GordonSin | 0:0ed2a7c7190c | 70 | 0x60,0x30,0x18,0x0C,0x06,0x03,0x01,0x00, // \ (back slash) |
GordonSin | 0:0ed2a7c7190c | 71 | 0x3C,0x0C,0x0C,0x0C,0x0C,0x0C,0x3C,0x00, // ] |
GordonSin | 0:0ed2a7c7190c | 72 | 0x08,0x1C,0x36,0x63,0x00,0x00,0x00,0x00, // ^ |
GordonSin | 0:0ed2a7c7190c | 73 | 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF, // _ |
GordonSin | 0:0ed2a7c7190c | 74 | 0x18,0x18,0x0C,0x00,0x00,0x00,0x00,0x00, // ` 0x60 |
GordonSin | 0:0ed2a7c7190c | 75 | 0x00,0x00,0x3C,0x06,0x3E,0x66,0x3B,0x00, // a |
GordonSin | 0:0ed2a7c7190c | 76 | 0x70,0x30,0x3E,0x33,0x33,0x33,0x6E,0x00, // b |
GordonSin | 0:0ed2a7c7190c | 77 | 0x00,0x00,0x3C,0x66,0x60,0x66,0x3C,0x00, // c |
GordonSin | 0:0ed2a7c7190c | 78 | 0x0E,0x06,0x3E,0x66,0x66,0x66,0x3B,0x00, // d |
GordonSin | 0:0ed2a7c7190c | 79 | 0x00,0x00,0x3C,0x66,0x7E,0x60,0x3C,0x00, // e |
GordonSin | 0:0ed2a7c7190c | 80 | 0x1C,0x36,0x30,0x78,0x30,0x30,0x78,0x00, // f |
GordonSin | 0:0ed2a7c7190c | 81 | 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x7C, // g |
GordonSin | 0:0ed2a7c7190c | 82 | 0x70,0x30,0x36,0x3B,0x33,0x33,0x73,0x00, // h |
GordonSin | 0:0ed2a7c7190c | 83 | 0x18,0x00,0x38,0x18,0x18,0x18,0x3C,0x00, // i |
GordonSin | 0:0ed2a7c7190c | 84 | 0x06,0x00,0x06,0x06,0x06,0x66,0x66,0x3C, // j |
GordonSin | 0:0ed2a7c7190c | 85 | 0x70,0x30,0x33,0x36,0x3C,0x36,0x73,0x00, // k |
GordonSin | 0:0ed2a7c7190c | 86 | 0x38,0x18,0x18,0x18,0x18,0x18,0x3C,0x00, // l |
GordonSin | 0:0ed2a7c7190c | 87 | 0x00,0x00,0x66,0x7F,0x7F,0x6B,0x63,0x00, // m |
GordonSin | 0:0ed2a7c7190c | 88 | 0x00,0x00,0x7C,0x66,0x66,0x66,0x66,0x00, // n |
GordonSin | 0:0ed2a7c7190c | 89 | 0x00,0x00,0x3C,0x66,0x66,0x66,0x3C,0x00, // o |
GordonSin | 0:0ed2a7c7190c | 90 | 0x00,0x00,0x6E,0x33,0x33,0x3E,0x30,0x78, // p |
GordonSin | 0:0ed2a7c7190c | 91 | 0x00,0x00,0x3B,0x66,0x66,0x3E,0x06,0x0F, // q |
GordonSin | 0:0ed2a7c7190c | 92 | 0x00,0x00,0x6E,0x3B,0x33,0x30,0x78,0x00, // r |
GordonSin | 0:0ed2a7c7190c | 93 | 0x00,0x00,0x3E,0x60,0x3C,0x06,0x7C,0x00, // s |
GordonSin | 0:0ed2a7c7190c | 94 | 0x08,0x18,0x3E,0x18,0x18,0x1A,0x0C,0x00, // t |
GordonSin | 0:0ed2a7c7190c | 95 | 0x00,0x00,0x66,0x66,0x66,0x66,0x3B,0x00, // u |
GordonSin | 0:0ed2a7c7190c | 96 | 0x00,0x00,0x66,0x66,0x66,0x3C,0x18,0x00, // v |
GordonSin | 0:0ed2a7c7190c | 97 | 0x00,0x00,0x63,0x6B,0x7F,0x7F,0x36,0x00, // w |
GordonSin | 0:0ed2a7c7190c | 98 | 0x00,0x00,0x63,0x36,0x1C,0x36,0x63,0x00, // x |
GordonSin | 0:0ed2a7c7190c | 99 | 0x00,0x00,0x66,0x66,0x66,0x3E,0x06,0x7C, // y |
GordonSin | 0:0ed2a7c7190c | 100 | 0x00,0x00,0x7E,0x4C,0x18,0x32,0x7E,0x00, // z |
GordonSin | 0:0ed2a7c7190c | 101 | 0x0E,0x18,0x18,0x70,0x18,0x18,0x0E,0x00, // { |
GordonSin | 0:0ed2a7c7190c | 102 | 0x0C,0x0C,0x0C,0x00,0x0C,0x0C,0x0C,0x00, // | |
GordonSin | 0:0ed2a7c7190c | 103 | 0x70,0x18,0x18,0x0E,0x18,0x18,0x70,0x00, // } |
GordonSin | 0:0ed2a7c7190c | 104 | 0x3B,0x6E,0x00,0x00,0x00,0x00,0x00,0x00, // ~ |
GordonSin | 0:0ed2a7c7190c | 105 | 0x1C,0x36,0x36,0x1C,0x00,0x00,0x00,0x00}; // DEL |
GordonSin | 0:0ed2a7c7190c | 106 | |
GordonSin | 0:0ed2a7c7190c | 107 | GraphicsDisplay::GraphicsDisplay(const char *name):TextDisplay(name) { |
GordonSin | 0:0ed2a7c7190c | 108 | foreground(0xFFFF); |
GordonSin | 0:0ed2a7c7190c | 109 | background(0x0000); |
GordonSin | 0:0ed2a7c7190c | 110 | } |
GordonSin | 0:0ed2a7c7190c | 111 | |
GordonSin | 0:0ed2a7c7190c | 112 | void GraphicsDisplay::character(int column, int row, int value) { |
GordonSin | 0:0ed2a7c7190c | 113 | blitbit(column * 8, row * 8, 8, 8, (char*)&(FONT8x8[value - 0x1F][0])); |
GordonSin | 0:0ed2a7c7190c | 114 | } |
GordonSin | 0:0ed2a7c7190c | 115 | |
GordonSin | 0:0ed2a7c7190c | 116 | void GraphicsDisplay::window(int x, int y, int w, int h) { |
GordonSin | 0:0ed2a7c7190c | 117 | // current pixel location |
GordonSin | 0:0ed2a7c7190c | 118 | _x = x; |
GordonSin | 0:0ed2a7c7190c | 119 | _y = y; |
GordonSin | 0:0ed2a7c7190c | 120 | // window settings |
GordonSin | 0:0ed2a7c7190c | 121 | _x1 = x; |
GordonSin | 0:0ed2a7c7190c | 122 | _x2 = x + w - 1; |
GordonSin | 0:0ed2a7c7190c | 123 | _y1 = y; |
GordonSin | 0:0ed2a7c7190c | 124 | _y2 = y + h - 1; |
GordonSin | 0:0ed2a7c7190c | 125 | } |
GordonSin | 0:0ed2a7c7190c | 126 | |
GordonSin | 0:0ed2a7c7190c | 127 | void GraphicsDisplay::putp(int colour) { |
GordonSin | 0:0ed2a7c7190c | 128 | // put pixel at current pixel location |
GordonSin | 0:0ed2a7c7190c | 129 | pixel(_x, _y, colour); |
GordonSin | 0:0ed2a7c7190c | 130 | // update pixel location based on window settings |
GordonSin | 0:0ed2a7c7190c | 131 | _x++; |
GordonSin | 0:0ed2a7c7190c | 132 | if(_x > _x2) { |
GordonSin | 0:0ed2a7c7190c | 133 | _x = _x1; |
GordonSin | 0:0ed2a7c7190c | 134 | _y++; |
GordonSin | 0:0ed2a7c7190c | 135 | if(_y > _y2) { |
GordonSin | 0:0ed2a7c7190c | 136 | _y = _y1; |
GordonSin | 0:0ed2a7c7190c | 137 | } |
GordonSin | 0:0ed2a7c7190c | 138 | } |
GordonSin | 0:0ed2a7c7190c | 139 | } |
GordonSin | 0:0ed2a7c7190c | 140 | |
GordonSin | 0:0ed2a7c7190c | 141 | void GraphicsDisplay::fill(int x, int y, int w, int h, int colour) { |
GordonSin | 0:0ed2a7c7190c | 142 | window(x, y, w, h); |
GordonSin | 0:0ed2a7c7190c | 143 | for(int i=0; i<w*h; i++) { |
GordonSin | 0:0ed2a7c7190c | 144 | putp(colour); |
GordonSin | 0:0ed2a7c7190c | 145 | } |
GordonSin | 0:0ed2a7c7190c | 146 | } |
GordonSin | 0:0ed2a7c7190c | 147 | |
GordonSin | 0:0ed2a7c7190c | 148 | void GraphicsDisplay::cls() { |
GordonSin | 0:0ed2a7c7190c | 149 | fill(0, 0, width(), height(), _background); |
GordonSin | 0:0ed2a7c7190c | 150 | } |
GordonSin | 0:0ed2a7c7190c | 151 | |
GordonSin | 0:0ed2a7c7190c | 152 | void GraphicsDisplay::blit(int x, int y, int w, int h, const int *colour) { |
GordonSin | 0:0ed2a7c7190c | 153 | window(x, y, w, h); |
GordonSin | 0:0ed2a7c7190c | 154 | for(int i=0; i<w*h; i++) { |
GordonSin | 0:0ed2a7c7190c | 155 | putp(colour[i]); |
GordonSin | 0:0ed2a7c7190c | 156 | } |
GordonSin | 0:0ed2a7c7190c | 157 | } |
GordonSin | 0:0ed2a7c7190c | 158 | |
GordonSin | 0:0ed2a7c7190c | 159 | void GraphicsDisplay::blitbit(int x, int y, int w, int h, const char* colour) { |
GordonSin | 0:0ed2a7c7190c | 160 | window(x, y, w, h); |
GordonSin | 0:0ed2a7c7190c | 161 | for(int i = 0; i < w*h; i++) { |
GordonSin | 0:0ed2a7c7190c | 162 | char byte = colour[i >> 3]; |
GordonSin | 0:0ed2a7c7190c | 163 | int offset = i & 0x7; |
GordonSin | 0:0ed2a7c7190c | 164 | int c = ((byte << offset) & 0x80) ? _foreground : _background; |
GordonSin | 0:0ed2a7c7190c | 165 | putp(c); |
GordonSin | 0:0ed2a7c7190c | 166 | } |
GordonSin | 0:0ed2a7c7190c | 167 | } |
GordonSin | 0:0ed2a7c7190c | 168 | |
GordonSin | 0:0ed2a7c7190c | 169 | int GraphicsDisplay::columns() { |
GordonSin | 0:0ed2a7c7190c | 170 | return width() / 8; |
GordonSin | 0:0ed2a7c7190c | 171 | } |
GordonSin | 0:0ed2a7c7190c | 172 | |
GordonSin | 0:0ed2a7c7190c | 173 | int GraphicsDisplay::rows() { |
GordonSin | 0:0ed2a7c7190c | 174 | return height() / 8; |
GordonSin | 0:0ed2a7c7190c | 175 | } |
GordonSin | 0:0ed2a7c7190c | 176 |