Code

Super duper mega (fun!) commit: replaced encoding=utf-8 with fileencoding=utf-8 in...
[inkscape.git] / share / extensions / radiusrand.py
index 5eb73965b2ef87b39b5308bf3167a26e688486bd..e272a50c42bdbfc305e29e7348689b4bc168c9ed 100755 (executable)
@@ -18,24 +18,28 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 '''
 import random, math, inkex, cubicsuperpath
 
-def randomize((x, y), r, norm):
+def randomize((x, y), rx, ry, norm):
     if norm:
-        r = abs(random.normalvariate(0.0,0.5*r))
+        r = abs(random.normalvariate(0.0,0.5*max(rx, ry)))
     else:
-        r = random.uniform(0.0,r)
+        r = random.uniform(0.0,max(rx, ry))
     a = random.uniform(0.0,2*math.pi)
-    x += math.cos(a)*r
-    y += math.sin(a)*r
+    x += math.cos(a)*rx
+    y += math.sin(a)*ry
     return [x, y]
 
 class RadiusRandomize(inkex.Effect):
     def __init__(self):
         inkex.Effect.__init__(self)
         self.OptionParser.add_option("--title")
-        self.OptionParser.add_option("-r", "--radius",
+        self.OptionParser.add_option("-x", "--radiusx",
                         action="store", type="float", 
-                        dest="radius", default=10.0,
-                        help="Randomly move control and end points in this radius")
+                        dest="radiusx", default=10.0,
+                        help="Randomly move nodes and handles within this radius, X")
+        self.OptionParser.add_option("-y", "--radiusy",
+                        action="store", type="float", 
+                        dest="radiusy", default=10.0,
+                        help="Randomly move nodes and handles within this radius, Y")
         self.OptionParser.add_option("-c", "--ctrl",
                         action="store", type="inkbool", 
                         dest="ctrl", default=True,
@@ -48,6 +52,11 @@ class RadiusRandomize(inkex.Effect):
                         action="store", type="inkbool", 
                         dest="norm", default=True,
                         help="Use normal distribution")
+        self.OptionParser.add_option("--tab",
+                        action="store", type="string",
+                        dest="tab",
+                        help="The selected UI-tab when OK was pressed")
+
     def effect(self):
         for id, node in self.selected.iteritems():
             if node.tag == inkex.addNS('path','svg'):
@@ -56,7 +65,7 @@ class RadiusRandomize(inkex.Effect):
                 for subpath in p:
                     for csp in subpath:
                         if self.options.end:
-                            delta=randomize([0,0], self.options.radius, self.options.norm)
+                            delta=randomize([0,0], self.options.radiusx, self.options.radiusy, self.options.norm)
                             csp[0][0]+=delta[0] 
                             csp[0][1]+=delta[1] 
                             csp[1][0]+=delta[0] 
@@ -64,10 +73,13 @@ class RadiusRandomize(inkex.Effect):
                             csp[2][0]+=delta[0] 
                             csp[2][1]+=delta[1] 
                         if self.options.ctrl:
-                            csp[0]=randomize(csp[0], self.options.radius, self.options.norm)
-                            csp[2]=randomize(csp[2], self.options.radius, self.options.norm)
+                            csp[0]=randomize(csp[0], self.options.radiusx, self.options.radiusy, self.options.norm)
+                            csp[2]=randomize(csp[2], self.options.radiusx, self.options.radiusy, self.options.norm)
                 node.set('d',cubicsuperpath.formatPath(p))
 
-e = RadiusRandomize()
-e.affect()
+if __name__ == '__main__':
+    e = RadiusRandomize()
+    e.affect()
+
 
+# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99