diff options
author | mrwastl <mrwastl@users.sourceforge.net> | 2011-10-13 13:03:25 +0200 |
---|---|---|
committer | mrwastl <mrwastl@users.sourceforge.net> | 2011-10-13 13:03:25 +0200 |
commit | ab3acde2326a9d8f942995325b71b3aeaf24b918 (patch) | |
tree | ec1c3ed9de1dde8280aee9e011777f4161236572 /glcddrivers/image.c | |
parent | 9647922aa1f9d2b3fa1e8eb8693511cd7cbb6db6 (diff) | |
download | graphlcd-base-ab3acde2326a9d8f942995325b71b3aeaf24b918.tar.gz graphlcd-base-ab3acde2326a9d8f942995325b71b3aeaf24b918.tar.bz2 |
bug fix for bit order in SetPixel(): verified: image, not verified yet: hd61830, ks0108, network, sed1330, sed1520; beauty fix in object.c (compiler warning)
Diffstat (limited to 'glcddrivers/image.c')
-rw-r--r-- | glcddrivers/image.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/glcddrivers/image.c b/glcddrivers/image.c index 6a89ffa..a3d123f 100644 --- a/glcddrivers/image.c +++ b/glcddrivers/image.c @@ -136,18 +136,20 @@ void cDriverImage::SetPixel(int x, int y, uint32_t data) if (x >= width || y >= height) return; + int cols = (width + 7 ) >> 3; int pos = x % 8; if (config->upsideDown) { x = width - 1 - x; y = height - 1 - y; + } else { pos = 7 - pos; // reverse bit position } if (data == GRAPHLCD_White) - newLCD[y * x] |= ( 1 << pos ); + newLCD[y * cols + (x >> 3)] |= ( 1 << pos ); else - newLCD[y * x] &= ( 0xFF ^ ( 1 << pos) ); + newLCD[y * cols + (x >> 3)] &= ( 0xFF ^ ( 1 << pos) ); } void cDriverImage::Refresh(bool refreshAll) |