diff options
author | Jens Arnold <amiconn@rockbox.org> | 2008-01-04 23:42:38 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2008-01-04 23:42:38 +0000 |
commit | feb5b15e9bf9292e3d4d82ea1e01ab3557fb1240 (patch) | |
tree | d854c9a6fbbb3263537071fb02df349fdfa62361 /firmware/export | |
parent | d3586837fa9221a7ef104550b4c0aadc1a6ea77c (diff) | |
download | rockbox-feb5b15e9bf9292e3d4d82ea1e01ab3557fb1240.tar.gz rockbox-feb5b15e9bf9292e3d4d82ea1e01ab3557fb1240.zip |
All-new greyscale library, replacing the old one. Features: (1) Drawing/updating is faster than the old grayscale lib at full depth. (2) Always 129 shades instead of 2..33 shades. (3) No graininess caused by frequent updates (mpegplayer, doom, ...). (4) Needs less memory than the old grayscale lib at full depth. * The tradeoff is slightly higher CPU load in the ISR (frames are calculated 'live') and an extra function in the core. * Ported all plugins which used the graylib to use the new one. * Some slight optimisations for archos and H1x0 LCD update.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15998 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/export')
-rw-r--r-- | firmware/export/lcd.h | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index de03222441..60d9efaf92 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h | |||
@@ -95,15 +95,24 @@ extern void lcd_puts_scroll(int x, int y, const unsigned char* string); | |||
95 | extern void lcd_puts_scroll_style(int x, int y, const unsigned char* string, | 95 | extern void lcd_puts_scroll_style(int x, int y, const unsigned char* string, |
96 | int style); | 96 | int style); |
97 | 97 | ||
98 | #ifdef HAVE_LCD_BITMAP | ||
99 | |||
98 | #if defined(HAVE_LCD_COLOR) | 100 | #if defined(HAVE_LCD_COLOR) |
99 | #define LCD_YUV_DITHER 0x1 | 101 | #define LCD_YUV_DITHER 0x1 |
100 | extern void lcd_yuv_set_options(unsigned options); | 102 | extern void lcd_yuv_set_options(unsigned options); |
101 | extern void lcd_yuv_blit(unsigned char * const src[3], | 103 | extern void lcd_yuv_blit(unsigned char * const src[3], |
102 | int src_x, int src_y, int stride, | 104 | int src_x, int src_y, int stride, |
103 | int x, int y, int width, int height); | 105 | int x, int y, int width, int height); |
106 | #else | ||
107 | struct grey_data { | ||
108 | unsigned char phase; /* SH1 uses it signed (doesn't matter for high level) */ | ||
109 | unsigned char value; /* 0..128 are allowed */ | ||
110 | } __attribute__((packed)); | ||
111 | extern void lcd_grey_data(const struct grey_data *data, int count); /* private */ | ||
112 | extern void lcd_grey_phase_blit(const struct grey_data *data, int bx, int by, | ||
113 | int bwidth, int bheight, int stride); | ||
104 | #endif | 114 | #endif |
105 | 115 | ||
106 | #ifdef HAVE_LCD_BITMAP | ||
107 | /* performance function */ | 116 | /* performance function */ |
108 | extern void lcd_blit(const fb_data* data, int x, int by, int width, | 117 | extern void lcd_blit(const fb_data* data, int x, int by, int width, |
109 | int bheight, int stride); | 118 | int bheight, int stride); |