Logo Search packages:      
Sourcecode: inkscape version File versions  Download package

dots.py

#!/usr/bin/env python 
'''
Copyright (C) 2005 Aaron Spike, aaron@ekips.org

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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
'''
import inkex, simplestyle, simplepath

class Dots(inkex.Effect):
      def __init__(self):
            inkex.Effect.__init__(self)
            self.OptionParser.add_option("-d", "--dotsize",
                                    action="store", type="string", 
                                    dest="dotsize", default="10px",
                                    help="Size of the dots placed at path nodes")
            self.OptionParser.add_option("-f", "--fontsize",
                                    action="store", type="string", 
                                    dest="fontsize", default="20",
                                    help="Size of node label numbers")  
      def effect(self):
            for id, node in self.selected.iteritems():
                  if node.tagName == 'path':
                        self.group = self.document.createElement('svg:g')
                        node.parentNode.appendChild(self.group)
                        new = self.document.createElement('svg:path')
                        
                        try:
                              t = node.attributes.getNamedItem('transform').value
                              self.group.setAttribute('transform', t)
                        except AttributeError:
                              pass

                        s = simplestyle.parseStyle(node.attributes.getNamedItem('style').value)
                        s['stroke-linecap']='round'
                        s['stroke-width']=self.options.dotsize
                        new.setAttribute('style', simplestyle.formatStyle(s))

                        a =[]
                        p = simplepath.parsePath(node.attributes.getNamedItem('d').value)
                        num = 1
                        for cmd,params in p:
                              if cmd != 'Z':
                                    a.append(['M',params[-2:]])
                                    a.append(['L',params[-2:]])
                                    self.addText(self.group,params[-2],params[-1],num)
                                    num += 1
                        new.setAttribute('d', simplepath.formatPath(a))
                        self.group.appendChild(new)
                        node.parentNode.removeChild(node)

                        
      def addText(self,node,x,y,text):
                        new = self.document.createElement('svg:text')
                        s = {'font-size': self.options.fontsize, 'fill-opacity': '1.0', 'stroke': 'none',
                              'font-weight': 'normal', 'font-style': 'normal', 'fill': '#000000'}
                        new.setAttribute('style', simplestyle.formatStyle(s))
                        new.setAttribute('x', str(x))
                        new.setAttribute('y', str(y))
                        new.appendChild(self.document.createTextNode(str(text)))
                        node.appendChild(new)

e = Dots()
e.affect()

Generated by  Doxygen 1.6.0   Back to index