commit ce31f774c7590c4c4cce9e14ccbe8ab73465b8e0
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Tue Apr 4 11:19:43 2023 +0200

    remove all references to android.Context and android.Activity from distorted-objectlib

diff --git a/src/main/java/org/distorted/bandaged/BandagedPlayLibInterface.java b/src/main/java/org/distorted/bandaged/BandagedPlayLibInterface.java
index 59b100cf..1d7acc7f 100644
--- a/src/main/java/org/distorted/bandaged/BandagedPlayLibInterface.java
+++ b/src/main/java/org/distorted/bandaged/BandagedPlayLibInterface.java
@@ -9,6 +9,8 @@
 
 package org.distorted.bandaged;
 
+import android.util.DisplayMetrics;
+
 import java.lang.ref.WeakReference;
 
 import com.google.firebase.crashlytics.FirebaseCrashlytics;
@@ -187,4 +189,12 @@ public class BandagedPlayLibInterface implements ObjectLibInterface
       }
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getScreenDensity()
+    {
+    DisplayMetrics dm = new DisplayMetrics();
+    mAct.get().getWindowManager().getDefaultDisplay().getMetrics(dm);
+    return dm.densityDpi;
+    }
 }
diff --git a/src/main/java/org/distorted/bandaged/BandagedPlayView.java b/src/main/java/org/distorted/bandaged/BandagedPlayView.java
index 855bdb3e..1e369434 100644
--- a/src/main/java/org/distorted/bandaged/BandagedPlayView.java
+++ b/src/main/java/org/distorted/bandaged/BandagedPlayView.java
@@ -80,7 +80,7 @@ public class BandagedPlayView extends GLSurfaceView
         {
         BandagedPlayActivity act = (BandagedPlayActivity)context;
         BandagedPlayLibInterface ref = new BandagedPlayLibInterface(act);
-        mObjectController = new ObjectControl(act,ref);
+        mObjectController = new ObjectControl(ref);
         mObjectController.setRotateOnCreation(true);
         mRenderer = new BandagedPlayRenderer(this);
 
diff --git a/src/main/java/org/distorted/config/ConfigObjectLibInterface.java b/src/main/java/org/distorted/config/ConfigObjectLibInterface.java
index 8066d0c5..01aaee55 100644
--- a/src/main/java/org/distorted/config/ConfigObjectLibInterface.java
+++ b/src/main/java/org/distorted/config/ConfigObjectLibInterface.java
@@ -9,6 +9,8 @@
 
 package org.distorted.config;
 
+import android.util.DisplayMetrics;
+
 import com.google.firebase.crashlytics.FirebaseCrashlytics;
 
 import org.distorted.library.message.EffectMessageSender;
@@ -16,10 +18,16 @@ import org.distorted.objectlib.BuildConfig;
 import org.distorted.objectlib.helpers.BlockController;
 import org.distorted.objectlib.helpers.ObjectLibInterface;
 
+import java.lang.ref.WeakReference;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public class ConfigObjectLibInterface implements ObjectLibInterface
 {
+  private final WeakReference<ConfigActivity> mAct;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
   public void onWinEffectFinished(long startTime, long endTime, String debug, int scrambleNum) { }
   public void onScrambleEffectFinished() { }
   public void onBeginRotation() { }
@@ -127,4 +135,21 @@ public class ConfigObjectLibInterface implements ObjectLibInterface
       case BlockController.TYPE_THREAD    : reportThreadProblem(place,pause,resume,time); break;
       }
     }
+
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  ConfigObjectLibInterface(ConfigActivity act)
+    {
+    mAct = new WeakReference<>(act);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getScreenDensity()
+    {
+    DisplayMetrics dm = new DisplayMetrics();
+    mAct.get().getWindowManager().getDefaultDisplay().getMetrics(dm);
+    return dm.densityDpi;
+    }
 }
diff --git a/src/main/java/org/distorted/config/ConfigSurfaceView.java b/src/main/java/org/distorted/config/ConfigSurfaceView.java
index 5a4a1173..5709aeaf 100644
--- a/src/main/java/org/distorted/config/ConfigSurfaceView.java
+++ b/src/main/java/org/distorted/config/ConfigSurfaceView.java
@@ -75,8 +75,8 @@ public class ConfigSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         ConfigActivity act = (ConfigActivity)context;
-        ConfigObjectLibInterface ref = new ConfigObjectLibInterface();
-        mObjectController = new ObjectControl(act,ref);
+        ConfigObjectLibInterface ref = new ConfigObjectLibInterface(act);
+        mObjectController = new ObjectControl(ref);
         mObjectController.setRotateOnCreation(true);
         mRenderer = new ConfigRenderer(this);
 
diff --git a/src/main/java/org/distorted/dialogs/RubikDialogUpdateView.java b/src/main/java/org/distorted/dialogs/RubikDialogUpdateView.java
index 8e73ffae..f89412c3 100644
--- a/src/main/java/org/distorted/dialogs/RubikDialogUpdateView.java
+++ b/src/main/java/org/distorted/dialogs/RubikDialogUpdateView.java
@@ -9,6 +9,9 @@
 
 package org.distorted.dialogs;
 
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
 import java.lang.ref.WeakReference;
 
 import android.app.Activity;
@@ -193,8 +196,12 @@ public class RubikDialogUpdateView implements RubikNetwork.Downloadee
 
         try
           {
+          File file = new File(act.getFilesDir(), objectName);
+          InputStream stream = new FileInputStream(file);
           JsonReader reader = new JsonReader();
-          reader.readNumScramblesAndPrice(act,objectName);
+          reader.readNumScramblesAndPrice(stream);
+          stream.close();
+
           mInfo.mNumScrambles = reader.getNumScrambles();
           mInfo.mPrice        = reader.getPrice();
           if( SHOW_DOWNLOADED_DEBUG ) android.util.Log.e("D", "Read from JSON numScrambles="+mInfo.mNumScrambles+" price="+mInfo.mPrice);
diff --git a/src/main/java/org/distorted/main/RubikObjectLibInterface.java b/src/main/java/org/distorted/main/RubikObjectLibInterface.java
index dc2984ba..8a0faa96 100644
--- a/src/main/java/org/distorted/main/RubikObjectLibInterface.java
+++ b/src/main/java/org/distorted/main/RubikObjectLibInterface.java
@@ -10,6 +10,7 @@
 package org.distorted.main;
 
 import android.os.Bundle;
+import android.util.DisplayMetrics;
 
 import androidx.annotation.NonNull;
 
@@ -513,4 +514,13 @@ public class RubikObjectLibInterface implements ObjectLibInterface, ListenerOver
     d.setArguments(bundle);
     d.show( act.getSupportFragmentManager(), RubikDialogNewRecord.getDialogTag() );
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getScreenDensity()
+    {
+    DisplayMetrics dm = new DisplayMetrics();
+    mAct.get().getWindowManager().getDefaultDisplay().getMetrics(dm);
+    return dm.densityDpi;
+    }
 }
diff --git a/src/main/java/org/distorted/main/RubikSurfaceView.java b/src/main/java/org/distorted/main/RubikSurfaceView.java
index 2ed2a28a..f8b97410 100644
--- a/src/main/java/org/distorted/main/RubikSurfaceView.java
+++ b/src/main/java/org/distorted/main/RubikSurfaceView.java
@@ -111,7 +111,7 @@ public class RubikSurfaceView extends GLSurfaceView
         {
         RubikActivity act = (RubikActivity)context;
         RubikObjectLibInterface ref = new RubikObjectLibInterface(act);
-        mObjectController = new ObjectControl(act,ref);
+        mObjectController = new ObjectControl(ref);
         mRenderer = new RubikRenderer(this);
 
         final ActivityManager activityManager= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
diff --git a/src/main/java/org/distorted/purchase/PurchaseObjectLibInterface.java b/src/main/java/org/distorted/purchase/PurchaseObjectLibInterface.java
index d5b521d3..6ae8e601 100644
--- a/src/main/java/org/distorted/purchase/PurchaseObjectLibInterface.java
+++ b/src/main/java/org/distorted/purchase/PurchaseObjectLibInterface.java
@@ -9,15 +9,30 @@
 
 package org.distorted.purchase;
 
+import android.util.DisplayMetrics;
+
 import com.google.firebase.crashlytics.FirebaseCrashlytics;
 
 import org.distorted.objectlib.BuildConfig;
 import org.distorted.objectlib.helpers.ObjectLibInterface;
 
+import java.lang.ref.WeakReference;
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public class PurchaseObjectLibInterface implements ObjectLibInterface
 {
+  private final WeakReference<PurchaseActivity> mAct;
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  PurchaseObjectLibInterface(PurchaseActivity act)
+    {
+    mAct = new WeakReference<>(act);
+    }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
   public void onWinEffectFinished(long startTime, long endTime, String debug, int scrambleNum) { }
   public void onScrambleEffectFinished() { }
   public void onBeginRotation() { }
@@ -54,4 +69,13 @@ public class PurchaseObjectLibInterface implements ObjectLibInterface
         }
       }
     }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getScreenDensity()
+    {
+    DisplayMetrics dm = new DisplayMetrics();
+    mAct.get().getWindowManager().getDefaultDisplay().getMetrics(dm);
+    return dm.densityDpi;
+    }
 }
diff --git a/src/main/java/org/distorted/purchase/PurchaseSurfaceView.java b/src/main/java/org/distorted/purchase/PurchaseSurfaceView.java
index e8ff3ab0..cfc3ce98 100644
--- a/src/main/java/org/distorted/purchase/PurchaseSurfaceView.java
+++ b/src/main/java/org/distorted/purchase/PurchaseSurfaceView.java
@@ -72,8 +72,8 @@ public class PurchaseSurfaceView extends GLSurfaceView
       if(!isInEditMode())
         {
         PurchaseActivity act = (PurchaseActivity)context;
-        PurchaseObjectLibInterface ref = new PurchaseObjectLibInterface();
-        mObjectController = new ObjectControl(act,ref);
+        PurchaseObjectLibInterface ref = new PurchaseObjectLibInterface(act);
+        mObjectController = new ObjectControl(ref);
         mObjectController.setRotateOnCreation(true);
         mRenderer = new PurchaseRenderer(this);
 
diff --git a/src/main/java/org/distorted/tutorials/TutorialObjectLibInterface.java b/src/main/java/org/distorted/tutorials/TutorialObjectLibInterface.java
index 051c1387..371bf536 100644
--- a/src/main/java/org/distorted/tutorials/TutorialObjectLibInterface.java
+++ b/src/main/java/org/distorted/tutorials/TutorialObjectLibInterface.java
@@ -9,6 +9,8 @@
 
 package org.distorted.tutorials;
 
+import android.util.DisplayMetrics;
+
 import com.google.firebase.crashlytics.FirebaseCrashlytics;
 
 import org.distorted.library.message.EffectMessageSender;
@@ -22,7 +24,7 @@ import java.lang.ref.WeakReference;
 
 public class TutorialObjectLibInterface implements ObjectLibInterface
 {
-   WeakReference<TutorialActivity> mAct;
+  private final WeakReference<TutorialActivity> mAct;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -31,6 +33,8 @@ public class TutorialObjectLibInterface implements ObjectLibInterface
     mAct = new WeakReference<>(act);
     }
 
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
   public void onWinEffectFinished(long startTime, long endTime, String debug, int scrambleNum) { }
   public void onScrambleEffectFinished() { }
   public void onBeginRotation() { }
@@ -139,7 +143,7 @@ public class TutorialObjectLibInterface implements ObjectLibInterface
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-   public void onFinishRotation(int axis, int row, int angle)
+  public void onFinishRotation(int axis, int row, int angle)
      {
      TutorialActivity act = mAct.get();
      TutorialScreen state = act.getState();
@@ -148,10 +152,19 @@ public class TutorialObjectLibInterface implements ObjectLibInterface
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-   public void failedToDrag()
+  public void failedToDrag()
      {
      TutorialActivity act = mAct.get();
      TutorialScreen state = act.getState();
      state.reddenLock(act);
      }
+
+///////////////////////////////////////////////////////////////////////////////////////////////////
+
+  public int getScreenDensity()
+    {
+    DisplayMetrics dm = new DisplayMetrics();
+    mAct.get().getWindowManager().getDefaultDisplay().getMetrics(dm);
+    return dm.densityDpi;
+    }
 }
diff --git a/src/main/java/org/distorted/tutorials/TutorialSurfaceView.java b/src/main/java/org/distorted/tutorials/TutorialSurfaceView.java
index 9bf13f69..93e81560 100644
--- a/src/main/java/org/distorted/tutorials/TutorialSurfaceView.java
+++ b/src/main/java/org/distorted/tutorials/TutorialSurfaceView.java
@@ -85,7 +85,7 @@ public class TutorialSurfaceView extends GLSurfaceView
         {
         TutorialActivity act = (TutorialActivity)context;
         TutorialObjectLibInterface ref = new TutorialObjectLibInterface(act);
-        mObjectController = new ObjectControl(act,ref);
+        mObjectController = new ObjectControl(ref);
         mRenderer = new TutorialRenderer(this);
 
         final ActivityManager activityManager= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
