summaryrefslogtreecommitdiff
path: root/src/lib/efl/interfaces/efl_gfx_path.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/efl/interfaces/efl_gfx_path.c')
-rw-r--r--src/lib/efl/interfaces/efl_gfx_path.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/lib/efl/interfaces/efl_gfx_path.c b/src/lib/efl/interfaces/efl_gfx_path.c
index df476921f2..4c20fb45b2 100644
--- a/src/lib/efl/interfaces/efl_gfx_path.c
+++ b/src/lib/efl/interfaces/efl_gfx_path.c
@@ -1235,7 +1235,7 @@ _number_count(char cmd)
}
static void
-process_command(Eo *obj, Efl_Gfx_Path_Data *pd, char cmd, double *arr, int count, double *cur_x, double *cur_y)
+process_command(Eo *obj, Efl_Gfx_Path_Data *pd, char cmd, double *arr, int count, double *cur_x, double *cur_y, double *start_x, double *start_y)
{
int i;
switch (cmd)
@@ -1282,6 +1282,8 @@ process_command(Eo *obj, Efl_Gfx_Path_Data *pd, char cmd, double *arr, int count
_efl_gfx_path_append_move_to(obj, pd, arr[0], arr[1]);
*cur_x = arr[0];
*cur_y = arr[1];
+ *start_x = arr[0];
+ *start_y = arr[1];
break;
}
case 'l':
@@ -1342,6 +1344,8 @@ process_command(Eo *obj, Efl_Gfx_Path_Data *pd, char cmd, double *arr, int count
case 'Z':
{
_efl_gfx_path_append_close(obj, pd);
+ *cur_x = *start_x;
+ *cur_y = *start_y;
break;
}
case 'a':
@@ -1420,6 +1424,7 @@ _path_interpolation(Eo *obj, Efl_Gfx_Path_Data *pd,
double from_arr[7], to_arr[7];
int from_count=0, to_count=0;
double cur_x=0, cur_y=0;
+ double start_x=0, start_y=0;
char from_cmd= 0, to_cmd = 0;
char *cur_locale;
@@ -1458,7 +1463,7 @@ _path_interpolation(Eo *obj, Efl_Gfx_Path_Data *pd,
from_arr[i] = interpolate(from_arr[i], to_arr[i], pos);
}
}
- process_command(obj, pd, from_cmd, from_arr, from_count, &cur_x, &cur_y);
+ process_command(obj, pd, from_cmd, from_arr, from_count, &cur_x, &cur_y, &start_x, &start_y);
}
else
{
@@ -1479,6 +1484,7 @@ _efl_gfx_path_append_svg_path(Eo *obj, Efl_Gfx_Path_Data *pd,
double number_array[7];
int number_count = 0;
double cur_x=0, cur_y=0;
+ double start_x=0, start_y=0;
char cmd= 0;
char *path = (char *) svg_path_data;
Eina_Bool arc = EINA_FALSE;
@@ -1500,7 +1506,7 @@ _efl_gfx_path_append_svg_path(Eo *obj, Efl_Gfx_Path_Data *pd,
//printf("Error parsing command\n");
goto error;
}
- process_command(obj, pd, cmd, number_array, number_count, &cur_x, &cur_y);
+ process_command(obj, pd, cmd, number_array, number_count, &cur_x, &cur_y, &start_x, &start_y);
if ((!arc) && ((cmd == 'a') || (cmd == 'A') ||
(cmd == 'e') || (cmd == 'E')))
arc = EINA_TRUE;