summaryrefslogtreecommitdiff
path: root/apps/gui/skin_engine/skin_render.c
diff options
context:
space:
mode:
authorJonathan Gordon <rockbox@jdgordon.info>2012-03-15 22:50:17 +1100
committerJonathan Gordon <rockbox@jdgordon.info>2012-03-15 22:52:53 +1100
commit014a08cabb856b2360419aac404744029ee4748c (patch)
tree1bd05c47281446eec2568a96a0e32e16439f1262 /apps/gui/skin_engine/skin_render.c
parentdcc78cb86764e5f02bc89693f64dc38c82f776ad (diff)
downloadrockbox-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.c23
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;