< prev index next >

src/java.desktop/windows/native/libawt/windows/awt_Toolkit.h

Print this page

        

@@ -156,10 +156,71 @@
     J2dTraceLn4(J2D_TRACE_VERBOSE2, \
                 "CS.Left:  tid, cs, file, line = 0x%x, 0x%x, %s, %d", \
                 GetCurrentThreadId(), &(cs), THIS_FILE, __LINE__); \
 }
 
+// Redefine WinAPI values related to touch input, if OS < Windows 7.
+#if (!defined(WINVER) || ((WINVER) < 0x0601))
+    typedef UINT32 POINTER_FLAGS;
+    typedef UINT32 TOUCH_FLAGS;
+    typedef UINT32 TOUCH_MASK;
+
+    #define GET_POINTERID_WPARAM(wParam) (LOWORD (wParam))
+
+    #define WM_POINTERENTER                 0x0249
+    #define WM_NCPOINTERDOWN                0x0242
+    #define WM_NCPOINTERUP                  0x0243
+    #define WM_NCPOINTERUPDATE              0x0241
+    #define WM_POINTERACTIVATE              0x024B
+    #define WM_POINTERCAPTURECHANGED        0x024C
+    #define WM_POINTERDOWN                  0x0246
+    #define WM_POINTERLEAVE                 0x024A
+    #define WM_POINTERUP                    0x0247
+    #define WM_POINTERUPDATE                0x0245
+
+    typedef enum _POINTER_BUTTON_CHANGE_TYPE {
+      POINTER_CHANGE_NONE               ,
+      POINTER_CHANGE_FIRSTBUTTON_DOWN   ,
+      POINTER_CHANGE_FIRSTBUTTON_UP     ,
+      POINTER_CHANGE_SECONDBUTTON_DOWN  ,
+      POINTER_CHANGE_SECONDBUTTON_UP    ,
+      POINTER_CHANGE_THIRDBUTTON_DOWN   ,
+      POINTER_CHANGE_THIRDBUTTON_UP     ,
+      POINTER_CHANGE_FOURTHBUTTON_DOWN  ,
+      POINTER_CHANGE_FOURTHBUTTON_UP    ,
+      POINTER_CHANGE_FIFTHBUTTON_DOWN   ,
+      POINTER_CHANGE_FIFTHBUTTON_UP     ,
+      } POINTER_BUTTON_CHANGE_TYPE;
+
+    typedef enum tagPOINTER_INPUT_TYPE {
+      PT_POINTER   = 0x00000001,
+      PT_TOUCH     = 0x00000002,
+      PT_PEN       = 0x00000003,
+      PT_MOUSE     = 0x00000004,
+      PT_TOUCHPAD  = 0x00000005
+    } POINTER_INPUT_TYPE;
+
+    typedef struct tagPOINTER_INFO {
+      POINTER_INPUT_TYPE         pointerType;
+      UINT32                     pointerId;
+      UINT32                     frameId;
+      POINTER_FLAGS              pointerFlags;
+      HANDLE                     sourceDevice;
+      HWND                       hwndTarget;
+      POINT                      ptPixelLocation;
+      POINT                      ptHimetricLocation;
+      POINT                      ptPixelLocationRaw;
+      POINT                      ptHimetricLocationRaw;
+      DWORD                      dwTime;
+      UINT32                     historyCount;
+      INT32                      inputData;
+      DWORD                      dwKeyStates;
+      UINT64                     PerformanceCount;
+      POINTER_BUTTON_CHANGE_TYPE ButtonChangeType;
+    } POINTER_INFO;
+#endif
+
 /************************************************************************
  * AwtToolkit class
  */
 
 class AwtToolkit {

@@ -194,10 +255,14 @@
     BOOL IsDynamicLayoutActive();
     BOOL areExtraMouseButtonsEnabled();
     void setExtraMouseButtonsEnabled(BOOL enable);
     static UINT GetNumberOfButtons();
 
+    bool IsWin8OrLater();
+    BOOL TIEnableMouseInPointer(BOOL enable);
+    BOOL TIGetPointerInfo(UINT32 pointerID, POINTER_INFO *pointerInfo);
+
     INLINE BOOL localPump() { return m_localPump; }
     INLINE BOOL VerifyComponents() { return FALSE; } // TODO: Use new DebugHelper class to set this flag
     INLINE HWND GetHWnd() { return m_toolkitHWnd; }
 
     INLINE HMODULE GetModuleHandle() { return m_dllHandle; }

@@ -400,10 +465,17 @@
     BOOL m_verbose;
     BOOL m_isActive; // set to FALSE at beginning of Dispose
     BOOL m_isDisposed; // set to TRUE at end of Dispose
     BOOL m_areExtraMouseButtonsEnabled;
 
+    typedef BOOL (WINAPI *EnableMouseInPointerHandleFunc)(BOOL enable);
+    typedef BOOL (WINAPI *GetPointerInfoHandleFunc)(UINT32 pointerID, POINTER_INFO *pointerInfo);
+
+    BOOL m_isWin8OrLater;
+    EnableMouseInPointerHandleFunc m_pEnableMouseInPointerHandle;
+    GetPointerInfoHandleFunc m_pGetPointerInfoHandle;
+
     BOOL m_vmSignalled; // set to TRUE if QUERYENDSESSION has successfully
                         // raised SIGTERM
 
     BOOL m_verifyComponents;
     BOOL m_breakOnError;
< prev index next >