Efl.Image: Move alpha to Efl.Gfx.Buffer
authorJean-Philippe Andre <jp.andre@samsung.com>
Fri, 11 Mar 2016 07:13:13 +0000 (16:13 +0900)
committerJean-Philippe Andre <jp.andre@samsung.com>
Tue, 15 Mar 2016 02:11:59 +0000 (11:11 +0900)
The buffer class is more low-level and alpha is a pretty
common property. I still wonder how to share it with the canvas
and other things.

It doesn't belong to Efl.Gfx.Base since we could have plain old
buffers that are not evas objects (only in-memory buffers) but
Efl.Gfx.Base may also need the alpha flag.

src/lib/efl/interfaces/efl_gfx_buffer.eo
src/lib/efl/interfaces/efl_image.eo
src/lib/evas/canvas/evas_image.eo
src/lib/evas/canvas/evas_object_image.c

index f176b6a..87de79b 100644 (file)
@@ -46,6 +46,30 @@ interface Efl.Gfx.Buffer ()
             cspace: Efl.Gfx.Colorspace;
          }
       }
+      @property alpha {
+         [[Indicates whether the alpha channel should be used.
+
+           This does not indicate whether the image source file contains
+           an alpha channel, only whether to respect it or discard it.
+         ]]
+         set {
+            [[Change alpha channel usage for this object.
+
+              This function sets a flag on an image object indicating
+              whether or not to use alpha channel data. A value of $true
+              makes it use alpha channel data, and $false makes it ignore
+              that data. Note that this has nothing to do with an object's
+              color as manipulated by @Efl.Gfx.Base.color.set.
+            ]]
+         }
+         get {
+            [[Retrieve whether alpha channel data is used on this object.]]
+         }
+         values {
+            alpha: bool; [[Whether to use alpha channel ($true) data
+                           or not ($false).]]
+         }
+      }
 
       @property stride {
          [[Length in bytes of one row of pixels in memory.
index 8a5d015..b0499a3 100644 (file)
@@ -1,3 +1,5 @@
+import efl_gfx_types;
+
 enum Efl.Image.Content_Hint
 {
    [[How an image's data is to be treated by EFL, for optimization.]]
@@ -37,30 +39,6 @@ interface Efl.Image ()
             smooth_scale: bool; [[Whether to use smooth scale or not.]]
          }
       }
-      @property alpha {
-         [[Indicates whether the alpha channel should be used.
-
-           This does not indicate whether the image source file contains
-           an alpha channel, only whether to respect it or discard it.
-         ]]
-         set {
-            [[Change alpha channel usage for this object.
-
-              This function sets a flag on an image object indicating
-              whether or not to use alpha channel data. A value of $true
-              makes it use alpha channel data, and $false makes it ignore
-              that data. Note that this has nothing to do with an object's
-              color as manipulated by @Efl.Gfx.Base.color.set.
-            ]]
-         }
-         get {
-            [[Retrieve whether alpha channel data is used on this object.]]
-         }
-         values {
-            alpha: bool; [[Whether to use alpha channel ($true) data
-                           or not ($false).]]
-         }
-      }
       @property ratio {
          [[The native width/height ratio of the image.]]
          get {
index f71d822..bf48249 100644 (file)
@@ -53,8 +53,6 @@ class Evas.Image (Evas.Object, Efl.File, Efl.Image, Efl.Image_Load, Efl.Image_An
       Efl.File.save;
       Efl.Image.orientation.get;
       Efl.Image.orientation.set;
-      Efl.Image.alpha.get;
-      Efl.Image.alpha.set;
       Efl.Image.smooth_scale.set;
       Efl.Image.smooth_scale.get;
       Efl.Image.ratio.get;
@@ -89,6 +87,8 @@ class Evas.Image (Evas.Object, Efl.File, Efl.Image, Efl.Image_Load, Efl.Image_An
       Efl.Image_Load.load_region.get;
       Efl.Image_Load.load_region.set;
       Efl.Image_Load.load_region_support.get;
+      Efl.Gfx.Buffer.alpha.get;
+      Efl.Gfx.Buffer.alpha.set;
       Efl.Gfx.Buffer.buffer_update_add;
       Efl.Gfx.Buffer.stride.get;
       Efl.Gfx.Buffer.colorspace.get;
index 8972f56..9e69a4e 100644 (file)
@@ -936,7 +936,7 @@ _evas_image_efl_gfx_buffer_buffer_update_add(Eo *eo_obj, Evas_Image_Data *o, int
 }
 
 EOLIAN static void
-_evas_image_efl_image_alpha_set(Eo *eo_obj, Evas_Image_Data *o, Eina_Bool has_alpha)
+_evas_image_efl_gfx_buffer_alpha_set(Eo *eo_obj, Evas_Image_Data *o, Eina_Bool has_alpha)
 {
    Evas_Object_Protected_Data *obj = eo_data_scope_get(eo_obj, EVAS_OBJECT_CLASS);
 
@@ -982,7 +982,7 @@ _evas_image_efl_image_alpha_set(Eo *eo_obj, Evas_Image_Data *o, Eina_Bool has_al
 }
 
 EOLIAN static Eina_Bool
-_evas_image_efl_image_alpha_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
+_evas_image_efl_gfx_buffer_alpha_get(Eo *eo_obj EINA_UNUSED, Evas_Image_Data *o)
 {
    return o->cur->has_alpha;
 }
@@ -4368,13 +4368,15 @@ evas_object_image_fill_spread_get(const Evas_Image *obj EINA_UNUSED)
 EAPI void
 evas_object_image_alpha_set(Evas_Object *obj, Eina_Bool alpha)
 {
-   efl_image_alpha_set(obj, alpha);
+   EVAS_OBJECT_LEGACY_API(obj);
+   efl_gfx_buffer_alpha_set(obj, alpha);
 }
 
 EAPI Eina_Bool
 evas_object_image_alpha_get(const Evas_Object *obj)
 {
-   return efl_image_alpha_get(obj);
+   EVAS_OBJECT_LEGACY_API(obj, EINA_FALSE);
+   return efl_gfx_buffer_alpha_get(obj);
 }
 
 EAPI void