#ifndef _EVAS_CSERVE2_SLAVE_H #define _EVAS_CSERVE2_SLAVE_H #include /* begin bunch of stuff from evas_common.h so that we don't need to drag * a lot of useless @SOMETHING_CFLAGS@ around */ typedef unsigned long long DATA64; typedef unsigned int DATA32; typedef unsigned short DATA16; typedef unsigned char DATA8; #ifndef WORDS_BIGENDIAN /* x86 */ #define A_VAL(p) (((DATA8 *)(p))[3]) #define R_VAL(p) (((DATA8 *)(p))[2]) #define G_VAL(p) (((DATA8 *)(p))[1]) #define B_VAL(p) (((DATA8 *)(p))[0]) #define AR_VAL(p) ((DATA16 *)(p)[1]) #define GB_VAL(p) ((DATA16 *)(p)[0]) #else /* ppc */ #define A_VAL(p) (((DATA8 *)(p))[0]) #define R_VAL(p) (((DATA8 *)(p))[1]) #define G_VAL(p) (((DATA8 *)(p))[2]) #define B_VAL(p) (((DATA8 *)(p))[3]) #define AR_VAL(p) ((DATA16 *)(p)[0]) #define GB_VAL(p) ((DATA16 *)(p)[1]) #endif /* if more than 1/ALPHA_SPARSE_INV_FRACTION is "alpha" (1-254) then sparse * alpha flag gets set */ #define ALPHA_SPARSE_INV_FRACTION 3 #define IMG_MAX_SIZE 65000 #define IMG_TOO_BIG(w, h) \ ((((unsigned long long)w) * ((unsigned long long)h)) >= \ ((1ULL << (29 * (sizeof(void *) / 4))) - 2048)) #define RGB_JOIN(r,g,b) \ (((r) << 16) + ((g) << 8) + (b)) #define ARGB_JOIN(a,r,g,b) \ (((a) << 24) + ((r) << 16) + ((g) << 8) + (b)) /* end bunchf of stuff from evas_common.h */ typedef struct _Evas_Loader_Module_Api Evas_Loader_Module_Api; typedef struct _Evas_Img_Load_Params Evas_Img_Load_Params; #define EVAS_CSERVE2_MODULE_API_VERSION 1 struct _Evas_Loader_Module_Api { int version; const char *type; Eina_Bool (*head_load)(Evas_Img_Load_Params *p, const char *file, const char *key, int *error); Eina_Bool (*data_load)(Evas_Img_Load_Params *p, const char *file, const char *key, int *error); }; struct _Evas_Img_Load_Params { unsigned int w, h; unsigned int degree; unsigned int scale; int frame_count; int loop_count; int loop_hint; struct { unsigned int w, h; unsigned int rx, ry, rw, rh; int scale_down_by; double dpi; Eina_Bool orientation; } opts; void *buffer; Eina_Bool has_opts : 1; Eina_Bool rotated : 1; Eina_Bool alpha : 1; Eina_Bool alpha_sparse : 1; Eina_Bool animated : 1; }; EAPI Eina_Bool evas_cserve2_loader_register(Evas_Loader_Module_Api *api); EAPI void evas_cserve2_image_premul(Evas_Img_Load_Params *ilp); EAPI void evas_cserve2_image_alpha_sparse_set(Evas_Img_Load_Params *ilp); #endif /* _EVAS_CSERVE2_SLAVE_H */