summaryrefslogtreecommitdiff
path: root/glcddrivers/image.c
diff options
context:
space:
mode:
authormrwastl <mrwastl@users.sourceforge.net>2011-10-13 13:03:25 +0200
committermrwastl <mrwastl@users.sourceforge.net>2011-10-13 13:03:25 +0200
commitab3acde2326a9d8f942995325b71b3aeaf24b918 (patch)
treeec1c3ed9de1dde8280aee9e011777f4161236572 /glcddrivers/image.c
parent9647922aa1f9d2b3fa1e8eb8693511cd7cbb6db6 (diff)
downloadgraphlcd-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.c6
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)