--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/emulator/emulatorbsp/specific/multitouch.h Tue Feb 02 01:39:10 2010 +0200
@@ -0,0 +1,113 @@
+// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+// wins\specific\multitouch.h
+//
+//
+#ifndef MULTITOUCH_H
+#define MULTITOUCH_H
+
+#include <e32err.h>
+#include <emulator.h>
+#include <commctrl.h>
+#include "multitouchwindowsheader.h"
+
+#ifndef WM_INPUT
+#define WM_INPUT 0x00ff
+#endif
+
+/**
+ * The main class for Multitouch
+*/
+class DMultiTouch
+ {
+public:
+ DMultiTouch(TInt aProximityStep, TInt aPressureStep);
+ void OnWmInput(HWND aHWnd,TUint aMessage,TUint aWParam,TUint aLParam,HWND aParentHwnd);
+ void ShowPrimaryCursor(HWND aHWnd);
+ static bool Init();
+ static void ShowCursors();
+ static void HideCursors();
+ BOOL Register();
+ BOOL UnRegister();
+
+public:
+ static int iNumberOfMice;
+ static bool iMultiTouchSupported;
+ static bool iMultiTouchCreated;
+ static bool iMultiTouchTempEnabled;
+ int iZMaxRange;
+ int iPressureStep;
+ int iProximityStep;
+ int iMaxPressure;
+ };
+
+extern DMultiTouch* TheMultiTouch;
+extern void MultiTouchWndPointer(TUint message,TInt aXpos,TInt aYpos, TInt aPointerId, TInt aZ);
+
+/**
+ * The class of the Cursor Window
+ */
+class CursorWindow
+{
+public:
+ CursorWindow();
+ HWND Create(HMODULE hm, HWND hwndParent, int number);
+ BOOL SetCursor(HCURSOR hc);
+ void GetPosition(POINT& pt);
+ void SetPosition(POINT& pt);
+ void Show();
+ void Hide();
+
+ HWND iHwnd;
+ int iNumber;
+ HCURSOR iCursor;
+ POINT iHotspot;
+};
+
+/**
+ * The class encapsulating each mouse device
+ */
+class DMultiMouse
+ {
+public:
+ DMultiMouse();
+ static TInt Add(RAWINPUTDEVICELIST& aDev);
+ static DMultiMouse* Find(HANDLE aHandle);
+ void HandleRawMouseEvent(RAWMOUSE& aEvent, HWND aWnd);
+ void CreateCursor(LPVOID aArg, HWND aWnd);
+ enum
+ {KMaxMice = 8};
+
+private:
+ void CorrectSystemMouse();
+ void ShowMousePos(HWND aHWnd);
+
+private:
+ int iX;
+ int iY;
+ int iZ;
+ HANDLE iDevice;
+ int iId;
+
+public:
+ bool iIsPrimary;
+ CursorWindow iCursorWnd;
+
+ static DMultiMouse iMice[KMaxMice];
+ static int iNumMice;
+ static DMultiMouse* iPrimary;
+ static int iMouseId;
+ };
+
+#endif