summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine/skin_parser.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui/skin_engine/skin_parser.c')
-rw-r--r--apps/gui/skin_engine/skin_parser.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c
index 2d9d7cd807..49373eca32 100644
--- a/apps/gui/skin_engine/skin_parser.c
+++ b/apps/gui/skin_engine/skin_parser.c
@@ -638,6 +638,51 @@ static int parse_viewporttextstyle(struct skin_element *element,
638 return 0; 638 return 0;
639} 639}
640 640
641static int parse_drawrectangle( struct skin_element *element,
642 struct wps_token *token,
643 struct wps_data *wps_data)
644{
645 (void)wps_data;
646 struct draw_rectangle *rect =
647 (struct draw_rectangle *)skin_buffer_alloc(sizeof(struct draw_rectangle));
648
649 if (!rect)
650 return -1;
651
652 rect->x = get_param(element, 0)->data.number;
653 rect->y = get_param(element, 1)->data.number;
654
655 if (isdefault(get_param(element, 2)))
656 rect->width = curr_vp->vp.width - rect->x;
657 else
658 rect->width = get_param(element, 2)->data.number;
659
660 if (isdefault(get_param(element, 3)))
661 rect->height = curr_vp->vp.height - rect->y;
662 else
663 rect->height = get_param(element, 3)->data.number;
664
665 rect->start_colour = curr_vp->vp.fg_pattern;
666 rect->end_colour = curr_vp->vp.fg_pattern;
667
668 if (element->params_count > 4)
669 {
670 if (!parse_color(curr_screen, get_param_text(element, 4),
671 &rect->start_colour))
672 return -1;
673 rect->end_colour = rect->start_colour;
674 }
675 if (element->params_count > 5)
676 {
677 if (!parse_color(curr_screen, get_param_text(element, 5),
678 &rect->end_colour))
679 return -1;
680 }
681 token->value.data = PTRTOSKINOFFSET(skin_buffer, rect);
682
683 return 0;
684}
685
641static int parse_viewportcolour(struct skin_element *element, 686static int parse_viewportcolour(struct skin_element *element,
642 struct wps_token *token, 687 struct wps_token *token,
643 struct wps_data *wps_data) 688 struct wps_data *wps_data)
@@ -2013,6 +2058,9 @@ static int skin_element_callback(struct skin_element* element, void* data)
2013 sb_skin_has_title(curr_screen); 2058 sb_skin_has_title(curr_screen);
2014#endif 2059#endif
2015 break; 2060 break;
2061 case SKIN_TOKEN_DRAWRECTANGLE:
2062 function = parse_drawrectangle;
2063 break;
2016#endif 2064#endif
2017 case SKIN_TOKEN_FILE_DIRECTORY: 2065 case SKIN_TOKEN_FILE_DIRECTORY:
2018 token->value.i = get_param(element, 0)->data.number; 2066 token->value.i = get_param(element, 0)->data.number;