=== modified file 'share/extensions/measure.inx'
--- share/extensions/measure.inx 2014-04-02 19:22:44 +0000
+++ share/extensions/measure.inx 2015-05-31 12:16:23 +0000
@@ -11,11 +11,29 @@
<_item msgctxt="measure extension" value="area">Area
<_item msgctxt="measure extension" value="cofm">Center of Mass
-
- <_item msgctxt="measure extension" value="textonpath">Text On Path
- <_item msgctxt="measure extension" value="angle">Fixed Angle
+
+
+
+ <_item value="0%">Start
+ <_item value="50%">Middle
+ <_item value="100%">End
+ <_item value="custom">Custom
+
+ 50
+
+ <_item value="start">Left
+ <_item value="middle">Center
+ <_item value="end">Right
+
+
+
+
+ <_item value="start">Start of path
+ <_item value="center">Center of geom bbox
+
+ 0
+
- 0
12
-6
2
=== modified file 'share/extensions/measure.py'
--- share/extensions/measure.py 2015-05-28 10:59:37 +0000
+++ share/extensions/measure.py 2015-05-31 12:16:23 +0000
@@ -137,6 +137,22 @@
action="store", type="string",
dest="format", default="textonpath",
help="Text Orientation")
+ self.OptionParser.add_option("--startOffset",
+ action="store", type="string",
+ dest="startOffset", default="0%",
+ help="Text Offset along Path")
+ self.OptionParser.add_option("--startOffsetCustom",
+ action="store", type="int",
+ dest="startOffsetCustom", default=50,
+ help="Text Offset along Path")
+ self.OptionParser.add_option("--anchor",
+ action="store", type="string",
+ dest="anchor", default="start",
+ help="Text Anchor")
+ self.OptionParser.add_option("--position",
+ action="store", type="string",
+ dest="position", default="start",
+ help="Text Position")
self.OptionParser.add_option("--angle",
action="store", type="float",
dest="angle", default=0,
@@ -199,7 +215,7 @@
slengths, stotal = csplength(p)
self.group = inkex.etree.SubElement(node.getparent(),inkex.addNS('text','svg'))
elif self.options.type == "area":
- stotal = csparea(p)*factor*self.options.scale
+ stotal = abs(csparea(p)*factor*self.options.scale)
self.group = inkex.etree.SubElement(node.getparent(),inkex.addNS('text','svg'))
else:
xc, yc = cspcofm(p)
@@ -209,16 +225,28 @@
continue
# Format the length as string
lenstr = locale.format("%(len)25."+str(prec)+"f",{'len':round(stotal*factor*self.options.scale,prec)}).strip()
- if self.options.format == 'textonpath':
+ if self.options.format == '"textonpath"':
+ startOffset = self.options.startOffset
+ if startOffset == "custom":
+ startOffset = '{}%'.format(self.options.startOffsetCustom)
if self.options.type == "length":
- self.addTextOnPath(self.group, 0, 0, lenstr+' '+self.options.unit, id, 'start', '50%', self.options.offset)
+ self.addTextOnPath(self.group, 0, 0, lenstr+' '+self.options.unit, id, self.options.anchor, startOffset, self.options.offset)
else:
- self.addTextOnPath(self.group, 0, 0, lenstr+' '+self.options.unit+'^2', id, 'start', '0%', self.options.offset)
+ self.addTextOnPath(self.group, 0, 0, lenstr+' '+self.options.unit+'^2', id, self.options.anchor, startOffset, self.options.offset)
else:
+ if self.options.position == "start":
+ tx = p[0][0][1][0]
+ ty = p[0][0][1][1]
+ anchor = 'start'
+ else:
+ bbox = simpletransform.computeBBox([node])
+ tx = bbox[0] + (bbox[1] - bbox[0])/2.0
+ ty = bbox[2] + (bbox[3] - bbox[2])/2.0
+ anchor = 'middle'
if self.options.type == "length":
- self.addTextWithTspan(self.group, p[0][0][1][0], p[0][0][1][1], lenstr+' '+self.options.unit, id, 'start', -int(self.options.angle), self.options.offset + self.options.fontsize/2)
+ self.addTextWithTspan(self.group, tx, ty, lenstr+' '+self.options.unit, id, anchor, -int(self.options.angle), self.options.offset + self.options.fontsize/2)
else:
- self.addTextWithTspan(self.group, p[0][0][1][0], p[0][0][1][1], lenstr+' '+self.options.unit+'^2', id, 'start', -int(self.options.angle), -self.options.offset + self.options.fontsize/2)
+ self.addTextWithTspan(self.group, tx, ty, lenstr+' '+self.options.unit+'^2', id, anchor, -int(self.options.angle), -self.options.offset + self.options.fontsize/2)
def addCross(self, node, x, y, scale):
l = 3*scale # 3 pixels in document units