diff options
Diffstat (limited to 'apps/gui/skin_engine/skin_render.c')
-rw-r--r-- | apps/gui/skin_engine/skin_render.c | 38 |
1 files changed, 5 insertions, 33 deletions
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c index e14c882dd9..51c58fc196 100644 --- a/apps/gui/skin_engine/skin_render.c +++ b/apps/gui/skin_engine/skin_render.c | |||
@@ -77,12 +77,10 @@ struct skin_draw_info { | |||
77 | typedef bool (*skin_render_func)(struct skin_element* alternator, struct skin_draw_info *info); | 77 | typedef bool (*skin_render_func)(struct skin_element* alternator, struct skin_draw_info *info); |
78 | bool skin_render_alternator(struct skin_element* alternator, struct skin_draw_info *info); | 78 | bool skin_render_alternator(struct skin_element* alternator, struct skin_draw_info *info); |
79 | 79 | ||
80 | #ifdef HAVE_LCD_BITMAP | ||
81 | static void skin_render_playlistviewer(struct playlistviewer* viewer, | 80 | static void skin_render_playlistviewer(struct playlistviewer* viewer, |
82 | struct gui_wps *gwps, | 81 | struct gui_wps *gwps, |
83 | struct skin_viewport* skin_viewport, | 82 | struct skin_viewport* skin_viewport, |
84 | unsigned long refresh_type); | 83 | unsigned long refresh_type); |
85 | #endif | ||
86 | 84 | ||
87 | static char* skin_buffer; | 85 | static char* skin_buffer; |
88 | 86 | ||
@@ -99,11 +97,10 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, | |||
99 | { | 97 | { |
100 | struct wps_token *token = (struct wps_token *)SKINOFFSETTOPTR(skin_buffer, element->data); | 98 | struct wps_token *token = (struct wps_token *)SKINOFFSETTOPTR(skin_buffer, element->data); |
101 | 99 | ||
102 | #ifdef HAVE_LCD_BITMAP | ||
103 | struct viewport *vp = &skin_vp->vp; | 100 | struct viewport *vp = &skin_vp->vp; |
104 | struct wps_data *data = gwps->data; | 101 | struct wps_data *data = gwps->data; |
105 | bool do_refresh = (element->tag->flags & info->refresh_type) > 0; | 102 | bool do_refresh = (element->tag->flags & info->refresh_type) > 0; |
106 | #endif | 103 | |
107 | switch (token->type) | 104 | switch (token->type) |
108 | { | 105 | { |
109 | #if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)) | 106 | #if (LCD_DEPTH > 1) || (defined(HAVE_REMOTE_LCD) && (LCD_REMOTE_DEPTH > 1)) |
@@ -181,7 +178,6 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, | |||
181 | } | 178 | } |
182 | } | 179 | } |
183 | break; | 180 | break; |
184 | #ifdef HAVE_LCD_BITMAP | ||
185 | case SKIN_TOKEN_LIST_ITEM_CFG: | 181 | case SKIN_TOKEN_LIST_ITEM_CFG: |
186 | skinlist_set_cfg(gwps->display->screen_type, | 182 | skinlist_set_cfg(gwps->display->screen_type, |
187 | SKINOFFSETTOPTR(skin_buffer, token->value.data)); | 183 | SKINOFFSETTOPTR(skin_buffer, token->value.data)); |
@@ -225,11 +221,9 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, | |||
225 | case SKIN_TOKEN_PEAKMETER_RIGHTBAR: | 221 | case SKIN_TOKEN_PEAKMETER_RIGHTBAR: |
226 | data->peak_meter_enabled = true; | 222 | data->peak_meter_enabled = true; |
227 | /* fall through to the progressbar code */ | 223 | /* fall through to the progressbar code */ |
228 | #endif | ||
229 | case SKIN_TOKEN_VOLUMEBAR: | 224 | case SKIN_TOKEN_VOLUMEBAR: |
230 | case SKIN_TOKEN_BATTERY_PERCENTBAR: | 225 | case SKIN_TOKEN_BATTERY_PERCENTBAR: |
231 | case SKIN_TOKEN_SETTINGBAR: | 226 | case SKIN_TOKEN_SETTINGBAR: |
232 | #ifdef HAVE_LCD_BITMAP | ||
233 | case SKIN_TOKEN_PROGRESSBAR: | 227 | case SKIN_TOKEN_PROGRESSBAR: |
234 | case SKIN_TOKEN_TUNER_RSSI_BAR: | 228 | case SKIN_TOKEN_TUNER_RSSI_BAR: |
235 | case SKIN_TOKEN_LIST_SCROLLBAR: | 229 | case SKIN_TOKEN_LIST_SCROLLBAR: |
@@ -238,9 +232,7 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, | |||
238 | if (do_refresh) | 232 | if (do_refresh) |
239 | draw_progressbar(gwps, info->line_number, bar); | 233 | draw_progressbar(gwps, info->line_number, bar); |
240 | } | 234 | } |
241 | #endif | ||
242 | break; | 235 | break; |
243 | #ifdef HAVE_LCD_BITMAP | ||
244 | case SKIN_TOKEN_IMAGE_DISPLAY: | 236 | case SKIN_TOKEN_IMAGE_DISPLAY: |
245 | { | 237 | { |
246 | struct gui_img *img = SKINOFFSETTOPTR(skin_buffer, token->value.data); | 238 | struct gui_img *img = SKINOFFSETTOPTR(skin_buffer, token->value.data); |
@@ -321,8 +313,7 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, | |||
321 | skin_render_playlistviewer(SKINOFFSETTOPTR(skin_buffer, token->value.data), gwps, | 313 | skin_render_playlistviewer(SKINOFFSETTOPTR(skin_buffer, token->value.data), gwps, |
322 | info->skin_vp, info->refresh_type); | 314 | info->skin_vp, info->refresh_type); |
323 | break; | 315 | break; |
324 | 316 | ||
325 | #endif /* HAVE_LCD_BITMAP */ | ||
326 | #ifdef HAVE_SKIN_VARIABLES | 317 | #ifdef HAVE_SKIN_VARIABLES |
327 | case SKIN_TOKEN_VAR_SET: | 318 | case SKIN_TOKEN_VAR_SET: |
328 | { | 319 | { |
@@ -352,16 +343,12 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, | |||
352 | } | 343 | } |
353 | return true; | 344 | return true; |
354 | } | 345 | } |
355 | |||
356 | |||
357 | 346 | ||
358 | static void do_tags_in_hidden_conditional(struct skin_element* branch, | 347 | static void do_tags_in_hidden_conditional(struct skin_element* branch, |
359 | struct skin_draw_info *info) | 348 | struct skin_draw_info *info) |
360 | { | 349 | { |
361 | #ifdef HAVE_LCD_BITMAP | ||
362 | struct gui_wps *gwps = info->gwps; | 350 | struct gui_wps *gwps = info->gwps; |
363 | struct wps_data *data = gwps->data; | 351 | struct wps_data *data = gwps->data; |
364 | #endif | ||
365 | /* Tags here are ones which need to be "turned off" or cleared | 352 | /* Tags here are ones which need to be "turned off" or cleared |
366 | * if they are in a conditional branch which isnt being used */ | 353 | * if they are in a conditional branch which isnt being used */ |
367 | if (branch->type == LINE_ALTERNATOR) | 354 | if (branch->type == LINE_ALTERNATOR) |
@@ -375,9 +362,7 @@ static void do_tags_in_hidden_conditional(struct skin_element* branch, | |||
375 | else if (branch->type == LINE && branch->children_count) | 362 | else if (branch->type == LINE && branch->children_count) |
376 | { | 363 | { |
377 | struct skin_element *child = get_child(branch->children, 0); | 364 | struct skin_element *child = get_child(branch->children, 0); |
378 | #if defined(HAVE_LCD_BITMAP) || defined(HAVE_ALBUMART) | ||
379 | struct wps_token *token; | 365 | struct wps_token *token; |
380 | #endif | ||
381 | while (child) | 366 | while (child) |
382 | { | 367 | { |
383 | if (child->type == CONDITIONAL) | 368 | if (child->type == CONDITIONAL) |
@@ -395,10 +380,7 @@ static void do_tags_in_hidden_conditional(struct skin_element* branch, | |||
395 | child = SKINOFFSETTOPTR(skin_buffer, child->next); | 380 | child = SKINOFFSETTOPTR(skin_buffer, child->next); |
396 | continue; | 381 | continue; |
397 | } | 382 | } |
398 | #if defined(HAVE_LCD_BITMAP) || defined(HAVE_ALBUMART) | ||
399 | token = (struct wps_token *)SKINOFFSETTOPTR(skin_buffer, child->data); | 383 | token = (struct wps_token *)SKINOFFSETTOPTR(skin_buffer, child->data); |
400 | #endif | ||
401 | #ifdef HAVE_LCD_BITMAP | ||
402 | /* clear all pictures in the conditional and nested ones */ | 384 | /* clear all pictures in the conditional and nested ones */ |
403 | if (token->type == SKIN_TOKEN_IMAGE_PRELOAD_DISPLAY) | 385 | if (token->type == SKIN_TOKEN_IMAGE_PRELOAD_DISPLAY) |
404 | { | 386 | { |
@@ -420,7 +402,6 @@ static void do_tags_in_hidden_conditional(struct skin_element* branch, | |||
420 | viewport = SKINOFFSETTOPTR(skin_buffer, viewport->next)) | 402 | viewport = SKINOFFSETTOPTR(skin_buffer, viewport->next)) |
421 | { | 403 | { |
422 | struct skin_viewport *skin_viewport = SKINOFFSETTOPTR(skin_buffer, viewport->data); | 404 | struct skin_viewport *skin_viewport = SKINOFFSETTOPTR(skin_buffer, viewport->data); |
423 | |||
424 | char *vplabel = SKINOFFSETTOPTR(skin_buffer, skin_viewport->label); | 405 | char *vplabel = SKINOFFSETTOPTR(skin_buffer, skin_viewport->label); |
425 | if (skin_viewport->label == VP_DEFAULT_LABEL) | 406 | if (skin_viewport->label == VP_DEFAULT_LABEL) |
426 | vplabel = VP_DEFAULT_LABEL_STRING; | 407 | vplabel = VP_DEFAULT_LABEL_STRING; |
@@ -460,7 +441,6 @@ static void do_tags_in_hidden_conditional(struct skin_element* branch, | |||
460 | } | 441 | } |
461 | } | 442 | } |
462 | } | 443 | } |
463 | #endif | ||
464 | #ifdef HAVE_ALBUMART | 444 | #ifdef HAVE_ALBUMART |
465 | else if (data->albumart && token->type == SKIN_TOKEN_ALBUMART_DISPLAY) | 445 | else if (data->albumart && token->type == SKIN_TOKEN_ALBUMART_DISPLAY) |
466 | { | 446 | { |
@@ -734,11 +714,10 @@ void skin_render_viewport(struct skin_element* viewport, struct gui_wps *gwps, | |||
734 | .offset = 0, | 714 | .offset = 0, |
735 | .line_desc = LINE_DESC_DEFINIT, | 715 | .line_desc = LINE_DESC_DEFINIT, |
736 | }; | 716 | }; |
737 | 717 | ||
738 | struct align_pos * align = &info.align; | 718 | struct align_pos * align = &info.align; |
739 | bool needs_update, update_all = false; | 719 | bool needs_update, update_all = false; |
740 | skin_buffer = get_skin_buffer(gwps->data); | 720 | skin_buffer = get_skin_buffer(gwps->data); |
741 | #ifdef HAVE_LCD_BITMAP | ||
742 | /* Set images to not to be displayed */ | 721 | /* Set images to not to be displayed */ |
743 | struct skin_token_list *imglist = SKINOFFSETTOPTR(skin_buffer, gwps->data->images); | 722 | struct skin_token_list *imglist = SKINOFFSETTOPTR(skin_buffer, gwps->data->images); |
744 | while (imglist) | 723 | while (imglist) |
@@ -752,10 +731,7 @@ void skin_render_viewport(struct skin_element* viewport, struct gui_wps *gwps, | |||
752 | /* fix font ID's */ | 731 | /* fix font ID's */ |
753 | if (skin_viewport->parsed_fontid == 1) | 732 | if (skin_viewport->parsed_fontid == 1) |
754 | skin_viewport->vp.font = display->getuifont(); | 733 | skin_viewport->vp.font = display->getuifont(); |
755 | #endif | ||
756 | |||
757 | 734 | ||
758 | |||
759 | while (line) | 735 | while (line) |
760 | { | 736 | { |
761 | linebuf[0] = '\0'; | 737 | linebuf[0] = '\0'; |
@@ -811,9 +787,7 @@ void skin_render_viewport(struct skin_element* viewport, struct gui_wps *gwps, | |||
811 | info.line_number++; | 787 | info.line_number++; |
812 | line = SKINOFFSETTOPTR(skin_buffer, line->next); | 788 | line = SKINOFFSETTOPTR(skin_buffer, line->next); |
813 | } | 789 | } |
814 | #ifdef HAVE_LCD_BITMAP | ||
815 | wps_display_images(gwps, &skin_viewport->vp); | 790 | wps_display_images(gwps, &skin_viewport->vp); |
816 | #endif | ||
817 | } | 791 | } |
818 | 792 | ||
819 | void skin_render(struct gui_wps *gwps, unsigned refresh_mode) | 793 | void skin_render(struct gui_wps *gwps, unsigned refresh_mode) |
@@ -903,8 +877,7 @@ void skin_render(struct gui_wps *gwps, unsigned refresh_mode) | |||
903 | display->update(); | 877 | display->update(); |
904 | } | 878 | } |
905 | 879 | ||
906 | #ifdef HAVE_LCD_BITMAP | 880 | static __attribute__((noinline)) |
907 | static __attribute__((noinline)) | ||
908 | void skin_render_playlistviewer(struct playlistviewer* viewer, | 881 | void skin_render_playlistviewer(struct playlistviewer* viewer, |
909 | struct gui_wps *gwps, | 882 | struct gui_wps *gwps, |
910 | struct skin_viewport* skin_viewport, | 883 | struct skin_viewport* skin_viewport, |
@@ -926,7 +899,7 @@ void skin_render_playlistviewer(struct playlistviewer* viewer, | |||
926 | .offset = viewer->start_offset, | 899 | .offset = viewer->start_offset, |
927 | .line_desc = LINE_DESC_DEFINIT, | 900 | .line_desc = LINE_DESC_DEFINIT, |
928 | }; | 901 | }; |
929 | 902 | ||
930 | struct align_pos * align = &info.align; | 903 | struct align_pos * align = &info.align; |
931 | bool needs_update; | 904 | bool needs_update; |
932 | int cur_pos, start_item, max; | 905 | int cur_pos, start_item, max; |
@@ -989,4 +962,3 @@ void skin_render_playlistviewer(struct playlistviewer* viewer, | |||
989 | start_item++; | 962 | start_item++; |
990 | } | 963 | } |
991 | } | 964 | } |
992 | #endif | ||