diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2012-03-15 22:50:17 +1100 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2012-03-15 22:52:53 +1100 |
commit | 014a08cabb856b2360419aac404744029ee4748c (patch) | |
tree | 1bd05c47281446eec2568a96a0e32e16439f1262 /apps/gui/skin_engine/skin_render.c | |
parent | dcc78cb86764e5f02bc89693f64dc38c82f776ad (diff) | |
download | rockbox-014a08cabb856b2360419aac404744029ee4748c.tar.gz rockbox-014a08cabb856b2360419aac404744029ee4748c.zip |
skin_engine: New tag to draw a rectangle (optionally with a gradient)
%dr(x, y, width, height, [colour1[, colour2]]):
x,y - viewport relative pixel coordinates to start the rectangle.
width, height - obvious. can be '-' to fill the viewport
if both colours are left out the viewports foreground colour will be used
if one colour is specified it will fill the rectangle that colour.
if both colours are specified it will gradient fill the rectangle.
Change-Id: Iad451e99ded663bc7c5d182443659db7d909b388
Diffstat (limited to 'apps/gui/skin_engine/skin_render.c')
-rw-r--r-- | apps/gui/skin_engine/skin_render.c | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/apps/gui/skin_engine/skin_render.c b/apps/gui/skin_engine/skin_render.c index 80d8c83d27..7ceb0bce17 100644 --- a/apps/gui/skin_engine/skin_render.c +++ b/apps/gui/skin_engine/skin_render.c | |||
@@ -176,8 +176,29 @@ static bool do_non_text_tags(struct gui_wps *gwps, struct skin_draw_info *info, | |||
176 | if (do_refresh) | 176 | if (do_refresh) |
177 | draw_peakmeters(gwps, info->line_number, vp); | 177 | draw_peakmeters(gwps, info->line_number, vp); |
178 | break; | 178 | break; |
179 | case SKIN_TOKEN_DRAWRECTANGLE: | ||
180 | if (do_refresh) | ||
181 | { | ||
182 | struct draw_rectangle *rect = | ||
183 | SKINOFFSETTOPTR(skin_buffer, token->value.data); | ||
184 | #ifdef HAVE_LCD_COLOR | ||
185 | if (rect->start_colour != rect->end_colour && | ||
186 | gwps->display->screen_type == SCREEN_MAIN) | ||
187 | { | ||
188 | gwps->display->gradient_fillrect(rect->x, rect->y, rect->width, | ||
189 | rect->height, rect->start_colour, rect->end_colour); | ||
190 | } | ||
191 | else | ||
179 | #endif | 192 | #endif |
180 | #ifdef HAVE_LCD_BITMAP | 193 | { |
194 | unsigned backup = vp->fg_pattern; | ||
195 | vp->fg_pattern = rect->start_colour; | ||
196 | gwps->display->fillrect(rect->x, rect->y, rect->width, | ||
197 | rect->height); | ||
198 | vp->fg_pattern = backup; | ||
199 | } | ||
200 | } | ||
201 | break; | ||
181 | case SKIN_TOKEN_PEAKMETER_LEFTBAR: | 202 | case SKIN_TOKEN_PEAKMETER_LEFTBAR: |
182 | case SKIN_TOKEN_PEAKMETER_RIGHTBAR: | 203 | case SKIN_TOKEN_PEAKMETER_RIGHTBAR: |
183 | data->peak_meter_enabled = true; | 204 | data->peak_meter_enabled = true; |