Ethernetwebsoc

Dependencies:   C12832_lcd LM75B WebSocketClient mbed-rtos mbed Socket lwip-eth lwip-sys lwip

Committer:
GordonSin
Date:
Fri May 31 04:09:54 2013 +0000
Revision:
0:0ed2a7c7190c
31/5/2013;

Who changed what in which revision?

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