JAL-3609 Added a -DforceHiDPISetting=true option mainly for testing, and updated...
[jalview.git] / src / jalview / bin / HiDPISetting.java
1 package jalview.bin;
2
3 import java.awt.Toolkit;
4
5 public class HiDPISetting
6 {
7   public static final int dpi;
8
9   public static final int scale;
10
11   private static final int hidpi = 110;
12
13   private static final String scalePropertyName = "sun.java2d.uiScale";
14
15   private static final boolean isAMac;
16
17   private static final boolean isLinux;
18
19   private static final boolean isWindows;
20
21   public static final String forceHiDPISettingPropertyName = "forceHiDPISetting";
22
23   private static final boolean forceHiDPISetting;
24
25   static
26   {
27     isAMac = System.getProperty("os.name").indexOf("Mac") > -1;
28     isLinux = System.getProperty("os.name").toLowerCase()
29             .indexOf("linux") > -1;
30     isWindows = System.getProperty("os.name").toLowerCase()
31             .indexOf("windows") > -1;
32     dpi = Toolkit.getDefaultToolkit().getScreenResolution();
33     scale = dpi / hidpi + 1;
34     String forceHiDPISettingProperty = System
35             .getProperty(forceHiDPISettingPropertyName);
36     forceHiDPISetting = forceHiDPISettingProperty != null
37             && forceHiDPISettingProperty.equalsIgnoreCase("true");
38     if (doCondition())
39     {
40       System.out.println("Property '" + forceHiDPISettingPropertyName + "'="
41               + forceHiDPISettingProperty);
42       System.out.println("boolean forceHiDPISetting=" + forceHiDPISetting);
43       System.out.println("DPI detected as " + dpi
44               + ". Scaling factor set to " + scale + ".");
45     }
46   }
47
48   private static synchronized boolean doCondition()
49   {
50     return (scale > 1 && isLinux) || forceHiDPISetting;
51   }
52
53   public static synchronized String getScalePropertyArg()
54   {
55     // HiDPI setting. Just looking at Linux to start with. Test with Windows.
56     if (doCondition())
57     {
58       return "-D" + scalePropertyName + "=" + scale;
59     }
60     return null;
61   }
62 }