From 086323b0e63845a13067d2599888e12a1843e301 Mon Sep 17 00:00:00 2001 From: etrunko Date: Sat, 8 Dec 2007 22:37:58 +0000 Subject: [PATCH 1/1] Added debian_gregale directory --- .../patches/01_dont_overwrite_changelog | 24 ++ trunk/ecore/debian_chinook/patches/series | 1 + .../patches/01_dont_overwrite_changelog | 24 ++ trunk/ecore/debian_gregale/patches/series | 1 + .../patches/01_dont_overwrite_changelog | 23 ++ trunk/edje/debian_gregale/patches/series | 1 + .../patches/01_dont_overwrite_changelog | 26 +++ trunk/eet/debian_gregale/patches/series | 1 + .../patches/01_dont_overwrite_changelog | 24 ++ trunk/embryo/debian_gregale/patches/series | 1 + .../patches/01_dont_overwrite_changelog | 26 +++ .../patches/02_evas_colorspace_convert | 238 ++++++++++++++++++++ trunk/evas/debian_gregale/patches/series | 2 + 13 files changed, 392 insertions(+) create mode 100644 trunk/ecore/debian_chinook/patches/01_dont_overwrite_changelog create mode 100644 trunk/ecore/debian_chinook/patches/series create mode 100644 trunk/ecore/debian_gregale/patches/01_dont_overwrite_changelog create mode 100644 trunk/ecore/debian_gregale/patches/series create mode 100644 trunk/edje/debian_gregale/patches/01_dont_overwrite_changelog create mode 100644 trunk/edje/debian_gregale/patches/series create mode 100644 trunk/eet/debian_gregale/patches/01_dont_overwrite_changelog create mode 100644 trunk/eet/debian_gregale/patches/series create mode 100644 trunk/embryo/debian_gregale/patches/01_dont_overwrite_changelog create mode 100644 trunk/embryo/debian_gregale/patches/series create mode 100644 trunk/evas/debian_gregale/patches/01_dont_overwrite_changelog create mode 100644 trunk/evas/debian_gregale/patches/02_evas_colorspace_convert create mode 100644 trunk/evas/debian_gregale/patches/series diff --git a/trunk/ecore/debian_chinook/patches/01_dont_overwrite_changelog b/trunk/ecore/debian_chinook/patches/01_dont_overwrite_changelog new file mode 100644 index 0000000..e85df5c --- /dev/null +++ b/trunk/ecore/debian_chinook/patches/01_dont_overwrite_changelog @@ -0,0 +1,24 @@ +Index: ecore/Makefile.am +=================================================================== +--- ecore.orig/Makefile.am 2007-07-16 10:23:10.000000000 +0300 ++++ ecore/Makefile.am 2007-08-18 21:08:17.000000000 +0300 +@@ -9,7 +9,6 @@ + ecore_docs.tar.gz ecore.c \ + README \ + ecore.spec \ +- debian/changelog \ + ecore-con.pc \ + ecore-config.pc \ + ecore-desktop.pc \ +Index: ecore/configure.in +=================================================================== +--- ecore.orig/configure.in 2007-07-28 22:54:40.000000000 +0300 ++++ ecore/configure.in 2007-08-18 21:08:04.000000000 +0300 +@@ -857,7 +857,6 @@ + src/lib/ecore_directfb/Makefile + README + ecore.spec +-debian/changelog + ]) + + echo diff --git a/trunk/ecore/debian_chinook/patches/series b/trunk/ecore/debian_chinook/patches/series new file mode 100644 index 0000000..9f2346c --- /dev/null +++ b/trunk/ecore/debian_chinook/patches/series @@ -0,0 +1 @@ +01_dont_overwrite_changelog diff --git a/trunk/ecore/debian_gregale/patches/01_dont_overwrite_changelog b/trunk/ecore/debian_gregale/patches/01_dont_overwrite_changelog new file mode 100644 index 0000000..e85df5c --- /dev/null +++ b/trunk/ecore/debian_gregale/patches/01_dont_overwrite_changelog @@ -0,0 +1,24 @@ +Index: ecore/Makefile.am +=================================================================== +--- ecore.orig/Makefile.am 2007-07-16 10:23:10.000000000 +0300 ++++ ecore/Makefile.am 2007-08-18 21:08:17.000000000 +0300 +@@ -9,7 +9,6 @@ + ecore_docs.tar.gz ecore.c \ + README \ + ecore.spec \ +- debian/changelog \ + ecore-con.pc \ + ecore-config.pc \ + ecore-desktop.pc \ +Index: ecore/configure.in +=================================================================== +--- ecore.orig/configure.in 2007-07-28 22:54:40.000000000 +0300 ++++ ecore/configure.in 2007-08-18 21:08:04.000000000 +0300 +@@ -857,7 +857,6 @@ + src/lib/ecore_directfb/Makefile + README + ecore.spec +-debian/changelog + ]) + + echo diff --git a/trunk/ecore/debian_gregale/patches/series b/trunk/ecore/debian_gregale/patches/series new file mode 100644 index 0000000..9f2346c --- /dev/null +++ b/trunk/ecore/debian_gregale/patches/series @@ -0,0 +1 @@ +01_dont_overwrite_changelog diff --git a/trunk/edje/debian_gregale/patches/01_dont_overwrite_changelog b/trunk/edje/debian_gregale/patches/01_dont_overwrite_changelog new file mode 100644 index 0000000..f93daf4 --- /dev/null +++ b/trunk/edje/debian_gregale/patches/01_dont_overwrite_changelog @@ -0,0 +1,23 @@ +Index: edje/Makefile.am +=================================================================== +--- edje.orig/Makefile.am 2007-07-01 21:03:33.000000000 +0300 ++++ edje/Makefile.am 2007-08-19 12:18:53.000000000 +0300 +@@ -4,7 +4,7 @@ + config.h.in config.sub configure install-sh \ + ltconfig ltmain.sh missing mkinstalldirs \ + stamp-h.in edje_docs.tar edje_docs.tar.gz edje.c \ +- debian/changelog edje.spec ++ edje.spec + + ### this is all fine and great - but edje should not be going and installing + ### data in another software's data dir - it's just wrong. not to mention this +Index: edje/configure.in +=================================================================== +--- edje.orig/configure.in 2007-07-10 03:13:23.000000000 +0300 ++++ edje/configure.in 2007-08-19 12:19:35.000000000 +0300 +@@ -144,5 +144,4 @@ + src/Makefile + src/lib/Makefile + src/bin/Makefile +-debian/changelog + ]) diff --git a/trunk/edje/debian_gregale/patches/series b/trunk/edje/debian_gregale/patches/series new file mode 100644 index 0000000..9f2346c --- /dev/null +++ b/trunk/edje/debian_gregale/patches/series @@ -0,0 +1 @@ +01_dont_overwrite_changelog diff --git a/trunk/eet/debian_gregale/patches/01_dont_overwrite_changelog b/trunk/eet/debian_gregale/patches/01_dont_overwrite_changelog new file mode 100644 index 0000000..8585746 --- /dev/null +++ b/trunk/eet/debian_gregale/patches/01_dont_overwrite_changelog @@ -0,0 +1,26 @@ +Index: eet/configure.in +=================================================================== +--- eet.orig/configure.in 2007-07-10 03:13:23.000000000 +0300 ++++ eet/configure.in 2007-08-18 12:54:18.000000000 +0300 +@@ -133,7 +133,6 @@ + src/lib/Makefile + README + eet.spec +-debian/changelog + ]) + + +Index: eet/Makefile.am +=================================================================== +--- eet.orig/Makefile.am 2007-03-22 19:07:46.000000000 +0200 ++++ eet/Makefile.am 2007-08-18 12:54:18.000000000 +0300 +@@ -7,8 +7,7 @@ + eet_docs.tar.gz \ + README \ + eet.pc \ +- eet.spec \ +- debian/changelog ++ eet.spec + + EXTRA_DIST = AUTHORS COPYING COPYING-PLAIN eet.c.in \ + README.in README \ diff --git a/trunk/eet/debian_gregale/patches/series b/trunk/eet/debian_gregale/patches/series new file mode 100644 index 0000000..9f2346c --- /dev/null +++ b/trunk/eet/debian_gregale/patches/series @@ -0,0 +1 @@ +01_dont_overwrite_changelog diff --git a/trunk/embryo/debian_gregale/patches/01_dont_overwrite_changelog b/trunk/embryo/debian_gregale/patches/01_dont_overwrite_changelog new file mode 100644 index 0000000..6263a9e --- /dev/null +++ b/trunk/embryo/debian_gregale/patches/01_dont_overwrite_changelog @@ -0,0 +1,24 @@ +Index: embryo/Makefile.am +=================================================================== +--- embryo.orig/Makefile.am 2007-07-01 20:37:02.000000000 +0300 ++++ embryo/Makefile.am 2007-08-19 11:55:45.000000000 +0300 +@@ -7,8 +7,7 @@ + embryo_docs.tar.gz embryo.c \ + README \ + embryo.pc \ +- embryo.spec \ +- debian/changelog ++ embryo.spec + + bin_SCRIPTS = + +Index: embryo/configure.in +=================================================================== +--- embryo.orig/configure.in 2007-07-10 03:13:23.000000000 +0300 ++++ embryo/configure.in 2007-08-19 11:56:00.000000000 +0300 +@@ -87,5 +87,4 @@ + src/bin/Makefile + README + embryo.spec +-debian/changelog + ]) diff --git a/trunk/embryo/debian_gregale/patches/series b/trunk/embryo/debian_gregale/patches/series new file mode 100644 index 0000000..9f2346c --- /dev/null +++ b/trunk/embryo/debian_gregale/patches/series @@ -0,0 +1 @@ +01_dont_overwrite_changelog diff --git a/trunk/evas/debian_gregale/patches/01_dont_overwrite_changelog b/trunk/evas/debian_gregale/patches/01_dont_overwrite_changelog new file mode 100644 index 0000000..c4ad91d --- /dev/null +++ b/trunk/evas/debian_gregale/patches/01_dont_overwrite_changelog @@ -0,0 +1,26 @@ +Index: evas/Makefile.am +=================================================================== +--- evas.orig/Makefile.am 2007-08-17 12:16:26.000000000 +0300 ++++ evas/Makefile.am 2007-08-18 15:55:25.000000000 +0300 +@@ -24,8 +24,7 @@ + evas-direct3d.pc \ + evas-sdl.pc \ + evas.pc \ +- evas.spec \ +- debian/changelog ++ evas.spec + + bin_SCRIPTS = + +Index: evas/configure.in +=================================================================== +--- evas.orig/configure.in 2007-08-17 12:12:21.000000000 +0300 ++++ evas/configure.in 2007-08-18 15:55:47.000000000 +0300 +@@ -2244,7 +2244,6 @@ + src/lib/include/Makefile + README + evas.spec +-debian/changelog + ]) + + ##################################################################### diff --git a/trunk/evas/debian_gregale/patches/02_evas_colorspace_convert b/trunk/evas/debian_gregale/patches/02_evas_colorspace_convert new file mode 100644 index 0000000..139b54c --- /dev/null +++ b/trunk/evas/debian_gregale/patches/02_evas_colorspace_convert @@ -0,0 +1,238 @@ +diff --git a/src/lib/Evas.h b/src/lib/Evas.h +index 18864ce..a56fd92 100644 +--- a/src/lib/Evas.h ++++ b/src/lib/Evas.h +@@ -478,6 +478,7 @@ extern "C" { + EAPI void evas_object_image_size_get (Evas_Object *obj, int *w, int *h); + EAPI int evas_object_image_stride_get (Evas_Object *obj); + EAPI int evas_object_image_load_error_get (Evas_Object *obj); ++ EAPI void *evas_object_image_data_convert (Evas_Object *obj, Evas_Colorspace to_cspace); + EAPI void evas_object_image_data_set (Evas_Object *obj, void *data); + EAPI void *evas_object_image_data_get (Evas_Object *obj, Evas_Bool for_writing); + EAPI void evas_object_image_data_copy_set (Evas_Object *obj, void *data); +diff --git a/src/lib/canvas/evas_object_image.c b/src/lib/canvas/evas_object_image.c +index 6a8df55..92b0651 100644 +--- a/src/lib/canvas/evas_object_image.c ++++ b/src/lib/canvas/evas_object_image.c +@@ -69,6 +69,8 @@ static int evas_object_image_is_opaque(Evas_Object *obj); + static int evas_object_image_was_opaque(Evas_Object *obj); + static int evas_object_image_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y); + ++static void *evas_object_image_data_convert_internal(Evas_Object_Image *o, void *data, Evas_Colorspace to_cspace); ++ + static const Evas_Object_Func object_func = + { + /* methods (compulsory) */ +@@ -708,6 +710,46 @@ evas_object_image_load_error_get(Evas_Object *obj) + */ + + /** ++ * Converts the raw image data of the given image object to the ++ * specified colorspace. ++ * ++ * Note that this function does not modify the raw image data. ++ * If the requested colorspace is the same as the image colorspace ++ * nothing is done and NULL is returned. You should use ++ * evas_object_image_colorspace_get() to check the current image ++ * colorspace. ++ * ++ * See @ref evas_object_image_colorspace_get. ++ * ++ * @param obj The given image object. ++ * @param to_cspace The colorspace to which the image raw data will be converted. ++ * @return data A newly allocated data in the format specified by to_cspace. ++ * @ingroup Evas_Object_Image_Data ++ */ ++EAPI void * ++evas_object_image_data_convert(Evas_Object *obj, Evas_Colorspace to_cspace) ++{ ++ Evas_Object_Image *o; ++ DATA32 *data; ++ ++ MAGIC_CHECK(obj, Evas_Object, MAGIC_OBJ); ++ return NULL; ++ MAGIC_CHECK_END(); ++ o = (Evas_Object_Image *)(obj->object_data); ++ MAGIC_CHECK(o, Evas_Object_Image, MAGIC_OBJ_IMAGE); ++ return NULL; ++ MAGIC_CHECK_END(); ++ if (!o->engine_data) return NULL; ++ if (!o->cur.cspace == to_cspace) return NULL; ++ data = NULL; ++ o->engine_data = obj->layer->evas->engine.func->image_data_get(obj->layer->evas->engine.data.output, ++ o->engine_data, ++ 0, ++ &data); ++ return evas_object_image_data_convert_internal(o, data, to_cspace); ++} ++ ++/** + * Sets the raw image data of the given image object. + * + * Note that the raw data must be of the same size and colorspace +@@ -1126,11 +1168,22 @@ evas_object_image_save(Evas_Object *obj, const char *file, const char *key, cons + { + if (o->cur.has_alpha) im->flags |= RGBA_IMAGE_HAS_ALPHA; + +- im->image->data = data; +- im->image->w = o->cur.image.w; +- im->image->h = o->cur.image.h; +- im->image->no_free = 1; +- ok = evas_common_save_image_to_file(im, file, key, quality, compress); ++ if (o->cur.cspace == EVAS_COLORSPACE_ARGB8888) ++ im->image->data = data; ++ else ++ im->image->data = evas_object_image_data_convert_internal(o, ++ data, ++ EVAS_COLORSPACE_ARGB8888); ++ if (im->image->data) ++ { ++ im->image->w = o->cur.image.w; ++ im->image->h = o->cur.image.h; ++ im->image->no_free = 1; ++ ok = evas_common_save_image_to_file(im, file, key, quality, compress); ++ ++ if (o->cur.cspace != EVAS_COLORSPACE_ARGB8888) ++ free(im->image->data); ++ } + + evas_cache_image_drop(im); + } +@@ -2376,3 +2429,36 @@ evas_object_image_is_inside(Evas_Object *obj, Evas_Coord x, Evas_Coord y) + + return (a != 0); + } ++ ++static void * ++evas_object_image_data_convert_internal(Evas_Object_Image *o, void *data, Evas_Colorspace to_cspace) ++{ ++ void *out = NULL; ++ ++ if (!data) ++ return NULL; ++ ++ switch (o->cur.cspace) ++ { ++ case EVAS_COLORSPACE_ARGB8888: ++ out = evas_common_convert_argb8888_to(data, ++ o->cur.image.w, ++ o->cur.image.h, ++ o->cur.image.stride, ++ o->cur.has_alpha, ++ to_cspace); ++ break; ++ case EVAS_COLORSPACE_RGB565_A5P: ++ out = evas_common_convert_rgb565_a5p_to(data, ++ o->cur.image.w, ++ o->cur.image.h, ++ o->cur.image.stride, ++ o->cur.has_alpha, ++ to_cspace); ++ break; ++ default: ++ break; ++ } ++ ++ return out; ++} +diff --git a/src/lib/engines/common/Makefile.am b/src/lib/engines/common/Makefile.am +index c15675b..3d5fd7c 100644 +--- a/src/lib/engines/common/Makefile.am ++++ b/src/lib/engines/common/Makefile.am +@@ -21,6 +21,7 @@ evas_op_mul_main_.c \ + evas_blend_main.c \ + evas_blit_main.c \ + evas_convert_color.c \ ++evas_convert_colorspace.c \ + evas_convert_gry_1.c \ + evas_convert_gry_4.c \ + evas_convert_gry_8.c \ +diff --git a/src/lib/engines/common/evas_convert_colorspace.c b/src/lib/engines/common/evas_convert_colorspace.c +new file mode 100644 +index 0000000..287bd2e +--- /dev/null ++++ b/src/lib/engines/common/evas_convert_colorspace.c +@@ -0,0 +1,69 @@ ++#include "evas_common.h" ++ ++#define CONVERT_RGB_565_TO_RGB_888(s) \ ++ (((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7)) | \ ++ ((((s) << 5) & 0xfc00) | (((s) >> 1) & 0x300)) | \ ++ ((((s) << 8) & 0xf80000) | (((s) << 3) & 0x70000))) ++ ++#define CONVERT_A5P_TO_A8(s) \ ++ ((((s) << 3) & 0xf8) | (((s) >> 2) & 0x7)) ++ ++static inline void * ++evas_common_convert_argb8888_to_rgb565_a5p(void *data, int w, int h, int stride, Evas_Bool has_alpha) ++{ ++} ++ ++static inline void * ++evas_common_convert_rgb565_a5p_to_argb8888(void *data, int w, int h, int stride, Evas_Bool has_alpha) ++{ ++ DATA16 *src, *end; ++ DATA32 *ret, *dst; ++ int r, g, b; ++ ++ src = data; ++ end = src + (stride * h); ++ ret = malloc(w * h * sizeof(DATA32)); ++ ++ dst = ret; ++ if (has_alpha) ++ { ++ DATA8 *alpha; ++ ++ alpha = end; ++ for (; src < end; src++, alpha++, dst++) ++ *dst = (CONVERT_A5P_TO_A8(*alpha) << 24) | ++ CONVERT_RGB_565_TO_RGB_888(*src); ++ } ++ else ++ { ++ for (; src < end; src++, dst++) ++ *dst = CONVERT_RGB_565_TO_RGB_888(*src); ++ } ++ return ret; ++} ++ ++EAPI void * ++evas_common_convert_argb8888_to(void *data, int w, int h, int stride, Evas_Bool has_alpha, Evas_Colorspace cspace) ++{ ++ switch (cspace) ++ { ++ case EVAS_COLORSPACE_RGB565_A5P: ++ return evas_common_convert_argb8888_to_rgb565_a5p(data, w, h, stride, has_alpha); ++ default: ++ break; ++ } ++ return NULL; ++} ++ ++EAPI void * ++evas_common_convert_rgb565_a5p_to(void *data, int w, int h, int stride, Evas_Bool has_alpha, Evas_Colorspace cspace) ++{ ++ switch (cspace) ++ { ++ case EVAS_COLORSPACE_ARGB8888: ++ return evas_common_convert_rgb565_a5p_to_argb8888(data, w, h, stride, has_alpha); ++ default: ++ break; ++ } ++ return NULL; ++} +diff --git a/src/lib/include/evas_common.h b/src/lib/include/evas_common.h +index a61ed6d..4c724b1 100644 +--- a/src/lib/include/evas_common.h ++++ b/src/lib/include/evas_common.h +@@ -998,6 +998,9 @@ EAPI void evas_common_convert_color_rgb_to_hsv (int r, int g + EAPI void evas_common_convert_color_hsv_to_rgb_int (int h, int s, int v, int *r, int *g, int *b); + EAPI void evas_common_convert_color_rgb_to_hsv_int (int r, int g, int b, int *h, int *s, int *v); + ++EAPI void *evas_common_convert_argb8888_to (void *data, int w, int h, int stride, Evas_Bool has_alpha, Evas_Colorspace cspace); ++EAPI void *evas_common_convert_rgb565_a5p_to (void *data, int w, int h, int stride, Evas_Bool has_alpha, Evas_Colorspace cspace); ++ + /****/ + EAPI void evas_common_scale_init (void); + diff --git a/trunk/evas/debian_gregale/patches/series b/trunk/evas/debian_gregale/patches/series new file mode 100644 index 0000000..ddf84be --- /dev/null +++ b/trunk/evas/debian_gregale/patches/series @@ -0,0 +1,2 @@ +01_dont_overwrite_changelog +02_evas_colorspace_convert -- 1.7.9.5