- private Point2D getCenterPoint() {
- if (centerPoint == null)
- centerPoint = new Point2D.Double();
-
- Rectangle2D bounds = path.getBounds2D();
- centerPoint.setLocation(bounds.getCenterX(), bounds.getCenterY());
- return centerPoint;
- }
-
-// public static Line2D calculateLine(DistrictNetworkEdge edge, Line2D result) {
-// // Convert to screen coordinates
-// double startX = ModelledCRS.longitudeToX(edge.getStartPoint().getX());
-// double startY = ModelledCRS.latitudeToY(-edge.getStartPoint().getY()); // Invert for Simantics
-// double endX = ModelledCRS.longitudeToX(edge.getEndPoint().getX());
-// double endY = ModelledCRS.latitudeToY(-edge.getEndPoint().getY());// Invert for Simantics
-//
-// if (result == null)
-// result = new Line2D.Double();
-// result.setLine(startX, startY, endX, endY);
-// return result;
-// }
+ static boolean isDefined(Point2D p) {
+ return p != null && !(Double.isNaN(p.getX()) || Double.isNaN(p.getY()));
+ }
+
+ boolean renderDetailed(int zoomLevel) {
+ return zoomLevel > 13;
+ }
+
+ public float getStrokeWidth(AffineTransform tr, boolean selection) {
+ double scale = DistrictNetworkNodeUtils.getScale(tr);
+ float width = STROKE.getLineWidth() * getStrokeWidth(scale);
+ if (selection) width = width + (float) (2 * STROKE.getLineWidth() / scale);
+ return width;
+ }
+
+ private float getStrokeWidth(double scale) {
+ if (scaleStroke) {
+ double str = stroke != null ? Math.abs(stroke) : 1.0;
+ float strokeWidth = (float) (str / scale);
+ return strokeWidth;
+ }
+ else {
+ return 1.f;
+ }
+ }
+
+ public Path2D getPath() {
+ return renderDetailed(zoomLevel) ? detailedPath : path;
+ }
+
+ public Point2D getCenterPoint(int zoomLevel) {
+ return renderDetailed(zoomLevel) ? detailedCenterPoint : centerPoint;
+ }
+
+ public Point2D getDirection(int zoomLevel) {
+ return renderDetailed(zoomLevel) ? detailedDirection : direction;
+ }