diff -r 000000000000 -r bde4ae8d615e os/boardsupport/emulator/emulatorbsp/specific/multitouch.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/boardsupport/emulator/emulatorbsp/specific/multitouch.h Fri Jun 15 03:10:57 2012 +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 +#include +#include +#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