From 275ef2c25289e161ccc86642fd0b31708f025409 Mon Sep 17 00:00:00 2001 From: kitfox Date: Thu, 27 Feb 2014 14:14:14 +0000 Subject: Picking now takes viewport transform into account. git-svn-id: https://svn.java.net/svn/svgsalamander~svn/trunk/svg-core@171 7dc7fa77-23fb-e6ad-8e2e-c86bd48ed22b --- src/main/java/com/kitfox/svg/SVGRoot.java | 31 ++++++++++++++++++++++++++ src/main/java/com/kitfox/svg/ShapeElement.java | 2 +- 2 files changed, 32 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/main/java/com/kitfox/svg/SVGRoot.java b/src/main/java/com/kitfox/svg/SVGRoot.java index 5edc476..fdd5065 100644 --- a/src/main/java/com/kitfox/svg/SVGRoot.java +++ b/src/main/java/com/kitfox/svg/SVGRoot.java @@ -43,7 +43,10 @@ import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.Shape; import java.awt.geom.AffineTransform; +import java.awt.geom.NoninvertibleTransformException; +import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; +import java.util.List; /** * The root element of an SVG tree. @@ -263,6 +266,34 @@ public class SVGRoot extends Group g.setTransform(cachedXform); } + public void pick(Rectangle2D pickArea, AffineTransform ltw, boolean boundingBox, List retVec) throws SVGException + { + if (viewXform != null) + { + ltw = new AffineTransform(ltw); + ltw.concatenate(viewXform); + } + + super.pick(pickArea, ltw, boundingBox, retVec); + } + + public void pick(Point2D point, boolean boundingBox, List retVec) throws SVGException + { + Point2D xPoint = new Point2D.Double(point.getX(), point.getY()); + if (viewXform != null) + { + try + { + viewXform.inverseTransform(point, xPoint); + } catch (NoninvertibleTransformException ex) + { + throw new SVGException(ex); + } + } + + super.pick(xPoint, boundingBox, retVec); + } + public Shape getShape() { Shape shape = super.getShape(); diff --git a/src/main/java/com/kitfox/svg/ShapeElement.java b/src/main/java/com/kitfox/svg/ShapeElement.java index 9a954fe..e3b7ac2 100644 --- a/src/main/java/com/kitfox/svg/ShapeElement.java +++ b/src/main/java/com/kitfox/svg/ShapeElement.java @@ -86,7 +86,7 @@ abstract public class ShapeElement extends RenderableElement void pick(Point2D point, boolean boundingBox, List retVec) throws SVGException { - StyleAttribute styleAttrib = new StyleAttribute(); +// StyleAttribute styleAttrib = new StyleAttribute(); // if (getStyle(styleAttrib.setName("fill")) && getShape().contains(point)) if ((boundingBox ? getBoundingBox() : getShape()).contains(point)) { -- cgit v1.2.3-55-g7522