summaryrefslogtreecommitdiffstats
path: root/src/newt/classes/com/jogamp
diff options
context:
space:
mode:
authorSven Gothel <[email protected]>2020-01-16 01:37:21 +0100
committerSven Gothel <[email protected]>2020-01-16 01:37:21 +0100
commit78609202731252f0024e6330cc94c52b05c1d146 (patch)
treea83bec90b7b1fe634ad57e064cdbdea39b6e4c00 /src/newt/classes/com/jogamp
parenta0a2278721a1b0a8c5acc78d4d42b7cd7efeb47d (diff)
Bug 1422: Use own deviceZoomScaleUp(..) disregarding higher-toolkit's compensation like 'DPIUtil.useCairoAutoScale()'
We can't use DPIUtil's 'autoScaleUp(..)' method on non-native DPI scaling platforms as it uses a scale-factor of 1f if the higher toolkit compensates, i.e. 'DPIUtil.useCairoAutoScale()'. Since NEWT uses X11 and GDI directly, which are not DPI scale-aware, we have to drop the semnatics of 'DPIUtil.useCairoAutoScale()' and merely use the actual 'deviceZoom'. This was proposed by Marcel Au in the first place. At least I understand these semantics by now. +++ Additionally NewtCanvasSWT.SWTNativeWindow needs to return the 'deviceZoomScaleUp(..)' values for returning its size in window- and pixel-units (surface).
Diffstat (limited to 'src/newt/classes/com/jogamp')
-rw-r--r--src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java28
1 files changed, 21 insertions, 7 deletions
diff --git a/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java b/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java
index 0e58b389d..3bcf4fdab 100644
--- a/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java
+++ b/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java
@@ -179,8 +179,12 @@ public class NewtCanvasSWT extends Canvas implements NativeWindowHolder, WindowC
/**
* Set's the NEWT {@link Window}'s size using {@link Window#setSize(int, int)}.
* <p>
- * For all non-native DPI autoscale platforms, it utilizes {@link SWTAccessor#autoScaleUp(Point)}
- * by multiplying the given {@link Rectangle} size to emulate DPI scaling, see Bug 1422.
+ * For all non-native DPI autoscale platforms method uses {@link SWTAccessor#deviceZoomScaleUp(Point)},
+ * which multiplies the given {@link Rectangle} size with {@link SWTAccessor#getDeviceZoomScalingFactor()}
+ * to emulate DPI scaling, see Bug 1422.
+ * </p>
+ * <p>
+ * Otherwise this method uses the given {@link Rectangle} as-is.
* </p>
* <p>
* Currently native DPI autoscale platforms are
@@ -193,12 +197,22 @@ public class NewtCanvasSWT extends Canvas implements NativeWindowHolder, WindowC
*/
private final void setNewtChildSize(final Rectangle r) {
if( !SWTAccessor.isOSX ) {
- final Point p = SWTAccessor.autoScaleUp(new Point(r.width, r.height));
+ final Point p = SWTAccessor.deviceZoomScaleUp(new Point(r.width, r.height));
newtChild.setSize(p.getX(), p.getY());
} else {
newtChild.setSize(r.width, r.height);
}
}
+ /**
+ * See {@link #setNewtChildSize(Rectangle)}
+ */
+ private final int newtScaleUp(final int v) {
+ if( !SWTAccessor.isOSX ) {
+ return SWTAccessor.deviceZoomScaleUp(v);
+ } else {
+ return v;
+ }
+ }
private final Listener swtListener = new Listener () {
@Override
public void handleEvent (final Event event) {
@@ -642,12 +656,12 @@ public class NewtCanvasSWT extends Canvas implements NativeWindowHolder, WindowC
@Override
public int getWidth() {
- return clientAreaWindow.width;
+ return newtScaleUp(clientAreaWindow.width);
}
@Override
public int getHeight() {
- return clientAreaWindow.height;
+ return newtScaleUp(clientAreaWindow.height);
}
@Override
@@ -666,12 +680,12 @@ public class NewtCanvasSWT extends Canvas implements NativeWindowHolder, WindowC
@Override
public int getSurfaceWidth() {
- return clientAreaPixels.width;
+ return newtScaleUp(clientAreaPixels.width);
}
@Override
public int getSurfaceHeight() {
- return clientAreaPixels.height;
+ return newtScaleUp(clientAreaPixels.height);
}
@Override