edje: Fix handling of polygon and polyline node.

Reviewers: cedric, jpeg

Reviewed By: jpeg

Subscribers: cedric, jpeg

Differential Revision: https://phab.enlightenment.org/D4203
This commit is contained in:
Subhransu Mohanty 2016-08-01 13:23:44 +09:00 committed by Jean-Philippe Andre
parent 523aea45ce
commit 7af272d93c
4 changed files with 17 additions and 3 deletions

View File

@ -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;
}

View File

@ -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);

View File

@ -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);

View File

@ -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;