Mercurial > MadButterfly
comparison include/mb_img_ldr.h @ 283:7d106e4ef66d
Fix the compilation error of the inkscape
author | wycc@wycc-desktop |
---|---|
date | Sat, 31 Jan 2009 13:01:07 +0800 |
parents | 43900cae1d49 |
children | 586e50f82c1f |
comparison
equal
deleted
inserted
replaced
282:61aebecbb994 | 283:7d106e4ef66d |
---|---|
1 #ifndef __MB_IMG_LDR_H_ | |
2 #define __MB_IMG_LDR_H_ | |
3 | |
4 typedef struct _mb_img_data mb_img_data_t; | |
5 typedef struct _mb_img_ldr mb_img_ldr_t; | |
6 | |
7 typedef enum _mb_img_fmt { | |
8 MB_IFMT_DUMMY, | |
9 MB_IFMT_ARGB32, | |
10 MB_IFMT_RGB24, | |
11 MB_IFMT_A8, | |
12 MB_IFMT_A1, | |
13 MB_IFMT_RGB16_565 | |
14 } mb_img_fmt_t; | |
15 | |
16 /*! \brief Encapsulate image. | |
17 * | |
18 * The format and content of an image is encapsulated by imag_data_t. | |
19 * We hope someday, we can create an abstract backend layer that | |
20 * can deal with image data. | |
21 */ | |
22 struct _mb_img_data { | |
23 /*! \brief Content of the image. */ | |
24 void *content; | |
25 int w, h; | |
26 int stride; /*!< \brief Number of bytes a row */ | |
27 mb_img_fmt_t fmt; | |
28 /*! \brief Release the image that was loaded by the loader. */ | |
29 void (*free)(mb_img_data_t *img); | |
30 }; | |
31 #define MB_IMG_DATA_FREE(img) (img)->free(img) | |
32 | |
33 /*! \brief Image loader. | |
34 * | |
35 * An image loader take a ID and find out the corresponding | |
36 * image from filesystem or somewhere. Image ID is a hierachical | |
37 * structured path. It is relative to the root of image database. | |
38 * Users of a loader do not need to know where the database is. | |
39 * The location can be configured when a loader been instantiated. | |
40 * But, it is invisible when loading images by an image loader. | |
41 */ | |
42 struct _mb_img_ldr { | |
43 /*! \brief Load a image with specified ID. */ | |
44 mb_img_data_t *(*load)(mb_img_ldr_t *ldr, const char *img_id); | |
45 /*! \brief Free the loader. */ | |
46 void (*free)(mb_img_ldr_t *ldr); | |
47 }; | |
48 #define MB_IMG_LDR_FREE(ldr) (ldr)->free(ldr) | |
49 #define MB_IMG_LDR_LOAD(ldr, img_id) (ldr)->load(ldr, img_id) | |
50 | |
51 /*! \brief Create a simple image loader. | |
52 * | |
53 * \param img_repository is a repository where images are loaded from. | |
54 * \return NULL for error. | |
55 */ | |
56 extern mb_img_ldr_t *simple_mb_img_ldr_new(const char *img_repository); | |
57 | |
58 #endif /* __MB_IMG_LDR_H_ */ |