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;
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;
while (nodeIter.hasNext()) {
if (end == null) {
start = nodeIter.next();
+ if (!nodeIter.hasNext()) {
+ break;
+ }
} else {
start = end;
}
+
end = nodeIter.next();
createEdge(start, end);
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;
double scaleY = getTransform().getScaleY();
double scaleX = getTransform().getScaleX();
- double startLat = ModelledCRS.yToLatitude(start.getY() / scaleY);
+ double startLat = ModelledCRS.yToLatitude(-start.getY() / scaleY);
double startLon = ModelledCRS.xToLongitude(start.getX() / scaleX);
- double endLat = ModelledCRS.yToLatitude(end.getY() / scaleY);
+ double endLat = ModelledCRS.yToLatitude(-end.getY() / scaleY);
double endLon = ModelledCRS.xToLongitude(end.getX() / scaleX);
double[] startCoords = new double[] { startLon, startLat };
@Override
public void perform(WriteGraph graph) throws DatabaseException {
- builder.create(graph, startCoords, endCoords, 1 / padding);
+ builder.create(graph, startCoords, 0, endCoords, 0, padding);
}
});