diff options
author | Jonathan Gordon <rockbox@jdgordon.info> | 2012-12-03 20:43:58 +1100 |
---|---|---|
committer | Jonathan Gordon <rockbox@jdgordon.info> | 2012-12-09 17:11:19 +1100 |
commit | 685cf5900825b10c952f36301abbbd9968567435 (patch) | |
tree | 41cdfed9e5a2943c80ac0d4ffe09c45519a3ecf3 /apps/gui/skin_engine/skin_display.c | |
parent | 1fbdc280d7e4b4ffb7ec8dccbfd1c1fc67f1c123 (diff) | |
download | rockbox-685cf5900825b10c952f36301abbbd9968567435.tar.gz rockbox-685cf5900825b10c952f36301abbbd9968567435.zip |
9 segment bitmap drawing:
Use %x9(id) to draw an image in the whole current viewport using the
9 segment drawer (which draws the corners as normal and *tiles*
the middle segments to the needed width/height).
Future work is to make it scale instead of tile
Change-Id: Ic3ed1cad93f96091694801eb442e0da5a2401203
Diffstat (limited to 'apps/gui/skin_engine/skin_display.c')
-rw-r--r-- | apps/gui/skin_engine/skin_display.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/apps/gui/skin_engine/skin_display.c b/apps/gui/skin_engine/skin_display.c index 4f491dea24..24958a46f2 100644 --- a/apps/gui/skin_engine/skin_display.c +++ b/apps/gui/skin_engine/skin_display.c | |||
@@ -302,17 +302,20 @@ void clear_image_pos(struct gui_wps *gwps, struct gui_img *img) | |||
302 | gwps->display->set_drawmode(DRMODE_SOLID); | 302 | gwps->display->set_drawmode(DRMODE_SOLID); |
303 | } | 303 | } |
304 | 304 | ||
305 | void wps_draw_image(struct gui_wps *gwps, struct gui_img *img, int subimage) | 305 | void wps_draw_image(struct gui_wps *gwps, struct gui_img *img, |
306 | int subimage, struct viewport* vp) | ||
306 | { | 307 | { |
307 | struct screen *display = gwps->display; | 308 | struct screen *display = gwps->display; |
308 | img->bm.data = core_get_data(img->buflib_handle); | 309 | img->bm.data = core_get_data(img->buflib_handle); |
309 | display->set_drawmode(DRMODE_SOLID); | 310 | display->set_drawmode(DRMODE_SOLID); |
310 | 311 | ||
311 | display->bmp_part(&img->bm, 0, img->subimage_height * subimage, | 312 | if (img->is_9_segment) |
312 | img->x, img->y, img->bm.width, img->subimage_height); | 313 | display->nine_segment_bmp(&img->bm, 0, 0, vp->width, vp->height); |
314 | else | ||
315 | display->bmp_part(&img->bm, 0, img->subimage_height * subimage, | ||
316 | img->x, img->y, img->bm.width, img->subimage_height); | ||
313 | } | 317 | } |
314 | 318 | ||
315 | |||
316 | void wps_display_images(struct gui_wps *gwps, struct viewport* vp) | 319 | void wps_display_images(struct gui_wps *gwps, struct viewport* vp) |
317 | { | 320 | { |
318 | if(!gwps || !gwps->data || !gwps->display) | 321 | if(!gwps || !gwps->data || !gwps->display) |
@@ -334,7 +337,7 @@ void wps_display_images(struct gui_wps *gwps, struct viewport* vp) | |||
334 | { | 337 | { |
335 | if (img->display >= 0) | 338 | if (img->display >= 0) |
336 | { | 339 | { |
337 | wps_draw_image(gwps, img, img->display); | 340 | wps_draw_image(gwps, img, img->display, vp); |
338 | } | 341 | } |
339 | } | 342 | } |
340 | list = SKINOFFSETTOPTR(get_skin_buffer(data), list->next); | 343 | list = SKINOFFSETTOPTR(get_skin_buffer(data), list->next); |