Mercurial > MadButterfly
changeset 348:04d22dc38bc0
Change declaration of sh_image_set_img_data().
- x, y, w, h are not passed to sh_image_set_img_data() any more.
- Applications should manage life-cycle of mb_img_data_t, paint_image_t do
not manage it for applications any more.
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Sun, 08 Mar 2009 22:24:54 +0800 |
parents | b247beaac4f0 |
children | 700954870cee |
files | examples/menu/filebrowser.c include/mb_shapes.h src/paint.c src/shape_image.c |
diffstat | 4 files changed, 17 insertions(+), 7 deletions(-) [+] |
line wrap: on
line diff
--- a/examples/menu/filebrowser.c Sun Mar 08 21:57:15 2009 +0800 +++ b/examples/menu/filebrowser.c Sun Mar 08 22:24:54 2009 +0800 @@ -71,11 +71,19 @@ mb_img_ldr_t *ldr = rdman_img_ldr(rdman); mb_img_data_t *img = MB_IMG_LDR_LOAD(ldr, path); shape_t *obj = (shape_t *) MB_SPRITE_GET_OBJ(myApp->rootsprite, "previewimg"); + mb_img_data_t *previewimg_img_data; + mb_img_data_t *old_img; + previewimg_img_data = + (mb_img_data_t *)MB_SPRITE_GET_OBJ(myApp->rootsprite, + "previewimg_img_data"); printf("Preview %s\n",path); if (img) { printf("image %d %d\n",img->w,img->h); - sh_image_set_img_data(obj,img,0,0,img->w,img->h); + old_img = sh_image_get_img_data(obj); + sh_image_set_img_data(obj,img); + if(old_img != previewimg_img_data) + MB_IMG_DATA_FREE(old_img); rdman_shape_changed(MBAPP_RDMAN(myApp),obj); rdman_redraw_changed(MBAPP_RDMAN(myApp)); }
--- a/include/mb_shapes.h Sun Mar 08 21:57:15 2009 +0800 +++ b/include/mb_shapes.h Sun Mar 08 22:24:54 2009 +0800 @@ -242,8 +242,7 @@ extern void sh_image_draw(shape_t *shape, cairo_t *cr); extern void sh_image_set_geometry(shape_t *shape, co_aix x, co_aix y, co_aix w, co_aix h); -extern int sh_image_set_img_data(shape_t *shape, mb_img_data_t *img_data, - co_aix x, co_aix y, co_aix w, co_aix h); +extern int sh_image_set_img_data(shape_t *shape, mb_img_data_t *img_data); extern mb_img_data_t *sh_image_get_img_data(shape_t *shape); /* @} */ /* @} */
--- a/src/paint.c Sun Mar 08 21:57:15 2009 +0800 +++ b/src/paint.c Sun Mar 08 22:24:54 2009 +0800 @@ -272,7 +272,6 @@ cairo_surface_destroy(paint_img->surf); img_data = paint_img->img; - MB_IMG_DATA_FREE(img_data); paint_destroy(&paint_img->paint); free(paint); } @@ -280,6 +279,9 @@ /*! \brief Create an image painter. * * Create a painter that fill/stroke shapes with an image. + * + * \param img is image data return by image load. Life-cycle of img + * is managed by application code. */ paint_t *rdman_paint_image_new(redraw_man_t *rdman, mb_img_data_t *img) {
--- a/src/shape_image.c Sun Mar 08 21:57:15 2009 +0800 +++ b/src/shape_image.c Sun Mar 08 22:24:54 2009 +0800 @@ -207,11 +207,12 @@ img->h = h; } -int sh_image_set_img_data(shape_t *shape, mb_img_data_t *img_data, - co_aix x, co_aix y, co_aix w, co_aix h) { +int sh_image_set_img_data(shape_t *shape, mb_img_data_t *img_data) { int r; + sh_image_t *img = (sh_image_t *)shape; - r = _sh_image_set_img_data(shape, img_data, x, y, w, h); + r = _sh_image_set_img_data(shape, img_data, + img->x, img->y, img->w, img->h); return r; }