X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scenegraph%2Fsrc%2Forg%2Fsimantics%2Fscenegraph%2Fg2d%2Fnodes%2FSelectionNode.java;h=98aaebb250c308bda1f33fc42800826b61926592;hb=452670c58399d8054872655841ebb6e66d9c6b6e;hp=b5b8c4151fc7510a5c828bdbf36b5261b737e5e3;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SelectionNode.java b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SelectionNode.java index b5b8c4151..98aaebb25 100644 --- a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SelectionNode.java +++ b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/nodes/SelectionNode.java @@ -11,8 +11,10 @@ *******************************************************************************/ package org.simantics.scenegraph.g2d.nodes; +import java.awt.AlphaComposite; import java.awt.BasicStroke; import java.awt.Color; +import java.awt.Composite; import java.awt.Graphics2D; import java.awt.geom.AffineTransform; import java.awt.geom.Rectangle2D; @@ -35,17 +37,39 @@ public class SelectionNode extends G2DNode implements Decoration { protected transient Rectangle2D rect; protected transient BasicStroke scaledStroke; protected transient double previousScaleRecip = Double.NaN; + protected boolean ignore = false; + protected double paddingFactor = 5.0; + protected int selectionId; + public int getSelectionId() { + return selectionId; + } + + public void setIgnore(boolean value) { + ignore = value; + } + + public void setPaddingFactor(double factor) { + paddingFactor = factor; + } + @SyncField({"transform", "bounds", "color"}) - public void init(AffineTransform transform, Rectangle2D bounds, Color color) { + public void init(int selectionId, AffineTransform transform, Rectangle2D bounds, Color color) { + this.selectionId = selectionId; this.transform = transform; this.bounds = bounds; this.color = color; } + public void init(AffineTransform transform, Rectangle2D bounds, Color color) { + init(0, transform, bounds, color); + } + @Override public void render(Graphics2D g) { if (bounds == null) return; + + if (ignore) return; // Prevent exceptions during rendering. if (transform.getDeterminant() == 0) @@ -71,7 +95,7 @@ public class SelectionNode extends G2DNode implements Decoration { } g.setStroke(scaledStroke); - double padding = 5.0 * scaleRecip; + double padding = paddingFactor * scaleRecip; double paddingX = padding; double paddingY = padding; @@ -84,6 +108,10 @@ public class SelectionNode extends G2DNode implements Decoration { g.setTransform(ot); } + + public Rectangle2D getRect() { + return transform.createTransformedShape(rect).getBounds2D(); + } @Override public Rectangle2D getBoundsInLocal() {