idlehomescreen/xmluirendering/uiengine/inc/xngesturerecogniser.h
changeset 0 f72a12da539e
child 16 9674c1a575e9
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/idlehomescreen/xmluirendering/uiengine/inc/xngesturerecogniser.h	Thu Dec 17 08:40:49 2009 +0200
@@ -0,0 +1,110 @@
+/*
+* Copyright (c) 2007 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:  Algorithm to recognise gesture from a stream of points
+*
+*/
+
+
+#ifndef _XNGESTURERECOGNISER_H_
+#define _XNGESTURERECOGNISER_H_
+
+// System includes
+#include <e32std.h>
+
+
+/**
+ * XnGestureHelper namespace
+ * Used for the whole gesture family - Gesture recognizer, gesture helper, 
+ * Point array
+ */
+namespace XnGestureHelper
+    {
+    
+    // Forward declarations
+    class TXnPointArray;
+    
+    /**
+     * flag that indicates gesture code is a holding code
+     * clients should use MGestureEvent::IsHolding
+     */
+    const TInt EFlagHold = 0x10000000;
+    
+    /**
+     * Gesture codes and states
+     */
+    enum TXnGestureCode
+        {
+        // states
+        /** gesture just started (user pressed stylus down)*/ 
+        EGestureStart = 0x00000001, 
+        /** user moved stylus (may be holding or not holding) */
+        EGestureDrag = 0x00000002, 
+        /** user lifted stylus while user was holding */
+        EGestureReleased = 0x00000003, 
+        
+        // gestures  
+        /** gesture was not recognised */
+        EGestureUnknown = 0x00000005, 
+        /** these codes are sent when user lifts stylus 
+         * (if holding not started)
+         */
+        EGestureTap = 0x00000006,
+        /** first tap emits EGestureTap */
+        EGestureDoubleTap = 0x00000007, 
+        /** swipe left */
+        EGestureSwipeLeft = 0x00000008,
+        /** swipe right */
+        EGestureSwipeRight = 0x00000009,
+        /** swipe up */
+        EGestureSwipeUp = 0x0000000A,
+        /** swipe down */
+        EGestureSwipeDown = 0x0000000B,
+        /** 
+         * these codes are sent when user initiates holding by keeping stylus 
+         * in same place for a longer duration
+         */
+        EGestureHoldLeft = EGestureSwipeLeft | EFlagHold,
+        EGestureHoldRight = EGestureSwipeRight | EFlagHold,
+        EGestureHoldUp = EGestureSwipeUp | EFlagHold,
+        EGestureHoldDown = EGestureSwipeDown | EFlagHold
+        };
+    
+    //Class declaration
+    
+    /**
+     *  Set of algorithms to recognise gesture from a stream of points
+     *  Note: Not a static class or a function pointer, just to make it 
+     *  sligthly easier to replace it with a heavier implementation
+     *
+     *  @ingroup group_xnlayoutengine
+     */
+    NONSHARABLE_CLASS( TXnGestureRecogniser )
+        {
+    public:
+        
+        /** 
+         * Translates points into a gesture code
+         * @param aPoints Points that form the gestures. Client is not 
+         *        required to pass in repeated points (sequential 
+         *        points that are almost in the same place)
+         * @param aIsHolding ETrue if gesture was ended at pointer being held 
+         *        down at same position
+         *        EFalse if gesture ended at pointer being released 
+         * @return recognised gesture id or EUnknownGesture
+         */
+        TXnGestureCode GestureCode( const TXnPointArray& aPoints ) const;
+        };
+    } // namespace XnGestureHelper
+
+#endif // _XNGESTURERECOGNISER_H_