Fork of Chris Styles' C12832 LCD driver
Dependents: co657_lcdplay co657_nrf52_beacons door_lock co657_IoT
Fork of C12832 by
Diff: C12832.cpp
- Revision:
- 17:67f9ca828270
- Parent:
- 16:7de323fa46fe
- Child:
- 18:8c294697c901
--- a/C12832.cpp Wed Feb 05 14:25:16 2014 +0000 +++ b/C12832.cpp Wed Oct 28 21:01:40 2015 +0000 @@ -204,7 +204,7 @@ void C12832::cls(void) { memset(buffer,0x00,512); // clear display buffer - copy_to_lcd(); + if (auto_up) copy_to_lcd(); } @@ -218,22 +218,21 @@ dx = x1-x0; dy = y1-y0; - // if (dx == 0) { /* vertical line */ - // if (y1 > y0) vline(x0,y0,y1,color); - // else vline(x0,y1,y0,color); - // return; - // } + if (dx == 0) { /* vertical line */ + if (y1 > y0) vline(x0,y0,y1,color); + else vline(x0,y1,y0,color); + return; + } else if (dy == 0) { /* horizontal line */ + if (x1 > x0) hline(x0,y0,x1,color); + else hline(x1,y0,x0,color); + return; + } if (dx > 0) { dx_sym = 1; } else { dx_sym = -1; } - // if (dy == 0) { /* horizontal line */ - // if (x1 > x0) hline(x0,x1,y0,color); - // else hline(x1,x0,y0,color); - // return; - // } if (dy > 0) { dy_sym = 1; @@ -278,6 +277,32 @@ if(auto_up) copy_to_lcd(); } +void C12832::hline(int x0, int y0, int x1, int colour) +{ + int x; + + /* FIXME: do this sensibly, in blocks of 8 pixels */ + for (x=x0; x<=x1; x++) { + pixel (x, y0, colour); + } + if (auto_up) { + copy_to_lcd (); + } +} + +void C12832::vline(int x0, int y0, int y1, int colour) +{ + int y; + + /* FIXME: do this sensibly, computing the bit positioning once */ + for (y=y0; y<=y1; y++) { + pixel (x0, y, colour); + } + if (auto_up) { + copy_to_lcd (); + } +} + void C12832::rect(int x0, int y0, int x1, int y1, int color) {