ELEC2645 (2018/19) / Mbed 2 deprecated el17ajf

Dependencies:   mbed

Fork of el17ajf by Angus Findlay

Committer:
el17ajf
Date:
Tue Mar 19 10:36:51 2019 +0000
Revision:
15:afeefa3ceb61
Parent:
14:53d2167d7c9a
Child:
16:3f84f2d7b910
added switch debouncing

Who changed what in which revision?

UserRevisionLine numberNew contents of line
el17ajf 5:3efbdcb3efaf 1 #include "Graphics.h"
el17ajf 5:3efbdcb3efaf 2
el17ajf 14:53d2167d7c9a 3 namespace Graphics {
el17ajf 14:53d2167d7c9a 4 const int SCREEN_HEIGHT = 84;
el17ajf 14:53d2167d7c9a 5 const int SCREEN_WIDTH = 48;
el17ajf 14:53d2167d7c9a 6 const int BLOCK_SIZE = 4;
el17ajf 14:53d2167d7c9a 7 const int BORDER_SIZE = 2;
el17ajf 14:53d2167d7c9a 8
el17ajf 14:53d2167d7c9a 9 N5110 * lcd;
el17ajf 14:53d2167d7c9a 10
el17ajf 14:53d2167d7c9a 11 // "private" methods
el17ajf 14:53d2167d7c9a 12 void drawPoint(int x, int y);
el17ajf 14:53d2167d7c9a 13 void drawLine(int x1, int y1, int x2, int y2);
el17ajf 14:53d2167d7c9a 14 void drawBox(int x1, int y1, int x2, int y2);
el17ajf 14:53d2167d7c9a 15 void drawDottedLine(int x1, int y1, int x2, int y2);
el17ajf 14:53d2167d7c9a 16 int gridYToScreenX(int grid_y);
el17ajf 14:53d2167d7c9a 17 int gridXToScreenY(int grid_x);
el17ajf 14:53d2167d7c9a 18
el17ajf 14:53d2167d7c9a 19 void init() {
el17ajf 14:53d2167d7c9a 20 lcd = new N5110(PTC9,PTC0,PTC7,PTD2,PTD1,PTC11);
el17ajf 14:53d2167d7c9a 21 lcd->init();
el17ajf 14:53d2167d7c9a 22 lcd->setContrast(0.5);
el17ajf 14:53d2167d7c9a 23 lcd->setBrightness(0);
el17ajf 14:53d2167d7c9a 24 }
el17ajf 14:53d2167d7c9a 25
el17ajf 14:53d2167d7c9a 26 void deinit() {
el17ajf 14:53d2167d7c9a 27 delete lcd;
el17ajf 14:53d2167d7c9a 28 }
el17ajf 14:53d2167d7c9a 29
el17ajf 14:53d2167d7c9a 30 void clear() {
el17ajf 14:53d2167d7c9a 31 lcd->clear();
el17ajf 14:53d2167d7c9a 32 }
el17ajf 14:53d2167d7c9a 33
el17ajf 14:53d2167d7c9a 34 void render() {
el17ajf 14:53d2167d7c9a 35 lcd->refresh();
el17ajf 14:53d2167d7c9a 36 }
el17ajf 14:53d2167d7c9a 37
el17ajf 14:53d2167d7c9a 38 void drawPoint(int x, int y) {
el17ajf 14:53d2167d7c9a 39 lcd->setPixel(x, y, true);
el17ajf 14:53d2167d7c9a 40 }
el17ajf 14:53d2167d7c9a 41
el17ajf 14:53d2167d7c9a 42 void drawLine(int x1, int y1, int x2, int y2) {
el17ajf 14:53d2167d7c9a 43 lcd->drawLine(x1, y1, x2, y2, 1);
el17ajf 14:53d2167d7c9a 44 }
el17ajf 5:3efbdcb3efaf 45
el17ajf 14:53d2167d7c9a 46 void drawDottedLine(int x1, int y1, int x2, int y2) {
el17ajf 14:53d2167d7c9a 47 lcd->drawLine(
el17ajf 15:afeefa3ceb61 48 y1,// f(0) -> S_W - 1, f(S_W - 1) = 0
el17ajf 15:afeefa3ceb61 49 (SCREEN_WIDTH - 1) - x1,
el17ajf 15:afeefa3ceb61 50 y2,
el17ajf 15:afeefa3ceb61 51 (SCREEN_WIDTH - 1) - x2,
el17ajf 14:53d2167d7c9a 52 2 // dotted
el17ajf 14:53d2167d7c9a 53 );
el17ajf 14:53d2167d7c9a 54 }
el17ajf 14:53d2167d7c9a 55
el17ajf 14:53d2167d7c9a 56 void drawBox(int x1, int y1, int x2, int y2) {
el17ajf 14:53d2167d7c9a 57 drawLine(x1, y1, x2, y1);
el17ajf 14:53d2167d7c9a 58 drawLine(x2, y1, x2, y2);
el17ajf 14:53d2167d7c9a 59 drawLine(x2, y2, x1, y2);
el17ajf 14:53d2167d7c9a 60 drawLine(x1, y2, x1, y1);
el17ajf 14:53d2167d7c9a 61 }
el17ajf 8:5066ce13a430 62
el17ajf 14:53d2167d7c9a 63 void drawBlock(int grid_x, int grid_y) {
el17ajf 14:53d2167d7c9a 64 // screen coords
el17ajf 14:53d2167d7c9a 65 int x = gridYToScreenX(grid_y);
el17ajf 14:53d2167d7c9a 66 int y = gridXToScreenY(grid_x);
el17ajf 14:53d2167d7c9a 67 drawBox(x, y, x + 3, y - 3);
el17ajf 14:53d2167d7c9a 68 drawPoint(x + 2, y - 2);
el17ajf 14:53d2167d7c9a 69 }
el17ajf 14:53d2167d7c9a 70
el17ajf 14:53d2167d7c9a 71 void drawBorder() {
el17ajf 15:afeefa3ceb61 72 drawDottedLine(0, 0, 0, SCREEN_HEIGHT - 1); //
el17ajf 14:53d2167d7c9a 73 drawDottedLine(1, 1, 1, SCREEN_HEIGHT - 2);
el17ajf 14:53d2167d7c9a 74
el17ajf 15:afeefa3ceb61 75 drawDottedLine(0, SCREEN_HEIGHT - 1, SCREEN_WIDTH - 1 - 5, SCREEN_HEIGHT - 1);
el17ajf 15:afeefa3ceb61 76 drawDottedLine(1, SCREEN_HEIGHT - 2, SCREEN_WIDTH - 2 - 5, SCREEN_HEIGHT - 2);
el17ajf 14:53d2167d7c9a 77
el17ajf 15:afeefa3ceb61 78 drawDottedLine(SCREEN_WIDTH - 1 - 5, SCREEN_HEIGHT - 1, SCREEN_WIDTH - 1 - 5, 0);
el17ajf 15:afeefa3ceb61 79 drawDottedLine(SCREEN_WIDTH - 2 - 5, SCREEN_HEIGHT - 2, SCREEN_WIDTH - 2 - 5, 1);
el17ajf 14:53d2167d7c9a 80 }
el17ajf 14:53d2167d7c9a 81
el17ajf 14:53d2167d7c9a 82 int gridYToScreenX(int grid_y) {
el17ajf 14:53d2167d7c9a 83 return grid_y * BLOCK_SIZE + BORDER_SIZE;
el17ajf 14:53d2167d7c9a 84 }
el17ajf 14:53d2167d7c9a 85
el17ajf 14:53d2167d7c9a 86 int gridXToScreenY(int grid_x) {
el17ajf 14:53d2167d7c9a 87 return SCREEN_WIDTH - (grid_x * BLOCK_SIZE) - BORDER_SIZE;
el17ajf 14:53d2167d7c9a 88 }
el17ajf 14:53d2167d7c9a 89 };