From 3ae73433ab826c7a4f3c49b4d0a86fd9dc29a9cc Mon Sep 17 00:00:00 2001 From: Thomas Martitz Date: Sun, 12 Jan 2014 15:11:46 +0100 Subject: skin_engine: New param "noborder" for the bar tags. By specifying this param the bar will not have a border/box. Instead the inner part that fills up is maximized on the bar area. Note that this only affects bars using foreground and background colors, not those constructed with images. Change-Id: Ib8dd49ecbaf9e16b96de840f5f365871b73d4fa4 --- apps/gui/skin_engine/skin_display.c | 5 +++++ apps/gui/skin_engine/skin_parser.c | 8 ++++++++ apps/gui/skin_engine/wps_internals.h | 1 + 3 files changed, 14 insertions(+) (limited to 'apps/gui/skin_engine') diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c index 82eaa1f..137bced 100755 --- a/apps/gui/skin_engine/skin_display.c +++ b/apps/gui/skin_engine/skin_display.c @@ -202,6 +202,11 @@ void draw_progressbar(struct gui_wps *gwps, int line, struct progressbar *pb) flags |= INNER_NOFILL; } + if (pb->noborder) + { + flags |= BORDER_NOFILL; + } + if (SKINOFFSETTOPTR(get_skin_buffer(gwps->data), pb->slider)) { struct gui_img *img = SKINOFFSETTOPTR(get_skin_buffer(gwps->data), pb->slider); diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index 1de1047..06b37d8 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c @@ -901,6 +901,7 @@ static int parse_progressbar_tag(struct skin_element* element, pb->vp = PTRTOSKINOFFSET(skin_buffer, vp); pb->follow_lang_direction = follow_lang_direction > 0; pb->nofill = false; + pb->noborder = false; pb->nobar = false; pb->image = PTRTOSKINOFFSET(skin_buffer, NULL); pb->slider = PTRTOSKINOFFSET(skin_buffer, NULL); @@ -978,6 +979,8 @@ static int parse_progressbar_tag(struct skin_element* element, pb->invert_fill_direction = true; else if (!strcmp(text, "nofill")) pb->nofill = true; + else if (!strcmp(text, "noborder")) + pb->noborder = true; else if (!strcmp(text, "nobar")) pb->nobar = true; else if (!strcmp(text, "slider")) @@ -1051,6 +1054,11 @@ static int parse_progressbar_tag(struct skin_element* element, if (image_filename) { + /* noborder is incompatible together with image. There is no border + * anyway. */ + if (pb->noborder) + return WPS_ERROR_INVALID_PARAM; + pb->image = PTRTOSKINOFFSET(skin_buffer, skin_find_item(image_filename, SKIN_FIND_IMAGE, wps_data)); if (!SKINOFFSETTOPTR(skin_buffer, pb->image)) /* load later */ diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h index 3396695..e7996b0 100644 --- a/apps/gui/skin_engine/wps_internals.h +++ b/apps/gui/skin_engine/wps_internals.h @@ -120,6 +120,7 @@ struct progressbar { bool invert_fill_direction; bool nofill; + bool noborder; bool nobar; OFFSETTYPE(struct gui_img *) slider; bool horizontal; -- cgit v1.1