Code

scale the radius and sweep-flag in elliptical arc
authoralvinpenner <alvinpenner@users.sourceforge.net>
Sat, 7 Feb 2009 18:48:06 +0000 (18:48 +0000)
committeralvinpenner <alvinpenner@users.sourceforge.net>
Sat, 7 Feb 2009 18:48:06 +0000 (18:48 +0000)
share/extensions/simplepath.py

index 8d50429a6d9f49e44426901a55b7f60fe258c282..4cfedcac9fdc742eefb9a6f8579b5abf06470aee 100755 (executable)
@@ -68,7 +68,7 @@ pathdefs = {
     'S':['S', 4, [float, float, float, float], ['x','y','x','y']], 
     'Q':['Q', 4, [float, float, float, float], ['x','y','x','y']], 
     'T':['T', 2, [float, float], ['x','y']], 
-    'A':['A', 7, [float, float, float, int, int, float, float], [0,0,0,0,0,'x','y']], 
+    'A':['A', 7, [float, float, float, int, int, float, float], ['r','r',0,0,'s','x','y']], 
     'Z':['L', 0, [], []]
     }
 def parsePath(d):
@@ -184,6 +184,11 @@ def scalePath(p, x, y):
                 params[i] *= x
             elif defs[3][i] == 'y':
                 params[i] *= y
+            elif defs[3][i] == 'r':         # radius parameter
+                params[i] *= x
+            elif defs[3][i] == 's':         # sweep-flag parameter
+                if x*y < 0:
+                    params[i] = 1 - params[i]
 
 def rotatePath(p, a, cx = 0, cy = 0):
     if a == 0: