diff options
| author | Jabier Arraiza Cenoz <jabier.arraiza@marker.es> | 2014-11-09 22:04:22 +0000 |
|---|---|---|
| committer | Jabiertxof <jtx@jtx.marker.es> | 2014-11-09 22:04:22 +0000 |
| commit | 7f6a9bd0980238ee25285bd23b060f6310b04ee4 (patch) | |
| tree | bb10dae232709f970f636b808a48721cd4e9c048 | |
| parent | fixed a bug pointed by su_v about transformations (diff) | |
| download | inkscape-7f6a9bd0980238ee25285bd23b060f6310b04ee4.tar.gz inkscape-7f6a9bd0980238ee25285bd23b060f6310b04ee4.zip | |
Allow shorteners transforms in DPI switcher.A bit of refactor.
(bzr r13695)
| -rw-r--r-- | share/extensions/dpiswitcher.py | 73 |
1 files changed, 46 insertions, 27 deletions
diff --git a/share/extensions/dpiswitcher.py b/share/extensions/dpiswitcher.py index 57ca4f731..051a72ee1 100644 --- a/share/extensions/dpiswitcher.py +++ b/share/extensions/dpiswitcher.py @@ -63,20 +63,14 @@ class DPISwitcher(inkex.Effect): continue if element.get('transform'): if "matrix" in str(element.get('transform')): - result = re.sub(r".*?((matrix).*?\))", self.scaleMatrixElement, str(element.get('transform'))) + result = re.sub(r".*?((matrix).*?\))", self.matrixElement, str(element.get('transform'))) element.set('transform', result) if "scale" in str(element.get('transform')): result = re.sub(r".*?((scale).*?\))", self.scaleElement, str(element.get('transform'))) element.set('transform', result) - if "matrix" in str(element.get('transform')): - result = re.sub(r".*?((matrix).*?\))", self.translateMatrixElement, str(element.get('transform'))) - element.set('transform', result) if "translate" in str(element.get('transform')): result = re.sub(r".*?((translate).*?\))", self.translateElement, str(element.get('transform'))) element.set('transform', result) - if "matrix" in str(element.get('transform')): - result = re.sub(r".*?((matrix).*?\))", self.skewMatrixElement, str(element.get('transform'))) - element.set('transform', result) if "skew" in str(element.get('transform')): result = re.sub(r".*?((translate).*?\))", self.skewElement, str(element.get('transform'))) element.set('transform', result) @@ -88,12 +82,15 @@ class DPISwitcher(inkex.Effect): elements = svg.xpath(xpathStr, namespaces=inkex.NSS) for element in elements: if element.get('transform'): - if "matrix" in str(element.get('transform')): - result = re.sub(r".*?((matrix).*?\))", self.translateMatrixElement, str(element.get('transform'))) - element.set('transform', result) if "translate" in str(element.get('transform')): result = re.sub(r".*?((translate).*?\))", self.translateElement, str(element.get('transform'))) element.set('transform', result) + if "matrix" in str(element.get('transform')): + result = re.sub(r".*?((matrix).*?\))", self.matrixElementNoScale, str(element.get('transform'))) + element.set('transform', result) + if "skew" in str(element.get('transform')): + result = re.sub(r".*?((translate).*?\))", self.skewElement, str(element.get('transform'))) + element.set('transform', result) def scaleGuides(self, svg): xpathStr = '//sodipodi:guide' @@ -131,28 +128,50 @@ class DPISwitcher(inkex.Effect): 'km':3543307.0866, 'pc':15.0, 'yd':3240 , 'ft':1080} def scaleElement(self, m): - scaleVal = m.group(1).replace("scale","").replace(" ","").replace("(","").replace(")","").split(",") - return "scale(" + str(float(scaleVal[0]) * self.factor) + "," + str(float(scaleVal[1]) * self.factor) + ")" + scaleVal = m.group(1).replace("scale","").replace(" ","").replace("(","").replace(")","") + total = scaleVal.count(',') + if total == 1: + scaleVal = scaleVal.split(",") + return "scale(" + str(float(scaleVal[0]) * self.factor) + "," + str(float(scaleVal[1]) * self.factor) + ")" + else: + return "scale(" + str(float(scaleVal) * self.factor) + ")" - def scaleMatrixElement(self, m): - scaleMatrixVal = m.group(1).replace("matrix","").replace(" ","").replace("(","").replace(")","").split(",") - return "matrix(" + str(float(scaleMatrixVal[0]) * self.factor) + "," + scaleMatrixVal[1] + "," + scaleMatrixVal[2] + "," + str(float(scaleMatrixVal[3]) * self.factor) + "," + scaleMatrixVal[4] + "," + scaleMatrixVal[5] + ")" def translateElement(self, m): - translateVal = m.group(1).replace("translate","").replace(" ","").replace("(","").replace(")","").split(",") - return "translate(" + str(float(translateVal[0]) * self.factor) + "," + str(float(translateVal[1]) * self.factor) + ")" - - def translateMatrixElement(self, m): - translateMatrixVal = m.group(1).replace("matrix","").replace(" ","").replace("(","").replace(")","").split(",") - return "matrix(" + translateMatrixVal[0] + "," + translateMatrixVal[1] + "," + translateMatrixVal[2] + "," + translateMatrixVal[3] + "," + str(float(translateMatrixVal[4]) * self.factor) + "," + str(float(translateMatrixVal[5]) * self.factor) + ")" + translateVal = m.group(1).replace("translate","").replace(" ","").replace("(","").replace(")","") + total = translateVal.count(',') + if total == 1: + translateVal = translateVal.split(",") + return "translate(" + str(float(translateVal[0]) * self.factor) + "," + str(float(translateVal[1]) * self.factor) + ")" + else: + return "translate(" + str(float(translateVal) * self.factor) + ")" def skewElement(self, m): - skeweVal = m.group(1).replace("skew","").replace(" ","").replace("(","").replace(")","").split(",") - return "skew(" + str(float(skewVal[0]) * self.factor) + "," + str(float(skewVal[1]) * self.factor) + ")" - - def skewMatrixElement(self, m): - skewMatrixVal = m.group(1).replace("matrix","").replace(" ","").replace("(","").replace(")","").split(",") - return "matrix(" + skewMatrixVal[0] + "," + str(float(skewMatrixVal[1]) * self.factor) + "," + str(float(skewMatrixVal[4]) * self.factor) + "," + skewMatrixVal[3] + "," + skewMatrixVal[4] + "," + skewMatrixVal[5]+ ")" + skeweVal = m.group(1).replace("skew","").replace(" ","").replace("(","").replace(")","") + total = skewVal.count(',') + if total == 1: + skeweVal = skewVal.split(",") + return "skew(" + str(float(skewVal[0]) * self.factor) + "," + str(float(skewVal[1]) * self.factor) + ")" + else: + return "skew(" + str(float(skewVal) * self.factor) + ")" + + def matrixElement(self, m): + matrixVal = m.group(1).replace("matrix","").replace(" ","").replace("(","").replace(")","") + total = matrixVal.count(',') + matrixVal = matrixVal.split(",") + if total > 2: + return "matrix(" + str(float(matrixVal[0]) * self.factor) + "," + str(float(matrixVal[1]) * self.factor) + "," + str(float(matrixVal[2]) * self.factor) + "," + str(float(matrixVal[3]) * self.factor) + "," + str(float(matrixVal[4]) * self.factor) + "," + str(float(matrixVal[5]) * self.factor) + ")" + else: + return "matrix(" + str(float(matrixVal[0]) * self.factor) + "," + str(float(matrixVal[1]) * self.factor) + "," + str(float(matrixVal[2]) * self.factor) + ")" + + def matrixElementNoScale(self, m): + matrixVal = m.group(1).replace("matrix","").replace(" ","").replace("(","").replace(")","") + total = matrixVal.count(',') + matrixVal = matrixVal.split(",") + if total > 2: + return "matrix(" + matrixVal[0] + "," + str(float(matrixVal[1]) * self.factor) + "," + matrixVal[2] + "," + str(float(matrixVal[3]) * self.factor) + "," + str(float(matrixVal[4]) * self.factor) + "," + str(float(matrixVal[5]) * self.factor) + ")" + else: + return "matrix(" + matrixVal[0] + "," + str(float(matrixVal[1]) * self.factor) + "," + str(float(matrixVal[2]) * self.factor) + ")" def effect(self): if self.options.switcher == "0": |
