diff options
author | Sven Gothel <[email protected]> | 2011-10-10 05:10:26 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2011-10-10 05:10:26 +0200 |
commit | 24e0591b6be036d5389cc1eb986ed5e86043ba65 (patch) | |
tree | e9abb4999bad2f01860490338b0dc588818ee495 /src/newt/classes/com/jogamp | |
parent | 51a9f23d629cd4e6b22d7afaf009bb96b2ed270f (diff) |
NEWT: Add pointer features: visibility, confined and warp (move)
visibility:
- set pointer visible or invisible
confined:
- confine pointer to window, or not
warp:
- set mouse position within the window
Implemented for X11, tested manually with TestGearsES2NEWT (see code for action keys).
TODO: Windows, MaxOSX and Android (limited)
Diffstat (limited to 'src/newt/classes/com/jogamp')
-rw-r--r-- | src/newt/classes/com/jogamp/newt/Window.java | 34 | ||||
-rw-r--r-- | src/newt/classes/com/jogamp/newt/opengl/GLWindow.java | 19 |
2 files changed, 53 insertions, 0 deletions
diff --git a/src/newt/classes/com/jogamp/newt/Window.java b/src/newt/classes/com/jogamp/newt/Window.java index 24555bf39..a69b8dbb3 100644 --- a/src/newt/classes/com/jogamp/newt/Window.java +++ b/src/newt/classes/com/jogamp/newt/Window.java @@ -225,6 +225,40 @@ public interface Window extends NativeWindow, WindowClosingProtocol { String getTitle(); + boolean isPointerVisible(); + + /** + * Makes the pointer visible or invisible. + * + * @param pointerVisible defaults to <code>true</code> for platforms w/ visible pointer, + * otherwise defaults to <code>true</code>, eg. Android. + * @see #confinePointer(boolean) + */ + void setPointerVisible(boolean pointerVisible); + + boolean isPointerConfined(); + + /** + * Confine the pointer to this window, ie. pointer jail. + * <p> + * In combination w/ {@link #warpPointer(int, int)} + * and maybe {@link #setPointerVisible(boolean)} a simple mouse + * navigation can be realized.</p> + * + * @param confine defaults to <code>false</code>. + */ + void confinePointer(boolean confine); + + /** + * Moves the pointer to x/y relative to this window's origin. + * + * @param x relative pointer x position within this window + * @param y relative pointer y position within this window + * + * @see #confinePointer(boolean) + */ + void warpPointer(int x, int y); + /** Defining ids for the reparenting strategy */ public interface ReparentAction { /** No native reparenting valid */ diff --git a/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java b/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java index 3a49c06f0..5001e55e5 100644 --- a/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java +++ b/src/newt/classes/com/jogamp/newt/opengl/GLWindow.java @@ -215,10 +215,29 @@ public class GLWindow implements GLAutoDrawable, Window, NEWTEventConsumer, FPSC return window.getTitle(); } + public final boolean isPointerVisible() { + return window.isPointerVisible(); + } + + public final void setPointerVisible(boolean mouseVisible) { + window.setPointerVisible(mouseVisible); + } + + public final boolean isPointerConfined() { + return window.isPointerConfined(); + } + + public final void confinePointer(boolean grab) { + window.confinePointer(grab); + } + public final void setUndecorated(boolean value) { window.setUndecorated(value); } + public final void warpPointer(int x, int y) { + window.warpPointer(x, y); + } public final boolean isUndecorated() { return window.isUndecorated(); } |