summaryrefslogtreecommitdiffstats
path: root/share/extensions/hershey.py
diff options
context:
space:
mode:
authorMartin Owens <doctormo@gmail.com>2018-09-09 08:28:15 +0000
committerMartin Owens <doctormo@gmail.com>2018-09-09 08:28:15 +0000
commit36c73a704b281e616d779b1eac5430d7527a9338 (patch)
tree189c5defb29728d428f44e17903bde11b89540a1 /share/extensions/hershey.py
parentUpdate selection-chemistry.cpp (diff)
downloadinkscape-36c73a704b281e616d779b1eac5430d7527a9338.tar.gz
inkscape-36c73a704b281e616d779b1eac5430d7527a9338.zip
Move extensions to git inkscape-extensions repository
Diffstat (limited to 'share/extensions/hershey.py')
-rwxr-xr-xshare/extensions/hershey.py114
1 files changed, 0 insertions, 114 deletions
diff --git a/share/extensions/hershey.py b/share/extensions/hershey.py
deleted file mode 100755
index 471959b10..000000000
--- a/share/extensions/hershey.py
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-"""
-Hershey Text - renders a line of text using "Hershey" fonts for plotters
-
-Copyright 2011, Windell H. Oskay, www.evilmadscientist.com
-
-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 hersheydata #data file w/ Hershey font data
-import inkex
-import simplestyle
-from simpletransform import computePointInNode
-
-Debug = False
-
-def draw_svg_text(char, face, offset, vertoffset, parent):
- style = { 'stroke': '#000000', 'fill': 'none' }
- pathString = face[char]
- splitString = pathString.split()
- midpoint = offset - int(splitString[0])
- pathString = pathString[pathString.find("M"):] #portion after first move
- trans = 'translate(' + str(midpoint) + ',' + str(vertoffset) + ')'
- text_attribs = {'style':simplestyle.formatStyle(style), 'd':pathString, 'transform':trans}
- inkex.etree.SubElement(parent, inkex.addNS('path','svg'), text_attribs)
- return midpoint + int(splitString[1]) #new offset value
-
-
-class Hershey( inkex.Effect ):
- def __init__( self ):
- inkex.Effect.__init__( self )
- self.OptionParser.add_option( "--tab", #NOTE: value is not used.
- action="store", type="string",
- dest="tab", default="splash",
- help="The active tab when Apply was pressed" )
- self.OptionParser.add_option( "--text",
- action="store", type="string",
- dest="text", default="Hershey Text for Inkscape",
- help="The input text to render")
- self.OptionParser.add_option( "--action",
- action="store", type="string",
- dest="action", default="render",
- help="The active option when Apply was pressed" )
- self.OptionParser.add_option( "--fontface",
- action="store", type="string",
- dest="fontface", default="rowmans",
- help="The selected font face when Apply was pressed" )
-
- def effect( self ):
-
- # Embed text in group to make manipulation easier:
- g_attribs = {inkex.addNS('label','inkscape'):'Hershey Text' }
- g = inkex.etree.SubElement(self.current_layer, 'g', g_attribs)
-
- scale = self.unittouu('1px') # convert to document units
- font = eval('hersheydata.' + str(self.options.fontface))
- clearfont = hersheydata.futural
- #Baseline: modernized roman simplex from JHF distribution.
-
- w = 0 #Initial spacing offset
- spacing = 3 # spacing between letters
-
- if self.options.action == "render":
- #evaluate text string
- letterVals = [ord(q) - 32 for q in self.options.text]
- for q in letterVals:
- if (q < 0) or (q > 95):
- w += 2*spacing
- else:
- w = draw_svg_text(q, font, w, 0, g)
- else:
- #Generate glyph table
- wmax = 0;
- for p in range(0,10):
- w = 0
- v = spacing * (15*p - 67 )
- for q in range(0,10):
- r = p*10 + q
- if (r < 0) or (r > 95):
- w += 5*spacing
- else:
- w = draw_svg_text(r, clearfont, w, v, g)
- w = draw_svg_text(r, font, w, v, g)
- w += 5*spacing
- if w > wmax:
- wmax = w
- w = wmax
-
- # Translate group to center of view, approximately
- view_center = computePointInNode(list(self.view_center), self.current_layer)
- t = 'translate(' + str( view_center[0] - scale*w/2) + ',' + str( view_center[1] ) + ')'
- if scale != 1:
- t += ' scale(' + str(scale) + ')'
- g.set( 'transform',t)
-
-
-
-if __name__ == '__main__':
- e = Hershey()
- e.affect()
-
-# vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99