summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2005-11-14 20:43:49 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2005-11-14 20:43:49 +0000
commit0cb4a4610ddf1a392e04c8818e89fa188a2e9fad (patch)
treefa2bd30e53d1cde946e83edf750a0d7158f564a1
parentdbc8c2c14cc86b6a23b437e3f3145214e173bfa2 (diff)
downloadrockbox-0cb4a4610ddf1a392e04c8818e89fa188a2e9fad.zip
rockbox-0cb4a4610ddf1a392e04c8818e89fa188a2e9fad.tar.gz
rockbox-0cb4a4610ddf1a392e04c8818e89fa188a2e9fad.tar.bz2
rockbox-0cb4a4610ddf1a392e04c8818e89fa188a2e9fad.tar.xz
New type for the LCD frame buffer data
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7876 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r--apps/plugin.h8
-rw-r--r--firmware/export/lcd.h20
2 files changed, 17 insertions, 11 deletions
diff --git a/apps/plugin.h b/apps/plugin.h
index 5e2b3b6..8630ce7 100644
--- a/apps/plugin.h
+++ b/apps/plugin.h
@@ -184,17 +184,17 @@ struct plugin_api {
void (*lcd_set_background)(int brightness);
int (*lcd_get_background)(void);
#endif
- void (*lcd_bitmap_part)(const unsigned char *src, int src_x, int src_y,
+ void (*lcd_bitmap_part)(const fb_data *src, int src_x, int src_y,
int stride, int x, int y, int width, int height);
- void (*lcd_bitmap)(const unsigned char *src, int x, int y, int width,
+ void (*lcd_bitmap)(const fb_data *src, int x, int y, int width,
int height);
#endif
void (*lcd_putsxy)(int x, int y, const unsigned char *string);
void (*lcd_puts_style)(int x, int y, const unsigned char *str, int style);
void (*lcd_puts_scroll_style)(int x, int y, const unsigned char* string,
int style);
- unsigned char* lcd_framebuffer;
- void (*lcd_blit) (const unsigned char* data, int x, int by, int width,
+ fb_data* lcd_framebuffer;
+ void (*lcd_blit) (const fb_data* data, int x, int by, int width,
int bheight, int stride);
void (*lcd_update)(void);
void (*lcd_update_rect)(int x, int y, int width, int height);
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h
index f095bbf..2d04cec 100644
--- a/firmware/export/lcd.h
+++ b/firmware/export/lcd.h
@@ -34,10 +34,16 @@
#include "file.h" /* for MAX_PATH; FIXME: Why does this not work for sims? */
#endif
+#if LCD_DEPTH <=8
+typedef unsigned char fb_data;
+#elif LCD_DEPTH <= 16
+typedef unsigned short fb_data;
+#endif
+
/* common functions */
extern void lcd_write_command(int byte);
extern void lcd_write_command_ex(int cmd, int data1, int data2);
-extern void lcd_write_data(const unsigned char* p_bytes, int count);
+extern void lcd_write_data(const fb_data* p_bytes, int count);
extern void lcd_init(void);
#ifdef SIMULATOR
/* Define a dummy device specific init for the sims */
@@ -63,7 +69,7 @@ extern void lcd_icon(int icon, bool enable);
#if defined(SIMULATOR) || defined(HAVE_LCD_BITMAP)
/* performance function */
-extern void lcd_blit(const unsigned char* data, int x, int by, int width,
+extern void lcd_blit(const fb_data* data, int x, int by, int width,
int bheight, int stride);
extern void lcd_update(void);
@@ -161,11 +167,11 @@ struct rgb {
/* Memory copy of display bitmap */
#if LCD_DEPTH == 1
-extern unsigned char lcd_framebuffer[LCD_HEIGHT/8][LCD_WIDTH];
+extern fb_data lcd_framebuffer[LCD_HEIGHT/8][LCD_WIDTH];
#elif LCD_DEPTH == 2
-extern unsigned char lcd_framebuffer[LCD_HEIGHT/4][LCD_WIDTH];
+extern fb_data lcd_framebuffer[LCD_HEIGHT/4][LCD_WIDTH];
#elif LCD_DEPTH == 16
-extern unsigned char lcd_framebuffer[LCD_HEIGHT][LCD_WIDTH*2];
+extern fb_data lcd_framebuffer[LCD_HEIGHT][LCD_WIDTH];
#endif
extern void lcd_set_invert_display(bool yesno);
@@ -190,9 +196,9 @@ extern void lcd_hline(int x1, int x2, int y);
extern void lcd_vline(int x, int y1, int y2);
extern void lcd_drawrect(int x, int y, int width, int height);
extern void lcd_fillrect(int x, int y, int width, int height);
-extern void lcd_bitmap_part(const unsigned char *src, int src_x, int src_y,
+extern void lcd_bitmap_part(const fb_data *src, int src_x, int src_y,
int stride, int x, int y, int width, int height);
-extern void lcd_bitmap(const unsigned char *src, int x, int y, int width,
+extern void lcd_bitmap(const fb_data *src, int x, int y, int width,
int height);
extern void lcd_putsxy(int x, int y, const unsigned char *string);