diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2012-02-28 22:26:32 +1100 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2012-02-28 23:03:04 +1100 |
commit | 2c71aa9feb0268da7d993feddbbe4db591fcd3ba (patch) | |
tree | 29b3c1480abca46813ef2dc3bb8f0862b596fe34 /firmware | |
parent | 13f98df5ed6b8183d972f85a1bfe55cf02194941 (diff) |
lcd/skin_engine: Add the ability to draw onto the backdrop layer
The framebuffer the lcd driver uses can now be changed on the fly
which means that regular lcd_* drawing functions can draw onto the
"backdrop" buffer. The skin engine can use this to create layered
effects.
Add the tag %VB to a viewport to draw that viewport onto the
backdrop layer. If you want to draw an image onto the backdrop
framebuffer use %x(backdrop filename) instead of %X() inside
a viewport with %VB.
Change-Id: I741498e2af6d4f2d78932cabe8942317893e7cfc
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/drivers/lcd-bitmap-common.c | 8 | ||||
-rw-r--r-- | firmware/export/lcd-remote.h | 1 | ||||
-rw-r--r-- | firmware/export/lcd.h | 1 |
3 files changed, 10 insertions, 0 deletions
diff --git a/firmware/drivers/lcd-bitmap-common.c b/firmware/drivers/lcd-bitmap-common.c index f122e336d7..b0be687ed2 100644 --- a/firmware/drivers/lcd-bitmap-common.c +++ b/firmware/drivers/lcd-bitmap-common.c @@ -81,6 +81,14 @@ static void lcd_gradient_rect(int x1, int x2, int y, unsigned h, } #endif +void LCDFN(set_framebuffer)(FBFN(data) *fb) +{ + if (fb) + LCDFN(framebuffer) = fb; + else + LCDFN(framebuffer) = &LCDFN(static_framebuffer)[0][0]; +} + /* * draws the borders of the current viewport **/ diff --git a/firmware/export/lcd-remote.h b/firmware/export/lcd-remote.h index 0f5f7ed6b7..1bb19a5cfa 100644 --- a/firmware/export/lcd-remote.h +++ b/firmware/export/lcd-remote.h @@ -132,6 +132,7 @@ void lcd_remote_init(void); void lcd_remote_write_command(int cmd); void lcd_remote_write_command_ex(int cmd, int data); void lcd_remote_write_data(const fb_remote_data *data, int count); +extern void lcd_remote_set_framebuffer(fb_remote_data *fb); extern void lcd_remote_bitmap_part(const fb_remote_data *src, int src_x, int src_y, int stride, int x, int y, diff --git a/firmware/export/lcd.h b/firmware/export/lcd.h index 052b368d9b..7e0e979821 100644 --- a/firmware/export/lcd.h +++ b/firmware/export/lcd.h @@ -529,6 +529,7 @@ 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 fb_data *src, int x, int y, int width, int height); +extern void lcd_set_framebuffer(fb_data *fb); extern void lcd_scroll_step(int pixels); |