2 * vim:ts=8:sw=3:sts=8:noexpandtab:cino=>5n-3f0^-2{2
5 #include "evas_common.h"
6 #include "evas_convert_colorspace.h"
8 #define CONVERT_RGB_565_TO_RGB_888(s) \
9 (((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7)) | \
10 ((((s) << 5) & 0xfc00) | (((s) >> 1) & 0x300)) | \
11 ((((s) << 8) & 0xf80000) | (((s) << 3) & 0x70000)))
13 #define CONVERT_A5P_TO_A8(s) \
14 ((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7))
17 evas_common_convert_argb8888_to_rgb565_a5p(void *data, int w, int h, int stride, Evas_Bool has_alpha)
23 evas_common_convert_rgb565_a5p_to_argb8888(void *data, int w, int h, int stride, Evas_Bool has_alpha)
29 end = src + (stride * h);
30 ret = malloc(w * h * sizeof(DATA32));
38 for (; src < end; src++, alpha++, dst++)
39 *dst = (CONVERT_A5P_TO_A8(*alpha) << 24) |
40 CONVERT_RGB_565_TO_RGB_888(*src);
44 for (; src < end; src++, dst++)
45 *dst = CONVERT_RGB_565_TO_RGB_888(*src);
51 evas_common_convert_argb8888_to(void *data, int w, int h, int stride, Evas_Bool has_alpha, Evas_Colorspace cspace)
55 case EVAS_COLORSPACE_RGB565_A5P:
56 return evas_common_convert_argb8888_to_rgb565_a5p(data, w, h, stride, has_alpha);
64 evas_common_convert_rgb565_a5p_to(void *data, int w, int h, int stride, Evas_Bool has_alpha, Evas_Colorspace cspace)
68 case EVAS_COLORSPACE_ARGB8888:
69 return evas_common_convert_rgb565_a5p_to_argb8888(data, w, h, stride, has_alpha);