diff -r d39add9822e2 -r 5bfc169077b2 webengine/webkitutils/stmgesturefw/inc/stateengine.h --- a/webengine/webkitutils/stmgesturefw/inc/stateengine.h Tue Feb 02 00:56:45 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,180 +0,0 @@ -/* -* 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: State Engine -* -*/ -#ifndef STATEENGINE_H_ -#define STATEENGINE_H_ - -#include "rt_uievent.h" -#include "timerinterface.h" -#include "statemachine_v2.h" -#include "uieventsender.h" -#include "stateengineconfiguration.h" - -namespace stmUiEventEngine -{ - -/*! - * Define THwEvent since we need the point, the type and timestamp to be stored. - * The HW event is used also to handle the timer events so that the wrapper class calling the - * state machine will handle the starting, canceling etc. of the timers and the state machine - * sees the timers as messages. This hopefully makes it easier to keep the core state machine as - * OS agnostic as possible. - */ -class THwEvent -{ -public: - THwEvent() {} ; - THwEvent(const THwEvent& ev): - iType(ev.iType), iPosition(ev.iPosition), - iTime(ev.iTime), iTarget(ev.iTarget), iPointerNumber(ev.iPointerNumber) {} - THwEvent(TStateMachineEvent code, - const TPoint& pos, - TTime time, - void* aTarget, - TInt aPointerNr): - iType(code), iPosition(pos), - iTime(time), iTarget(aTarget), iPointerNumber(aPointerNr) - { - } - - TStateMachineEvent iType ; - TPoint iPosition ; - TTime iTime ; - void* iTarget ; - TInt iPointerNumber ; -}; - - -NONSHARABLE_CLASS( CStateEngine ) : public CBase -{ -public: - /** - * constructor and destructor - */ - CStateEngine(CStateEngineConfiguration* aConfig, MTimerInterface* timerif, int index) ; - - ~CStateEngine() ; - /** - * The methods needed for state machine - */ - void ConsumeEvent() ; - bool IsTouchTimer() ; - bool IsHoldTimer() ; - bool IsSuppressTimer() ; - bool IsTouchTimeArea() ; - bool IsTouchArea() ; - bool IsHoldArea() ; - bool InsideTouchTimeArea() ; - bool InsideTouchArea() ; - bool InsideHoldArea() ; - bool LooksLikeHold() ; - void ErrorEvent() ; - void InitTouchTimer() ; - void InitHoldTimer() ; - void RestartHoldTimer() ; - void InitTouchSuppressTimer() ; - void InitMoveSuppressTimer() ; - void ClearTouchTimer() ; - void ClearHoldTimer() ; - void ClearSuppressTimer() ; - void ProduceTouch() ; - void ProduceMove() ; - void ProduceRelease() ; - void ProduceHold() ; - void RenameToDrag() ; - void PrepareTouchTimeArea() ; - void PrepareTouchArea() ; - void PrepareHoldArea() ; - void SetCurrentPos() ; - void SetGestureStart() ; - void AddToTouch() ; - void AddDraggingPos() ; - void StoreMovePos() ; - - /** - * The event interface - */ - - THwEvent& initEvent() - { - m_hwe.iPointerNumber = m_index; - return m_hwe; - } - - // event returned by initEvent() must initialized first - bool handleStateEvent() ; - - TRect getTouchArea() ; - TRect getHoldArea() ; - bool wasLastMessageFiltered() ; - -private: - bool m_eventConsumed ; - THwEvent m_hwe ; - - bool isNewHoldingPoint() ; - RPointerArray iDragPoints; - MTimerInterface* m_timerif ; - - RArray iTouchPoints; - - // Variables for running the state machine - TStateMachineState m_currentState ; - bool m_isTimerEvent ; // We need to separate the pointer events and the timer events - TPoint m_currentTouchXY ; // This is the touching point - TPoint m_gestureStartXY ; // gesture started at this point - TPoint m_uiEventXY ; // The UI event XY point. - TPoint m_previousPointerEventPosition ; - TPoint m_deltaVector ; - TRect m_touchRect ; - TRect m_holdRect ; - - bool m_wasFiltered ; - void CalculateDelta() ; - void CalculateTouchAverage() ; - void CalculateCurrentVector() ; - TPoint calculateTouchAverageFromPoints() ; - bool InsideArea(const TPoint& point, - const TRect& rect, - TAreaShape shape, - const TPoint& tolerance); - void setTolerance(long fingersize_mm, TPoint& tolerance, TAreaShape shape) ; - - void DebugPrintState(TStateMachineState anextstate) ; - inline static TRect ToleranceRect( const TPoint& aCenterPoint, const TPoint& tolerance) ; - void turnStateMachine() ; - - TPoint m_touchCentre ; - TPoint m_holdCentre ; - - void* m_gestureTarget ; - TTimeIntervalMicroSeconds getInterval() ; - TTime m_lastMessageTime ; - CUiEvent* createUIEventL(TUiEventCode code, const TPoint& aPos) ; - TPoint getPreviousXY(const TPoint& aXY) ; - TPoint m_previousXY ; - bool isTimerMessage() ; - int m_index ; - TUiEventCode m_previousUiGenerated ; - TPoint m_lastFilteredPosition ; - TTime m_lastFilteredMessageTime ; - - CStateEngineConfiguration* m_config ; - -}; -} // namespace - -#endif /* STATEENGINE_H_ */