diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2012-03-15 11:58:38 +1100 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2012-07-29 04:24:38 +0200 |
commit | 9dd2eb49bec19de06c5cfd168a0e4cd4dc44c867 (patch) | |
tree | 6dd6681902122f3a002251787f2067a68f0ceaa7 /apps/gui | |
parent | 9a84bcfe4b9821c68322a1a91da9f16d0bd2a4bc (diff) | |
download | rockbox-9dd2eb49bec19de06c5cfd168a0e4cd4dc44c867.tar.gz rockbox-9dd2eb49bec19de06c5cfd168a0e4cd4dc44c867.zip |
skin_engine: Support percentages for viewport positioning
%V(0,50%,75%,50%,-) - make a viewport at x=0, y=half the lcd height,
75% lcd width and the remaining height (the other half) of the lcd.
Change-Id: If26ccb65e8dc52c9225f3fd6d7b222d770add0f0
Reviewed-on: http://gerrit.rockbox.org/184
Reviewed-by: Thomas Martitz <kugel@rockbox.org>
Tested-by: Thomas Martitz <kugel@rockbox.org>
Reviewed-by: Jonathan Gordon <rockbox@jdgordon.info>
Diffstat (limited to 'apps/gui')
-rw-r--r-- | apps/gui/skin_engine/skin_parser.c | 8 | ||||
-rw-r--r-- | apps/gui/skin_engine/skin_tokens.c | 1 |
2 files changed, 9 insertions, 0 deletions
diff --git a/apps/gui/skin_engine/skin_parser.c b/apps/gui/skin_engine/skin_parser.c index 237e4033e2..01fedba99b 100644 --- a/apps/gui/skin_engine/skin_parser.c +++ b/apps/gui/skin_engine/skin_parser.c | |||
@@ -1995,6 +1995,8 @@ static int convert_viewport(struct wps_data *data, struct skin_element* element) | |||
1995 | skin_vp->vp.x = param->data.number; | 1995 | skin_vp->vp.x = param->data.number; |
1996 | if (param->data.number < 0) | 1996 | if (param->data.number < 0) |
1997 | skin_vp->vp.x += display->lcdwidth; | 1997 | skin_vp->vp.x += display->lcdwidth; |
1998 | else if (param->type == PERCENT) | ||
1999 | skin_vp->vp.x = param->data.number * display->lcdwidth / 1000; | ||
1998 | } | 2000 | } |
1999 | param++; | 2001 | param++; |
2000 | /* y */ | 2002 | /* y */ |
@@ -2003,6 +2005,8 @@ static int convert_viewport(struct wps_data *data, struct skin_element* element) | |||
2003 | skin_vp->vp.y = param->data.number; | 2005 | skin_vp->vp.y = param->data.number; |
2004 | if (param->data.number < 0) | 2006 | if (param->data.number < 0) |
2005 | skin_vp->vp.y += display->lcdheight; | 2007 | skin_vp->vp.y += display->lcdheight; |
2008 | else if (param->type == PERCENT) | ||
2009 | skin_vp->vp.y = param->data.number * display->lcdheight / 1000; | ||
2006 | } | 2010 | } |
2007 | param++; | 2011 | param++; |
2008 | /* width */ | 2012 | /* width */ |
@@ -2011,6 +2015,8 @@ static int convert_viewport(struct wps_data *data, struct skin_element* element) | |||
2011 | skin_vp->vp.width = param->data.number; | 2015 | skin_vp->vp.width = param->data.number; |
2012 | if (param->data.number < 0) | 2016 | if (param->data.number < 0) |
2013 | skin_vp->vp.width = (skin_vp->vp.width + display->lcdwidth) - skin_vp->vp.x; | 2017 | skin_vp->vp.width = (skin_vp->vp.width + display->lcdwidth) - skin_vp->vp.x; |
2018 | else if (param->type == PERCENT) | ||
2019 | skin_vp->vp.width = param->data.number * display->lcdwidth / 1000; | ||
2014 | } | 2020 | } |
2015 | else | 2021 | else |
2016 | { | 2022 | { |
@@ -2023,6 +2029,8 @@ static int convert_viewport(struct wps_data *data, struct skin_element* element) | |||
2023 | skin_vp->vp.height = param->data.number; | 2029 | skin_vp->vp.height = param->data.number; |
2024 | if (param->data.number < 0) | 2030 | if (param->data.number < 0) |
2025 | skin_vp->vp.height = (skin_vp->vp.height + display->lcdheight) - skin_vp->vp.y; | 2031 | skin_vp->vp.height = (skin_vp->vp.height + display->lcdheight) - skin_vp->vp.y; |
2032 | else if (param->type == PERCENT) | ||
2033 | skin_vp->vp.height = param->data.number * display->lcdheight / 1000; | ||
2026 | } | 2034 | } |
2027 | else | 2035 | else |
2028 | { | 2036 | { |
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c index b550a90073..e58393e19c 100644 --- a/apps/gui/skin_engine/skin_tokens.c +++ b/apps/gui/skin_engine/skin_tokens.c | |||
@@ -761,6 +761,7 @@ static const char* NOINLINE get_lif_token_value(struct gui_wps *gwps, | |||
761 | if (!number_set && out_text && *out_text >= '0' && *out_text <= '9') | 761 | if (!number_set && out_text && *out_text >= '0' && *out_text <= '9') |
762 | a = atoi(out_text); | 762 | a = atoi(out_text); |
763 | /* fall through */ | 763 | /* fall through */ |
764 | case PERCENT: | ||
764 | case DECIMAL: | 765 | case DECIMAL: |
765 | b = lif->operand.data.number; | 766 | b = lif->operand.data.number; |
766 | break; | 767 | break; |