#!/usr/bin/env python # coding=utf-8 # # Copyright (C) 2005 Aaron Spike, aaron@ekips.org # Copyright (C) 2015 su_v, suv-sf@users.sf.net # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. import inkex from inkex import turtle as pturtle class TurtleRtree(inkex.GenerateExtension): """Create RTree Turtle path""" def add_arguments(self, pars): pars.add_argument( "--size", type=float, default=100.0, help="initial branch size" ) pars.add_argument( "--minimum", type=float, default=40.0, help="minimum branch size" ) pars.add_argument( "--pentoggle", type=inkex.Boolean, default=False, help="Lift pen for backward steps", ) def generate(self): self.options.size = self.svg.unittouu(str(self.options.size) + "px") self.options.minimum = self.svg.unittouu(str(self.options.minimum) + "px") point = self.svg.namedview.center style = inkex.Style( { "stroke-linejoin": "miter", "stroke-width": str(self.svg.unittouu("1px")), "stroke-opacity": "1.0", "fill-opacity": "1.0", "stroke": "#000000", "stroke-linecap": "butt", "fill": "none", } ) tur = pturtle.pTurtle() tur.pu() tur.setpos(point) tur.pd() tur.rtree(self.options.size, self.options.minimum, self.options.pentoggle) return inkex.PathElement(d=tur.getPath(), style=str(style)) if __name__ == "__main__": TurtleRtree().run()