summaryrefslogtreecommitdiff
path: root/apps/gui
diff options
context:
space:
mode:
Diffstat (limited to 'apps/gui')
-rw-r--r--apps/gui/skin_engine/skin_parser.c8
-rw-r--r--apps/gui/skin_engine/skin_tokens.c1
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 237e403..01fedba 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)
skin_vp->vp.x = param->data.number;
if (param->data.number < 0)
skin_vp->vp.x += display->lcdwidth;
+ else if (param->type == PERCENT)
+ skin_vp->vp.x = param->data.number * display->lcdwidth / 1000;
}
param++;
/* y */
@@ -2003,6 +2005,8 @@ static int convert_viewport(struct wps_data *data, struct skin_element* element)
skin_vp->vp.y = param->data.number;
if (param->data.number < 0)
skin_vp->vp.y += display->lcdheight;
+ else if (param->type == PERCENT)
+ skin_vp->vp.y = param->data.number * display->lcdheight / 1000;
}
param++;
/* width */
@@ -2011,6 +2015,8 @@ static int convert_viewport(struct wps_data *data, struct skin_element* element)
skin_vp->vp.width = param->data.number;
if (param->data.number < 0)
skin_vp->vp.width = (skin_vp->vp.width + display->lcdwidth) - skin_vp->vp.x;
+ else if (param->type == PERCENT)
+ skin_vp->vp.width = param->data.number * display->lcdwidth / 1000;
}
else
{
@@ -2023,6 +2029,8 @@ static int convert_viewport(struct wps_data *data, struct skin_element* element)
skin_vp->vp.height = param->data.number;
if (param->data.number < 0)
skin_vp->vp.height = (skin_vp->vp.height + display->lcdheight) - skin_vp->vp.y;
+ else if (param->type == PERCENT)
+ skin_vp->vp.height = param->data.number * display->lcdheight / 1000;
}
else
{
diff --git a/apps/gui/skin_engine/skin_tokens.c b/apps/gui/skin_engine/skin_tokens.c
index b550a90..e58393e 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,
if (!number_set && out_text && *out_text >= '0' && *out_text <= '9')
a = atoi(out_text);
/* fall through */
+ case PERCENT:
case DECIMAL:
b = lif->operand.data.number;
break;