diff options
| author | Alvin Penner <penner@vaxxine.com> | 2011-07-04 22:36:34 +0000 |
|---|---|---|
| committer | apenner <penner@vaxxine.com> | 2011-07-04 22:36:34 +0000 |
| commit | bf57e536339d65b77effac88ce96441992f0bb9a (patch) | |
| tree | 89f5a5a3daa6b092aac2175c36c957a97b94516c | |
| parent | Extensions. Envelope. use transform elements if present (Bug 663667) (diff) | |
| download | inkscape-bf57e536339d65b77effac88ce96441992f0bb9a.tar.gz inkscape-bf57e536339d65b77effac88ce96441992f0bb9a.zip | |
Extensions. Perspective. use transform elements if present (Bug 168942)
Fixed bugs:
- https://launchpad.net/bugs/168942
(bzr r10416)
| -rwxr-xr-x | share/extensions/perspective.py | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/share/extensions/perspective.py b/share/extensions/perspective.py index 4caaa68a1..733fb121a 100755 --- a/share/extensions/perspective.py +++ b/share/extensions/perspective.py @@ -18,7 +18,7 @@ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Perspective approach & math by Dmitry Platonov, shadowjack@mail.ru, 2006 """ -import sys, inkex, os, re, simplepath, cubicsuperpath +import sys, inkex, os, re, simplepath, cubicsuperpath, simpletransform, voronoi2svg import gettext _ = gettext.gettext from ffgeom import * @@ -69,10 +69,12 @@ class Project(inkex.Effect): exit() if obj.tag == inkex.addNS('path','svg') or obj.tag == inkex.addNS('g','svg'): if envelope.tag == inkex.addNS('path','svg'): + mat = simpletransform.composeParents(envelope, [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) path = cubicsuperpath.parsePath(envelope.get('d')) if len(path) < 1 or len(path[0]) < 4: inkex.errormsg(_("This extension requires that the second selected path be four nodes long.")) exit() + simpletransform.applyTransformToPath(mat, path) dp = zeros((4,2), dtype=float64) for i in range(4): dp[i][0] = path[0][i][1][0] @@ -127,7 +129,6 @@ class Project(inkex.Effect): if obj.tag == inkex.addNS("g",'svg'): self.process_group(obj,projmatrix) - def process_group(self,group,m): for node in group: if node.tag == inkex.addNS('path','svg'): @@ -135,19 +136,20 @@ class Project(inkex.Effect): if node.tag == inkex.addNS('g','svg'): self.process_group(node,m) - def process_path(self,path,m): + mat = simpletransform.composeParents(path, [[1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]) d = path.get('d') p = cubicsuperpath.parsePath(d) + simpletransform.applyTransformToPath(mat, p) for subs in p: for csp in subs: csp[0] = self.project_point(csp[0],m) csp[1] = self.project_point(csp[1],m) csp[2] = self.project_point(csp[2],m) + mat = voronoi2svg.Voronoi2svg().invertTransform(mat) + simpletransform.applyTransformToPath(mat, p) path.set('d',cubicsuperpath.formatPath(p)) - - def project_point(self,p,m): x = p[0] y = p[1] |
