From 82d929736a6188583fe3283b8fa2ce776f3cca21 Mon Sep 17 00:00:00 2001 From: mrwastl Date: Sat, 25 Jun 2011 21:52:54 +0200 Subject: adapt all drivers to support SetPixel() with 32bit colours; Set8Pixels() is no longer virtual (generic implementation in base class) --- glcddrivers/ks0108.c | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) (limited to 'glcddrivers/ks0108.c') diff --git a/glcddrivers/ks0108.c b/glcddrivers/ks0108.c index de9c505..250bbcd 100644 --- a/glcddrivers/ks0108.c +++ b/glcddrivers/ks0108.c @@ -6,7 +6,8 @@ * This file is released under the GNU General Public License. Refer * to the COPYING file distributed with this package. * - * (c) 2003 Andreas 'randy' Weinberger + * (c) 2003-2011 Andreas 'randy' Weinberger + * (c) 2011 Wolfgang Astleitner */ #include @@ -420,6 +421,28 @@ void cDriverKS0108::Clear() memset(LCD[x], 0, height); } + +void cDriverKS0108::SetPixel(int x, int y, uint32_t data) +{ + if (x >= width || y >= height) + return; + + int pos = x % 8; + if (config->upsideDown) + { + x = width - 1 - x; + y = height - 1 - y; + pos = 7 - pos; // reverse bit position + } + + if (data == GLCD::cColor::White) + LCD[x / 8][y] |= (1 << pos); + else + LCD[x / 8][y] &= ( 0xFF ^ (1 << pos) ); +} + + +#if 0 void cDriverKS0108::Set8Pixels(int x, int y, unsigned char data) { if (x >= width || y >= height) @@ -438,6 +461,7 @@ void cDriverKS0108::Set8Pixels(int x, int y, unsigned char data) LCD[x / 8][y] = LCD[x / 8][y] | ReverseBits(data); } } +#endif void cDriverKS0108::Refresh(bool refreshAll) { -- cgit v1.2.3