From bdf1876f0fd654be02a9441e3dca7cfd7df26d58 Mon Sep 17 00:00:00 2001 From: Sven Gothel Date: Tue, 11 Oct 2011 02:11:02 +0200 Subject: NEWT Pointer Mods: Propagate 'confined' and 'invisible' to modifier mask of InputEvent (Mouse) ; Test confined navigation w/ GearsES2 InputEvent adds new MASK values: CONFINED_MASK and INVISIBLE_MASK, set at event creation allowing convenient testing of these mods. GearsES2 demonstrates the confined navigation testing the CONFINED_MASK and if having his mode acting on mouseMoved(..) and reset the mouse position. --- .../classes/com/jogamp/newt/event/InputEvent.java | 27 ++++++---- .../classes/com/jogamp/newt/event/MouseEvent.java | 1 + src/newt/classes/jogamp/newt/WindowImpl.java | 8 +++ .../jogamp/newt/awt/event/AWTNewtEventFactory.java | 14 +++++- .../android/event/AndroidNewtEventFactory.java | 16 ++++-- .../opengl/test/junit/jogl/demos/es2/GearsES2.java | 58 ++++++++++++++-------- .../jogl/demos/es2/newt/TestGearsES2NEWT.java | 2 +- 7 files changed, 90 insertions(+), 36 deletions(-) (limited to 'src') diff --git a/src/newt/classes/com/jogamp/newt/event/InputEvent.java b/src/newt/classes/com/jogamp/newt/event/InputEvent.java index 40a5c84a8..dcbd1eb94 100644 --- a/src/newt/classes/com/jogamp/newt/event/InputEvent.java +++ b/src/newt/classes/com/jogamp/newt/event/InputEvent.java @@ -34,16 +34,19 @@ package com.jogamp.newt.event; +@SuppressWarnings("serial") public abstract class InputEvent extends NEWTEvent { - public static final int SHIFT_MASK = 1 << 0; - public static final int CTRL_MASK = 1 << 1; - public static final int META_MASK = 1 << 2; - public static final int ALT_MASK = 1 << 3; - public static final int ALT_GRAPH_MASK = 1 << 5; - public static final int BUTTON1_MASK = 1 << 6; - public static final int BUTTON2_MASK = 1 << 7; - public static final int BUTTON3_MASK = 1 << 8; + public static final int SHIFT_MASK = 1 << 0; + public static final int CTRL_MASK = 1 << 1; + public static final int META_MASK = 1 << 2; + public static final int ALT_MASK = 1 << 3; + public static final int ALT_GRAPH_MASK = 1 << 5; + public static final int BUTTON1_MASK = 1 << 6; + public static final int BUTTON2_MASK = 1 << 7; + public static final int BUTTON3_MASK = 1 << 8; + public static final int CONFINED_MASK = 1 << 16; + public static final int INVISIBLE_MASK = 1 << 16; protected InputEvent(int eventType, Object source, long when, int modifiers) { super(eventType, source, when); @@ -68,6 +71,12 @@ public abstract class InputEvent extends NEWTEvent public boolean isShiftDown() { return (modifiers&SHIFT_MASK)!=0; } + public boolean isConfined() { + return (modifiers&CONFINED_MASK)!=0; + } + public boolean isInvisible() { + return (modifiers&INVISIBLE_MASK)!=0; + } /** * @return Array of pressed mouse buttons [{@link MouseEvent#BUTTON1} ..]. @@ -100,7 +109,7 @@ public abstract class InputEvent extends NEWTEvent } public String toString() { - return "InputEvent[modifiers:"+modifiers+", "+super.toString()+"]"; + return "InputEvent[modifiers: 0x"+Integer.toHexString(modifiers)+", "+super.toString()+"]"; } private final int modifiers; diff --git a/src/newt/classes/com/jogamp/newt/event/MouseEvent.java b/src/newt/classes/com/jogamp/newt/event/MouseEvent.java index 2c12049c4..ccc674f1d 100644 --- a/src/newt/classes/com/jogamp/newt/event/MouseEvent.java +++ b/src/newt/classes/com/jogamp/newt/event/MouseEvent.java @@ -34,6 +34,7 @@ package com.jogamp.newt.event; +@SuppressWarnings("serial") public class MouseEvent extends InputEvent { public static final int BUTTON1 = 1; diff --git a/src/newt/classes/jogamp/newt/WindowImpl.java b/src/newt/classes/jogamp/newt/WindowImpl.java index b5cd3e5fd..637f36594 100644 --- a/src/newt/classes/jogamp/newt/WindowImpl.java +++ b/src/newt/classes/jogamp/newt/WindowImpl.java @@ -45,6 +45,7 @@ import com.jogamp.newt.Window; import com.jogamp.common.util.locks.LockFactory; import com.jogamp.common.util.locks.RecursiveLock; import com.jogamp.newt.ScreenMode; +import com.jogamp.newt.event.InputEvent; import com.jogamp.newt.event.KeyEvent; import com.jogamp.newt.event.KeyListener; import com.jogamp.newt.event.MouseEvent; @@ -1897,6 +1898,13 @@ public abstract class WindowImpl implements Window, NEWTEventConsumer MouseEvent eClicked = null; MouseEvent e = null; + if(isPointerConfined()) { + modifiers |= InputEvent.CONFINED_MASK; + } + if(!isPointerVisible()) { + modifiers |= InputEvent.INVISIBLE_MASK; + } + if(MouseEvent.EVENT_MOUSE_PRESSED==eventType) { if(when-lastMousePressed