webengine/webkitutils/stmgesturefw/src/UiEvent.cpp
changeset 28 d39add9822e2
--- /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 <e32math.h>
+#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 ;
+}
+