cedric pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=b1b0679daaa3ddf81363812061eeb008a2efbf96

commit b1b0679daaa3ddf81363812061eeb008a2efbf96
Author: Subhransu Mohanty <sub.moha...@samsung.com>
Date:   Wed Nov 18 14:25:09 2015 +0900

    efl: added fill_rule property in efl_gfx_shape class
    
    Open question, should fill rule be part of the public data ? Let's
    say no for now.
    
    Signed-off-by: Cedric BAIL <ced...@osg.samsung.com>
---
 src/lib/efl/Efl.h                       | 10 ++++++++++
 src/lib/efl/interfaces/efl_gfx_shape.c  | 24 ++++++++++++++++++++++--
 src/lib/efl/interfaces/efl_gfx_shape.eo | 19 +++++++++++++++++++
 3 files changed, 51 insertions(+), 2 deletions(-)

diff --git a/src/lib/efl/Efl.h b/src/lib/efl/Efl.h
index 8bc30b2..aa09157 100644
--- a/src/lib/efl/Efl.h
+++ b/src/lib/efl/Efl.h
@@ -125,6 +125,16 @@ typedef enum _Efl_Gfx_Gradient_Spread
 
 
 /**
+ * Type defining how an image content get filled.
+ * @since 1.14
+ */
+typedef enum _Efl_Gfx_Fill_Rule
+{
+   EFL_GFX_FILL_RULE_WINDING = 0, /**< Draw a horizontal line from the point 
to a location outside the shape. Determine whether the direction of the line at 
each intersection point is up or down. The winding number is determined by 
summing the direction of each intersection. If the number is non zero, the 
point is inside the shape. This mode is the default */
+   EFL_GFX_FILL_RULE_ODD_EVEN = 1,  /**< Draw a horizontal line from the point 
to a location outside the shape, and count the number of intersections. If the 
number of intersections is an odd number, the point is inside the shape. */
+} Efl_Gfx_Fill_Rule;
+
+/**
  * Type defining stroke information.
  * @note Describe the properties to define the path stroke.
  * @since 1.14
diff --git a/src/lib/efl/interfaces/efl_gfx_shape.c 
b/src/lib/efl/interfaces/efl_gfx_shape.c
index 4ff8ceb..8ffdb76 100644
--- a/src/lib/efl/interfaces/efl_gfx_shape.c
+++ b/src/lib/efl/interfaces/efl_gfx_shape.c
@@ -13,6 +13,8 @@ struct _Efl_Gfx_Shape_Data
 {
    Efl_Gfx_Shape_Public public;
 
+   Efl_Gfx_Fill_Rule fill_rule;
+
    struct {
       double x;
       double y;
@@ -435,6 +437,7 @@ _efl_gfx_shape_dup(Eo *obj, Efl_Gfx_Shape_Data *pd, const 
Eo *dup_from)
 {
    const Efl_Gfx_Dash *dash = NULL;
    Efl_Gfx_Shape_Data *from;
+   Efl_Gfx_Fill_Rule fill_rule;
    unsigned int dash_length = 0;
    Efl_Gfx_Cap cap;
    Efl_Gfx_Join j;
@@ -453,7 +456,8 @@ _efl_gfx_shape_dup(Eo *obj, Efl_Gfx_Shape_Data *pd, const 
Eo *dup_from)
          location = efl_gfx_shape_stroke_location_get(),
          efl_gfx_shape_stroke_dash_get(&dash, &dash_length),
          cap = efl_gfx_shape_stroke_cap_get(),
-         j = efl_gfx_shape_stroke_join_get());
+         j = efl_gfx_shape_stroke_join_get(),
+         fill_rule = efl_gfx_shape_fill_rule_get());
    eo_do(obj,
          efl_gfx_shape_stroke_scale_set(scale),
          efl_gfx_shape_stroke_color_set(sr, sg, sb, sa),
@@ -461,7 +465,8 @@ _efl_gfx_shape_dup(Eo *obj, Efl_Gfx_Shape_Data *pd, const 
Eo *dup_from)
          efl_gfx_shape_stroke_location_set(location),
          efl_gfx_shape_stroke_dash_set(dash, dash_length),
          efl_gfx_shape_stroke_cap_set(cap),
-         efl_gfx_shape_stroke_join_set(j));
+         efl_gfx_shape_stroke_join_set(j),
+         efl_gfx_shape_fill_rule_set(fill_rule));
 
    _efl_gfx_shape_path_set(obj, pd, from->commands, from->points);
 
@@ -1497,4 +1502,19 @@ _efl_gfx_shape_stroke_join_get(Eo *obj EINA_UNUSED,
    return pd->public.stroke.join;
 }
 
+static void
+_efl_gfx_shape_fill_rule_set(Eo *obj EINA_UNUSED,
+                             Efl_Gfx_Shape_Data *pd,
+                             Efl_Gfx_Fill_Rule fill_rule)
+{
+   pd->fill_rule = fill_rule;
+}
+
+static Efl_Gfx_Fill_Rule
+_efl_gfx_shape_fill_rule_get(Eo *obj EINA_UNUSED,
+                             Efl_Gfx_Shape_Data *pd)
+{
+   return pd->fill_rule;
+}
+
 #include "interfaces/efl_gfx_shape.eo.c"
diff --git a/src/lib/efl/interfaces/efl_gfx_shape.eo 
b/src/lib/efl/interfaces/efl_gfx_shape.eo
index 395e542..4943522 100644
--- a/src/lib/efl/interfaces/efl_gfx_shape.eo
+++ b/src/lib/efl/interfaces/efl_gfx_shape.eo
@@ -125,6 +125,25 @@ mixin Efl.Gfx.Shape
             j: Efl_Gfx_Join; [[join style to use, default is 
EFL_GFX_JOIN_MITER]]
          }
       }
+      @property fill_rule {
+         set {
+            [[Sets the fill rule of the given shape object.
+              $EFL_GFX_FILL_RULE_WINDING, or $EFL_GFX_FILL_RULE_ODD_EVEN.
+
+              @since 1.14
+            ]]
+         }
+         get {
+            [[Retrieves the fill rule for the given shape object.
+
+              @since 1.14
+            ]]
+         }
+         values {
+            fill_rule: Efl_Gfx_Fill_Rule; [[The current fill rule of the shape 
object.
+                                           One of $EFL_GFX_FILL_RULE_WINDING, 
$EFL_GFX_FILL_RULE_ODD_EVEN]]
+         }
+      }
       @property path {
          set {
             [[Set the list of commands and points to be used to create the

-- 


Reply via email to