]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.district.maps/src/org/simantics/maps/MapScalingTransform.java
Refactoring MapNode rendering & zooming to even zoom levels (0-20)
[simantics/district.git] / org.simantics.district.maps / src / org / simantics / maps / MapScalingTransform.java
index f64a99f43c108e5931c822b10deb4c4d8f4fa99e..e29e8e553fc9fadc90c326dcb28f704c3fabf171 100644 (file)
@@ -6,8 +6,8 @@ public class MapScalingTransform {
 
     private MapScalingTransform() {
     }
-
-    public static final AffineTransform INSTANCE = new AffineTransform(10000, 0, 0, 10000, 0, 0);
+    public static final double scale = 256.0d / 360.0d;
+    public static final AffineTransform INSTANCE = new AffineTransform(scale, 0, 0, scale, 0, 0);
 
     public static double getScaleX() {
         return INSTANCE.getScaleX();
@@ -16,4 +16,15 @@ public class MapScalingTransform {
     public static double getScaleY() {
         return INSTANCE.getScaleY();
     }
+    
+    public static int zoomLevel(AffineTransform current) {
+        double org = INSTANCE.getScaleX();
+        double cur = current.getScaleX();
+        double f = cur / org;
+        double zoomLevel = Math.log10(f) / Math.log10(2);
+        if (zoomLevel < 0) {
+            zoomLevel = 0;
+        }
+        return (int) zoomLevel;
+    }
 }