diff --git a/legacy/evas/src/Evas.h b/legacy/evas/src/Evas.h index 3c96041027..b79e4438d7 100644 --- a/legacy/evas/src/Evas.h +++ b/legacy/evas/src/Evas.h @@ -183,6 +183,7 @@ void evas_show(Evas e, Evas_Object o); void evas_hide(Evas e, Evas_Object o); /* image query ops */ +int evas_get_image_alpha(Evas e, Evas_Object o); void evas_get_image_size(Evas e, Evas_Object o, int *w, int *h); void evas_get_image_border(Evas e, Evas_Object o, int *l, int *r, int *t, int *b); Imlib_Load_Error evas_get_image_load_error(Evas e, Evas_Object o); diff --git a/legacy/evas/src/Evas_private.h b/legacy/evas/src/Evas_private.h index 18afb29aed..ac93fd6ac4 100644 --- a/legacy/evas/src/Evas_private.h +++ b/legacy/evas/src/Evas_private.h @@ -203,6 +203,7 @@ struct _Evas_Object_Image char *file; int new_data; int scale; + int alpha; struct { int w, h; } image; diff --git a/legacy/evas/src/evas_image.c b/legacy/evas/src/evas_image.c index 6570fdf37f..ccee3a0581 100644 --- a/legacy/evas/src/evas_image.c +++ b/legacy/evas/src/evas_image.c @@ -77,8 +77,13 @@ evas_add_image_from_file(Evas e, char *file) imlib_context_set_image(im); oo->current.image.w = imlib_image_get_width(); oo->current.image.h = imlib_image_get_height(); + oo->current.alpha = imlib_image_has_alpha(); imlib_free_image(); } + else + { + oo->current.alpha = 1; + } } } oo->current.fill.x = 0; @@ -149,6 +154,7 @@ evas_set_image_file(Evas e, Evas_Object o, char *file) imlib_context_set_image(im); oo->current.image.w = imlib_image_get_width(); oo->current.image.h = imlib_image_get_height(); + oo->current.alpha = imlib_image_has_alpha(); imlib_free_image(); evas_resize(e, o, (double)oo->current.image.w, @@ -169,6 +175,7 @@ evas_set_image_file(Evas e, Evas_Object o, char *file) oo->current.fill.y = 0; oo->current.fill.w = (double)oo->current.image.w; oo->current.fill.h = (double)oo->current.image.h; + oo->current.alpha = 1; } } o->changed = 1; @@ -182,6 +189,7 @@ evas_set_image_file(Evas e, Evas_Object o, char *file) oo->current.file = NULL; oo->current.image.w = 0; oo->current.image.h = 0; + oo->current.alpha = 1; evas_resize(e, o, (double)oo->current.image.w, (double)oo->current.image.h); @@ -222,6 +230,18 @@ evas_set_image_fill(Evas e, Evas_Object o, double x, double y, double w, double } /* image query ops */ +int +evas_get_image_alpha(Evas e, Evas_Object o) +{ + Evas_Object_Image oo; + + if (!e) return; + if (!o) return; + IF_OBJ(o, OBJECT_IMAGE) return 0; + oo = o; + return oo->current.alpha; +} + void evas_get_image_size(Evas e, Evas_Object o, int *w, int *h) {