Thanks for the fix.  :)
On Dec 29, 2015 6:47 PM, "Jean-Philippe ANDRÉ" <[email protected]> wrote:
>
> jpeg pushed a commit to branch master.
>
>
http://git.enlightenment.org/core/efl.git/commit/?id=2ac9e788c689f2ca850d373a19a9e85237198573
>
> commit 2ac9e788c689f2ca850d373a19a9e85237198573
> Author: Jean-Philippe Andre <[email protected]>
> Date:   Tue Dec 29 22:01:16 2015 +0900
>
>     Evas: Implement ARGY88 and GRY8 conversion to ARGB8888
>
>     This is adding support for a deprecated function, but apparently
>     it is used.
>
>     Also, remove crazy abort() inside the data_put function.
>
>     Fixes T2991
> ---
>  src/lib/evas/canvas/evas_object_image.c           | 16 +++++
>  src/lib/evas/common/evas_convert_colorspace.c     | 86
++++++++++++++++++++++-
>  src/lib/evas/common/evas_convert_colorspace.h     |  2 +
>  src/modules/evas/engines/gl_generic/evas_engine.c |  6 +-
>  4 files changed, 106 insertions(+), 4 deletions(-)
>
> diff --git a/src/lib/evas/canvas/evas_object_image.c
b/src/lib/evas/canvas/evas_object_image.c
> index b4a8f19..fecffe6 100644
> --- a/src/lib/evas/canvas/evas_object_image.c
> +++ b/src/lib/evas/canvas/evas_object_image.c
> @@ -4709,6 +4709,22 @@
evas_object_image_data_convert_internal(Evas_Image_Data *o, void *data,
Evas_Col
>                                                      o->cur->image.h,
>                                                      to_cspace);
>            break;
> +      case EVAS_COLORSPACE_AGRY88:
> +          out = evas_common_convert_agry88_to(data,
> +                                              o->cur->image.w,
> +                                              o->cur->image.h,
> +                                              o->cur->image.stride,
> +                                              o->cur->has_alpha,
> +                                              to_cspace);
> +          break;
> +      case EVAS_COLORSPACE_GRY8:
> +          out = evas_common_convert_gry8_to(data,
> +                                            o->cur->image.w,
> +                                            o->cur->image.h,
> +                                            o->cur->image.stride,
> +                                            o->cur->has_alpha,
> +                                            to_cspace);
> +          break;
>          default:
>            WRN("unknow colorspace: %i\n", o->cur->cspace);
>            break;
> diff --git a/src/lib/evas/common/evas_convert_colorspace.c
b/src/lib/evas/common/evas_convert_colorspace.c
> index 0536380..afbac8f 100644
> --- a/src/lib/evas/common/evas_convert_colorspace.c
> +++ b/src/lib/evas/common/evas_convert_colorspace.c
> @@ -47,6 +47,90 @@ evas_common_convert_rgb565_a5p_to_argb8888(void *data,
int w, int h, int stride,
>  }
>
>  static inline void *
> +evas_common_convert_agry88_to_argb8888(const void *data, int w, int h,
int stride, Eina_Bool has_alpha)
> +{
> +   const DATA16 *src, *end;
> +   DATA32 *ret, *dst;
> +
> +   src = data;
> +   end = src + ((stride >> 1) * h);
> +   ret = malloc(w * h * sizeof(DATA32));
> +   dst = ret;
> +
> +   if (has_alpha)
> +     {
> +        for (; src < end; src++, dst++)
> +          {
> +             int c = (*src) & 0xFF;
> +             *dst = ARGB_JOIN((*src >> 8), c, c, c);
> +          }
> +     }
> +   else
> +     {
> +        for (; src < end; src++, dst++)
> +          {
> +             int c = (*src) & 0xFF;
> +             *dst = ARGB_JOIN(0xFF, c, c, c);
> +          }
> +     }
> +
> +   return ret;
> +}
> +
> +void *
> +evas_common_convert_agry88_to(const void *data, int w, int h, int
stride, Eina_Bool has_alpha, Evas_Colorspace cspace)
> +{
> +   switch (cspace) {
> +      case EVAS_COLORSPACE_ARGB8888:
> +        return evas_common_convert_agry88_to_argb8888(data, w, h,
stride, has_alpha);
> +      default:
> +        return NULL;
> +     }
> +}
> +
> +static inline void *
> +evas_common_convert_gry8_to_argb8888(const void *data, int w, int h, int
stride, Eina_Bool has_alpha)
> +{
> +   const DATA8 *src, *end;
> +   DATA32 *ret, *dst;
> +
> +   src = data;
> +   end = src + (stride * h);
> +   ret = malloc(w * h * sizeof(DATA32));
> +   dst = ret;
> +
> +   if (has_alpha)
> +     {
> +        for (; src < end; src++, dst++)
> +          {
> +             int c = (*src) & 0xFF;
> +             *dst = ARGB_JOIN(c, c, c, c);
> +          }
> +     }
> +   else
> +     {
> +        for (; src < end; src++, dst++)
> +          {
> +             int c = (*src) & 0xFF;
> +             *dst = ARGB_JOIN(0xFF, c, c, c);
> +          }
> +     }
> +
> +   return ret;
> +}
> +
> +void *
> +evas_common_convert_gry8_to(const void *data, int w, int h, int stride,
Eina_Bool has_alpha, Evas_Colorspace cspace)
> +{
> +   switch (cspace) {
> +      case EVAS_COLORSPACE_ARGB8888:
> +        return evas_common_convert_gry8_to_argb8888(data, w, h, stride,
has_alpha);
> +      default:
> +        return NULL;
> +     }
> +}
> +
> +static inline void *
>  evas_common_convert_argb8888_to_a8(void *data, int w, int h, int stride,
Eina_Bool has_alpha)
>  {
>     uint32_t *src, *end;
> @@ -68,8 +152,6 @@ evas_common_convert_argb8888_to_a8(void *data, int w,
int h, int stride, Eina_Bo
>     return ret;
>  }
>
> -
> -
>  EAPI void *
>  evas_common_convert_argb8888_to(void *data, int w, int h, int stride,
Eina_Bool has_alpha, Evas_Colorspace cspace)
>  {
> diff --git a/src/lib/evas/common/evas_convert_colorspace.h
b/src/lib/evas/common/evas_convert_colorspace.h
> index f3bec78..51a94f9 100644
> --- a/src/lib/evas/common/evas_convert_colorspace.h
> +++ b/src/lib/evas/common/evas_convert_colorspace.h
> @@ -8,5 +8,7 @@ EAPI void *evas_common_convert_yuv_422P_601_to(void
*data, int w, int h, Evas_Co
>  EAPI void *evas_common_convert_yuv_422_601_to (void *data, int w, int h,
Evas_Colorspace cspace);
>  EAPI void *evas_common_convert_yuv_420_601_to (void *data, int w, int h,
Evas_Colorspace cspace);
>  EAPI void *evas_common_convert_yuv_420T_601_to(void *data, int w, int h,
Evas_Colorspace cspace);
> +void *evas_common_convert_agry88_to(const void *data, int w, int h, int
stride, Eina_Bool has_alpha, Evas_Colorspace cspace);
> +void *evas_common_convert_gry8_to(const void *data, int w, int h, int
stride, Eina_Bool has_alpha, Evas_Colorspace cspace);
>
>  #endif /* _EVAS_CONVERT_COLORSPACE_H */
> diff --git a/src/modules/evas/engines/gl_generic/evas_engine.c
b/src/modules/evas/engines/gl_generic/evas_engine.c
> index 4a06285..c462225 100644
> --- a/src/modules/evas/engines/gl_generic/evas_engine.c
> +++ b/src/modules/evas/engines/gl_generic/evas_engine.c
> @@ -970,6 +970,8 @@ eng_image_data_put(void *data, void *image, DATA32
*image_data)
>     switch (im->cs.space)
>       {
>        case EVAS_COLORSPACE_ARGB8888:
> +      case EVAS_COLORSPACE_AGRY88:
> +      case EVAS_COLORSPACE_GRY8:
>           if ((!im->im) || (image_data != im->im->image.data))
>             {
>                im2 = eng_image_new_from_data(data, im->w, im->h,
image_data,
> @@ -997,8 +999,8 @@ eng_image_data_put(void *data, void *image, DATA32
*image_data)
>           evas_gl_common_image_dirty(im, 0, 0, 0, 0);
>           break;
>        default:
> -         abort();
> -         break;
> +         ERR("colorspace %d is not supported here", im->cs.space);
> +         return NULL;
>       }
>     return im;
>  }
>
> --
>
>
------------------------------------------------------------------------------
_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to