jpeg pushed a commit to branch master.

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

commit 7af272d93ce49bcddb4f5171da1180a2157bf6c9
Author: Subhransu Mohanty <sub.moha...@samsung.com>
Date:   Mon Aug 1 13:23:44 2016 +0900

    edje: Fix handling of polygon and polyline node.
    
    Reviewers: cedric, jpeg
    
    Reviewed By: jpeg
    
    Subscribers: cedric, jpeg
    
    Differential Revision: https://phab.enlightenment.org/D4203
---
 src/bin/edje/edje_svg_loader.c | 12 +++++++++++-
 src/lib/edje/edje_data.c       |  4 +++-
 src/lib/edje/edje_load.c       |  3 ++-
 src/lib/edje/edje_private.h    |  1 +
 4 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/src/bin/edje/edje_svg_loader.c b/src/bin/edje/edje_svg_loader.c
index 93e30b8..bf9c37d 100644
--- a/src/bin/edje/edje_svg_loader.c
+++ b/src/bin/edje/edje_svg_loader.c
@@ -1134,7 +1134,13 @@ static Eina_Bool
 _attr_parse_polygon_node(void *data, const char *key, const char *value)
 {
    Svg_Node *node = data;
-   Svg_Polygon_Node *polygon = &(node->node.polygon);
+   Svg_Polygon_Node *polygon = NULL;
+
+   if (node->type == SVG_NODE_POLYGON)
+     polygon = &(node->node.polygon);
+   else
+     polygon = &(node->node.polyline);
+
 
    if (!strcmp(key, "points"))
      {
@@ -1368,6 +1374,10 @@ _copy_attribute(Svg_Node *to, Svg_Node *from)
            to->node.polygon.points_count = from->node.polygon.points_count;
            to->node.polygon.points = calloc(to->node.polygon.points_count, 
sizeof(double));
            break;
+        case SVG_NODE_POLYLINE:
+           to->node.polyline.points_count = from->node.polyline.points_count;
+           to->node.polyline.points = calloc(to->node.polyline.points_count, 
sizeof(double));
+           break;
         default:
            break;
      }
diff --git a/src/lib/edje/edje_data.c b/src/lib/edje/edje_data.c
index a2f4a77..b5e7b7f 100644
--- a/src/lib/edje/edje_data.c
+++ b/src/lib/edje/edje_data.c
@@ -361,6 +361,7 @@ _eet_for_polygon_node(void)
 
    EET_EINA_STREAM_DATA_DESCRIPTOR_CLASS_SET(&eetc, Svg_Polygon_Node);
    eet = eet_data_descriptor_stream_new(&eetc);
+   EET_DATA_DESCRIPTOR_ADD_BASIC(eet, Svg_Polygon_Node, "points_count", 
points_count, EET_T_INT);
    EET_DATA_DESCRIPTOR_ADD_BASIC_VAR_ARRAY(eet, Svg_Polygon_Node, "points", 
points, EET_T_DOUBLE);
    return eet;
 }
@@ -389,7 +390,7 @@ struct
    { SVG_NODE_CIRCLE, "circle" },
    { SVG_NODE_ELLIPSE, "ellipse" },
    { SVG_NODE_POLYGON, "polygon" },
-   { SVG_NODE_POLYLINE, "polygon" },
+   { SVG_NODE_POLYLINE, "polyline" },
    { SVG_NODE_RECT, "rect" },
    { SVG_NODE_PATH, "path" },
    { SVG_NODE_UNKNOWN, NULL }
@@ -474,6 +475,7 @@ _edje_svg_node_eet(void)
    EET_DATA_DESCRIPTOR_ADD_MAPPING(eet_union, "rect", 
_edje_edd_edje_rect_node);
    EET_DATA_DESCRIPTOR_ADD_MAPPING(eet_union, "path", 
_edje_edd_edje_path_node);
    EET_DATA_DESCRIPTOR_ADD_MAPPING(eet_union, "polygon", 
_edje_edd_edje_polygon_node);
+   EET_DATA_DESCRIPTOR_ADD_MAPPING(eet_union, "polyline", 
_edje_edd_edje_polygon_node);
 
    EET_DATA_DESCRIPTOR_ADD_UNION(_edje_edd_edje_vg_node, Svg_Node, "node", 
node, type, eet_union);
 
diff --git a/src/lib/edje/edje_load.c b/src/lib/edje/edje_load.c
index acacf37..89683a5 100644
--- a/src/lib/edje/edje_load.c
+++ b/src/lib/edje/edje_load.c
@@ -2518,7 +2518,8 @@ _create_vg_node(Svg_Node *node, Efl_VG *parent)
            _add_polyline(vg, node->node.polygon.points, 
node->node.polygon.points_count, EINA_TRUE);
            break;
         case SVG_NODE_POLYLINE:
-           _add_polyline(vg, node->node.polygon.points, 
node->node.polygon.points_count, EINA_FALSE);
+           vg = evas_vg_shape_add(parent);
+           _add_polyline(vg, node->node.polyline.points, 
node->node.polyline.points_count, EINA_FALSE);
            break;
         case SVG_NODE_ELLIPSE:
            vg = evas_vg_shape_add(parent);
diff --git a/src/lib/edje/edje_private.h b/src/lib/edje/edje_private.h
index da75f17..fd53254 100644
--- a/src/lib/edje/edje_private.h
+++ b/src/lib/edje/edje_private.h
@@ -3247,6 +3247,7 @@ struct _Svg_Node
         Svg_Circle_Node circle;
         Svg_Ellipse_Node ellipse;
         Svg_Polygon_Node polygon;
+        Svg_Polygon_Node polyline;
         Svg_Rect_Node rect;
         Svg_Path_Node path;
      }node;

-- 


Reply via email to