summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2014-11-09 22:04:22 +0000
committerJabiertxof <jtx@jtx.marker.es>2014-11-09 22:04:22 +0000
commit7f6a9bd0980238ee25285bd23b060f6310b04ee4 (patch)
treebb10dae232709f970f636b808a48721cd4e9c048
parentfixed a bug pointed by su_v about transformations (diff)
downloadinkscape-7f6a9bd0980238ee25285bd23b060f6310b04ee4.tar.gz
inkscape-7f6a9bd0980238ee25285bd23b060f6310b04ee4.zip
Allow shorteners transforms in DPI switcher.A bit of refactor.
(bzr r13695)
-rw-r--r--share/extensions/dpiswitcher.py73
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":