X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=org.simantics.district.network.ui%2Fsrc%2Forg%2Fsimantics%2Fdistrict%2Fnetwork%2Fui%2Fnodes%2FDistrictNetworkVertexNode.java;h=76151a83fd879b41b1fc8ce7e528f7f6d59d60f8;hb=e6b35994e05232dd536af4da224a342c1bd090af;hp=2e2b4293871114144b53fb50e73d99065ac7c10e;hpb=899b77b837b4473c0176dc9eb1b67e632b98db25;p=simantics%2Fdistrict.git diff --git a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkVertexNode.java b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkVertexNode.java index 2e2b4293..76151a83 100644 --- a/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkVertexNode.java +++ b/org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkVertexNode.java @@ -14,6 +14,7 @@ import org.simantics.scenegraph.INode; import org.simantics.scenegraph.ISelectionPainterNode; import org.simantics.scenegraph.g2d.G2DNode; import org.simantics.scenegraph.g2d.G2DParentNode; +import org.simantics.scenegraph.g2d.G2DRenderingHints; import org.simantics.scenegraph.g2d.IG2DNode; import org.simantics.scenegraph.g2d.nodes.SVGNode; import org.simantics.scenegraph.utils.GeometryUtils; @@ -38,7 +39,7 @@ public class DistrictNetworkVertexNode extends G2DParentNode implements ISelecti private DistrictNetworkVertex vertex; - private boolean scaleStroke = true; + private static boolean scaleStroke = true; private boolean hover; private Color color; @@ -62,19 +63,25 @@ public class DistrictNetworkVertexNode extends G2DParentNode implements ISelecti public void render(Graphics2D g2d) { AffineTransform ot = null; AffineTransform t = getTransform(); + double viewScaleRecip = scaleStroke ? (Double) g2d.getRenderingHint(DistrictRenderingHints.KEY_VIEW_SCALE_RECIPROCAL_UNDER_SPATIAL_ROOT) : 1.0; if (t != null && !t.isIdentity()) { - ot = g2d.getTransform(); + //ot = g2d.getTransform(); + ot = (AffineTransform) g2d.getRenderingHint(G2DRenderingHints.KEY_TRANSFORM_UNDER_SPATIAL_ROOT); + if (ot == null) + ot = g2d.getTransform(); g2d.transform(t); + + if (scaleStroke) { + AffineTransform work = DistrictNetworkNodeUtils.sharedTransform.get(); + work.setTransform(ot); + work.concatenate(t); + viewScaleRecip = DistrictNetworkNodeUtils.calculateScaleRecip(work); + } } // Translate lat and lon to X and Y Point2D p = point = DistrictNetworkNodeUtils.calculatePoint2D(vertex.getPoint(), point); - - double viewScaleRecip = 1; - if (scaleStroke) { - viewScaleRecip *= DistrictNetworkNodeUtils.calculateScaleRecip(g2d.getTransform()); - } - + if (!hidden && nodeSize > 0.0) { Object oaaHint = null; Object aaHint = g2d.getRenderingHint(RenderingHints.KEY_ANTIALIASING); @@ -152,11 +159,6 @@ public class DistrictNetworkVertexNode extends G2DParentNode implements ISelecti updateBounds(); } - @Override - public AffineTransform getTransform() { - return super.getTransform(); - } - private Rectangle2D calculateBounds(Rectangle2D rect) { Point2D calcPoint = DistrictNetworkNodeUtils.calculatePoint2D(vertex.getPoint(), point); AffineTransform at = NodeUtil.getLocalToGlobalTransform(this); @@ -177,6 +179,10 @@ public class DistrictNetworkVertexNode extends G2DParentNode implements ISelecti updateBounds(); } + public DistrictNetworkVertex getVertex() { + return vertex; + } + @Override public boolean hover(boolean hover, boolean isConnectionTool) { // Only react to hover when the connection tool is active