]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/NetworkDrawingNode.java
Refactoring MapNode rendering & zooming to even zoom levels (0-20)
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / nodes / NetworkDrawingNode.java
index 71ccb781a1f1a0b0bf74df1d14430a5937a6e6db..674702b8476276103d90301e36dd7e80e24143c6 100644 (file)
@@ -4,6 +4,7 @@ import java.awt.BasicStroke;
 import java.awt.Color;
 import java.awt.Graphics2D;
 import java.awt.Stroke;
+import java.awt.geom.AffineTransform;
 import java.awt.geom.Path2D;
 import java.awt.geom.Point2D;
 import java.awt.geom.Rectangle2D;
@@ -16,11 +17,13 @@ import org.simantics.db.Resource;
 import org.simantics.db.WriteGraph;
 import org.simantics.db.common.request.WriteRequest;
 import org.simantics.db.exception.DatabaseException;
+import org.simantics.diagram.elements.DiagramNodeUtil;
 import org.simantics.diagram.ui.DiagramModelHints;
 import org.simantics.district.network.ModelledCRS;
 import org.simantics.district.network.ui.DNEdgeBuilder;
 import org.simantics.district.network.ui.NetworkDrawingParticipant;
 import org.simantics.g2d.canvas.Hints;
+import org.simantics.g2d.canvas.ICanvasContext;
 import org.simantics.g2d.canvas.IToolMode;
 import org.simantics.g2d.diagram.IDiagram;
 import org.simantics.scenegraph.g2d.G2DNode;
@@ -158,8 +161,14 @@ public class NetworkDrawingNode extends G2DNode {
 
     private void createEdge(Point2D start, Point2D end) {
         
-        double padding = GeometryUtils.getScale(getTransform());
-        
+        double currentPadding = DistrictNetworkVertexNode.width;
+        AffineTransform test = getTransform();
+        ICanvasContext ctx = DiagramNodeUtil.getCanvasContext(this);
+        AffineTransform tr = ctx.getHintStack().getHint(Hints.KEY_CANVAS_TRANSFORM);
+        AffineTransform testing = new AffineTransform(tr); 
+        testing.concatenate(test);
+        double calculateScaleRecip = DistrictNetworkNodeUtils.calculateScaleRecip(testing);
+        double padding = currentPadding * calculateScaleRecip;
         /*
          *  To convert y-coordinates to map coordinates in ruler, use:
          *    double val = (y-offsetY)/scaleY;
@@ -184,7 +193,7 @@ public class NetworkDrawingNode extends G2DNode {
             
             @Override
             public void perform(WriteGraph graph) throws DatabaseException {
-                builder.create(graph, startCoords, endCoords, 1 / padding);
+                builder.create(graph, startCoords, endCoords, padding);
             }
         });