+
+ int tryForceHiDPISettingScale = 0;
+ String forceHiDPISettingScaleProperty = System
+ .getProperty(forceHiDPISettingScalePropertyName);
+ if (forceHiDPISettingScaleProperty != null)
+ {
+ try
+ {
+ tryForceHiDPISettingScale = Integer
+ .parseInt(forceHiDPISettingScaleProperty);
+ } catch (NumberFormatException e)
+ {
+ System.err.println(forceHiDPISettingScalePropertyName
+ + " property give (" + forceHiDPISettingScaleProperty
+ + ") but not parseable as integer");
+ }
+ }
+ forceHiDPISettingScale = tryForceHiDPISettingScale;
+ }
+
+ private void init()
+ {
+ if (doneInit)
+ {
+ return;
+ }
+
+ // try and get screen resolution
+ try
+ {
+ dpi = Toolkit.getDefaultToolkit().getScreenResolution();
+ } catch (Throwable t)
+ {
+ System.err.println("Cannot get screen resolution");
+ }
+
+ // try and get screen size height
+ try
+ {
+ height = Toolkit.getDefaultToolkit().getScreenSize().height;
+ } catch (Throwable t)
+ {
+ System.err.println("Cannot get screen size height");
+ }
+
+ if (forceHiDPISetting && forceHiDPISettingScale > 0)
+ {
+ scale = forceHiDPISettingScale;
+ }
+ else
+ {
+ // attempt at a formula for scaling based on screen dpi and height. scale
+ // will be an integer >=1
+ scale = Math.min(dpi / hidpiThreshold, height / tallScreenThreshold)
+ + 1;
+ }
+
+ allowScalePropertyArg = (scale > 1 && isLinux) || forceHiDPISetting;
+
+ if (allowScalePropertyArg)