From 3f1cc45a8a77ac257a2b6f9f0506aa27410ff82f Mon Sep 17 00:00:00 2001 From: kitfox Date: Tue, 21 Aug 2007 03:29:52 +0000 Subject: Added picking against bounding boxes. git-svn-id: https://svn.java.net/svn/svgsalamander~svn/trunk/svg-core@47 7dc7fa77-23fb-e6ad-8e2e-c86bd48ed22b --- src/main/java/com/kitfox/svg/Group.java | 8 ++++---- src/main/java/com/kitfox/svg/ImageSVG.java | 4 ++-- src/main/java/com/kitfox/svg/RenderableElement.java | 4 ++-- src/main/java/com/kitfox/svg/SVGDiagram.java | 14 ++++++++++++-- src/main/java/com/kitfox/svg/ShapeElement.java | 8 ++++---- src/main/res/res/help/about/about.html | 2 +- 6 files changed, 25 insertions(+), 15 deletions(-) diff --git a/src/main/java/com/kitfox/svg/Group.java b/src/main/java/com/kitfox/svg/Group.java index 5b4db2b..ff13629 100644 --- a/src/main/java/com/kitfox/svg/Group.java +++ b/src/main/java/com/kitfox/svg/Group.java @@ -93,7 +93,7 @@ public class Group extends ShapeElement { return true; } - void pick(Point2D point, Vector retVec) throws SVGException + void pick(Point2D point, boolean boundingBox, Vector retVec) throws SVGException { Point2D xPoint = new Point2D.Double(point.getX(), point.getY()); if (xform != null) @@ -116,12 +116,12 @@ public class Group extends ShapeElement { { RenderableElement rendEle = (RenderableElement)ele; - rendEle.pick(xPoint, retVec); + rendEle.pick(xPoint, boundingBox, retVec); } } } - void pick(Rectangle2D pickArea, AffineTransform ltw, Vector retVec) throws SVGException + void pick(Rectangle2D pickArea, AffineTransform ltw, boolean boundingBox, Vector retVec) throws SVGException { if (xform != null) { @@ -137,7 +137,7 @@ public class Group extends ShapeElement { { RenderableElement rendEle = (RenderableElement)ele; - rendEle.pick(pickArea, ltw, retVec); + rendEle.pick(pickArea, ltw, boundingBox, retVec); } } } diff --git a/src/main/java/com/kitfox/svg/ImageSVG.java b/src/main/java/com/kitfox/svg/ImageSVG.java index eb61215..75aaf79 100644 --- a/src/main/java/com/kitfox/svg/ImageSVG.java +++ b/src/main/java/com/kitfox/svg/ImageSVG.java @@ -120,7 +120,7 @@ public class ImageSVG extends RenderableElement public float getWidth() { return width; } public float getHeight() { return height; } - void pick(Point2D point, Vector retVec) throws SVGException + void pick(Point2D point, boolean boundingBox, Vector retVec) throws SVGException { if (getBoundingBox().contains(point)) { @@ -128,7 +128,7 @@ public class ImageSVG extends RenderableElement } } - void pick(Rectangle2D pickArea, AffineTransform ltw, Vector retVec) throws SVGException + void pick(Rectangle2D pickArea, AffineTransform ltw, boolean boundingBox, Vector retVec) throws SVGException { if (ltw.createTransformedShape(getBoundingBox()).intersects(pickArea)) { diff --git a/src/main/java/com/kitfox/svg/RenderableElement.java b/src/main/java/com/kitfox/svg/RenderableElement.java index 379afcf..7afb50b 100644 --- a/src/main/java/com/kitfox/svg/RenderableElement.java +++ b/src/main/java/com/kitfox/svg/RenderableElement.java @@ -85,9 +85,9 @@ abstract public class RenderableElement extends TransformableElement abstract public void render(Graphics2D g) throws SVGException; - abstract void pick(Point2D point, Vector retVec) throws SVGException; + abstract void pick(Point2D point, boolean boundingBox, Vector retVec) throws SVGException; - abstract void pick(Rectangle2D pickArea, AffineTransform ltw, Vector retVec) throws SVGException; + abstract void pick(Rectangle2D pickArea, AffineTransform ltw, boolean boundingBox, Vector retVec) throws SVGException; abstract public Rectangle2D getBoundingBox() throws SVGException; /* diff --git a/src/main/java/com/kitfox/svg/SVGDiagram.java b/src/main/java/com/kitfox/svg/SVGDiagram.java index cdbfa68..41de5f5 100644 --- a/src/main/java/com/kitfox/svg/SVGDiagram.java +++ b/src/main/java/com/kitfox/svg/SVGDiagram.java @@ -99,25 +99,35 @@ public class SVGDiagram implements Serializable * @return the passed in vector */ public Vector pick(Point2D point, Vector retVec) throws SVGException + { + return pick(point, false, retVec); + } + + public Vector pick(Point2D point, boolean boundingBox, Vector retVec) throws SVGException { if (retVec == null) { retVec = new Vector(); } - root.pick(point, retVec); + root.pick(point, boundingBox, retVec); return retVec; } public Vector pick(Rectangle2D pickArea, Vector retVec) throws SVGException + { + return pick(pickArea, false, retVec); + } + + public Vector pick(Rectangle2D pickArea, boolean boundingBox, Vector retVec) throws SVGException { if (retVec == null) { retVec = new Vector(); } - root.pick(pickArea, new AffineTransform(), retVec); + root.pick(pickArea, new AffineTransform(), boundingBox, retVec); return retVec; } diff --git a/src/main/java/com/kitfox/svg/ShapeElement.java b/src/main/java/com/kitfox/svg/ShapeElement.java index 9bb7b27..b346b97 100644 --- a/src/main/java/com/kitfox/svg/ShapeElement.java +++ b/src/main/java/com/kitfox/svg/ShapeElement.java @@ -64,21 +64,21 @@ abstract public class ShapeElement extends RenderableElement } */ - void pick(Point2D point, Vector retVec) throws SVGException + void pick(Point2D point, boolean boundingBox, Vector retVec) throws SVGException { StyleAttribute styleAttrib = new StyleAttribute(); // if (getStyle(styleAttrib.setName("fill")) && getShape().contains(point)) - if (getShape().contains(point)) + if ((boundingBox ? getBoundingBox() : getShape()).contains(point)) { retVec.add(getPath(null)); } } - void pick(Rectangle2D pickArea, AffineTransform ltw, Vector retVec) throws SVGException + void pick(Rectangle2D pickArea, AffineTransform ltw, boolean boundingBox, Vector retVec) throws SVGException { StyleAttribute styleAttrib = new StyleAttribute(); // if (getStyle(styleAttrib.setName("fill")) && getShape().contains(point)) - if (ltw.createTransformedShape(getShape()).intersects(pickArea)) + if (ltw.createTransformedShape((boundingBox ? getBoundingBox() : getShape())).intersects(pickArea)) { retVec.add(getPath(null)); } diff --git a/src/main/res/res/help/about/about.html b/src/main/res/res/help/about/about.html index 4f57e6c..d4196ca 100644 --- a/src/main/res/res/help/about/about.html +++ b/src/main/res/res/help/about/about.html @@ -13,7 +13,7 @@ http://svgsalamander.dev.java.net
http://www.kitfox.com

- Last built: 2007, July, 30 02:07
+ Last built: 2007, August, 20 11:23
-- cgit v1.2.3-55-g7522