From 678a85b1a46c29056536b6e8bc3c7a3ea1e3d1df Mon Sep 17 00:00:00 2001 From: Ben Soares Date: Sun, 21 Jun 2020 01:23:37 +0100 Subject: [PATCH] JAL-3609 New auto-scale 'formula' for linux HiDPI. Tested to work for UHD screen in various OS display settings. --- getdown/lib/getdown-core.jar | Bin 150945 -> 151097 bytes getdown/lib/getdown-launcher-local.jar | Bin 908645 -> 908796 bytes getdown/lib/getdown-launcher.jar | Bin 908651 -> 908803 bytes .../src/main/java/jalview/bin/HiDPISetting.java | 126 ++++++++++++-------- j11lib/getdown-core.jar | Bin 150945 -> 151097 bytes j8lib/getdown-core.jar | Bin 150945 -> 151097 bytes src/jalview/bin/HiDPISetting.java | 126 ++++++++++++-------- 7 files changed, 158 insertions(+), 94 deletions(-) diff --git a/getdown/lib/getdown-core.jar b/getdown/lib/getdown-core.jar index ca1ebe8096e75b09560886f9313a491be4eb7a8c..01c99fdc4eb941d82cfaa17f2a1c6c1646db00f0 100644 GIT binary patch delta 6137 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 diff --git a/getdown/lib/getdown-launcher-local.jar b/getdown/lib/getdown-launcher-local.jar index be291c533d8ac68952d367eb376bb7fc27b58c62..9ac55690fa0beeb30929c70d676a7e389b0318d8 100644 GIT binary patch delta 36670 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 RxqhsRKteCvvG+T*=s$C;wQm3b diff --git a/getdown/lib/getdown-launcher.jar b/getdown/lib/getdown-launcher.jar index 8e17141a58d1fc19b6716b823344ef9b957d5709..d63f92b55606eca2ada897e8da6f905429049977 100644 GIT binary patch delta 36794 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 Kt{y|oFW`UWdrVsZ delta 37375 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 I(G}zV0|xT-g#Z8m diff --git a/getdown/src/getdown/core/src/main/java/jalview/bin/HiDPISetting.java b/getdown/src/getdown/core/src/main/java/jalview/bin/HiDPISetting.java index 3ff683e..497900f 100644 --- a/getdown/src/getdown/core/src/main/java/jalview/bin/HiDPISetting.java +++ b/getdown/src/getdown/core/src/main/java/jalview/bin/HiDPISetting.java @@ -1,20 +1,23 @@ package jalview.bin; +import java.awt.HeadlessException; import java.awt.Toolkit; public class HiDPISetting { - private static final int hidpiThreshold = 130; + private static final int hidpiThreshold = 160; - private static final int tallScreenThreshold = 1400; + private static final int hidpiMultiThreshold = 240; - private static final String scalePropertyName = "sun.java2d.uiScale"; + private static final int bigScreenThreshold = 1400; - private static final boolean isAMac; + private static final String scalePropertyName = "sun.java2d.uiScale"; private static final boolean isLinux; - private static final boolean isWindows; + // private static final boolean isAMac; + + // private static final boolean isWindows; public static final String setHiDPIPropertyName = "setHiDPI"; @@ -38,11 +41,19 @@ public class HiDPISetting static { - isAMac = System.getProperty("os.name").indexOf("Mac") > -1; - isLinux = System.getProperty("os.name").toLowerCase() - .indexOf("linux") > -1; - isWindows = System.getProperty("os.name").toLowerCase() - .indexOf("windows") > -1; + String system = System.getProperty("os.name") == null ? null + : System.getProperty("os.name").toLowerCase(); + if (system != null) + { + isLinux = system.indexOf("linux") > -1; + // isAMac = system.indexOf("mac") > -1; + // isWindows = system.indexOf("windows") > -1; + } + else + { + isLinux = false; + // isAMac = isWindows = false; + } } private static void init() @@ -52,6 +63,7 @@ public class HiDPISetting return; } + // get and use command line property values first String setHiDPIProperty = System.getProperty(setHiDPIPropertyName); setHiDPI = setHiDPIProperty != null && setHiDPIProperty.equalsIgnoreCase("true"); @@ -69,14 +81,44 @@ public class HiDPISetting + setHiDPIScaleProperty + ") but not parseable as integer"); } } + if (setHiDPI && setHiDPIScale > 0) + { + setHiDPIScale(setHiDPIScale); + return; + } + + // check to see if the scale property has already been set by something else + // (e.g. the OS) + String existingProperty = System.getProperty(scalePropertyName); + if (existingProperty != null) + { + try + { + int existingPropertyVal = Integer.parseInt(existingProperty); + System.out.println("Existing " + scalePropertyName + " is " + + existingPropertyVal); + if (existingPropertyVal > 1) + { + setHiDPIScale(existingPropertyVal); + return; + } + } catch (NumberFormatException e) + { + System.out.println("Could not convert property " + scalePropertyName + + " vale '" + existingProperty + "' to number"); + } + } + + // Try and auto guess a good scale based on reported DPI (not trustworthy) + // and screen resolution (more trustworthy) - // try and get screen resolution + // get screen dpi try { dpi = Toolkit.getDefaultToolkit().getScreenResolution(); - } catch (Throwable t) + } catch (HeadlessException e) { - System.err.println("Cannot get screen resolution"); + System.err.println("Cannot get screen resolution: " + e.getMessage()); } // try and get screen size height and width @@ -86,48 +128,38 @@ public class HiDPISetting int width = Toolkit.getDefaultToolkit().getScreenSize().width; // using mindimension in case of portrait screens mindimension = Math.min(height, width); - } catch (Throwable t) + } catch (HeadlessException e) { - System.err.println("Cannot get screen size height and width"); + System.err.println( + "Cannot get screen size height and width:" + e.getMessage()); } - if (setHiDPI && setHiDPIScale > 0) - { - scale = setHiDPIScale; - } - else - { - // attempt at a formula for scaling based on screen dpi and mindimension. - // scale - // will be an integer >=1 - if (dpi > 0 && mindimension > 0) - { - scale = Math.min(dpi / hidpiThreshold, - mindimension / tallScreenThreshold) + 1; - } - else if (dpi == 0 && mindimension > tallScreenThreshold) - { - // dpi couldn't be found but the screen has a large vertical pixel count - scale = mindimension / tallScreenThreshold + 1; - } - /* do nothing if mindimension == 0 -- might be just a small HD screen (e.g. Gemini PDA) - else if (mindimension == 0 && dpi > hidpiThreshold) - { - } - */ - } + // attempt at a formula for scaling based on screen dpi and mindimension. + // scale will be an integer >=1. This formula is based on some testing and + // guesswork! + + // scale based on reported dpi. if dpi>hidpiThreshold then scale=2+multiples + // of hidpiMultiThreshold (else scale=1) + // (e.g. dpi of 110 scales 1. dpi of 120 scales 2. dpi of 360 scales 3) + int dpiScale = (dpi - hidpiThreshold > 0) + ? 2 + ((dpi - hidpiThreshold) / hidpiMultiThreshold) + : 1; - // only make a change if scale is changed and other conditions (OS is linux) - // apply, or if setHiDPI has been specified - allowScalePropertyArg = (scale > 1 && isLinux) || setHiDPI; + int dimensionScale = 1 + (mindimension / bigScreenThreshold); - if (allowScalePropertyArg) + // choose larger of dimensionScale or dpiScale (most likely dimensionScale + // as dpiScale often misreported) + int autoScale = Math.max(dpiScale, dimensionScale); + + // only make an automatic change if scale is changed and other conditions + // (OS is linux) apply, or if setHiDPI has been specified + if ((autoScale > 1 && isLinux) || setHiDPI) { - System.out.println("boolean setHiDPI=" + setHiDPI); - System.out.println("DPI detected as " + dpi - + ". Scaling factor set to " + scale + "."); + setHiDPIScale(autoScale); + return; } + // looks like we're not doing any scaling doneInit = true; } diff --git a/j11lib/getdown-core.jar b/j11lib/getdown-core.jar index ca1ebe8096e75b09560886f9313a491be4eb7a8c..01c99fdc4eb941d82cfaa17f2a1c6c1646db00f0 100644 GIT binary patch delta 6137 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 diff --git a/j8lib/getdown-core.jar b/j8lib/getdown-core.jar index ca1ebe8096e75b09560886f9313a491be4eb7a8c..01c99fdc4eb941d82cfaa17f2a1c6c1646db00f0 100644 GIT binary patch delta 6137 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 diff --git a/src/jalview/bin/HiDPISetting.java b/src/jalview/bin/HiDPISetting.java index 3ff683e..497900f 100644 --- a/src/jalview/bin/HiDPISetting.java +++ b/src/jalview/bin/HiDPISetting.java @@ -1,20 +1,23 @@ package jalview.bin; +import java.awt.HeadlessException; import java.awt.Toolkit; public class HiDPISetting { - private static final int hidpiThreshold = 130; + private static final int hidpiThreshold = 160; - private static final int tallScreenThreshold = 1400; + private static final int hidpiMultiThreshold = 240; - private static final String scalePropertyName = "sun.java2d.uiScale"; + private static final int bigScreenThreshold = 1400; - private static final boolean isAMac; + private static final String scalePropertyName = "sun.java2d.uiScale"; private static final boolean isLinux; - private static final boolean isWindows; + // private static final boolean isAMac; + + // private static final boolean isWindows; public static final String setHiDPIPropertyName = "setHiDPI"; @@ -38,11 +41,19 @@ public class HiDPISetting static { - isAMac = System.getProperty("os.name").indexOf("Mac") > -1; - isLinux = System.getProperty("os.name").toLowerCase() - .indexOf("linux") > -1; - isWindows = System.getProperty("os.name").toLowerCase() - .indexOf("windows") > -1; + String system = System.getProperty("os.name") == null ? null + : System.getProperty("os.name").toLowerCase(); + if (system != null) + { + isLinux = system.indexOf("linux") > -1; + // isAMac = system.indexOf("mac") > -1; + // isWindows = system.indexOf("windows") > -1; + } + else + { + isLinux = false; + // isAMac = isWindows = false; + } } private static void init() @@ -52,6 +63,7 @@ public class HiDPISetting return; } + // get and use command line property values first String setHiDPIProperty = System.getProperty(setHiDPIPropertyName); setHiDPI = setHiDPIProperty != null && setHiDPIProperty.equalsIgnoreCase("true"); @@ -69,14 +81,44 @@ public class HiDPISetting + setHiDPIScaleProperty + ") but not parseable as integer"); } } + if (setHiDPI && setHiDPIScale > 0) + { + setHiDPIScale(setHiDPIScale); + return; + } + + // check to see if the scale property has already been set by something else + // (e.g. the OS) + String existingProperty = System.getProperty(scalePropertyName); + if (existingProperty != null) + { + try + { + int existingPropertyVal = Integer.parseInt(existingProperty); + System.out.println("Existing " + scalePropertyName + " is " + + existingPropertyVal); + if (existingPropertyVal > 1) + { + setHiDPIScale(existingPropertyVal); + return; + } + } catch (NumberFormatException e) + { + System.out.println("Could not convert property " + scalePropertyName + + " vale '" + existingProperty + "' to number"); + } + } + + // Try and auto guess a good scale based on reported DPI (not trustworthy) + // and screen resolution (more trustworthy) - // try and get screen resolution + // get screen dpi try { dpi = Toolkit.getDefaultToolkit().getScreenResolution(); - } catch (Throwable t) + } catch (HeadlessException e) { - System.err.println("Cannot get screen resolution"); + System.err.println("Cannot get screen resolution: " + e.getMessage()); } // try and get screen size height and width @@ -86,48 +128,38 @@ public class HiDPISetting int width = Toolkit.getDefaultToolkit().getScreenSize().width; // using mindimension in case of portrait screens mindimension = Math.min(height, width); - } catch (Throwable t) + } catch (HeadlessException e) { - System.err.println("Cannot get screen size height and width"); + System.err.println( + "Cannot get screen size height and width:" + e.getMessage()); } - if (setHiDPI && setHiDPIScale > 0) - { - scale = setHiDPIScale; - } - else - { - // attempt at a formula for scaling based on screen dpi and mindimension. - // scale - // will be an integer >=1 - if (dpi > 0 && mindimension > 0) - { - scale = Math.min(dpi / hidpiThreshold, - mindimension / tallScreenThreshold) + 1; - } - else if (dpi == 0 && mindimension > tallScreenThreshold) - { - // dpi couldn't be found but the screen has a large vertical pixel count - scale = mindimension / tallScreenThreshold + 1; - } - /* do nothing if mindimension == 0 -- might be just a small HD screen (e.g. Gemini PDA) - else if (mindimension == 0 && dpi > hidpiThreshold) - { - } - */ - } + // attempt at a formula for scaling based on screen dpi and mindimension. + // scale will be an integer >=1. This formula is based on some testing and + // guesswork! + + // scale based on reported dpi. if dpi>hidpiThreshold then scale=2+multiples + // of hidpiMultiThreshold (else scale=1) + // (e.g. dpi of 110 scales 1. dpi of 120 scales 2. dpi of 360 scales 3) + int dpiScale = (dpi - hidpiThreshold > 0) + ? 2 + ((dpi - hidpiThreshold) / hidpiMultiThreshold) + : 1; - // only make a change if scale is changed and other conditions (OS is linux) - // apply, or if setHiDPI has been specified - allowScalePropertyArg = (scale > 1 && isLinux) || setHiDPI; + int dimensionScale = 1 + (mindimension / bigScreenThreshold); - if (allowScalePropertyArg) + // choose larger of dimensionScale or dpiScale (most likely dimensionScale + // as dpiScale often misreported) + int autoScale = Math.max(dpiScale, dimensionScale); + + // only make an automatic change if scale is changed and other conditions + // (OS is linux) apply, or if setHiDPI has been specified + if ((autoScale > 1 && isLinux) || setHiDPI) { - System.out.println("boolean setHiDPI=" + setHiDPI); - System.out.println("DPI detected as " + dpi - + ". Scaling factor set to " + scale + "."); + setHiDPIScale(autoScale); + return; } + // looks like we're not doing any scaling doneInit = true; } -- 1.7.10.2