summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorJens Arnold <amiconn@rockbox.org>2006-03-08 01:14:46 +0000
committerJens Arnold <amiconn@rockbox.org>2006-03-08 01:14:46 +0000
commit19b45a4374bb3efda4f554d3d806835368d1536a (patch)
tree1fac6f5b900e7e40d9f770d14c5701db6231ec0f /firmware
parent761652abf71dcae63769a67388575fa47b6e8567 (diff)
downloadrockbox-19b45a4374bb3efda4f554d3d806835368d1536a.zip
rockbox-19b45a4374bb3efda4f554d3d806835368d1536a.tar.gz
rockbox-19b45a4374bb3efda4f554d3d806835368d1536a.tar.bz2
rockbox-19b45a4374bb3efda4f554d3d806835368d1536a.tar.xz
LCD extension library: Implemented scrolling for LCD depths below 8 bit. * Oscilloscope: Use new scrolling function, some minor optimisations.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8951 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/drivers/lcd-2bit-horz.c18
-rw-r--r--firmware/export/lcd.h8
2 files changed, 15 insertions, 11 deletions
diff --git a/firmware/drivers/lcd-2bit-horz.c b/firmware/drivers/lcd-2bit-horz.c
index 164e94c..a76ebe1 100644
--- a/firmware/drivers/lcd-2bit-horz.c
+++ b/firmware/drivers/lcd-2bit-horz.c
@@ -38,7 +38,7 @@
/*** globals ***/
-unsigned char lcd_framebuffer[LCD_HEIGHT][FB_WIDTH] IBSS_ATTR;
+unsigned char lcd_framebuffer[LCD_HEIGHT][LCD_FBWIDTH] IBSS_ATTR;
static const unsigned char dibits[16] ICONST_ATTR = {
0x00, 0x03, 0x0C, 0x0F, 0x30, 0x33, 0x3C, 0x3F,
@@ -419,11 +419,11 @@ void lcd_vline(int x, int y1, int y2)
dst = &lcd_framebuffer[y1][x>>2];
mask = pixmask[x & 3];
- dst_end = dst + (y2 - y1) * FB_WIDTH;
+ dst_end = dst + (y2 - y1) * LCD_FBWIDTH;
do
{
bfunc(dst, mask, 0xFFu);
- dst += FB_WIDTH;
+ dst += LCD_FBWIDTH;
}
while (dst <= dst_end);
}
@@ -482,11 +482,11 @@ void lcd_fillrect(int x, int y, int width, int height)
{
unsigned char *dst_col = dst;
- dst_end = dst_col + height * FB_WIDTH;
+ dst_end = dst_col + height * LCD_FBWIDTH;
do
{
bfunc(dst_col, mask, 0xFFu);
- dst_col += FB_WIDTH;
+ dst_col += LCD_FBWIDTH;
}
while (dst_col < dst_end);
@@ -495,11 +495,11 @@ void lcd_fillrect(int x, int y, int width, int height)
}
mask &= mask_right;
- dst_end = dst + height * FB_WIDTH;
+ dst_end = dst + height * LCD_FBWIDTH;
do
{
bfunc(dst, mask, 0xFFu);
- dst += FB_WIDTH;
+ dst += LCD_FBWIDTH;
}
while (dst < dst_end);
}
@@ -651,7 +651,7 @@ void lcd_bitmap_part(const unsigned char *src, int src_x, int src_y,
mask_right = 0xFFu >> (2 * (~nx & 3));
shift *= 2;
- dst_end = dst + height * FB_WIDTH;
+ dst_end = dst + height * LCD_FBWIDTH;
do
{
const unsigned char *src_row = src;
@@ -678,7 +678,7 @@ void lcd_bitmap_part(const unsigned char *src, int src_x, int src_y,
setblock(dst_row, mask_row & mask_right, data);
src += stride;
- dst += FB_WIDTH;
+ dst += LCD_FBWIDTH;
}
while (dst < dst_end);
}
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h
index 6f7fef9..89bf353 100644
--- a/firmware/export/lcd.h
+++ b/firmware/export/lcd.h
@@ -205,8 +205,8 @@ typedef void lcd_fastpixelfunc_type(fb_data *address);
extern fb_data lcd_framebuffer[LCD_HEIGHT/8][LCD_WIDTH];
#elif LCD_DEPTH == 2
#if LCD_PIXELFORMAT == HORIZONTAL_PACKING
-#define FB_WIDTH ((LCD_WIDTH+3)/4)
-extern fb_data lcd_framebuffer[LCD_HEIGHT][FB_WIDTH];
+#define LCD_FBWIDTH ((LCD_WIDTH+3)/4)
+extern fb_data lcd_framebuffer[LCD_HEIGHT][LCD_FBWIDTH];
#else
extern fb_data lcd_framebuffer[LCD_HEIGHT/4][LCD_WIDTH];
#endif
@@ -214,6 +214,10 @@ extern fb_data lcd_framebuffer[LCD_HEIGHT/4][LCD_WIDTH];
extern fb_data lcd_framebuffer[LCD_HEIGHT][LCD_WIDTH];
#elif LCD_DEPTH == 18
extern fb_data lcd_framebuffer[LCD_HEIGHT][LCD_WIDTH];
+#endif
+
+#ifndef LCD_FBWIDTH
+#define LCD_FBWIDTH LCD_WIDTH
#endif
#if (CONFIG_BACKLIGHT==BL_IRIVER_H300) || (CONFIG_BACKLIGHT==BL_IPOD3G)