diff src/shape_path.c @ 99:4aa1c9673363

Arc in path pass the test in example svg2code_ex.
author Thinker K.F. Li <thinker@branda.to>
date Tue, 09 Sep 2008 22:17:17 +0800
parents 688f76b8e71c
children 1a1dda98730c
line wrap: on
line diff
--- a/src/shape_path.c	Tue Sep 09 18:11:37 2008 +0800
+++ b/src/shape_path.c	Tue Sep 09 22:17:17 2008 +0800
@@ -172,7 +172,7 @@
 	SKIP_NUM(p);
 	if(p == old)
 	    break;
-	TAKE_NUM(rx);
+	rx = atof(old);
 
 	TAKE_NUM(ry);
 	TAKE_NUM(x_rotate);
@@ -243,11 +243,11 @@
     sweep = *fix_args++;
 
     dx = x - cx;
-    dy = y = cy;
+    dy = y - cy;
     dx0 = x0 - cx;
     dy0 = y0 - cy;
     dxx = xx - cx;
-    dxy = xy = cy;
+    dxy = xy - cy;
 
     rx2 = dxx * dxx + dxy * dxy;
     rx = sqrtf(rx2);
@@ -264,15 +264,15 @@
     if(xyratio < 0)
 	xyratio = -xyratio;
 
-    angle0 = acos(inner / rx2);
+    angle0 = acos(inner0 / rx2);
     if(cross0 < 0)
-	angle0 += PI;		/* 3rd, 4th Quadrant */
+	angle0 = PI * 2 - angle0; /* 3rd, 4th Quadrant */
 
     inner = INNER(dx, dy, dxx, dxy);
     cross = CROSS(dx, dy, dxx, dxy);
     angle = acos(inner / rx2);
     if(cross < 0)
-	angle += PI;		/* 3rd, 4th Quadrant */
+	angle = PI * 2 - angle; /* 3rd, 4th Quadrant */
 
     /* Make a path for arc */
     rotate = acos(dxx / rx);