1 #include "evas_common.h"
2 #include "evas_convert_colorspace.h"
4 #define CONVERT_RGB_565_TO_RGB_888(s) \
5 (((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7)) | \
6 ((((s) << 5) & 0xfc00) | (((s) >> 1) & 0x300)) | \
7 ((((s) << 8) & 0xf80000) | (((s) << 3) & 0x70000)))
9 #define CONVERT_A5P_TO_A8(s) \
10 ((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7))
12 #define CONVERT_ARGB_8888_TO_A_8(s) ((s) >> 24)
16 evas_common_convert_argb8888_to_rgb565_a5p(void *data __UNUSED__, int w __UNUSED__, int h __UNUSED__, int stride __UNUSED__, Eina_Bool has_alpha __UNUSED__)
22 evas_common_convert_rgb565_a5p_to_argb8888(void *data, int w, int h, int stride, Eina_Bool has_alpha)
28 end = src + (stride * h);
29 ret = malloc(w * h * sizeof(DATA32));
37 for (; src < end; src++, alpha++, dst++)
38 *dst = (CONVERT_A5P_TO_A8(*alpha) << 24) |
39 CONVERT_RGB_565_TO_RGB_888(*src);
43 for (; src < end; src++, dst++)
44 *dst = CONVERT_RGB_565_TO_RGB_888(*src);
50 evas_common_convert_argb8888_to_a8(void *data, int w, int h, int stride, Eina_Bool has_alpha)
56 end = src + (stride * h);
61 return memset(ret,0xff, w * h);
64 for ( ; src < end ; src ++, dst ++)
65 *dst = CONVERT_ARGB_8888_TO_A_8(*src);
72 evas_common_convert_argb8888_to(void *data, int w, int h, int stride, Eina_Bool has_alpha, Evas_Colorspace cspace)
76 case EVAS_COLORSPACE_RGB565_A5P:
77 return evas_common_convert_argb8888_to_rgb565_a5p(data, w, h, stride, has_alpha);
85 evas_common_convert_rgb565_a5p_to(void *data, int w, int h, int stride, Eina_Bool has_alpha, Evas_Colorspace cspace)
89 case EVAS_COLORSPACE_ARGB8888:
90 return evas_common_convert_rgb565_a5p_to_argb8888(data, w, h, stride, has_alpha);
98 /* vim:set ts=8 sw=3 sts=3 expandtab cino=>5n-2f0^-2{2(0W1st0 :*/