index 5eb73965b2ef87b39b5308bf3167a26e688486bd..e272a50c42bdbfc305e29e7348689b4bc168c9ed 100755 (executable)
'''
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,
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'):
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]
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