private static final int hidpi = 110;
- private static final String scaleProperty = "sun.java2d.uiScale";
+ private static final String scalePropertyName = "sun.java2d.uiScale";
- private static final boolean isAMac = System.getProperty("os.name")
- .indexOf("Mac") > -1;
+ private static final boolean isAMac;
- private static final boolean isLinux = System.getProperty("os.name")
- .toLowerCase().indexOf("linux") > -1;
+ private static final boolean isLinux;
- private static final boolean isWindows = System.getProperty("os.name")
- .toLowerCase().indexOf("windows") > -1;
+ private static final boolean isWindows;
+
+ public static final String forceHiDPISettingPropertyName = "forceHiDPISetting";
+
+ private static final boolean forceHiDPISetting;
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;
dpi = Toolkit.getDefaultToolkit().getScreenResolution();
scale = dpi / hidpi + 1;
- if (scale > 1 && isLinux)
+ String forceHiDPISettingProperty = System
+ .getProperty(forceHiDPISettingPropertyName);
+ forceHiDPISetting = forceHiDPISettingProperty != null
+ && forceHiDPISettingProperty.equalsIgnoreCase("true");
+ if (doCondition())
{
+ System.out.println("Property '" + forceHiDPISettingPropertyName + "'="
+ + forceHiDPISettingProperty);
+ System.out.println("boolean forceHiDPISetting=" + forceHiDPISetting);
System.out.println("DPI detected as " + dpi
+ ". Scaling factor set to " + scale + ".");
}
}
- public static String getScalePropertyArg()
+ private static synchronized boolean doCondition()
+ {
+ return (scale > 1 && isLinux) || forceHiDPISetting;
+ }
+
+ public static synchronized String getScalePropertyArg()
{
// HiDPI setting. Just looking at Linux to start with. Test with Windows.
- if (!isLinux)
- {
- return null;
- }
- if (scale > 1)
+ if (doCondition())
{
- return "-D" + scaleProperty + "=" + scale;
+ return "-D" + scalePropertyName + "=" + scale;
}
return null;
}