From ed4cf029c22c3380e04971011a51ef2c666aa6d9 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Tue, 31 Jan 2023 04:20:16 +0100 Subject: NativeWindow: Add getBounds() (moved from NEWT Window) and getSurfaceBounds() --- src/newt/classes/com/jogamp/newt/Window.java | 6 --- .../com/jogamp/newt/javafx/NewtCanvasJFX.java | 31 ++++++++++----- .../classes/com/jogamp/newt/opengl/GLWindow.java | 5 +++ .../classes/com/jogamp/newt/swt/NewtCanvasSWT.java | 44 +++++++++++++--------- 4 files changed, 53 insertions(+), 33 deletions(-) (limited to 'src/newt/classes/com/jogamp') diff --git a/src/newt/classes/com/jogamp/newt/Window.java b/src/newt/classes/com/jogamp/newt/Window.java index 607ed285c..5134708c4 100644 --- a/src/newt/classes/com/jogamp/newt/Window.java +++ b/src/newt/classes/com/jogamp/newt/Window.java @@ -624,12 +624,6 @@ public interface Window extends NativeWindow, WindowClosingProtocol, ScalableSur // Modes / States // - /** - * Returns a newly created {@link Rectangle} containing window origin, {@link #getX()} & {@link #getY()}, - * and size, {@link #getWidth()} & {@link #getHeight()}, in window units. - */ - Rectangle getBounds(); - /** * Returns the pixels per millimeter of this window's {@link NativeSurface} * according to the {@link #getMainMonitor() main monitor}'s current {@link MonitorMode mode}'s diff --git a/src/newt/classes/com/jogamp/newt/javafx/NewtCanvasJFX.java b/src/newt/classes/com/jogamp/newt/javafx/NewtCanvasJFX.java index ae46e2922..288516deb 100644 --- a/src/newt/classes/com/jogamp/newt/javafx/NewtCanvasJFX.java +++ b/src/newt/classes/com/jogamp/newt/javafx/NewtCanvasJFX.java @@ -573,6 +573,16 @@ public class NewtCanvasJFX extends Canvas implements NativeWindowHolder, WindowC return 0; } + @Override + public int getX() { + return NewtCanvasJFX.this.clientArea.getX(); // FIXME: Use 'scale' or an actual window-width + } + + @Override + public int getY() { + return NewtCanvasJFX.this.clientArea.getY(); // FIXME: Use 'scale' or an actual window-width + } + @Override public int getWidth() { return getSurfaceWidth(); // FIXME: Use 'scale' or an actual window-width @@ -583,6 +593,17 @@ public class NewtCanvasJFX extends Canvas implements NativeWindowHolder, WindowC return getSurfaceHeight(); // FIXME: Use 'scale' or an actual window-width } + @Override + public final Rectangle getBounds() { + return new Rectangle(getX(), getY(), getWidth(), getHeight()); + } + + @Override + public final Rectangle getSurfaceBounds() { + return new Rectangle(getX(), getY(), // FIXME: 'scale' window -> pixel size + getSurfaceWidth(), getSurfaceHeight()); + } + @Override public final int[] convertToWindowUnits(final int[] pixelUnitsAndResult) { return pixelUnitsAndResult; // FIXME HiDPI: use 'pixelScale' @@ -642,16 +663,6 @@ public class NewtCanvasJFX extends Canvas implements NativeWindowHolder, WindowC return insets; } - @Override - public int getX() { - return NewtCanvasJFX.this.clientArea.getX(); - } - - @Override - public int getY() { - return NewtCanvasJFX.this.clientArea.getY(); - } - @Override public Point getLocationOnScreen(final Point point) { final Point los = NativeWindowFactory.getLocationOnScreen(this); // client window location on screen diff --git a/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java b/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java index c7e1c0a45..6b102ea68 100644 --- a/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java +++ b/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java @@ -466,6 +466,11 @@ public class GLWindow extends GLAutoDrawableBase implements GLAutoDrawable, Wind return window.getSurfaceHeight(); } + @Override + public final Rectangle getSurfaceBounds() { + return window.getSurfaceBounds(); + } + @Override public final int[] convertToWindowUnits(final int[] pixelUnitsAndResult) { return window.convertToWindowUnits(pixelUnitsAndResult); diff --git a/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java b/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java index fd9709331..b545a2e77 100644 --- a/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java +++ b/src/newt/classes/com/jogamp/newt/swt/NewtCanvasSWT.java @@ -54,7 +54,6 @@ import jogamp.newt.swt.SWTEDTUtil; import org.eclipse.swt.SWT; import org.eclipse.swt.SWTException; import org.eclipse.swt.graphics.Color; -import org.eclipse.swt.graphics.Rectangle; import org.eclipse.swt.widgets.Canvas; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Event; @@ -80,7 +79,7 @@ public class NewtCanvasSWT extends Canvas implements NativeWindowHolder, WindowC private WindowClosingMode newtChildClosingMode = WindowClosingMode.DISPOSE_ON_CLOSE; private final WindowClosingMode closingMode = WindowClosingMode.DISPOSE_ON_CLOSE; - private volatile Rectangle clientAreaPixels, clientAreaWindow; + private volatile org.eclipse.swt.graphics.Rectangle clientAreaPixels, clientAreaWindow; /** pixelScale = pixelUnit / windowUnix */ private volatile float[] pixelScale = new float[] { 1f, 1f }; @@ -197,7 +196,7 @@ public class NewtCanvasSWT extends Canvas implements NativeWindowHolder, WindowC *

* @param r containing desired size */ - private final void setNewtChildSize(final Rectangle r) { + private final void setNewtChildSize(final org.eclipse.swt.graphics.Rectangle r) { if( !SWTAccessor.isOSX ) { final Point p = SWTAccessor.deviceZoomScaleUp(new Point(r.width, r.height)); newtChild.setSize(p.getX(), p.getY()); @@ -344,7 +343,7 @@ public class NewtCanvasSWT extends Canvas implements NativeWindowHolder, WindowC return true; // already valid } updatePosSizeCheck(); - final Rectangle nClientAreaWindow = clientAreaWindow; + final org.eclipse.swt.graphics.Rectangle nClientAreaWindow = clientAreaWindow; if(0 >= nClientAreaWindow.width || 0 >= nClientAreaWindow.height) { return false; } @@ -378,9 +377,9 @@ public class NewtCanvasSWT extends Canvas implements NativeWindowHolder, WindowC } protected final void updatePosSizeCheck() { - final Rectangle oClientAreaWindow = clientAreaWindow; - final Rectangle nClientAreaPixels = SWTAccessor.getClientAreaInPixels(this); - final Rectangle nClientAreaWindow = getClientArea(); + final org.eclipse.swt.graphics.Rectangle oClientAreaWindow = clientAreaWindow; + final org.eclipse.swt.graphics.Rectangle nClientAreaPixels = SWTAccessor.getClientAreaInPixels(this); + final org.eclipse.swt.graphics.Rectangle nClientAreaWindow = getClientArea(); final boolean sizeChanged, posChanged; { sizeChanged = nClientAreaWindow.width != oClientAreaWindow.width || nClientAreaWindow.height != oClientAreaWindow.height; @@ -688,6 +687,16 @@ public class NewtCanvasSWT extends Canvas implements NativeWindowHolder, WindowC return 0; } + @Override + public int getX() { + return 0; + } + + @Override + public int getY() { + return 0; + } + @Override public int getWidth() { return newtScaleUp(clientAreaWindow.width, clientAreaWindow.width); @@ -698,6 +707,17 @@ public class NewtCanvasSWT extends Canvas implements NativeWindowHolder, WindowC return newtScaleUp(clientAreaWindow.height, clientAreaWindow.height); } + @Override + public final com.jogamp.nativewindow.util.Rectangle getBounds() { + return new com.jogamp.nativewindow.util.Rectangle(getX(), getY(), getWidth(), getHeight()); + } + + @Override + public final com.jogamp.nativewindow.util.Rectangle getSurfaceBounds() { + return new com.jogamp.nativewindow.util.Rectangle(getX(), getY(), + getSurfaceWidth(), getSurfaceHeight()); + } + @Override public final int[] convertToWindowUnits(final int[] pixelUnitsAndResult) { pixelUnitsAndResult[0] /= pixelScale[0]; @@ -761,16 +781,6 @@ public class NewtCanvasSWT extends Canvas implements NativeWindowHolder, WindowC return insets; } - @Override - public int getX() { - return 0; - } - - @Override - public int getY() { - return 0; - } - @Override public Point getLocationOnScreen(final Point point) { final Point los = NativeWindowFactory.getLocationOnScreen(this); // client window location on screen -- cgit v1.2.3