commit 27401bea5601a450b59fda8df3ebe10c5c7dbbaa
Author: Leszek Koltunski <leszek@koltunski.pl>
Date:   Thu Jan 19 18:12:45 2023 +0100

    More fixes for UI in case of extreme screen (w/h) ratios ( from 1.0 to 2.0 ).

diff --git a/src/main/java/org/distorted/config/ConfigRenderer.java b/src/main/java/org/distorted/config/ConfigRenderer.java
index c7f20bbd..7ac08fc2 100644
--- a/src/main/java/org/distorted/config/ConfigRenderer.java
+++ b/src/main/java/org/distorted/config/ConfigRenderer.java
@@ -22,8 +22,6 @@ import org.distorted.objectlib.main.ObjectControl;
 import javax.microedition.khronos.egl.EGLConfig;
 import javax.microedition.khronos.opengles.GL10;
 
-import static org.distorted.config.ConfigScreenPane.PADDING_RATIO;
-
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 public class ConfigRenderer implements GLSurfaceView.Renderer, DistortedLibrary.ExceptionListener
diff --git a/src/main/java/org/distorted/config/ConfigScreen.java b/src/main/java/org/distorted/config/ConfigScreen.java
index b81cb550..622f1273 100644
--- a/src/main/java/org/distorted/config/ConfigScreen.java
+++ b/src/main/java/org/distorted/config/ConfigScreen.java
@@ -35,6 +35,9 @@ import static android.view.View.inflate;
 
 public class ConfigScreen
 {
+  private static final float TEXT_SIZE = 0.0310f;
+  private static final float PADDING   = 0.0060f;
+  private static final float MARGIN    = 0.0024f;
   private static final int NUM_COLUMNS = 5;
   private static final int[] mLocation = new int[2];
 
@@ -56,9 +59,9 @@ public class ConfigScreen
     mRowCount = (numObjects + NUM_COLUMNS-1) / NUM_COLUMNS;
     mColCount = NUM_COLUMNS;
 
-    int cubeSize  = (int)(width/9);
-    int margin    = (int)(width*RubikActivity.LARGE_MARGIN);
-    int padding   = (int)(width*RubikActivity.POPUP_PADDING);
+    int cubeSize  = (int)( (Math.min(width,(int)(height*0.7f))) / 9 );
+    int margin    = (int)(height*RubikActivity.POPUP_MARGIN);
+    int padding   = (int)(height*RubikActivity.POPUP_PADDING);
     mObjectSize   = (int)(cubeSize + 2*margin + 0.5f);
     mMaxRowCount  = (int)((height-mBarHeight)/mObjectSize);
 
@@ -119,9 +122,9 @@ public class ConfigScreen
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void setupObjectButton(final ConfigActivity act, final int width)
+  private void setupObjectButton(final ConfigActivity act, final int width, final int height)
     {
-    final int margin= (int)(width*RubikActivity.SMALL_MARGIN);
+    final int margin= (int)(height*MARGIN);
     final int icon = RubikActivity.getDrawable(R.drawable.ui_small_cube_menu,R.drawable.ui_medium_cube_menu, R.drawable.ui_big_cube_menu, R.drawable.ui_huge_cube_menu);
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT);
     mObjectButton = new TransparentImageButton(act, icon, TransparentImageButton.GRAVITY_MIDDLE, params);
@@ -133,7 +136,6 @@ public class ConfigScreen
         {
         if( mObjectPopup==null )
           {
-          float height= act.getScreenHeightInPixels();
           setupObjectWindow(act,width,height);
           }
 
@@ -257,10 +259,10 @@ public class ConfigScreen
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
-  private void setupTextView(final ConfigActivity act, final float width, int numObjects)
+  private void setupTextView(final ConfigActivity act, final float height, int numObjects)
     {
-    int padding = (int)(width*RubikActivity.PADDING);
-    int margin  = (int)(width*RubikActivity.SMALL_MARGIN);
+    int padding = (int)(height*PADDING);
+    int margin  = (int)(height*MARGIN);
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(0,LinearLayout.LayoutParams.MATCH_PARENT,2.0f);
     params.topMargin    = margin;
     params.bottomMargin = margin;
@@ -282,8 +284,9 @@ public class ConfigScreen
     {
     int numObjects = RubikObjectList.getNumObjects();
     int width = act.getScreenWidthInPixels();
+    int height= act.getScreenHeightInPixels();
     mBarHeight = act.getHeightBar();
-    mButtonSize = width*RubikActivity.BUTTON_TEXT_SIZE;
+    mButtonSize = height*TEXT_SIZE;
     mObjectOrdinal = objectOrdinal;
 
     LinearLayout.LayoutParams paramsL = new LinearLayout.LayoutParams(width/4, LinearLayout.LayoutParams.MATCH_PARENT);
@@ -297,10 +300,10 @@ public class ConfigScreen
     LinearLayout layoutRight= new LinearLayout(act);
     layoutRight.setLayoutParams(paramsR);
 
-    setupObjectButton(act,width);
+    setupObjectButton(act,width,height);
     setupPrevButton(act);
     setupNextButton(act);
-    setupTextView(act,width,numObjects);
+    setupTextView(act,height,numObjects);
     setupBackButton(act);
 
     layoutLeft.addView(mObjectButton);
diff --git a/src/main/java/org/distorted/config/ConfigScreenPane.java b/src/main/java/org/distorted/config/ConfigScreenPane.java
index 279a87a0..509e1a9d 100644
--- a/src/main/java/org/distorted/config/ConfigScreenPane.java
+++ b/src/main/java/org/distorted/config/ConfigScreenPane.java
@@ -50,8 +50,8 @@ public class ConfigScreenPane
     };
 
   private static final int NUM_IDS         = IDS.length;
-  public  static final float PADDING_RATIO = 0.025f;
-  private static final float TEXT_RATIO    = 0.042f;
+  private static final float PADDING_RATIO = 0.016f;
+  private static final float TEXT_RATIO    = 0.027f;
   private static final float RADIO_RATIO   = 0.900f;
 
   private int mObjectOrdinal;
@@ -129,9 +129,9 @@ public class ConfigScreenPane
 
   ConfigScreenPane(final ConfigActivity act, int objectOrdinal)
     {
-    int width = act.getScreenWidthInPixels();
-    float textSize = width*TEXT_RATIO;
-    int padding = (int)(width*PADDING_RATIO);
+    int height = act.getScreenHeightInPixels();
+    float textSize = height*TEXT_RATIO;
+    int padding = (int)(height*PADDING_RATIO);
 
     LinearLayout configLayout    = act.findViewById(R.id.configLayout);
     LinearLayout nameLayout      = configLayout.findViewById(R.id.configLayoutName);
diff --git a/src/main/java/org/distorted/main/RubikActivity.java b/src/main/java/org/distorted/main/RubikActivity.java
index cd4bc360..c9ac0de0 100644
--- a/src/main/java/org/distorted/main/RubikActivity.java
+++ b/src/main/java/org/distorted/main/RubikActivity.java
@@ -70,7 +70,6 @@ public class RubikActivity extends AppCompatActivity
     public static final float SMALL_MARGIN        = 0.004f;
     public static final float MEDIUM_MARGIN       = 0.015f;
     public static final float LARGE_MARGIN        = 0.025f;
-    public static final float POPUP_PADDING       = 0.045f;
     public static final float BUTTON_TEXT_SIZE    = 0.05f;
     public static final float TITLE_TEXT_SIZE     = 0.06f;
     public static final float SOLVER_BMP_H_SIZE   = 0.11f;
@@ -85,6 +84,8 @@ public class RubikActivity extends AppCompatActivity
     public static final float SMALL_TEXT_SIZE     = 0.035f;
     public static final float TAB_WIDTH           = 0.100f;
     public static final float TAB_HEIGHT          = 0.100f;
+    public static final float POPUP_PADDING       = 0.028f;
+    public static final float POPUP_MARGIN        = 0.016f;
 
     public static final int FLAGS =  View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                                    | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
diff --git a/src/main/java/org/distorted/screens/RubikScreenPlay.java b/src/main/java/org/distorted/screens/RubikScreenPlay.java
index f0004020..6f9f1bd2 100644
--- a/src/main/java/org/distorted/screens/RubikScreenPlay.java
+++ b/src/main/java/org/distorted/screens/RubikScreenPlay.java
@@ -189,9 +189,9 @@ public class RubikScreenPlay extends RubikScreenBase implements RubikNetwork.Upd
     mRowCount = (numObjects + NUM_COLUMNS-1) / NUM_COLUMNS;
     mColCount = NUM_COLUMNS;
 
-    int cubeSize = (int)(width/9);
-    int margin   = (int)(width*RubikActivity.LARGE_MARGIN);
-    int padding  = (int)(width*RubikActivity.POPUP_PADDING);
+    int cubeSize = (int)( (Math.min(width,(int)(height*0.7f))) / 9 );
+    int margin   = (int)(height*RubikActivity.POPUP_MARGIN);
+    int padding  = (int)(height*RubikActivity.POPUP_PADDING);
     mObjectSize  = (int)(cubeSize + 2*margin + 0.5f);
     mMaxRowCount = (int)((height-1.8f*mUpperBarHeight)/mObjectSize);
 
