diff -r 6297cdf66332 -r d39add9822e2 webengine/webkitutils/stmgesturefw/src/UiEvent.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/webkitutils/stmgesturefw/src/UiEvent.cpp Tue Feb 02 00:56:45 2010 +0200 @@ -0,0 +1,147 @@ +/* +* Copyright (c) 2008 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the License "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: +* +*/ + +#include +#include "UiEvent.h" +#include "filelogger.h" +#include "statemachine.h" // for stmUiEventEngine::Distance(dx,dy) +//#include "flogger.h" + +using namespace stmUiEventEngine ; + +static const char* const eventNames[] = { // for debugging purposes define the names of the UI events + "noEvent", + "ETouch", + "EHold", + "EDrag", + "ERelease", + "ENull" +} ; + +const char* stmUiEventEngine::EventName(stmUiEventEngine::TUiEventCode aCode) +{ + return eventNames[aCode]; +} + +CUiEvent* CUiEvent::NewL( + TUiEventCode aCode, + const TPoint& aStart, const TPoint& aXY, const TPoint& aPreviousXY, + bool aTimerExpired, void* aTarget, TTimeIntervalMicroSeconds aInterval, + int aIndex, TInt64 aTimestamp) +{ + CUiEvent* self = new (ELeave) CUiEvent(aCode, aStart, aXY, aPreviousXY, + aTimerExpired, aTarget, aInterval, aIndex, aTimestamp) ; + return self; +} + +CUiEvent::CUiEvent( + TUiEventCode aCode, + const TPoint& aStart, const TPoint& aXY, const TPoint& aPreviousXY, + bool aTimerExpired, void* aTarget, TTimeIntervalMicroSeconds aInterval, + int aIndex, TInt64 aTimestamp) : + m_code(aCode), m_start(aStart), m_XY(aXY), m_previousXY(aPreviousXY), + m_statetransition(aInterval), m_target(aTarget), m_timerExpired(aTimerExpired), + m_index(aIndex), m_previousEvent(NULL), m_timestamp(aTimestamp) +{ +} + +CUiEvent::~CUiEvent() +{ + delete m_previousEvent ; + m_previousEvent = NULL ; +} +const TPoint& CUiEvent::StartPos() const +{ + return m_start ; +} +const TPoint& CUiEvent::CurrentXY() const +{ + return m_XY ; +} +TUiEventCode CUiEvent::Code()const +{ + return m_code ; +} +const TPoint& CUiEvent::PreviousXY() const +{ + return m_previousXY ; +} +TTimeIntervalMicroSeconds CUiEvent::StateTransition() const +{ + return m_statetransition ; +} +bool CUiEvent::TimerExpired() const +{ + return m_timerExpired ; +} +void * CUiEvent::Target() const +{ + return m_target ; +} +int CUiEvent::Index() const +{ + return m_index ; +} +void CUiEvent::setPrevious(CUiEvent* aEvent) +{ + m_previousEvent = aEvent ; +} +MUiEvent* CUiEvent::previousEvent() const +{ + return m_previousEvent ; +} +int CUiEvent::countOfEvents() const +{ + int count = 1 ; + for(CUiEvent* prev = m_previousEvent; prev; prev = prev->m_previousEvent) + { + ++count; + } + return count ; +} +TInt64 CUiEvent::timestamp() const +{ + return m_timestamp ; +} + +float CUiEvent::speedX() const __SOFTFP +{ + int distX = m_XY.iX - m_previousXY.iX; + // now calculate speed + float elapsed = float (m_statetransition.Int64()/1000) ; // use ms as time unit + + float speed = 0; + if (elapsed == 0) { + elapsed = 5.0; // if time is 0, take 5ms + } + speed = float(distX)/elapsed ; + return speed ; +} + +float CUiEvent::speedY() const __SOFTFP +{ + int distY = m_XY.iY - m_previousXY.iY; + // now calculate speed + float elapsed = float (m_statetransition.Int64()/1000) ; // use ms as time unit + float speed = 0; + if (elapsed == 0) { + elapsed = 5.0; // if time is 0, take 5ms + } + speed = float(distY)/elapsed ; + return speed ; +} +