summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2012-02-28 22:05:28 +1100
committerJonathan Gordon <rockbox@jdgordon.info>2012-02-28 23:51:01 +1100
commit34031cba5bddcc29dee0f61b3ea6ee1529014181 (patch)
treefed3c7dc82c2711f505dc5e51a9c4ce71470c606
parent0807fe8d3634010a8a8303e5b0a7abb2bd28a937 (diff)
downloadrockbox-34031cba5bddcc29dee0f61b3ea6ee1529014181.tar.gz
rockbox-34031cba5bddcc29dee0f61b3ea6ee1529014181.zip
skin_engine: Clean up %x() handling - beware theme issues
Internally remove some hacks around how %x() is handled. %x() inside the default viewport will no longer work if other viewports are used, so if you are using viewports and %x() make sure it is in a viewport! Change-Id: I8ecab805d55fc0f8476ff0516cba38e23400aa20
-rw-r--r--apps/gui/skin_engine/skin_display.c9
-rw-r--r--apps/gui/skin_engine/skin_parser.c4
-rw-r--r--apps/gui/skin_engine/skin_render.c7
-rw-r--r--apps/gui/skin_engine/wps_internals.h1
-rw-r--r--lib/skin_parser/tag_table.c2
-rw-r--r--wps/cabbiev2.112x64x1.wps1
-rw-r--r--wps/cabbiev2.128x64x1.wps3
7 files changed, 12 insertions, 15 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c
index 0613f986b3..0b3ba65751 100644
--- a/apps/gui/skin_engine/skin_display.c
+++ b/apps/gui/skin_engine/skin_display.c
@@ -298,10 +298,7 @@ void wps_draw_image(struct gui_wps *gwps, struct gui_img *img, int subimage)
298{ 298{
299 struct screen *display = gwps->display; 299 struct screen *display = gwps->display;
300 img->bm.data = core_get_data(img->buflib_handle); 300 img->bm.data = core_get_data(img->buflib_handle);
301 if(img->always_display) 301 display->set_drawmode(DRMODE_SOLID);
302 display->set_drawmode(DRMODE_FG);
303 else
304 display->set_drawmode(DRMODE_SOLID);
305 302
306 display->bmp_part(&img->bm, 0, img->subimage_height * subimage, 303 display->bmp_part(&img->bm, 0, img->subimage_height * subimage,
307 img->x, img->y, img->bm.width, img->subimage_height); 304 img->x, img->y, img->bm.width, img->subimage_height);
@@ -331,10 +328,6 @@ void wps_display_images(struct gui_wps *gwps, struct viewport* vp)
331 { 328 {
332 wps_draw_image(gwps, img, img->display); 329 wps_draw_image(gwps, img, img->display);
333 } 330 }
334 else if (img->always_display && SKINOFFSETTOPTR(get_skin_buffer(data), img->vp) == vp)
335 {
336 wps_draw_image(gwps, img, 0);
337 }
338 } 331 }
339 list = SKINOFFSETTOPTR(get_skin_buffer(data), list->next); 332 list = SKINOFFSETTOPTR(get_skin_buffer(data), list->next);
340 } 333 }
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index 0fe8789bcb..3b83d9e199 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -415,7 +415,6 @@ static int parse_image_load(struct skin_element *element,
415 img->x = x; 415 img->x = x;
416 img->y = y; 416 img->y = y;
417 img->num_subimages = 1; 417 img->num_subimages = 1;
418 img->always_display = false;
419 img->display = -1; 418 img->display = -1;
420 img->using_preloaded_icons = false; 419 img->using_preloaded_icons = false;
421 img->buflib_handle = -1; 420 img->buflib_handle = -1;
@@ -425,7 +424,7 @@ static int parse_image_load(struct skin_element *element,
425 424
426 if (token->type == SKIN_TOKEN_IMAGE_DISPLAY) 425 if (token->type == SKIN_TOKEN_IMAGE_DISPLAY)
427 { 426 {
428 img->always_display = true; 427 token->value.data = PTRTOSKINOFFSET(skin_buffer, img);
429 } 428 }
430 else if (element->params_count == 5) 429 else if (element->params_count == 5)
431 { 430 {
@@ -1000,7 +999,6 @@ static int parse_progressbar_tag(struct skin_element* element,
1000 img->x = 0; 999 img->x = 0;
1001 img->y = 0; 1000 img->y = 0;
1002 img->num_subimages = 1; 1001 img->num_subimages = 1;
1003 img->always_display = false;
1004 img->display = -1; 1002 img->display = -1;
1005 img->using_preloaded_icons = false; 1003 img->using_preloaded_icons = false;
1006 img->buflib_handle = -1; 1004 img->buflib_handle = -1;
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c
index ee42dfa5a7..f86b161eab 100644
--- a/apps/gui/skin_engine/skin_render.c
+++ b/apps/gui/skin_engine/skin_render.c
@@ -198,6 +198,13 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info,
198#endif 198#endif
199 break; 199 break;
200#ifdef HAVE_LCD_BITMAP 200#ifdef HAVE_LCD_BITMAP
201 case SKIN_TOKEN_IMAGE_DISPLAY:
202 {
203 struct gui_img *img = SKINOFFSETTOPTR(skin_buffer, token->value.data);
204 if (img && img->loaded && do_refresh)
205 img->display = 0;
206 }
207 break;
201 case SKIN_TOKEN_IMAGE_DISPLAY_LISTICON: 208 case SKIN_TOKEN_IMAGE_DISPLAY_LISTICON:
202 case SKIN_TOKEN_IMAGE_PRELOAD_DISPLAY: 209 case SKIN_TOKEN_IMAGE_PRELOAD_DISPLAY:
203 { 210 {
diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h
index 1ea5dbf467..3b1d7cf054 100644
--- a/apps/gui/skin_engine/wps_internals.h
+++ b/apps/gui/skin_engine/wps_internals.h
@@ -80,7 +80,6 @@ struct gui_img {
80 int buflib_handle; 80 int buflib_handle;
81 OFFSETTYPE(char*) label; 81 OFFSETTYPE(char*) label;
82 bool loaded; /* load state */ 82 bool loaded; /* load state */
83 bool always_display; /* not using the preload/display mechanism */
84 int display; 83 int display;
85 bool using_preloaded_icons; /* using the icon system instead of a bmp */ 84 bool using_preloaded_icons; /* using the icon system instead of a bmp */
86}; 85};
diff --git a/lib/skin_parser/tag_table.c b/lib/skin_parser/tag_table.c
index a44b2ef251..e4b8bb1bf9 100644
--- a/lib/skin_parser/tag_table.c
+++ b/lib/skin_parser/tag_table.c
@@ -178,7 +178,7 @@ static const struct tag_info legal_tags[] =
178 178
179 { SKIN_TOKEN_IMAGE_PRELOAD, "xl", "SFII|I", 0|NOBREAK }, 179 { SKIN_TOKEN_IMAGE_PRELOAD, "xl", "SFII|I", 0|NOBREAK },
180 { SKIN_TOKEN_IMAGE_PRELOAD_DISPLAY, "xd", "S|[IT]I", 0 }, 180 { SKIN_TOKEN_IMAGE_PRELOAD_DISPLAY, "xd", "S|[IT]I", 0 },
181 { SKIN_TOKEN_IMAGE_DISPLAY, "x", "SFII", 0|NOBREAK }, 181 { SKIN_TOKEN_IMAGE_DISPLAY, "x", "SFII", SKIN_REFRESH_STATIC|NOBREAK },
182 182
183 { SKIN_TOKEN_LOAD_FONT, "Fl" , "IF|I", 0|NOBREAK }, 183 { SKIN_TOKEN_LOAD_FONT, "Fl" , "IF|I", 0|NOBREAK },
184 { SKIN_TOKEN_ALBUMART_LOAD, "Cl" , "IIII|ss", 0|NOBREAK }, 184 { SKIN_TOKEN_ALBUMART_LOAD, "Cl" , "IIII|ss", 0|NOBREAK },
diff --git a/wps/cabbiev2.112x64x1.wps b/wps/cabbiev2.112x64x1.wps
index 3c56df1be1..cfefac890d 100644
--- a/wps/cabbiev2.112x64x1.wps
+++ b/wps/cabbiev2.112x64x1.wps
@@ -5,6 +5,7 @@
5%wd 5%wd
6# 6#
7# Load Backdrop 7# Load Backdrop
8%V(0,0,-,-,-)
8%x(z,wpsbackdrop-112x64x1.bmp,0,0) 9%x(z,wpsbackdrop-112x64x1.bmp,0,0)
9# 10#
10# Preload Images 11# Preload Images
diff --git a/wps/cabbiev2.128x64x1.wps b/wps/cabbiev2.128x64x1.wps
index 71c80aa728..23da53f4d3 100644
--- a/wps/cabbiev2.128x64x1.wps
+++ b/wps/cabbiev2.128x64x1.wps
@@ -11,12 +11,11 @@
11%xl(D,shuffle-128x64x1.bmp,0,1) 11%xl(D,shuffle-128x64x1.bmp,0,1)
12%xl(E,repeat-128x64x1.bmp,0,0,4) 12%xl(E,repeat-128x64x1.bmp,0,0,4)
13%xl(F,playmode-128x64x1.bmp,0,0,5) 13%xl(F,playmode-128x64x1.bmp,0,0,5)
14%x(a,pbbackground-128x64x1.bmp,1,0)
15%xl(b,bar-128x64x1.bmp,2,0) 14%xl(b,bar-128x64x1.bmp,2,0)
16# 15#
17# Progress Bar 16# Progress Bar
18%V(0,0,128,6,1) 17%V(0,0,128,6,1)
19#%xd(a) 18%x(a,pbbackground-128x64x1.bmp,1,0)
20%pb(2,1,123,4,pb-128x64x1.bmp) 19%pb(2,1,123,4,pb-128x64x1.bmp)
21# 20#
22# Separator Bar 21# Separator Bar