From 57b7c89268093178a19d4d9cb7b6fb2e063ae53a Mon Sep 17 00:00:00 2001 From: Yannis Kommana Date: Thu, 25 Apr 2019 10:20:58 +0200 Subject: [PATCH] Fix order of concatentation of nested transforms --- .../model/graphicelements/svgsupport/SVGObject.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/com/t_oster/visicut/model/graphicelements/svgsupport/SVGObject.java b/src/com/t_oster/visicut/model/graphicelements/svgsupport/SVGObject.java index 841aa23e1..882b06ca8 100644 --- a/src/com/t_oster/visicut/model/graphicelements/svgsupport/SVGObject.java +++ b/src/com/t_oster/visicut/model/graphicelements/svgsupport/SVGObject.java @@ -26,6 +26,7 @@ import java.awt.Rectangle; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; +import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Map; @@ -82,11 +83,13 @@ public AffineTransform getAbsoluteTransformation() throws SVGException if (this.getDecoratee() != null) { AffineTransform tr = new AffineTransform(); - for (Object o : this.getPathToRoot()) + List pathToRoot = this.getPathToRoot(); + Collections.reverse(pathToRoot); + for (Object o : pathToRoot) { if (o instanceof Group) { - StyleAttribute sty = new StyleAttribute("transform"); + StyleAttribute sty = new StyleAttribute("transform"); if (((SVGElement) o).getPres(sty)) { String value = sty.getStringValue(); @@ -96,8 +99,7 @@ public AffineTransform getAbsoluteTransformation() throws SVGException if (!"".equals(v)) { AffineTransform trans = SVGElement.parseSingleTransform(v+")"); - trans.concatenate(tr); - tr = trans; + tr.concatenate(trans); } } }