From 4e34221f5ffa5a8835b2d20c8386a820b9d56ccd Mon Sep 17 00:00:00 2001 From: su_v Date: Wed, 9 Dec 2015 09:03:02 +0100 Subject: Extensions. Fix for 'Alphabet Soup' and 'Foldable Box' in transformed layers or groups (bug #1503882) Fixed bugs: - https://launchpad.net/bugs/1503882 (bzr r14425.1.5) --- share/extensions/foldablebox.py | 7 +++++++ share/extensions/render_alphabetsoup.py | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/share/extensions/foldablebox.py b/share/extensions/foldablebox.py index b504de89f..9d58974c5 100755 --- a/share/extensions/foldablebox.py +++ b/share/extensions/foldablebox.py @@ -22,6 +22,7 @@ __version__ = "0.2" import inkex, simplestyle from math import * from simplepath import formatPath +import simpletransform class FoldableBox(inkex.Effect): @@ -258,6 +259,12 @@ class FoldableBox(inkex.Effect): g.set( 'transform', 'translate(%f,%f)' % ( (docW-left_pos)/2, (docH-lower_pos)/2 ) ) + # compensate preserved transforms of parent layer + if self.current_layer.getparent() is not None: + mat = simpletransform.composeParents(self.current_layer, [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + simpletransform.applyTransformToNode(simpletransform.invertTransform(mat), g) + + if __name__ == '__main__': #pragma: no cover e = FoldableBox() e.affect() diff --git a/share/extensions/render_alphabetsoup.py b/share/extensions/render_alphabetsoup.py index 083f03af9..a2cbcb978 100755 --- a/share/extensions/render_alphabetsoup.py +++ b/share/extensions/render_alphabetsoup.py @@ -33,6 +33,7 @@ import simplestyle import render_alphabetsoup_config import bezmisc import simplepath +import simpletransform inkex.localize() @@ -533,6 +534,12 @@ class AlphabetSoup(inkex.Effect): new.set('d', simplepath.formatPath(image)) self.current_layer.append(new) + # compensate preserved transforms of parent layer + if self.current_layer.getparent() is not None: + mat = simpletransform.composeParents(self.current_layer, [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) + simpletransform.applyTransformToNode(simpletransform.invertTransform(mat), new) + + if __name__ == '__main__': e = AlphabetSoup() e.affect() -- cgit v1.2.3