diff options
Diffstat (limited to 'apps/gui/skin_engine/skin_parser.c')
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 48 |
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 | ||
641 | static 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 | |||
641 | static int parse_viewportcolour(struct skin_element *element, | 686 | static 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; |