diff options
| author | Jens Arnold <amiconn@rockbox.org> | 2006-03-08 01:14:46 +0000 |
|---|---|---|
| committer | Jens Arnold <amiconn@rockbox.org> | 2006-03-08 01:14:46 +0000 |
| commit | 19b45a4374bb3efda4f554d3d806835368d1536a (patch) | |
| tree | 1fac6f5b900e7e40d9f770d14c5701db6231ec0f /firmware | |
| parent | 761652abf71dcae63769a67388575fa47b6e8567 (diff) | |
| download | rockbox-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.c | 18 | ||||
| -rw-r--r-- | firmware/export/lcd.h | 8 |
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) |