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 | |
parent | 13f98df5ed6b8183d972f85a1bfe55cf02194941 (diff) | |
download | rockbox-2c71aa9feb0268da7d993feddbbe4db591fcd3ba.tar.gz rockbox-2c71aa9feb0268da7d993feddbbe4db591fcd3ba.zip |
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
-rw-r--r-- | apps/gui/skin_engine/skin_backdrops.c | 34 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_engine.h | 2 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 6 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_render.c | 27 | ||||
-rw-r--r-- | apps/gui/skin_engine/wps_internals.h | 3 | ||||
-rw-r--r-- | apps/screen_access.c | 6 | ||||
-rw-r--r-- | apps/screen_access.h | 3 | ||||
-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 | ||||
-rw-r--r-- | lib/skin_parser/tag_table.c | 1 | ||||
-rw-r--r-- | lib/skin_parser/tag_table.h | 3 | ||||
-rw-r--r-- | manual/appendix/wps_tags.tex | 2 |
13 files changed, 87 insertions, 10 deletions
diff --git a/apps/gui/skin_engine/skin_backdrops.c b/apps/gui/skin_engine/skin_backdrops.c index 12b21ccb50..15b68589a9 100644 --- a/apps/gui/skin_engine/skin_backdrops.c +++ b/apps/gui/skin_engine/skin_backdrops.c | |||
@@ -95,6 +95,10 @@ int skin_backdrop_assign(char* backdrop, char *bmpdir, | |||
95 | filename[2] = '\0'; /* we check this later to see if we actually have an | 95 | filename[2] = '\0'; /* we check this later to see if we actually have an |
96 | image to load. != '\0' means display the image */ | 96 | image to load. != '\0' means display the image */ |
97 | } | 97 | } |
98 | else if (!strcmp(backdrop, BACKDROP_BUFFERNAME)) | ||
99 | { | ||
100 | strcpy(filename, backdrop); | ||
101 | } | ||
98 | else | 102 | else |
99 | { | 103 | { |
100 | get_image_filename(backdrop, bmpdir, filename, sizeof(filename)); | 104 | get_image_filename(backdrop, bmpdir, filename, sizeof(filename)); |
@@ -156,15 +160,20 @@ bool skin_backdrops_preload(void) | |||
156 | { | 160 | { |
157 | backdrops[i].buffer = core_get_data(backdrops[i].buflib_handle); | 161 | backdrops[i].buffer = core_get_data(backdrops[i].buflib_handle); |
158 | handle_being_loaded = backdrops[i].buflib_handle; | 162 | handle_being_loaded = backdrops[i].buflib_handle; |
159 | backdrops[i].loaded = | 163 | if (strcmp(filename, BACKDROP_BUFFERNAME)) |
160 | screens[screen].backdrop_load(filename, backdrops[i].buffer); | ||
161 | handle_being_loaded = -1; | ||
162 | if (!backdrops[i].loaded) | ||
163 | { | 164 | { |
164 | core_free(backdrops[i].buflib_handle); | 165 | backdrops[i].loaded = |
165 | backdrops[i].buflib_handle = -1; | 166 | screens[screen].backdrop_load(filename, backdrops[i].buffer); |
166 | retval = false; | 167 | handle_being_loaded = -1; |
168 | if (!backdrops[i].loaded) | ||
169 | { | ||
170 | core_free(backdrops[i].buflib_handle); | ||
171 | backdrops[i].buflib_handle = -1; | ||
172 | retval = false; | ||
173 | } | ||
167 | } | 174 | } |
175 | else | ||
176 | backdrops[i].loaded = true; | ||
168 | } | 177 | } |
169 | else | 178 | else |
170 | retval = false; | 179 | retval = false; |
@@ -176,10 +185,21 @@ bool skin_backdrops_preload(void) | |||
176 | return retval; | 185 | return retval; |
177 | } | 186 | } |
178 | 187 | ||
188 | void* skin_backdrop_get_buffer(int backdrop_id) | ||
189 | { | ||
190 | if (backdrop_id < 0) | ||
191 | return NULL; | ||
192 | return backdrops[backdrop_id].buffer; | ||
193 | } | ||
194 | |||
179 | void skin_backdrop_show(int backdrop_id) | 195 | void skin_backdrop_show(int backdrop_id) |
180 | { | 196 | { |
181 | if (backdrop_id < 0) | 197 | if (backdrop_id < 0) |
198 | { | ||
199 | screens[0].backdrop_show(NULL); | ||
200 | current_lcd_backdrop[0] = -1; | ||
182 | return; | 201 | return; |
202 | } | ||
183 | enum screen_type screen = backdrops[backdrop_id].screen; | 203 | enum screen_type screen = backdrops[backdrop_id].screen; |
184 | if ((backdrops[backdrop_id].loaded == false) || | 204 | if ((backdrops[backdrop_id].loaded == false) || |
185 | (backdrops[backdrop_id].name[0] == '-' && | 205 | (backdrops[backdrop_id].name[0] == '-' && |
diff --git a/apps/gui/skin_engine/skin_engine.h b/apps/gui/skin_engine/skin_engine.h index ac839fff2e..625467ea3b 100644 --- a/apps/gui/skin_engine/skin_engine.h +++ b/apps/gui/skin_engine/skin_engine.h | |||
@@ -70,6 +70,8 @@ bool skin_backdrops_preload(void); | |||
70 | void skin_backdrop_show(int backdrop_id); | 70 | void skin_backdrop_show(int backdrop_id); |
71 | void skin_backdrop_load_setting(void); | 71 | void skin_backdrop_load_setting(void); |
72 | void skin_backdrop_unload(int backdrop_id); | 72 | void skin_backdrop_unload(int backdrop_id); |
73 | #define BACKDROP_BUFFERNAME "#backdrop_buffer#" | ||
74 | void* skin_backdrop_get_buffer(int backdrop_id); | ||
73 | 75 | ||
74 | /* do the button loop as often as required for the peak meters to update | 76 | /* do the button loop as often as required for the peak meters to update |
75 | * with a good refresh rate. | 77 | * with a good refresh rate. |
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) | |||
1832 | viewport_set_defaults(&skin_vp->vp, curr_screen); | 1832 | viewport_set_defaults(&skin_vp->vp, curr_screen); |
1833 | 1833 | ||
1834 | #if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)) | 1834 | #if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)) |
1835 | skin_vp->output_to_backdrop_buffer = false; | ||
1835 | skin_vp->start_fgcolour = skin_vp->vp.fg_pattern; | 1836 | skin_vp->start_fgcolour = skin_vp->vp.fg_pattern; |
1836 | skin_vp->start_bgcolour = skin_vp->vp.bg_pattern; | 1837 | skin_vp->start_bgcolour = skin_vp->vp.bg_pattern; |
1837 | #endif | 1838 | #endif |
@@ -2023,6 +2024,11 @@ static int skin_element_callback(struct skin_element* element, void* data) | |||
2023 | case SKIN_TOKEN_VIEWPORT_TEXTSTYLE: | 2024 | case SKIN_TOKEN_VIEWPORT_TEXTSTYLE: |
2024 | function = parse_viewporttextstyle; | 2025 | function = parse_viewporttextstyle; |
2025 | break; | 2026 | break; |
2027 | case SKIN_TOKEN_VIEWPORT_DRAWONBG: | ||
2028 | curr_vp->output_to_backdrop_buffer = true; | ||
2029 | backdrop_filename = BACKDROP_BUFFERNAME; | ||
2030 | wps_data->use_extra_framebuffer = true; | ||
2031 | break; | ||
2026 | #endif | 2032 | #endif |
2027 | #ifdef HAVE_LCD_COLOR | 2033 | #ifdef HAVE_LCD_COLOR |
2028 | case SKIN_TOKEN_VIEWPORT_GRADIENT_SETUP: | 2034 | case SKIN_TOKEN_VIEWPORT_GRADIENT_SETUP: |
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c index 951d34a724..d4ddf99c34 100644 --- a/apps/gui/skin_engine/skin_render.c +++ b/apps/gui/skin_engine/skin_render.c | |||
@@ -385,11 +385,22 @@ static void do_tags_in_hidden_conditional(struct skin_element* branch, | |||
385 | skin_viewport->hidden_flags |= VP_DRAW_WASHIDDEN; | 385 | skin_viewport->hidden_flags |= VP_DRAW_WASHIDDEN; |
386 | else | 386 | else |
387 | { | 387 | { |
388 | if (skin_viewport->output_to_backdrop_buffer) | ||
389 | { | ||
390 | void *backdrop = skin_backdrop_get_buffer(data->backdrop_id); | ||
391 | gwps->display->set_framebuffer(backdrop); | ||
392 | skin_backdrop_show(-1); | ||
393 | } | ||
388 | gwps->display->set_viewport(&skin_viewport->vp); | 394 | gwps->display->set_viewport(&skin_viewport->vp); |
389 | gwps->display->clear_viewport(); | 395 | gwps->display->clear_viewport(); |
390 | gwps->display->scroll_stop(&skin_viewport->vp); | 396 | gwps->display->scroll_stop(&skin_viewport->vp); |
391 | gwps->display->set_viewport(&info->skin_vp->vp); | 397 | gwps->display->set_viewport(&info->skin_vp->vp); |
392 | skin_viewport->hidden_flags |= VP_DRAW_HIDDEN; | 398 | skin_viewport->hidden_flags |= VP_DRAW_HIDDEN; |
399 | if (skin_viewport->output_to_backdrop_buffer) | ||
400 | { | ||
401 | gwps->display->set_framebuffer(NULL); | ||
402 | skin_backdrop_show(data->backdrop_id); | ||
403 | } | ||
393 | } | 404 | } |
394 | } | 405 | } |
395 | } | 406 | } |
@@ -767,6 +778,7 @@ void skin_render(struct gui_wps *gwps, unsigned refresh_mode) | |||
767 | data->wps_progress_pat[i] = display->get_locked_pattern(); | 778 | data->wps_progress_pat[i] = display->get_locked_pattern(); |
768 | } | 779 | } |
769 | #endif | 780 | #endif |
781 | |||
770 | viewport = SKINOFFSETTOPTR(skin_buffer, data->tree); | 782 | viewport = SKINOFFSETTOPTR(skin_buffer, data->tree); |
771 | skin_viewport = SKINOFFSETTOPTR(skin_buffer, viewport->data); | 783 | skin_viewport = SKINOFFSETTOPTR(skin_buffer, viewport->data); |
772 | label = SKINOFFSETTOPTR(skin_buffer, skin_viewport->label); | 784 | label = SKINOFFSETTOPTR(skin_buffer, skin_viewport->label); |
@@ -786,6 +798,16 @@ void skin_render(struct gui_wps *gwps, unsigned refresh_mode) | |||
786 | #if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1) | 798 | #if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1) |
787 | skin_viewport->vp.fg_pattern = skin_viewport->start_fgcolour; | 799 | skin_viewport->vp.fg_pattern = skin_viewport->start_fgcolour; |
788 | skin_viewport->vp.bg_pattern = skin_viewport->start_bgcolour; | 800 | skin_viewport->vp.bg_pattern = skin_viewport->start_bgcolour; |
801 | if (skin_viewport->output_to_backdrop_buffer) | ||
802 | { | ||
803 | display->set_framebuffer(skin_backdrop_get_buffer(data->backdrop_id)); | ||
804 | skin_backdrop_show(-1); | ||
805 | } | ||
806 | else | ||
807 | { | ||
808 | display->set_framebuffer(NULL); | ||
809 | skin_backdrop_show(data->backdrop_id); | ||
810 | } | ||
789 | #endif | 811 | #endif |
790 | #ifdef HAVE_LCD_COLOR | 812 | #ifdef HAVE_LCD_COLOR |
791 | skin_viewport->vp.lss_pattern = skin_viewport->start_gradient.start; | 813 | skin_viewport->vp.lss_pattern = skin_viewport->start_gradient.start; |
@@ -822,7 +844,10 @@ void skin_render(struct gui_wps *gwps, unsigned refresh_mode) | |||
822 | skin_viewport, vp_refresh_mode); | 844 | skin_viewport, vp_refresh_mode); |
823 | refresh_mode = old_refresh_mode; | 845 | refresh_mode = old_refresh_mode; |
824 | } | 846 | } |
825 | 847 | #ifdef HAVE_LCD_BITMAP | |
848 | display->set_framebuffer(NULL); | ||
849 | skin_backdrop_show(data->backdrop_id); | ||
850 | #endif | ||
826 | /* Restore the default viewport */ | 851 | /* Restore the default viewport */ |
827 | display->set_viewport(NULL); | 852 | display->set_viewport(NULL); |
828 | display->update(); | 853 | display->update(); |
diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h index c55c8d2515..1ea5dbf467 100644 --- a/apps/gui/skin_engine/wps_internals.h +++ b/apps/gui/skin_engine/wps_internals.h | |||
@@ -44,7 +44,6 @@ | |||
44 | #include "statusbar.h" | 44 | #include "statusbar.h" |
45 | #include "metadata.h" | 45 | #include "metadata.h" |
46 | 46 | ||
47 | |||
48 | #define TOKEN_VALUE_ONLY 0x0DEADC0D | 47 | #define TOKEN_VALUE_ONLY 0x0DEADC0D |
49 | 48 | ||
50 | /* wps_data*/ | 49 | /* wps_data*/ |
@@ -166,6 +165,7 @@ struct skin_viewport { | |||
166 | OFFSETTYPE(char*) label; | 165 | OFFSETTYPE(char*) label; |
167 | int parsed_fontid; | 166 | int parsed_fontid; |
168 | #if LCD_DEPTH > 1 | 167 | #if LCD_DEPTH > 1 |
168 | bool output_to_backdrop_buffer; | ||
169 | unsigned start_fgcolour; | 169 | unsigned start_fgcolour; |
170 | unsigned start_bgcolour; | 170 | unsigned start_bgcolour; |
171 | #ifdef HAVE_LCD_COLOR | 171 | #ifdef HAVE_LCD_COLOR |
@@ -328,6 +328,7 @@ struct wps_data | |||
328 | #endif | 328 | #endif |
329 | #ifdef HAVE_BACKDROP_IMAGE | 329 | #ifdef HAVE_BACKDROP_IMAGE |
330 | int backdrop_id; | 330 | int backdrop_id; |
331 | bool use_extra_framebuffer; | ||
331 | #endif | 332 | #endif |
332 | 333 | ||
333 | #ifdef HAVE_TOUCHSCREEN | 334 | #ifdef HAVE_TOUCHSCREEN |
diff --git a/apps/screen_access.c b/apps/screen_access.c index 5ab08b7fc5..43000e1360 100644 --- a/apps/screen_access.c +++ b/apps/screen_access.c | |||
@@ -262,6 +262,9 @@ struct screen screens[NB_SCREENS] = | |||
262 | #ifdef HAVE_BUTTONBAR | 262 | #ifdef HAVE_BUTTONBAR |
263 | .has_buttonbar=false, | 263 | .has_buttonbar=false, |
264 | #endif | 264 | #endif |
265 | #if defined(HAVE_LCD_BITMAP) | ||
266 | .set_framebuffer = (void*)lcd_set_framebuffer, | ||
267 | #endif | ||
265 | }, | 268 | }, |
266 | #if NB_SCREENS == 2 | 269 | #if NB_SCREENS == 2 |
267 | { | 270 | { |
@@ -357,6 +360,9 @@ struct screen screens[NB_SCREENS] = | |||
357 | #ifdef HAVE_BUTTONBAR | 360 | #ifdef HAVE_BUTTONBAR |
358 | .has_buttonbar=false, | 361 | .has_buttonbar=false, |
359 | #endif | 362 | #endif |
363 | #if defined(HAVE_LCD_BITMAP) | ||
364 | .set_framebuffer = (void*)lcd_remote_set_framebuffer, | ||
365 | #endif | ||
360 | } | 366 | } |
361 | #endif /* NB_SCREENS == 2 */ | 367 | #endif /* NB_SCREENS == 2 */ |
362 | }; | 368 | }; |
diff --git a/apps/screen_access.h b/apps/screen_access.h index a9d1408898..343829b915 100644 --- a/apps/screen_access.h +++ b/apps/screen_access.h | |||
@@ -160,6 +160,9 @@ struct screen | |||
160 | bool (*backdrop_load)(const char *filename, char* backdrop_buffer); | 160 | bool (*backdrop_load)(const char *filename, char* backdrop_buffer); |
161 | void (*backdrop_show)(char* backdrop_buffer); | 161 | void (*backdrop_show)(char* backdrop_buffer); |
162 | #endif | 162 | #endif |
163 | #if defined(HAVE_LCD_BITMAP) | ||
164 | void (*set_framebuffer)(void *framebuffer); | ||
165 | #endif | ||
163 | }; | 166 | }; |
164 | 167 | ||
165 | #if defined(HAVE_LCD_BITMAP) || defined(HAVE_REMOTE_LCD) | 168 | #if defined(HAVE_LCD_BITMAP) || defined(HAVE_REMOTE_LCD) |
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, | |||
81 | } | 81 | } |
82 | #endif | 82 | #endif |
83 | 83 | ||
84 | void LCDFN(set_framebuffer)(FBFN(data) *fb) | ||
85 | { | ||
86 | if (fb) | ||
87 | LCDFN(framebuffer) = fb; | ||
88 | else | ||
89 | LCDFN(framebuffer) = &LCDFN(static_framebuffer)[0][0]; | ||
90 | } | ||
91 | |||
84 | /* | 92 | /* |
85 | * draws the borders of the current viewport | 93 | * draws the borders of the current viewport |
86 | **/ | 94 | **/ |
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); | |||
132 | void lcd_remote_write_command(int cmd); | 132 | void lcd_remote_write_command(int cmd); |
133 | void lcd_remote_write_command_ex(int cmd, int data); | 133 | void lcd_remote_write_command_ex(int cmd, int data); |
134 | void lcd_remote_write_data(const fb_remote_data *data, int count); | 134 | void lcd_remote_write_data(const fb_remote_data *data, int count); |
135 | extern void lcd_remote_set_framebuffer(fb_remote_data *fb); | ||
135 | 136 | ||
136 | extern void lcd_remote_bitmap_part(const fb_remote_data *src, int src_x, | 137 | extern void lcd_remote_bitmap_part(const fb_remote_data *src, int src_x, |
137 | int src_y, int stride, int x, int y, | 138 | 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, | |||
529 | int stride, int x, int y, int width, int height); | 529 | int stride, int x, int y, int width, int height); |
530 | extern void lcd_bitmap(const fb_data *src, int x, int y, int width, | 530 | extern void lcd_bitmap(const fb_data *src, int x, int y, int width, |
531 | int height); | 531 | int height); |
532 | extern void lcd_set_framebuffer(fb_data *fb); | ||
532 | 533 | ||
533 | extern void lcd_scroll_step(int pixels); | 534 | extern void lcd_scroll_step(int pixels); |
534 | 535 | ||
diff --git a/lib/skin_parser/tag_table.c b/lib/skin_parser/tag_table.c index 9a183986ce..a44b2ef251 100644 --- a/lib/skin_parser/tag_table.c +++ b/lib/skin_parser/tag_table.c | |||
@@ -204,6 +204,7 @@ static const struct tag_info legal_tags[] = | |||
204 | { SKIN_TOKEN_VIEWPORT_BGCOLOUR, "Vb" , "s", SKIN_REFRESH_STATIC|NOBREAK }, | 204 | { SKIN_TOKEN_VIEWPORT_BGCOLOUR, "Vb" , "s", SKIN_REFRESH_STATIC|NOBREAK }, |
205 | { SKIN_TOKEN_VIEWPORT_TEXTSTYLE, "Vs" , "S|s", SKIN_REFRESH_STATIC }, | 205 | { SKIN_TOKEN_VIEWPORT_TEXTSTYLE, "Vs" , "S|s", SKIN_REFRESH_STATIC }, |
206 | { SKIN_TOKEN_VIEWPORT_GRADIENT_SETUP, "Vg" , "SS|s", SKIN_REFRESH_STATIC|NOBREAK }, | 206 | { SKIN_TOKEN_VIEWPORT_GRADIENT_SETUP, "Vg" , "SS|s", SKIN_REFRESH_STATIC|NOBREAK }, |
207 | { SKIN_TOKEN_VIEWPORT_DRAWONBG, "VB" , "", SKIN_REFRESH_STATIC|NOBREAK }, | ||
207 | 208 | ||
208 | { SKIN_TOKEN_VIEWPORT_CONDITIONAL, "Vl" , "SIIiii", 0 }, | 209 | { SKIN_TOKEN_VIEWPORT_CONDITIONAL, "Vl" , "SIIiii", 0 }, |
209 | { SKIN_TOKEN_UIVIEWPORT_LOAD, "Vi" , "sIIiii", 0 }, | 210 | { SKIN_TOKEN_UIVIEWPORT_LOAD, "Vi" , "sIIiii", 0 }, |
diff --git a/lib/skin_parser/tag_table.h b/lib/skin_parser/tag_table.h index d14d31fcb2..cf0096f28d 100644 --- a/lib/skin_parser/tag_table.h +++ b/lib/skin_parser/tag_table.h | |||
@@ -92,7 +92,8 @@ enum skin_token_type { | |||
92 | SKIN_TOKEN_VIEWPORT_BGCOLOUR, | 92 | SKIN_TOKEN_VIEWPORT_BGCOLOUR, |
93 | SKIN_TOKEN_VIEWPORT_TEXTSTYLE, | 93 | SKIN_TOKEN_VIEWPORT_TEXTSTYLE, |
94 | SKIN_TOKEN_VIEWPORT_GRADIENT_SETUP, | 94 | SKIN_TOKEN_VIEWPORT_GRADIENT_SETUP, |
95 | 95 | SKIN_TOKEN_VIEWPORT_DRAWONBG, | |
96 | |||
96 | /* Battery */ | 97 | /* Battery */ |
97 | SKIN_TOKEN_BATTERY_PERCENT, | 98 | SKIN_TOKEN_BATTERY_PERCENT, |
98 | SKIN_TOKEN_BATTERY_PERCENTBAR, | 99 | SKIN_TOKEN_BATTERY_PERCENTBAR, |
diff --git a/manual/appendix/wps_tags.tex b/manual/appendix/wps_tags.tex index ba4cbd16ee..5890e20e93 100644 --- a/manual/appendix/wps_tags.tex +++ b/manual/appendix/wps_tags.tex | |||
@@ -91,6 +91,8 @@ show the information for the next song to be played. | |||
91 | 91 | ||
92 | \config{\%VI('label')} & Set the Info Viewport to use the viewport called | 92 | \config{\%VI('label')} & Set the Info Viewport to use the viewport called |
93 | label, as declared with the previous tag.\\ | 93 | label, as declared with the previous tag.\\ |
94 | |||
95 | \config{\%VB} & Draw this viewport on the backdrop layer. | ||
94 | \end{tagmap} | 96 | \end{tagmap} |
95 | 97 | ||
96 | \section{Additional Fonts} | 98 | \section{Additional Fonts} |