Code

center the tree on the current layer
[inkscape.git] / share / extensions / rtree.py
index 8728ed7a37e413dc17b10c9eb930fa534af85b67..5d8ac9f3d6372f55ac8ff8a43cb00ae042297432 100755 (executable)
@@ -19,41 +19,44 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 import inkex, simplestyle, pturtle, random
 
 def rtree(turtle, size, min):
-       if size < min:
-               return
-       turtle.fd(size)
-       turn = random.uniform(20, 40)
-       turtle.lt(turn)
-       rtree(turtle, size*random.uniform(0.5,0.9), min)
-       turtle.rt(turn)
-       turn = random.uniform(20, 40)
-       turtle.rt(turn)
-       rtree(turtle, size*random.uniform(0.5,0.9), min)
-       turtle.lt(turn)
-       turtle.bk(size)
+    if size < min:
+        return
+    turtle.fd(size)
+    turn = random.uniform(20, 40)
+    turtle.lt(turn)
+    rtree(turtle, size*random.uniform(0.5,0.9), min)
+    turtle.rt(turn)
+    turn = random.uniform(20, 40)
+    turtle.rt(turn)
+    rtree(turtle, size*random.uniform(0.5,0.9), min)
+    turtle.lt(turn)
+    turtle.bk(size)
 
 class RTreeTurtle(inkex.Effect):
-       def __init__(self):
-               inkex.Effect.__init__(self)
-               self.OptionParser.add_option("-s", "--size",
-                                               action="store", type="float", 
-                                               dest="size", default=100.0,
-                                               help="initial branch size")
-               self.OptionParser.add_option("-m", "--minimum",
-                                               action="store", type="float", 
-                                               dest="minimum", default=4.0,
-                                               help="minimum branch size")
-       def effect(self):
-               new = self.document.createElement('svg:path')
-               s = {'stroke-linejoin': 'miter', 'stroke-width': '1.0px', 
-                       'stroke-opacity': '1.0', 'fill-opacity': '1.0', 
-                       'stroke': '#000000', 'stroke-linecap': 'butt', 
-                       'fill': 'none'}
-               new.setAttribute('style', simplestyle.formatStyle(s))
-               t = pturtle.pTurtle()
-               rtree(t, self.options.size, self.options.minimum)
-               new.setAttribute('d', t.getPath())
-               self.document.documentElement.appendChild(new)
+    def __init__(self):
+        inkex.Effect.__init__(self)
+        self.OptionParser.add_option("-s", "--size",
+                        action="store", type="float", 
+                        dest="size", default=100.0,
+                        help="initial branch size")
+        self.OptionParser.add_option("-m", "--minimum",
+                        action="store", type="float", 
+                        dest="minimum", default=4.0,
+                        help="minimum branch size")
+    def effect(self):
+        new = self.document.createElement('svg:path')
+        s = {'stroke-linejoin': 'miter', 'stroke-width': '1.0px', 
+            'stroke-opacity': '1.0', 'fill-opacity': '1.0', 
+            'stroke': '#000000', 'stroke-linecap': 'butt', 
+            'fill': 'none'}
+        new.setAttribute('style', simplestyle.formatStyle(s))
+        t = pturtle.pTurtle()
+        t.pu()
+        t.setpos(self.view_center)
+        t.pd()
+        rtree(t, self.options.size, self.options.minimum)
+        new.setAttribute('d', t.getPath())
+        self.current_layer.appendChild(new)
 
 e = RTreeTurtle()
 e.affect()