summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine/skin_render.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/skin_engine/skin_render.c')
-rw-r--r--apps/gui/skin_engine/skin_render.c38
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 {
77typedef bool (*skin_render_func)(struct skin_element* alternator, struct skin_draw_info *info); 77typedef bool (*skin_render_func)(struct skin_element* alternator, struct skin_draw_info *info);
78bool skin_render_alternator(struct skin_element* alternator, struct skin_draw_info *info); 78bool skin_render_alternator(struct skin_element* alternator, struct skin_draw_info *info);
79 79
80#ifdef HAVE_LCD_BITMAP
81static void skin_render_playlistviewer(struct playlistviewer* viewer, 80static 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
87static char* skin_buffer; 85static 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
358static void do_tags_in_hidden_conditional(struct skin_element* branch, 347static 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
819void skin_render(struct gui_wps *gwps, unsigned refresh_mode) 793void 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 880static __attribute__((noinline))
907static __attribute__((noinline))
908void skin_render_playlistviewer(struct playlistviewer* viewer, 881void 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