]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.network.ui/src/org/simantics/district/network/ui/nodes/DistrictNetworkNodeUtils.java
Optimization of district scene graph node rendering
[simantics/district.git] / org.simantics.district.network.ui / src / org / simantics / district / network / ui / nodes / DistrictNetworkNodeUtils.java
index 21e49b58277c8f93334ddcf1ccf6428363f278dc..0efab43173f112d4521667f4af00919434c3f7d2 100644 (file)
@@ -10,6 +10,12 @@ 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();
@@ -39,14 +45,13 @@ public class DistrictNetworkNodeUtils {
 
     public static double calculateScaleRecip(AffineTransform tr) {
         int zoomLevel = MapScalingTransform.zoomLevel(tr);
-        double t = 1.0 / (getScale(tr) * Math.sqrt(zoomLevel));
-        return t;
+        return 1.0 / (getScale(tr) * Math.sqrt(zoomLevel));
     }
 
     static double getScale(AffineTransform tr) {
         double scale;
         scale = GeometryUtils.getScale(tr);
-        scale = Math.max(4096, Math.min(scale, 32768));
+        scale = Math.max(4096, scale); //Math.min(scale, 32768));
         return scale;
     }
 }