diff -r d40e813b23c0 -r 48060abbbeaf htiui/HtiServicePlugins/HtiKeyEventServicePlugin/src/MultiTouchPointerEventHandler.cpp --- a/htiui/HtiServicePlugins/HtiKeyEventServicePlugin/src/MultiTouchPointerEventHandler.cpp Thu Jul 15 18:39:46 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,286 +0,0 @@ -/* -* Copyright (c) 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: Functional implementation of advanced pointer multitouch service -* -*/ - -// INCLUDE FILES -#include "HtiKeyEventServicePlugin.h" -#include "MultiTouchPointerEventHandler.h" -#include "MultiTouchPointerEvent.h" - -#include -#include - -// CONSTANTS - - -// ---------------------------------------------------------------------------- -// CMultiTouchPointerEventHandler::NewL() -// ---------------------------------------------------------------------------- -CMultiTouchPointerEventHandler* CMultiTouchPointerEventHandler::NewL(MHtiMultiTouchObserver& aObserver) - { - HTI_LOG_FUNC_IN( "CMultiTouchPointerEventHandler::NewL" ); - CMultiTouchPointerEventHandler* self = new (ELeave) CMultiTouchPointerEventHandler(aObserver); - CleanupStack::PushL ( self ); - self->ConstructL(); - CleanupStack::Pop(); - HTI_LOG_FUNC_OUT( "CMultiTouchPointerEventHandler::NewL" ); - return self; - } - -// ---------------------------------------------------------------------------- -// CMultiTouchPointerEventHandler::CMultiTouchPointerEventHandler() -// ---------------------------------------------------------------------------- -CMultiTouchPointerEventHandler::CMultiTouchPointerEventHandler(MHtiMultiTouchObserver& aObserver) - :iFinishedCount(0), iObserver(aObserver) - { - HTI_LOG_TEXT( "CMultiTouchPointerEventHandler constructor" ); - } - -// ---------------------------------------------------------------------------- -// CMultiTouchPointerEventHandler::~CMultiTouchPointerEventHandler() -// ---------------------------------------------------------------------------- -CMultiTouchPointerEventHandler::~CMultiTouchPointerEventHandler() - { - HTI_LOG_TEXT( "CMultiTouchPointerEventHandler destructor" ); - Clear(); - iWsSession.Close(); - } - -// ---------------------------------------------------------------------------- -// CMultiTouchPointerEventHandler::ConstructL() -// ---------------------------------------------------------------------------- -void CMultiTouchPointerEventHandler::ConstructL() - { - HTI_LOG_TEXT( "CMultiTouchPointerEventHandler::ConstructL" ); - User::LeaveIfError( iWsSession.Connect() ); - } -// ---------------------------------------------------------------------------- -// CMultiTouchPointerEventHandler::Clear() -// ---------------------------------------------------------------------------- -void CMultiTouchPointerEventHandler::Clear() - { - HTI_LOG_TEXT( "CMultiTouchPointerEventHandler::Clear" ); - iTouchPointerArray.ResetAndDestroy(); - iFinishedCount=0; - } -// ---------------------------------------------------------------------------- -// CMultiTouchPointerEventHandler::NotifyTouchComplete() -// ---------------------------------------------------------------------------- -void CMultiTouchPointerEventHandler::NotifyTouchComplete(TUint8 aTouchNumber) - { - HTI_LOG_FUNC_IN("CMultiTouchPointerEventHandler::NotifyTouchComplete"); - - iFinishedCount++; - HTI_LOG_FORMAT( "touch number %d finished", aTouchNumber); - HTI_LOG_FORMAT( "%d touch finished", iFinishedCount); - - if(iTouchPointerArray.Count() == iFinishedCount) - { - // notify observer - iObserver.NotifyMultiTouchComplete(); - } - - HTI_LOG_FUNC_OUT("CMultiTouchPointerEventHandler::NotifyTouchComplete"); - } -// ---------------------------------------------------------------------------- -// CMultiTouchPointerEventHandler::ParsePoint() -// ---------------------------------------------------------------------------- -TBool CMultiTouchPointerEventHandler::ParsePoint( const TDesC8& aData, TInt& aoffset, - TInt& aX, TInt& aY, TInt& aZ, - TTimeIntervalMicroSeconds32& aWait, TTimeIntervalMicroSeconds32& aHold ) - { - HTI_LOG_FUNC_IN( "CMultiTouchPointerEventHandler::ParsePoint" ); - - TInt dataLength = aData.Length(); - if ( dataLength-aoffset < 14 ) - return EFalse ; - - aX = aData[aoffset] + ( aData[aoffset+1] << 8 ); - aoffset += 2; - - aY = aData[aoffset] + ( aData[aoffset+1] << 8 ); - aoffset += 2; - - aZ = aData[aoffset] + ( aData[aoffset+1] << 8 ); - aoffset += 2; - - aWait = (aData[aoffset] + ( aData[aoffset+1] << 8 ) - + ( aData[aoffset+2] << 16 ) + (aData[aoffset+3] << 24) ) * 1000; - aoffset += 4; - - aHold = ( aData[aoffset] + ( aData[aoffset+1] << 8 ) - + ( aData[aoffset+2] << 16 ) + (aData[aoffset+3] << 24) ) * 1000; - aoffset += 4; - - HTI_LOG_FUNC_OUT( "CMultiTouchPointerEventHandler::ParsePoint" ); - return ETrue; - } -// ---------------------------------------------------------------------------- -// CMultiTouchPointerEventHandler::ParseMove() -// ---------------------------------------------------------------------------- -TBool CMultiTouchPointerEventHandler::ParseMove( const TDesC8& aData, TInt& aoffset, - TTimeIntervalMicroSeconds32& aDragTime, TInt& aStepCount ) - { - HTI_LOG_FUNC_IN( "CMultiTouchPointerEventHandler::ParseMove" ); - - TInt dataLength = aData.Length(); - if ( dataLength-aoffset < 6 ) - return EFalse ; - - aDragTime = ( aData[aoffset] + ( aData[aoffset+1] << 8 ) - + ( aData[aoffset+2] << 16 ) + (aData[aoffset+3] << 24) ) * 1000; - aoffset += 4; - - aStepCount = aData[aoffset] + ( aData[aoffset+1] << 8 ); - aoffset += 2; - - HTI_LOG_FUNC_OUT( "CMultiTouchPointerEventHandler::ParseMove" ); - return ETrue; - } -// ---------------------------------------------------------------------------- -// CMultiTouchPointerEventHandler::HandleMultiTouchL() -// ---------------------------------------------------------------------------- -TBool CMultiTouchPointerEventHandler::HandleMultiTouchL( const TDesC8& aData ) - { - HTI_LOG_FUNC_IN( "CMultiTouchPointerEventHandler::HandleMultiTouchL" ); - TBool validparameter=EFalse; - - TInt dataLength = aData.Length(); - if ( dataLength < 1 ) - return validparameter; - - // Parse the parameters - correct length is already verified - TInt offset = 0; - - TInt touchCount = aData[offset]; - offset += 1; - HTI_LOG_FORMAT( "Number of touches: %d", touchCount ); - if (touchCount<=0) - return validparameter; - - for(TInt i=0; iInterpolatePointL(lastX, lastY, lastZ,X1,Y1,Z1,dragTime,stepCount); - } - - // set last point - lastX=X1; - lastY=Y1; - lastZ=Z1; - - // wait event - touch->AddPointL(waitTime,X1,Y1,Z1,TRawEvent::EButton1Down); - - // hold event - touch->AddPointL(holdTime, X1,Y1,Z1,TRawEvent::EPointerMove); - - if (j!=pointerCount-1) - { - // not last point - if (!ParseMove(aData, offset, dragTime, stepCount)) - return validparameter; - if (dragTime.Int() < 0 || stepCount <= 0) - return validparameter; - } - else - { - // last point - touch->AddPointL(0,X1,Y1,Z1,TRawEvent::EButton1Up); - } - } - - touch->PrintInfo(); - - } - - - for (TInt i=0;iStartTouch(); - - validparameter=ETrue; - - HTI_LOG_FUNC_OUT( "CMultiTouchPointerEventHandler::HandleMultiTouchL" ); - return validparameter; - } - -void CMultiTouchPointerEventHandler::SimulateEvent(TUint8 aTouchNumber, - TInt aX, TInt aY, TInt aZ, TRawEvent::TType aEventType) - { - HTI_LOG_FUNC_IN( "CMultiTouchPointerEventHandler::SimulateEvent" ); - - TRawEvent rawEvent; - rawEvent.SetPointerNumber( aTouchNumber ); - rawEvent.Set( aEventType, aX, aY, aZ); - - HTI_LOG_FORMAT( "SimulatePointer touch number=%d ", aTouchNumber ); - HTI_LOG_FORMAT( "SimulatePointer event=%d ", aEventType ); - HTI_LOG_FORMAT( "SimulatePointer X=%d ", aX ); - HTI_LOG_FORMAT( "SimulatePointer Y=%d ", aY ); - HTI_LOG_FORMAT( "SimulatePointer Z=%d", aZ ); - - iWsSession.SimulateRawEvent( rawEvent ); - iWsSession.Flush(); - - HTI_LOG_FUNC_OUT( "CMultiTouchPointerEventHandler::SimulateEvent" ); - - } - -// End of file