Mercurial > MadButterfly
view include/mb_img_ldr.h @ 269:c96f38ad4bb6
Fix mis-behavior of translate_path_data() on arc.
- Arc in a path in svg2code_ex is not showed.
- translate_path_data() in svg2code.py was modified for calling
binary version new method for path shape.
- rdman_shape_path_new_from_binary()
- Code to translate path data does not handle arc in a right way.
- Copy calc_center_and_x_aix() from shape_path.c to svg2code.py and
change name _calc_ellipse_of_arc()
- _calc_ellipse_of_arc() handle arc data for translate_path_data()
author | Thinker K.F. Li <thinker@branda.to> |
---|---|
date | Sun, 25 Jan 2009 00:20:34 +0800 |
parents | 43900cae1d49 |
children | 586e50f82c1f |
line wrap: on
line source
#ifndef __MB_IMG_LDR_H_ #define __MB_IMG_LDR_H_ typedef struct _mb_img_data mb_img_data_t; typedef struct _mb_img_ldr mb_img_ldr_t; typedef enum _mb_img_fmt { MB_IFMT_DUMMY, MB_IFMT_ARGB32, MB_IFMT_RGB24, MB_IFMT_A8, MB_IFMT_A1, MB_IFMT_RGB16_565 } mb_img_fmt_t; /*! \brief Encapsulate image. * * The format and content of an image is encapsulated by imag_data_t. * We hope someday, we can create an abstract backend layer that * can deal with image data. */ struct _mb_img_data { /*! \brief Content of the image. */ void *content; int w, h; int stride; /*!< \brief Number of bytes a row */ mb_img_fmt_t fmt; /*! \brief Release the image that was loaded by the loader. */ void (*free)(mb_img_data_t *img); }; #define MB_IMG_DATA_FREE(img) (img)->free(img) /*! \brief Image loader. * * An image loader take a ID and find out the corresponding * image from filesystem or somewhere. Image ID is a hierachical * structured path. It is relative to the root of image database. * Users of a loader do not need to know where the database is. * The location can be configured when a loader been instantiated. * But, it is invisible when loading images by an image loader. */ struct _mb_img_ldr { /*! \brief Load a image with specified ID. */ mb_img_data_t *(*load)(mb_img_ldr_t *ldr, const char *img_id); /*! \brief Free the loader. */ void (*free)(mb_img_ldr_t *ldr); }; #define MB_IMG_LDR_FREE(ldr) (ldr)->free(ldr) #define MB_IMG_LDR_LOAD(ldr, img_id) (ldr)->load(ldr, img_id) /*! \brief Create a simple image loader. * * \param img_repository is a repository where images are loaded from. * \return NULL for error. */ extern mb_img_ldr_t *simple_mb_img_ldr_new(const char *img_repository); #endif /* __MB_IMG_LDR_H_ */