diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2015-02-02 20:08:49 +0000 |
|---|---|---|
| committer | Jabiertxof <jtx@jtx.marker.es> | 2015-02-02 20:08:49 +0000 |
| commit | 1d3b98e5f5311479cd87f20e3656b0133bff73bd (patch) | |
| tree | 95eea2fcac18f236b31053e4d1493aa644760df0 /share/extensions | |
| parent | update to trunk (diff) | |
| parent | Translations. Arabic translation update. (diff) | |
| download | inkscape-1d3b98e5f5311479cd87f20e3656b0133bff73bd.tar.gz inkscape-1d3b98e5f5311479cd87f20e3656b0133bff73bd.zip | |
update to trunk
(bzr r13645.1.4)
Diffstat (limited to 'share/extensions')
27 files changed, 192 insertions, 152 deletions
diff --git a/share/extensions/Makefile.am b/share/extensions/Makefile.am index d9d56a362..130ed6e40 100644 --- a/share/extensions/Makefile.am +++ b/share/extensions/Makefile.am @@ -13,7 +13,11 @@ otherstuffdir = $(datadir)/inkscape/extensions moduledir = $(datadir)/inkscape/extensions -extension_SCRIPTS = $(wildcard $(srcdir)/*.py) +extension_SCRIPTS = \ + $(wildcard $(srcdir)/*.py) \ + $(wildcard $(srcdir)/*.pl) \ + $(wildcard $(srcdir)/*.sh) \ + $(wildcard $(srcdir)/*.rb) otherstuff_DATA = \ fontfix.conf \ diff --git a/share/extensions/dimension.inx b/share/extensions/dimension.inx index 343ad27bf..d89e5afa4 100644 --- a/share/extensions/dimension.inx +++ b/share/extensions/dimension.inx @@ -7,7 +7,7 @@ <dependency type="executable" location="extensions">pathmodifier.py</dependency> <param name="xoffset" type="float" min="0" max="1000" _gui-text="X Offset:">50</param> <param name="yoffset" type="float" min="0" max="1000" _gui-text="Y Offset:">50</param> - <param name="type" type="enum" _gui-text="Bounding box type :"> + <param name="type" type="enum" _gui-text="Bounding box type:"> <_item value="geometric">Geometric</_item> <_item value="visual">Visual</_item> </param> diff --git a/share/extensions/dxf_input.inx b/share/extensions/dxf_input.inx index 0ba38252a..4488774a3 100644 --- a/share/extensions/dxf_input.inx +++ b/share/extensions/dxf_input.inx @@ -6,8 +6,12 @@ <dependency type="executable" location="extensions">inkex.py</dependency> <param name="tab" type="notebook"> <page name="options" _gui-text="Options"> - <param name="auto" type="boolean" _gui-text="Use automatic scaling to size A4">true</param> - <param name="scale" type="string" _gui-text="Or, use manual scale factor:">1.0</param> + <param name="scalemethod" type="optiongroup" _gui-text="Method of Scaling:"> + <option value="manual">Manual scale</option> + <option value="auto">Automatic scaling to size A4</option> + <option value="file">Read from file</option> + </param> + <param name="scale" type="string" _gui-text="Manual scale factor:">1.0</param> <param name="xmin" type="string" _gui-text="Manual x-axis origin (mm):">0.0</param> <param name="ymin" type="string" _gui-text="Manual y-axis origin (mm):">0.0</param> <param name="gcodetoolspoints" type="boolean" _gui-text="Gcodetools compatible point import">false</param> @@ -22,9 +26,11 @@ </page> <page name="help" _gui-text="Help"> <_param name="inputhelp" type="description" xml:space="preserve">- AutoCAD Release 13 and newer. -- assume dxf drawing is in mm. -- assume svg drawing is in pixels, at 90 dpi. +- for manual scaling, assume dxf drawing is in mm. +- assume svg drawing is in pixels, at 96 dpi. - scale factor and origin apply only to manual scaling. +- 'Automatic scaling' will fit the width of an A4 page. +- 'Read from file' uses the variable $MEASUREMENT. - layers are preserved only on File->Open, not Import. - limited support for BLOCKS, use AutoCAD Explode Blocks instead, if needed.</_param> </page> diff --git a/share/extensions/dxf_input.py b/share/extensions/dxf_input.py index 7ca176c92..f0a1296f1 100755 --- a/share/extensions/dxf_input.py +++ b/share/extensions/dxf_input.py @@ -344,7 +344,7 @@ colors = { 1: '#FF0000', 2: '#FFFF00', 3: '#00FF00', 4: '#00FFFF', 5: ' 250: '#333333', 251: '#505050', 252: '#696969', 253: '#828282', 254: '#BEBEBE', 255: '#FFFFFF'} parser = inkex.optparse.OptionParser(usage="usage: %prog [options] SVGfile", option_class=inkex.InkOption) -parser.add_option("--auto", action="store", type="inkbool", dest="auto", default=True) +parser.add_option("--scalemethod", action="store", type="string", dest="scalemethod", default="manual") parser.add_option("--scale", action="store", type="string", dest="scale", default="1.0") parser.add_option("--xmin", action="store", type="string", dest="xmin", default="0.0") parser.add_option("--ymin", action="store", type="string", dest="ymin", default="0.0") @@ -354,7 +354,7 @@ parser.add_option("--font", action="store", type="string", dest="font", default= parser.add_option("--tab", action="store", type="string", dest="tab", default="Options") parser.add_option("--inputhelp", action="store", type="string", dest="inputhelp", default="") (options, args) = parser.parse_args(inkex.sys.argv[1:]) -doc = inkex.etree.parse(StringIO('<svg xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" width="%s" height="%s"></svg>' % (210*90/25.4, 297*90/25.4))) +doc = inkex.etree.parse(StringIO('<svg xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" width="%s" height="%s"></svg>' % (210*96/25.4, 297*96/25.4))) desc = inkex.etree.SubElement(doc.getroot(), 'desc', {}) defs = inkex.etree.SubElement(doc.getroot(), 'defs', {}) marker = inkex.etree.SubElement(defs, 'marker', {'id': 'DistanceX', 'orient': 'auto', 'refX': '0.0', 'refY': '0.0', 'style': 'overflow:visible'}) @@ -365,7 +365,8 @@ inkex.etree.SubElement(pattern, 'path', {'d': 'M6 2 l-4,4', 'stroke': '#000000', inkex.etree.SubElement(pattern, 'path', {'d': 'M4 0 l-4,4', 'stroke': '#000000', 'stroke-width': '0.25', 'linecap': 'square'}) stream = open(args[0], 'r') xmax = xmin = ymin = 0.0 -height = 297.0*90.0/25.4 # default A4 height in pixels +height = 297.0*96.0/25.4 # default A4 height in pixels +measurement = 0 # default inches line = get_line() polylines = 0 flag = 0 # (0, 1, 2, 3) = (none, LAYER, LTYPE, DIMTXT) @@ -376,7 +377,10 @@ DIMTXT = {} # store DIMENSION text sizes while line[0] and line[1] != 'BLOCKS': line = get_line() - if options.auto: + if options.scalemethod == 'file': + if line[1] == '$MEASUREMENT': + measurement = get_group('70') + elif options.scalemethod == 'auto': if line[1] == '$EXTMIN': xmin = get_group('10') ymin = get_group('20') @@ -406,7 +410,11 @@ while line[0] and line[1] != 'BLOCKS': if line[0] == '0' and line[1] == 'ENDTAB': flag = 0 -if options.auto: +if options.scalemethod == 'file': + scale = 25.4 # default inches + if measurement == 1.0: + scale = 1.0 # use mm +elif options.scalemethod == 'auto': scale = 1.0 if xmax > xmin: scale = 210.0/(xmax - xmin) # scale to A4 width @@ -414,8 +422,8 @@ else: scale = float(options.scale) # manual scale factor xmin = float(options.xmin) ymin = float(options.ymin) -desc.text = '%s - scale = %f, origin = (%f, %f), auto = %s' % (unicode(args[0], options.input_encode), scale, xmin, ymin, options.auto) -scale *= 90.0/25.4 # convert from mm to pixels +desc.text = '%s - scale = %f, origin = (%f, %f), method = %s' % (unicode(args[0], options.input_encode), scale, xmin, ymin, options.scalemethod) +scale *= 96.0/25.4 # convert from mm to pixels if not layer_nodes.has_key('0'): attribs = {inkex.addNS('groupmode','inkscape'): 'layer', inkex.addNS('label','inkscape'): '0'} @@ -487,7 +495,7 @@ while line[0] and (line[1] != 'ENDSEC' or not inENTITIES): w = 0.5 # default lineweight for POINT if vals[groups['370']]: # Common Lineweight if vals[groups['370']][0] > 0: - w = 90.0/25.4*vals[groups['370']][0]/100.0 + w = 96.0/25.4*vals[groups['370']][0]/100.0 if w < 0.5: w = 0.5 style = simplestyle.formatStyle({'stroke': '%s' % color, 'fill': 'none', 'stroke-width': '%.1f' % w}) diff --git a/share/extensions/dxf_outlines.inx b/share/extensions/dxf_outlines.inx index ad3aef17f..3b90afcc8 100644 --- a/share/extensions/dxf_outlines.inx +++ b/share/extensions/dxf_outlines.inx @@ -9,32 +9,32 @@ <page name="options" _gui-text="Options"> <param name="ROBO" type="boolean" _gui-text="use ROBO-Master type of spline output">false</param> <param name="POLY" type="boolean" _gui-text="use LWPOLYLINE type of line output">true</param> - <param name="units" type="enum" _gui-text="Base unit"> - <_item value="72./90">pt</_item> - <_item value="1./15">pc</_item> + <param name="units" type="enum" _gui-text="Base unit:"> + <_item value="72./96">pt</_item> + <_item value="1./16">pc</_item> <_item value="1.">px</_item> - <_item value="25.4/90">mm</_item> - <_item value="2.54/90">cm</_item> - <_item value=".0254/90">m</_item> - <_item value="1./90">in</_item> - <_item value="1./1080">ft</_item> + <_item value="25.4/96">mm</_item> + <_item value="2.54/96">cm</_item> + <_item value=".0254/96">m</_item> + <_item value="1./96">in</_item> + <_item value="1./1152">ft</_item> </param> - <param name="encoding" type="enum" _gui-text="Character Encoding"> + <param name="encoding" type="enum" _gui-text="Character Encoding:"> <_item value="latin_1">Latin 1</_item> <_item value="cp1250">CP 1250</_item> <_item value="cp1252">CP 1252</_item> <_item value="utf_8">UTF 8</_item> </param> - <param name="layer_option" type="enum" _gui-text="Layer export selection"> + <param name="layer_option" type="enum" _gui-text="Layer export selection:"> <_item value="all">All (default)</_item> <_item value="visible">Visible only</_item> <_item value="name">By name match</_item> </param> - <param name="layer_name" type="string" _gui-text="Layer match name"></param> + <param name="layer_name" type="string" _gui-text="Layer match name:"></param> </page> <page name="help" _gui-text="Help"> <_param name="inputhelp" type="description" xml:space="preserve">- AutoCAD Release 14 DXF format. -- The base unit parameter specifies in what unit the coordinates are output (90 px = 1 in). +- The base unit parameter specifies in what unit the coordinates are output (96 px = 1 in). - Supported element types - paths (lines and splines) - rectangles diff --git a/share/extensions/dxf_outlines.py b/share/extensions/dxf_outlines.py index f5cf37aff..f7e57c32e 100755 --- a/share/extensions/dxf_outlines.py +++ b/share/extensions/dxf_outlines.py @@ -76,7 +76,7 @@ class MyEffect(inkex.Effect): default=True) self.OptionParser.add_option("--units", action="store", type="string", dest="units", - default="72./90") # Points + default="72./96") # Points self.OptionParser.add_option("--encoding", action="store", type="string", dest="char_encode", default="latin_1") @@ -324,7 +324,7 @@ class MyEffect(inkex.Effect): scale = eval(self.options.units) if not scale: - scale = 25.4/90 # if no scale is specified, assume inch as baseunit + scale = 25.4/96 # if no scale is specified, assume inch as baseunit h = self.unittouu(self.document.getroot().xpath('@height', namespaces=inkex.NSS)[0]) self.groupmat = [[[scale, 0.0, 0.0], [0.0, -scale, h*scale]]] doc = self.document.getroot() diff --git a/share/extensions/gimp_xcf.inx b/share/extensions/gimp_xcf.inx index 10bcef627..30406b62d 100644 --- a/share/extensions/gimp_xcf.inx +++ b/share/extensions/gimp_xcf.inx @@ -11,7 +11,7 @@ <param name="guides" type="boolean" _gui-text="Save Guides">false</param> <param name="grid" type="boolean" _gui-text="Save Grid">false</param> <param name="background" type="boolean" _gui-text="Save Background">false</param> - <param name="dpi" type="int" min="1" max="3000" _gui-text="File Resolution:">90</param> + <param name="dpi" type="int" min="1" max="3000" _gui-text="File Resolution:">96</param> </page> <page name="Help" _gui-text="Help"> <_param name="instructions" type="description" xml:space="preserve">This extension exports the document to Gimp XCF format according to the following options: diff --git a/share/extensions/gimp_xcf.py b/share/extensions/gimp_xcf.py index c2a8cb274..11c9d041f 100755 --- a/share/extensions/gimp_xcf.py +++ b/share/extensions/gimp_xcf.py @@ -63,7 +63,7 @@ class MyEffect(inkex.Effect): help="Add background color to each layer") self.OptionParser.add_option("-i", "--dpi", action="store", type="string", - dest="resolution", default="90", + dest="resolution", default="96", help="File resolution") def output(self): diff --git a/share/extensions/hpgl_decoder.py b/share/extensions/hpgl_decoder.py index e909790b7..cd900202b 100644 --- a/share/extensions/hpgl_decoder.py +++ b/share/extensions/hpgl_decoder.py @@ -41,84 +41,63 @@ class hpglDecoder: self.scaleY = options.resolutionY / 25.4 # dots/inch to dots/mm self.warning = '' self.textMovements = _("Movements") - self.textPenNumber = _("Pen #") + self.textPenNumber = _("Pen ") + self.layers = {} + self.oldCoordinates = (0.0, self.options.docHeight) def getSvg(self): + actualLayer = 0 # prepare document - self.doc = inkex.etree.parse(StringIO('<svg xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="%smm" height="%smm" viewBox="0 0 %s %s"></svg>' % + self.doc = inkex.etree.parse(StringIO('<svg xmlns:sodipodi="' + inkex.NSS['sodipodi'] + '" xmlns:inkscape="' + inkex.NSS['inkscape'] + '" width="%smm" height="%smm" viewBox="0 0 %s %s"></svg>' % (self.options.docWidth, self.options.docHeight, self.options.docWidth, self.options.docHeight))) inkex.etree.SubElement(self.doc.getroot(), inkex.addNS('namedview', 'sodipodi'), {inkex.addNS('document-units', 'inkscape'): 'mm'}) - actualLayer = 0 - self.layers = {} if self.options.showMovements: self.layers[0] = inkex.etree.SubElement(self.doc.getroot(), 'g', {inkex.addNS('groupmode', 'inkscape'): 'layer', inkex.addNS('label', 'inkscape'): self.textMovements, 'id': self.textMovements}) - # parse paths + # cut stream into commands hpglData = self.hpglString.split(';') + # if number of commands is under needed minimum, no data was found if len(hpglData) < 3: raise Exception('NO_HPGL_DATA') - oldCoordinates = (0.0, self.options.docHeight) - path = '' + # decode commands into svg data for i, command in enumerate(hpglData): if command.strip() != '': if command[:2] == 'IN' or command[:2] == 'FS' or command[:2] == 'VS': - # if Initialize, force or speed command, ignore + # if Initialize, force or speed command ignore it pass elif command[:2] == 'SP': # if Select Pen command - actualLayer = command[2:] - self.createLayer(actualLayer) + actualLayer = int(command[2:]) elif command[:2] == 'PU': # if Pen Up command - if ' L ' in path: - self.addPathToLayer(path, actualLayer) - if self.options.showMovements and oldCoordinates != self.getParameters(command[2:]): - path = 'M %f,%f' % oldCoordinates - path += ' L %f,%f' % self.getParameters(command[2:]) - self.addPathToLayer(path, 0) - path = 'M %f,%f' % self.getParameters(command[2:]) - oldCoordinates = self.getParameters(command[2:]) + self.parametersToPath(command[2:], 0, True) elif command[:2] == 'PD': # if Pen Down command - parameterString = command[2:] - if parameterString.strip() != '': - parameterString = parameterString.replace(';', '').strip() - parameter = parameterString.split(',') - for i, param in enumerate(parameter): - if i % 2 == 0: - parameter[i] = str(float(param) / self.scaleX) - else: - parameter[i] = str(self.options.docHeight - (float(param) / self.scaleY)) - parameterString = ','.join(parameter) - path += ' L %s' % parameterString - oldCoordinates = (float(parameter[-2]), float(parameter[-1])) + self.parametersToPath(command[2:], actualLayer + 1, False) else: self.warning = 'UNKNOWN_COMMANDS' - if ' L ' in path: - self.addPathToLayer(path, actualLayer) return (self.doc, self.warning) - def createLayer(self, layerNumber): - try: - self.layers[layerNumber] - except KeyError: - self.layers[layerNumber] = inkex.etree.SubElement(self.doc.getroot(), 'g', - {inkex.addNS('groupmode', 'inkscape'): 'layer', inkex.addNS('label', 'inkscape'): self.textPenNumber + layerNumber, 'id': self.textPenNumber + layerNumber}) - - def addPathToLayer(self, path, layerNumber): - lineColor = '000000' - if layerNumber == 0: - lineColor = 'ff0000' - inkex.etree.SubElement(self.layers[layerNumber], 'path', {'d': path, 'style': 'stroke:#' + lineColor + '; stroke-width:0.4; fill:none;'}) + def parametersToPath(self, parameters, layerNum, isPU): + # split params and sanity check them + parameters = parameters.strip().split(',') + if len(parameters) > 0 and len(parameters) % 2 == 0: + for i, param in enumerate(parameters): + # convert params to document units + if i % 2 == 0: + parameters[i] = str(float(param) / self.scaleX) + else: + parameters[i] = str(self.options.docHeight - (float(param) / self.scaleY)) + # create path and add it to the corresponding layer + if not isPU or (self.options.showMovements and isPU): + # create layer if it does not exist + try: + self.layers[layerNum] + except KeyError: + self.layers[layerNum] = inkex.etree.SubElement(self.doc.getroot(), 'g', + {inkex.addNS('groupmode', 'inkscape'): 'layer', inkex.addNS('label', 'inkscape'): self.textPenNumber + str(layerNum - 1), 'id': self.textPenNumber + str(layerNum - 1)}) + path = 'M %f,%f L %s' % (self.oldCoordinates[0], self.oldCoordinates[1], ','.join(parameters)) + inkex.etree.SubElement(self.layers[layerNum], 'path', {'d': path, 'style': 'stroke:#' + ('ff0000' if isPU else '000000') + '; stroke-width:0.2; fill:none;'}) + self.oldCoordinates = (float(parameters[-2]), float(parameters[-1])) - def getParameters(self, parameterString): - # process coordinates - if parameterString.strip() == '': - parameterString = '0,0;' - # remove command delimiter - parameterString = parameterString.replace(';', '').strip() - # split parameter - parameter = parameterString.split(',') - # convert to svg coordinate system and return - return (float(parameter[0]) / self.scaleX, self.options.docHeight - (float(parameter[1]) / self.scaleY)) # vim: expandtab shiftwidth=4 tabstop=8 softtabstop=4 fileencoding=utf-8 textwidth=99
\ No newline at end of file diff --git a/share/extensions/inkex.py b/share/extensions/inkex.py index 0f880005d..19e860b9a 100755 --- a/share/extensions/inkex.py +++ b/share/extensions/inkex.py @@ -101,6 +101,13 @@ def errormsg(msg): else: sys.stderr.write((unicode(msg, "utf-8", errors='replace') + "\n").encode("UTF-8")) +def are_near_relative(a, b, eps): + if (a-b <= a*eps) and (a-b >= -a*eps): + return True + else: + return False + + # third party library try: from lxml import etree @@ -277,16 +284,57 @@ class Effect: retval = None return retval - def getDocumentUnit(self): - docunit = self.document.xpath('//sodipodi:namedview/@inkscape:document-units', namespaces=NSS) - if docunit: - return docunit[0] - else: - return 'px' - #a dictionary of unit to user unit conversion factors __uuconv = {'in':96.0, 'pt':1.33333333333, 'px':1.0, 'mm':3.77952755913, 'cm':37.7952755913, 'm':3779.52755913, 'km':3779527.55913, 'pc':16.0, 'yd':3456.0 , 'ft':1152.0} + + # Function returns the unit used for the values in SVG. + # For lack of an attribute in SVG that explicitly defines what units are used for SVG coordinates, + # try to calculate the unit from the SVG width and SVG viewbox. + # Defaults to 'px' units. + def getDocumentUnit(self): + svgunit = 'px' #default to pixels + + svgwidth = self.document.getroot().get('width') + viewboxstr = self.document.getroot().get('viewBox') + if viewboxstr: + unitmatch = re.compile('(%s)$' % '|'.join(self.__uuconv.keys())) + param = re.compile(r'(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)') + + p = param.match(svgwidth) + u = unitmatch.search(svgwidth) + + width = 100 #default + viewboxwidth = 100 #default + svgwidthunit = 'px' #default assume 'px' unit + if p: + width = float(p.string[p.start():p.end()]) + else: + errormsg(_("SVG Width not set correctly! Assuming width = 100")) + if u: + svgwidthunit = u.string[u.start():u.end()] + + viewboxnumbers = [] + for t in viewboxstr.split(): + try: + viewboxnumbers.append(float(t)) + except ValueError: + pass + if len(viewboxnumbers) == 4: #check for correct number of numbers + viewboxwidth = viewboxnumbers[2] + + svgunitfactor = self.__uuconv[svgwidthunit] * width / viewboxwidth + + # try to find the svgunitfactor in the list of units known. If we don't find something, ... + eps = 0.01 #allow 1% error in factor + for key in self.__uuconv: + if are_near_relative(self.__uuconv[key], svgunitfactor, eps): + #found match! + svgunit = key; + + return svgunit + + def unittouu(self, string): '''Returns userunits given a string representation of units in another system''' unit = re.compile('(%s)$' % '|'.join(self.__uuconv.keys())) diff --git a/share/extensions/inkscape_help_keys.inx b/share/extensions/inkscape_help_keys.inx index 9608ac7b9..612524517 100644 --- a/share/extensions/inkscape_help_keys.inx +++ b/share/extensions/inkscape_help_keys.inx @@ -4,7 +4,7 @@ <id>org.inkscape.help.keys</id>
<dependency type="executable" location="extensions">launch_webbrowser.py</dependency>
<!-- i18n. Please don't translate it unless a page exists in your language -->
- <_param name="url" gui-hidden="true" type="string">http://inkscape.org/doc/keys048.html</_param>
+ <_param name="url" gui-hidden="true" type="string">http://inkscape.org/doc/keys091.html</_param>
<effect needs-document="false">
<object-type>all</object-type>
<effects-menu hidden="true" />
diff --git a/share/extensions/jessyInk.js b/share/extensions/jessyInk.js index 78b4bf896..74e9c0b9c 100755 --- a/share/extensions/jessyInk.js +++ b/share/extensions/jessyInk.js @@ -1419,18 +1419,7 @@ function slideUpdateExportLayer() } // Serialise the new document. - var serializer = new XMLSerializer(); - var strm = - { - content : "", - close : function() {}, - flush : function() {}, - write : function(str, count) { this.content += str; } - }; - - var xml = serializer.serializeToStream(newDoc, strm, 'UTF-8'); - - window.location = 'data:application/svg+xml;base64;charset=utf-8,' + window.btoa(strm.content); + window.location = 'data:application/svg+xml;base64;charset=utf-8,' + window.btoa(unescape(encodeURIComponent((new XMLSerializer()).serializeToString(newDoc)))); // Unsuspend redraw. ROOT_NODE.unsuspendRedraw(suspendHandle); diff --git a/share/extensions/layout_nup.inx b/share/extensions/layout_nup.inx index bdf650722..2b7734fc3 100644 --- a/share/extensions/layout_nup.inx +++ b/share/extensions/layout_nup.inx @@ -15,8 +15,8 @@ <item value="cm">cm</item> <item value="mm">mm</item> </param> - <param name="pgSizeX" type="float" min="0.0" max="9999.0" _gui-text="Size X:">765</param> - <param name="pgSizeY" type="float" min="0.0" max="9999.0" _gui-text="Size Y:">990</param> + <param name="pgSizeX" type="float" min="0.0" max="9999.0" _gui-text="Size X:">816</param> + <param name="pgSizeY" type="float" min="0.0" max="9999.0" _gui-text="Size Y:">1056</param> <_param name="pgMargin" type="description" appearance="header">Page margins</_param> <param name="pgMarginTop" type="float" indent="1" min="0.0" max="9999.0" _gui-text="Top:">0</param> <param name="pgMarginBottom" type="float" indent="1" min="0.0" max="9999.0" _gui-text="Bottom:">0</param> diff --git a/share/extensions/layout_nup_pageframe.py b/share/extensions/layout_nup_pageframe.py index 59da1f4bb..471a75dd3 100755 --- a/share/extensions/layout_nup_pageframe.py +++ b/share/extensions/layout_nup_pageframe.py @@ -38,7 +38,7 @@ def expandTuple(unit, x, length = 4): #@-node:tbrown.20070622103716.1:expandTuple #@+node:tbrown.20070622103716.2:GenerateNup def GenerateNup(unit="px", - pgSize=("8.5*90","11*90"), + pgSize=("8.5*96","11*96"), pgMargin=(0,0), pgPadding=(0,0), num=(2,2), diff --git a/share/extensions/measure.py b/share/extensions/measure.py index edcd2e92f..cdccb6bb8 100755 --- a/share/extensions/measure.py +++ b/share/extensions/measure.py @@ -183,9 +183,10 @@ class Length(inkex.Effect): doc = self.document.getroot() if doc.get('viewBox'): [viewx, viewy, vieww, viewh] = doc.get('viewBox').split(' ') - factor = float(doc.get('width'))/float(vieww) - if float(doc.get('height'))/float(viewh) < factor: - factor = float(doc.get('height'))/float(viewh) + factor = self.unittouu(doc.get('width'))/float(vieww) + if self.unittouu(doc.get('height'))/float(viewh) < factor: + factor = self.unittouu(doc.get('height'))/float(viewh) + factor /= self.unittouu('1px') self.options.fontsize /= factor # loop over all selected paths for id, node in self.selected.iteritems(): diff --git a/share/extensions/perfectboundcover.py b/share/extensions/perfectboundcover.py index 6cdab7eab..9f81dbb36 100755 --- a/share/extensions/perfectboundcover.py +++ b/share/extensions/perfectboundcover.py @@ -135,7 +135,7 @@ class PerfectBoundCover(inkex.Effect): for guide in guides: newguide = inkex.etree.Element(inkex.addNS('guide','sodipodi')) newguide.set("orientation", guide[0]) - newguide.set("position", "%f" % (guide[1] * 90)) + newguide.set("position", "%f" % (guide[1] * 96)) namedview[0].append(newguide) ''' diff --git a/share/extensions/plotter.inx b/share/extensions/plotter.inx index 80543f02a..5a6d8ce06 100644 --- a/share/extensions/plotter.inx +++ b/share/extensions/plotter.inx @@ -36,8 +36,9 @@ <param name="commandLanguage" type="enum" _gui-text="Command language:" _gui-description="The command language to use (Default: HPGL)"> <_item value="HPGL">HPGL</_item> <_item value="DMPL">DMPL</_item> - <_item value="ZING">KNK Zing (HPGL variant)</_item> + <_item value="KNK">KNK Plotter (HPGL variant)</_item> </param> + <param name="initCommands" type="string" _gui-text="Initialization commands:" _gui-description="Commands that will be sent to the plotter before the main data stream, only use this if you know what you are doing! (Default: Empty)"></param> <param name="space" type="description"> </param> <_param name="freezeHelp" type="description">Using wrong settings can under certain circumstances cause Inkscape to freeze. Always save your work before plotting!</_param> <_param name="serialHelp" type="description">This can be a physical serial connection or a USB-to-Serial bridge. Ask your plotter manufacturer for drivers if needed.</_param> diff --git a/share/extensions/plotter.py b/share/extensions/plotter.py index 398ab683e..7e24d0824 100644 --- a/share/extensions/plotter.py +++ b/share/extensions/plotter.py @@ -39,6 +39,7 @@ class Plot(inkex.Effect): self.OptionParser.add_option('--serialBaudRate', action='store', type='string', dest='serialBaudRate', default='9600', help='Serial Baud rate') self.OptionParser.add_option('--flowControl', action='store', type='string', dest='flowControl', default='0', help='Flow control') self.OptionParser.add_option('--commandLanguage', action='store', type='string', dest='commandLanguage', default='hpgl', help='Command Language') + self.OptionParser.add_option('--initCommands', action='store', type='string', dest='initCommands', default='', help='Initialization commands') self.OptionParser.add_option('--resolutionX', action='store', type='float', dest='resolutionX', default=1016.0, help='Resolution X (dpi)') self.OptionParser.add_option('--resolutionY', action='store', type='float', dest='resolutionY', default=1016.0, help='Resolution Y (dpi)') self.OptionParser.add_option('--pen', action='store', type='int', dest='pen', default=1, help='Pen number') @@ -52,7 +53,7 @@ class Plot(inkex.Effect): self.OptionParser.add_option('--toolOffset', action='store', type='float', dest='toolOffset', default=0.25, help='Tool offset (mm)') self.OptionParser.add_option('--precut', action='store', type='inkbool', dest='precut', default='TRUE', help='Use precut') self.OptionParser.add_option('--flat', action='store', type='float', dest='flat', default=1.2, help='Curve flatness') - self.OptionParser.add_option('--autoAlign', action='store', type='inkbool', dest='autoAlign', default='TRUE', help='Auto align') + self.OptionParser.add_option('--autoAlign', action='store', type='inkbool', dest='autoAlign', default='TRUE', help='Auto align') self.OptionParser.add_option('--debug', action='store', type='inkbool', dest='debug', default='FALSE', help='Show debug information') def effect(self): @@ -87,8 +88,8 @@ class Plot(inkex.Effect): self.convertToHpgl() if self.options.commandLanguage == 'DMPL': self.convertToDmpl() - if self.options.commandLanguage == 'ZING': - self.convertToZing() + if self.options.commandLanguage == 'KNK': + self.convertToKNK() # output if self.options.debug: self.showDebugInfo(debugObject) @@ -102,7 +103,7 @@ class Plot(inkex.Effect): hpglInit += ';FS%d' % self.options.force if self.options.speed > 0: hpglInit += ';VS%d' % self.options.speed - self.hpgl = hpglInit + self.hpgl + ';PU0,0;SP0;IN;' + self.hpgl = hpglInit + self.hpgl + ';PU0,0;SP0;IN; ' def convertToDmpl(self): # convert HPGL to DMPL @@ -124,16 +125,16 @@ class Plot(inkex.Effect): if self.options.speed > 0: dmplInit += 'V%d' % self.options.speed dmplInit += 'EC1' - self.hpgl = dmplInit + self.hpgl[1:] + ',U0,0,P0Z' + self.hpgl = dmplInit + self.hpgl[1:] + ',U0,0,P0Z ' - def convertToZing(self): - # convert HPGL to Zing + def convertToKNK(self): + # convert HPGL to KNK Plotter Language hpglInit = 'ZG;SP%d' % self.options.pen if self.options.force > 0: hpglInit += ';FS%d' % self.options.force if self.options.speed > 0: hpglInit += ';VS%d' % self.options.speed - self.hpgl = hpglInit + self.hpgl + ';PU0,0;SP0;@' + self.hpgl = hpglInit + self.hpgl + ';PU0,0;SP0;@ ' def sendHpglToSerial(self): # gracefully exit script when pySerial is missing @@ -165,6 +166,8 @@ class Plot(inkex.Effect): else: type, value, traceback = sys.exc_info() raise ValueError, ('', type, value), traceback + if self.options.initCommands != '': + mySerial.write(self.options.initCommands.decode('string_escape')) mySerial.write(self.hpgl) mySerial.read(2) mySerial.close() @@ -172,16 +175,17 @@ class Plot(inkex.Effect): def showDebugInfo(self, debugObject): # show debug information inkex.errormsg("---------------------------------\nDebug information\n---------------------------------\n\nSettings:\n") - inkex.errormsg(' Serial Port: ' + str(self.options.serialPort)) - inkex.errormsg(' Serial baud rate: ' + str(self.options.serialBaudRate)) - inkex.errormsg(' Flow control: ' + str(self.options.flowControl)) - inkex.errormsg(' Command language: ' + str(self.options.commandLanguage)) + inkex.errormsg(' Serial Port: ' + self.options.serialPort) + inkex.errormsg(' Serial baud rate: ' + self.options.serialBaudRate) + inkex.errormsg(' Flow control: ' + self.options.flowControl) + inkex.errormsg(' Command language: ' + self.options.commandLanguage) + inkex.errormsg(' Initialization commands: ' + self.options.initCommands) inkex.errormsg(' Resolution X (dpi): ' + str(self.options.resolutionX)) inkex.errormsg(' Resolution Y (dpi): ' + str(self.options.resolutionY)) inkex.errormsg(' Pen number: ' + str(self.options.pen)) inkex.errormsg(' Pen force (g): ' + str(self.options.force)) inkex.errormsg(' Pen speed (cm/s): ' + str(self.options.speed)) - inkex.errormsg(' Rotation (Clockwise): ' + str(self.options.orientation)) + inkex.errormsg(' Rotation (Clockwise): ' + self.options.orientation) inkex.errormsg(' Mirror X axis: ' + str(self.options.mirrorX)) inkex.errormsg(' Mirror Y axis: ' + str(self.options.mirrorY)) inkex.errormsg(' Center zero point: ' + str(self.options.center)) diff --git a/share/extensions/print_win32_vector.py b/share/extensions/print_win32_vector.py index ca166d25a..37c2021ac 100644 --- a/share/extensions/print_win32_vector.py +++ b/share/extensions/print_win32_vector.py @@ -199,7 +199,7 @@ class MyEffect(inkex.Effect): if mygdi.StartDocA(self.hDC, byref(docInfo)) < 0: exit() # user clicked Cancel - self.scale = (ord(pDevMode[58]) + 256.0*ord(pDevMode[59]))/90 # use PrintQuality from DEVMODE + self.scale = (ord(pDevMode[58]) + 256.0*ord(pDevMode[59]))/96 # use PrintQuality from DEVMODE self.groupmat = [[[self.scale, 0.0, 0.0], [0.0, self.scale, 0.0]]] doc = self.document.getroot() self.process_group(doc) diff --git a/share/extensions/seamless_pattern.inx b/share/extensions/seamless_pattern.inx index fe4098e05..f63872272 100644 --- a/share/extensions/seamless_pattern.inx +++ b/share/extensions/seamless_pattern.inx @@ -4,8 +4,8 @@ <id>org.inkscape.render.seamless_pattern</id> <dependency type="executable" location="extensions">seamless_pattern.py</dependency> <dependency type="executable" location="extensions">inkex.py</dependency> - <param name="width" _gui-text="Custom Width (px.):" type="int" min="1" max="99999999">100</param> - <param name="height" _gui-text="Custom Height (px.):" type="int" min="1" max="99999999">100</param> + <param name="width" _gui-text="Custom Width (px):" type="int" min="1" max="99999999">100</param> + <param name="height" _gui-text="Custom Height (px):" type="int" min="1" max="99999999">100</param> <_param name="help-info" type="description">This extension overwrite current document</_param> <effect needs-live-preview="false"> diff --git a/share/extensions/svg2fxg.xsl b/share/extensions/svg2fxg.xsl index db9f61f22..3853b4d7b 100755 --- a/share/extensions/svg2fxg.xsl +++ b/share/extensions/svg2fxg.xsl @@ -832,22 +832,22 @@ extension-element-prefixes="math"> <xsl:value-of select="round(translate($convert_value, 'px', ''))" /> </xsl:when> <xsl:when test="contains($convert_value, 'pt')"> - <xsl:value-of select="round(translate($convert_value, 'pt', '') * 1.25)" /> + <xsl:value-of select="round(translate($convert_value, 'pt', '') * 1.333333)" /> </xsl:when> <xsl:when test="contains($convert_value, 'pc')"> - <xsl:value-of select="round(translate($convert_value, 'pc', '') * 15)" /> + <xsl:value-of select="round(translate($convert_value, 'pc', '') * 16)" /> </xsl:when> <xsl:when test="contains($convert_value, 'mm')"> - <xsl:value-of select="round(translate($convert_value, 'mm', '') * 3.543307)" /> + <xsl:value-of select="round(translate($convert_value, 'mm', '') * 3.779527)" /> </xsl:when> <xsl:when test="contains($convert_value, 'cm')"> - <xsl:value-of select="round(translate($convert_value, 'cm', '') * 35.43307)" /> + <xsl:value-of select="round(translate($convert_value, 'cm', '') * 37.79527)" /> </xsl:when> <xsl:when test="contains($convert_value, 'in')"> - <xsl:value-of select="round(translate($convert_value, 'in', '') * 90)" /> + <xsl:value-of select="round(translate($convert_value, 'in', '') * 96)" /> </xsl:when> <xsl:when test="contains($convert_value, 'ft')"> - <xsl:value-of select="round(translate($convert_value, 'ft', '') * 1080)" /> + <xsl:value-of select="round(translate($convert_value, 'ft', '') * 1152)" /> </xsl:when> <xsl:when test="not(string(number($convert_value))='NaN')"> <xsl:value-of select="round($convert_value)" /> diff --git a/share/extensions/svg2xaml.xsl b/share/extensions/svg2xaml.xsl index 040e6bcb2..fa785fa4f 100755 --- a/share/extensions/svg2xaml.xsl +++ b/share/extensions/svg2xaml.xsl @@ -854,22 +854,22 @@ exclude-result-prefixes="rdf xlink xs exsl libxslt"> <xsl:value-of select="translate($convert_value, 'px', '')" /> </xsl:when> <xsl:when test="contains($convert_value, 'pt')"> - <xsl:value-of select="translate($convert_value, 'pt', '') * 1.25" /> + <xsl:value-of select="translate($convert_value, 'pt', '') * 1.333333" /> </xsl:when> <xsl:when test="contains($convert_value, 'pc')"> - <xsl:value-of select="translate($convert_value, 'pc', '') * 15" /> + <xsl:value-of select="translate($convert_value, 'pc', '') * 16" /> </xsl:when> <xsl:when test="contains($convert_value, 'mm')"> - <xsl:value-of select="translate($convert_value, 'mm', '') * 3.543307" /> + <xsl:value-of select="translate($convert_value, 'mm', '') * 3.779527" /> </xsl:when> <xsl:when test="contains($convert_value, 'cm')"> - <xsl:value-of select="translate($convert_value, 'cm', '') * 35.43307" /> + <xsl:value-of select="translate($convert_value, 'cm', '') * 37.79527" /> </xsl:when> <xsl:when test="contains($convert_value, 'in')"> - <xsl:value-of select="translate($convert_value, 'in', '') * 90" /> + <xsl:value-of select="translate($convert_value, 'in', '') * 96" /> </xsl:when> <xsl:when test="contains($convert_value, 'ft')"> - <xsl:value-of select="translate($convert_value, 'ft', '') * 1080" /> + <xsl:value-of select="translate($convert_value, 'ft', '') * 1152" /> </xsl:when> <xsl:otherwise> <xsl:value-of select="$convert_value" /> diff --git a/share/extensions/synfig_prepare.py b/share/extensions/synfig_prepare.py index e06efde9b..c6ad48c97 100755 --- a/share/extensions/synfig_prepare.py +++ b/share/extensions/synfig_prepare.py @@ -457,17 +457,17 @@ def get_dimension(s="1024"): elif s[-2:] == "px": return float(s[:-2]) elif s[-2:] == "pt": - return float(s[:-2])*1.25 + return float(s[:-2])*1.333 elif s[-2:] == "em": return float(s[:-2])*16 elif s[-2:] == "mm": - return float(s[:-2])*3.54 + return float(s[:-2])*3.779 elif s[-2:] == "pc": - return float(s[:-2])*15 + return float(s[:-2])*16 elif s[-2:] == "cm": - return float(s[:-2])*35.43 + return float(s[:-2])*37.79 elif s[-2:] == "in": - return float(s[:-2])*90 + return float(s[:-2])*96 else: return 1024 diff --git a/share/extensions/test/svg/default-inkscape-SVG.svg b/share/extensions/test/svg/default-inkscape-SVG.svg index a6a610fdb..259e13c0d 100644 --- a/share/extensions/test/svg/default-inkscape-SVG.svg +++ b/share/extensions/test/svg/default-inkscape-SVG.svg @@ -8,8 +8,8 @@ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:cc="http://web.resource.org/cc/" xmlns:dc="http://purl.org/dc/elements/1.1/" - width="744.09448819" - height="1052.3622047"> + width="793.7007874" + height="1122.519685"> <defs /> <sodipodi:namedview id="base" diff --git a/share/extensions/test/svg/default-plain-SVG.svg b/share/extensions/test/svg/default-plain-SVG.svg index 544273366..9c0884789 100644 --- a/share/extensions/test/svg/default-plain-SVG.svg +++ b/share/extensions/test/svg/default-plain-SVG.svg @@ -8,8 +8,8 @@ xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" - width="744.09448819" - height="1052.3622047"> + width="793.7007874" + height="1122.519685"> <defs id="defs4" /> <metadata diff --git a/share/extensions/test/svg/empty-SVG.svg b/share/extensions/test/svg/empty-SVG.svg index 475cc856b..d6c680b67 100644 --- a/share/extensions/test/svg/empty-SVG.svg +++ b/share/extensions/test/svg/empty-SVG.svg @@ -8,6 +8,6 @@ xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" version="1.1" - width="744.09448819" - height="1052.3622047"> + width="793.7007874" + height="1122.519685"> </svg> diff --git a/share/extensions/webslicer_create_rect.inx b/share/extensions/webslicer_create_rect.inx index 5b3b447e9..85578e24e 100644 --- a/share/extensions/webslicer_create_rect.inx +++ b/share/extensions/webslicer_create_rect.inx @@ -11,7 +11,7 @@ <item value="jpg">JPG</item> <item value="gif">GIF</item> </param> - <param name="dpi" type="float" min="1" max="9999" _gui-text="DPI:">90</param> + <param name="dpi" type="float" min="1" max="9999" _gui-text="DPI:">96</param> <param name="dimension" type="string" _gui-text="Force Dimension:"></param> <!-- i18n. Description duplicated in a fake value attribute in order to make it translatable --> <param name="help-dimension1" type="description" _value="Force Dimension must be set as <width>x<height>">Force Dimension must be set as <width>x<height></param> |
