import java.awt.geom.Rectangle2D;
import org.simantics.district.network.ModelledCRS;
+import org.simantics.maps.MapScalingTransform;
+import org.simantics.scenegraph.utils.GeometryUtils;
public class DistrictNetworkNodeUtils {
+ public static ThreadLocal<AffineTransform> sharedTransform = new ThreadLocal<AffineTransform>() {
+ protected AffineTransform initialValue() {
+ return new AffineTransform();
+ }
+ };
+
public static Rectangle2D calculateDrawnGeometry(Point2D p, Rectangle2D margin, Rectangle2D result, double scaleRecip) {
if (result == null)
result = new Rectangle2D.Double();
return transform;
}
+ public static double calculateScaleRecip(AffineTransform tr) {
+ int zoomLevel = MapScalingTransform.zoomLevel(tr);
+ return 1.0 / (getScale(tr) * Math.sqrt(zoomLevel));
+ }
+
+ static double getScale(AffineTransform tr) {
+ double scale;
+ scale = GeometryUtils.getScale(tr);
+ scale = Math.max(4096, scale); //Math.min(scale, 32768));
+ return scale;
+ }
}