Mercurial > MadButterfly
view include/mb_img_ldr.h @ 887:8a2d676d9fa3 abs_n_rel_center
Fix bug of clearing COF_TEMP_MARK.
draw_shapes_in_dirty_areas() mark COF_TEMP_MARK on coords and clear
them before leaving. But, it always clear the same one coord for
several times and keep others untouched. It is a logical error. It
can be avoided by avoiding to use the variable at mutliple place for
different purpose in a function, and compiler will check it out by
yelling that the variable is used before assigning a value.
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Sun, 26 Sep 2010 14:07:05 +0800 |
parents | 586e50f82c1f |
children |
line wrap: on
line source
// -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 4; -*- // vim: sw=4:ts=8:sts=4 #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_ */