From 3d5f37aa0deacee451de66989ea93f9e81463e3a Mon Sep 17 00:00:00 2001 From: SerpentSpirale Date: Wed, 14 Apr 2021 22:33:01 +0200 Subject: [PATCH] Add installer scaler up/down button. --- .../net/kdt/pojavlaunch/AWTCanvasView.java | 19 ++++++++--- .../pojavlaunch/JavaGUILauncherActivity.java | 33 ++++++++++++++++--- .../src/main/res/layout/install_mod.xml | 18 ++++++++++ .../src/main/res/values/strings.xml | 2 ++ 4 files changed, 62 insertions(+), 10 deletions(-) diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java index 2739d4a29..f9183f1b9 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/AWTCanvasView.java @@ -37,10 +37,19 @@ public class AWTCanvasView extends TextureView implements TextureView.SurfaceTex } /** Computes the scale to better fit the screen */ - int[] initScaleFactors(){ + void initScaleFactors(){ + initScaleFactors(0); + } + + void initScaleFactors(int forcedScale){ //Could be optimized - int minDimension = Math.min(CallbackBridge.physicalHeight,CallbackBridge.physicalWidth); - mScaleFactor = (3*minDimension)/1080; + if(forcedScale < 1) { //Auto scale + int minDimension = Math.min(CallbackBridge.physicalHeight, CallbackBridge.physicalWidth); + mScaleFactor = Math.max(((3 * minDimension) / 1080) - 1, 1); + }else{ + mScaleFactor = forcedScale; + } + int[] scales = new int[2]; //Left, Top scales[0] = (CallbackBridge.physicalWidth/2); @@ -49,7 +58,7 @@ public class AWTCanvasView extends TextureView implements TextureView.SurfaceTex scales[1] = (CallbackBridge.physicalHeight/2); scales[1] -= scales[1]/mScaleFactor; - return scales; + mScales = scales; } public AWTCanvasView(Context ctx) { @@ -65,7 +74,7 @@ public class AWTCanvasView extends TextureView implements TextureView.SurfaceTex fpsPaint.setTextSize(20); setSurfaceTextureListener(this); - mScales = initScaleFactors(); + initScaleFactors(); } @Override diff --git a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java index aa5123c84..907001a06 100644 --- a/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java +++ b/app_pojavlauncher/src/main/java/net/kdt/pojavlaunch/JavaGUILauncherActivity.java @@ -36,7 +36,9 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On private boolean isLogAllow, mSkipDetectMod; private boolean rightOverride = false; - private int[] scaleFactor = initScaleFactors(); + private int scaleFactor; + private int[] scaleFactors = initScaleFactors(); + private final int fingerStillThreshold = 8; private int initialX; private int initialY; @@ -254,8 +256,8 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On } void sendScaledMousePosition(float x, float y){ - AWTInputBridge.sendMousePos((int) map(x,0,CallbackBridge.physicalWidth,scaleFactor[0],scaleFactor[2]), - (int) map(y,0,CallbackBridge.physicalHeight,scaleFactor[1],scaleFactor[3])); + AWTInputBridge.sendMousePos((int) map(x,0,CallbackBridge.physicalWidth, scaleFactors[0], scaleFactors[2]), + (int) map(y,0,CallbackBridge.physicalHeight, scaleFactors[1], scaleFactors[3])); } public void forceClose(View v) { @@ -330,9 +332,17 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On } int[] initScaleFactors(){ + return initScaleFactors(true); + } + + int[] initScaleFactors(boolean autoScale){ //Could be optimized - int minDimension = Math.min(CallbackBridge.physicalHeight,CallbackBridge.physicalWidth); - int scaleFactor = (3*minDimension)/1080; + + if(autoScale) { //Auto scale + int minDimension = Math.min(CallbackBridge.physicalHeight, CallbackBridge.physicalWidth); + scaleFactor = Math.max(((3 * minDimension) / 1080) - 1, 1); + } + int[] scales = new int[4]; //Left, Top, Right, Bottom scales[0] = (CallbackBridge.physicalWidth/2); @@ -350,4 +360,17 @@ public class JavaGUILauncherActivity extends LoggableActivity implements View.On return scales; } + public void scaleDown(View view) { + scaleFactor = Math.max(scaleFactor - 1, 1); + scaleFactors = initScaleFactors(false); + mTextureView.initScaleFactors(scaleFactor); + sendScaledMousePosition(mousePointer.getX(),mousePointer.getY()); + } + + public void scaleUp(View view) { + scaleFactor = Math.min(scaleFactor + 1, 6); + scaleFactors = initScaleFactors(false); + mTextureView.initScaleFactors(scaleFactor); + sendScaledMousePosition(mousePointer.getX(),mousePointer.getY()); + } } diff --git a/app_pojavlauncher/src/main/res/layout/install_mod.xml b/app_pojavlauncher/src/main/res/layout/install_mod.xml index 05ad90921..620fb15e3 100644 --- a/app_pojavlauncher/src/main/res/layout/install_mod.xml +++ b/app_pojavlauncher/src/main/res/layout/install_mod.xml @@ -44,6 +44,24 @@ android:onClick="openLogOutput" android:layout_toLeftOf="@id/installmod_btn2"/> +