return nd->data;
}
+static Evas_Vg_Path_Command
+_get_evas_command(Tvg_Path_Command cmd)
+{
+ switch(cmd)
+ {
+ case TVG_PATH_COMMAND_MOVE_TO: return EVAS_VG_PATH_COMMAND_MOVE_TO;
+ case TVG_PATH_COMMAND_LINE_TO: return EVAS_VG_PATH_COMMAND_LINE_TO;
+ case TVG_PATH_COMMAND_CUBIC_TO: return EVAS_VG_PATH_COMMAND_CUBIC_TO;
+ case TVG_PATH_COMMAND_CLOSE: return EVAS_VG_PATH_COMMAND_CLOSE;
+ default: return EVAS_VG_PATH_COMMAND_END;
+ }
+}
+
static void
_assign_current_point(Efl_Canvas_Vg_Shape_Data *sd, void *cmd EINA_UNUSED, double x, double y)
{
EAPI void
evas_vg_shape_path_get(Evas_Vg_Shape *obj, const Evas_Vg_Path_Command **op, const double **points)
{
- //TODO: implement
+ if (!op || !points) return;
+#ifdef HAVE_THORVG
+ Tvg_Paint *shape = NULL;
+
+ const Tvg_Path_Command *tvg_cmds = NULL;
+ uint32_t cmds_len = 0;
+
+ const Tvg_Point *tvg_pts = NULL;
+ uint32_t pts_len = 0;
+
+ unsigned int i = 0, j = 0;
+
+ Evas_Vg_Path_Command *evas_cmds = NULL;
+ double *evas_pts = NULL;
+
+ shape = _get_tvg_shape(obj);
+
+ tvg_shape_get_path_commands(shape, &tvg_cmds, &cmds_len);
+ tvg_shape_get_path_coords(shape, &tvg_pts, &pts_len);
+
+ evas_cmds = (Evas_Vg_Path_Command*)malloc(sizeof(Evas_Vg_Path_Command) * (cmds_len + 1));
+
+ for (i = 0; i < cmds_len; ++i)
+ {
+ evas_cmds[i] = _get_evas_command(tvg_cmds[i]);
+ }
+
+ evas_cmds[cmds_len] = EVAS_VG_PATH_COMMAND_END;
+ *op = evas_cmds;
+
+ evas_pts = (double*)malloc(sizeof(double) * pts_len * 2);
+ i = 0;
+
+ for (i = 0; i < pts_len; ++i)
+ {
+ evas_pts[j] = tvg_pts[i].x;
+ evas_pts[j+1] = tvg_pts[i].y;
+ j += 2;
+ }
+ *points = evas_pts;
+#else
efl_gfx_path_get(obj, (const Efl_Gfx_Path_Command **)op, points);
+#endif
}
EAPI void