diff options
author | Jens Arnold <amiconn@rockbox.org> | 2007-03-31 09:58:49 +0000 |
---|---|---|
committer | Jens Arnold <amiconn@rockbox.org> | 2007-03-31 09:58:49 +0000 |
commit | 54ea2e435e1a5688de4e4dcf551a1fc9c1db323f (patch) | |
tree | e8ee4e55a20c872a6c0deff554734038c35dc661 /firmware/target/sh | |
parent | 6186b556bdbe97bc3c50dd8feb970590bec2053c (diff) | |
download | rockbox-54ea2e435e1a5688de4e4dcf551a1fc9c1db323f.tar.gz rockbox-54ea2e435e1a5688de4e4dcf551a1fc9c1db323f.zip |
Charcell lcd driver: Preparations for switching to non-immediate LCD updates, using lcd_update() like on bitmap targets. * Added proper clipping. * Simplified simulator code.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12979 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/sh')
-rw-r--r-- | firmware/target/sh/archos/player/lcd-player.c | 38 |
1 files changed, 27 insertions, 11 deletions
diff --git a/firmware/target/sh/archos/player/lcd-player.c b/firmware/target/sh/archos/player/lcd-player.c index 7018b2277a..8f59901116 100644 --- a/firmware/target/sh/archos/player/lcd-player.c +++ b/firmware/target/sh/archos/player/lcd-player.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include "hwcompat.h" | 23 | #include "hwcompat.h" |
24 | #include "system.h" | 24 | #include "system.h" |
25 | #include "lcd.h" | 25 | #include "lcd.h" |
26 | #include "lcd-charcell.h" | ||
26 | 27 | ||
27 | #define OLD_LCD_CRAM ((char)0xB0) /* Characters */ | 28 | #define OLD_LCD_CRAM ((char)0xB0) /* Characters */ |
28 | #define OLD_LCD_PRAM ((char)0x80) /* Patterns */ | 29 | #define OLD_LCD_PRAM ((char)0x80) /* Patterns */ |
@@ -69,17 +70,6 @@ void lcd_double_height(bool on) | |||
69 | : NEW_LCD_SET_DOUBLE_HEIGHT); | 70 | : NEW_LCD_SET_DOUBLE_HEIGHT); |
70 | } | 71 | } |
71 | 72 | ||
72 | void lcd_put_hw_char(int x, int y, unsigned char hw_char) | ||
73 | { | ||
74 | lcd_write_command_e(LCD_CURSOR(x, y), hw_char); | ||
75 | } | ||
76 | |||
77 | void lcd_define_hw_pattern (int which, const char *pattern) | ||
78 | { | ||
79 | lcd_write_command(lcd_pram | (which << 3)); | ||
80 | lcd_write_data(pattern, 7); | ||
81 | } | ||
82 | |||
83 | void lcd_icon(int icon, bool enable) | 73 | void lcd_icon(int icon, bool enable) |
84 | { | 74 | { |
85 | static const struct { | 75 | static const struct { |
@@ -233,3 +223,29 @@ void lcd_init_device(void) | |||
233 | } | 223 | } |
234 | lcd_set_contrast(lcd_default_contrast()); | 224 | lcd_set_contrast(lcd_default_contrast()); |
235 | } | 225 | } |
226 | |||
227 | /*** Update functions ***/ | ||
228 | |||
229 | void lcd_update(void) | ||
230 | { | ||
231 | int y; | ||
232 | |||
233 | for (y = 0; y < lcd_pattern_count; y++) | ||
234 | { | ||
235 | if (lcd_patterns[y].count > 0) | ||
236 | { | ||
237 | lcd_write_command(lcd_pram | (y << 3)); | ||
238 | lcd_write_data(lcd_patterns[y].pattern, 7); | ||
239 | } | ||
240 | } | ||
241 | for (y = 0; y < LCD_HEIGHT; y++) | ||
242 | { | ||
243 | lcd_write_command(LCD_CURSOR(0, y)); | ||
244 | lcd_write_data(lcd_charbuffer[y], LCD_WIDTH); | ||
245 | } | ||
246 | if (lcd_cursor.visible) | ||
247 | { | ||
248 | lcd_write_command_e(LCD_CURSOR(lcd_cursor.x, lcd_cursor.y), | ||
249 | lcd_cursor.hw_char); | ||
250 | } | ||
251 | } | ||