From 2c71aa9feb0268da7d993feddbbe4db591fcd3ba Mon Sep 17 00:00:00 2001 From: Jonathan Gordon Date: Tue, 28 Feb 2012 22:26:32 +1100 Subject: 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 --- apps/gui/skin_engine/skin_parser.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'apps/gui/skin_engine/skin_parser.c') diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index 340cbbdb01..0fe8789bcb 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -1832,6 +1832,7 @@ static int convert_viewport(struct wps_data *data, struct skin_element* element) viewport_set_defaults(&skin_vp->vp, curr_screen); #if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)) + skin_vp->output_to_backdrop_buffer = false; skin_vp->start_fgcolour = skin_vp->vp.fg_pattern; skin_vp->start_bgcolour = skin_vp->vp.bg_pattern; #endif @@ -2023,6 +2024,11 @@ static int skin_element_callback(struct skin_element* element, void* data) case SKIN_TOKEN_VIEWPORT_TEXTSTYLE: function = parse_viewporttextstyle; break; + case SKIN_TOKEN_VIEWPORT_DRAWONBG: + curr_vp->output_to_backdrop_buffer = true; + backdrop_filename = BACKDROP_BUFFERNAME; + wps_data->use_extra_framebuffer = true; + break; #endif #ifdef HAVE_LCD_COLOR case SKIN_TOKEN_VIEWPORT_GRADIENT_SETUP: -- cgit v1.2.3