diff -r 4526337fb576 -r 3eca7e70b1b8 mmuifw_plat/gesturehelper_api/inc/gestureobserver.h --- a/mmuifw_plat/gesturehelper_api/inc/gestureobserver.h Tue Feb 02 00:28:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,244 +0,0 @@ -/* -* Copyright (c) 2008-2008 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: Gesture helper interface -* -*/ - -#ifndef _GESTUREOBSERVER_H_ -#define _GESTUREOBSERVER_H_ - -#include - -class CAlfControl; -class CAlfVisual; - -namespace GestureHelper -{ - -/// flag that indicates gesture code is a holding code -/// clients should use MGestureEvent::IsHolding -const TInt EFlagHold = 0x10000000; - -enum TGestureCode - { - // states - EGestureStart = 0x00000001, // gesture just started (user pressed stylus down) - EGestureDrag = 0x00000002, // user moved stylus (may be holding or not holding) - EGestureReleased = 0x00000003, // user lifted stylus while user was holding - // gestures - EGestureUnknown = 0x00000005, // gesture was not recognised - // these codes are sent when user lifts stylus (if holding not started) - EGestureTap = 0x00000006, - EGestureDoubleTap = 0x00000007, // only if double tap is enabled - // (via CGestureHelper::SetDoubleTapEnabled or - // CGestureControl::SetDoubleTapEnabled) - EGestureSwipeLeft = 0x00000008, - EGestureSwipeRight = 0x00000009, - EGestureSwipeUp = 0x0000000A, - EGestureSwipeDown = 0x0000000B, - - // gestures related to advanced pointer events. These codes are sent if the platform supports advanced pointer events. - // states - EGestureMultiTouchStart = 0x0000000C, // multitouch gesture just started (user touched 2nd finger down) - EGestureMultiTouchReleased = 0x0000000D, // user released 2nd touch point while still holding the first touch point - // gestures - EGesturePinch = 0x0000000E, // This event is sent when the pinch is recognised for - // the first time or when the pinch distance is changing. - - // 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 - }; - -/** - * Point of float accuracy - */ -NONSHARABLE_STRUCT( TRealPoint ) - { - inline TRealPoint(); - inline TRealPoint( const TRealPoint& aPoint ); - inline TRealPoint( TReal aX, TReal aY ); - inline TBool operator==( const TRealPoint& aPoint ) const; - - TReal32 iX; - TReal32 iY; - }; - -/** - * a gesture event - */ -class MGestureEvent - { -public: - /** X and Y axes, or both */ - enum TAxis - { - EAxisBoth, - EAxisHorizontal, - EAxisVertical - }; - -public: - /** - * @param aRelevantAxis indicates whether only x, y or both coordinates - * should be considered when determining the code. For example, - * if client specifies EAxisVertical as relevant axis, a swipe - * to left and slightly up would result in an "swipe up" code, - * and not "swipe left" code. If client specifies EAxisHorizontal - * or EAxisBoth, "swipe left" code is returned. - * @return gesture code - */ - virtual TGestureCode Code( TAxis aRelevantAxis ) const = 0; - - /** - * @return ETrue if user has activated holding - * (by keeping stylus in the same position for longer time) - * EFalse if holding has not been activated - */ - virtual TBool IsHolding() const = 0; - - /** - * @return position where gesture started, i.e., where stulys - * was pressed down - */ - virtual TPoint StartPos() const = 0; - - /** - * @return current position of the stylus - */ - virtual TPoint CurrentPos() const = 0; - - /** - * @return speed of a swipe. unit is pixels per second. - */ - virtual TRealPoint Speed() const = 0; - - /** - * Abstracts the algorithm to calculate speed during swipe and hold. This - * algorithm (currently) assumes that max speed is achieved at the edges of an - * area. - * @param aEdges represents the coordinates of the rectange on which speed is - * calculated. Speed will reach maximum if stylus is on the edge - * or beyond the rect. In practise, the value should match the - * area of the layout that contains the scrollable visuals. - * For example, if the control area is the whole screen, the - * rect should be the screen rect. - * @returns the speed as a percentage between -100% and 100% - */ - virtual TRealPoint SpeedPercent( const TRect& aEdges ) const = 0; - - /** - * @return Length of gesture from starting position - * (start pos - current pos) - */ - virtual TPoint Distance() const = 0; - - /** - * @return visual on which the gesture started - * NULL if not known (e.g., AVKON-based client - */ - virtual CAlfVisual* Visual() const = 0; - - /** - * Pinch distance - * - * Used only for pinch. Returns 0 for other gestures. - * - * @return The ratio of pinch end distance to pinch start distance * 100 - * PinchPercent above 100 for zooming out and below hundred for zooming in - */ - virtual TInt PinchPercent() const = 0; - - /** - * Centre point of the two touch points - * - * Used only for pinch. Returns TPoint(0,0) for other gestures. - * - * @return the centre point calculated using teh two touch down points - * This point will remian the same for one multitouch gesture start to end. - * This doesnt vary as the two points move away or closer. - */ - virtual TPoint PinchCentrePoint() const = 0; - - }; - -/** - * Observer that will be notified when user makes gestures - */ -class MGestureObserver - { -public: - /** - * Handle the gesture event - * @param aEvent event describing the gesture - */ - virtual void HandleGestureL( const MGestureEvent& aEvent ) = 0; - }; - -/** - * static class for finding a visual from a visual tree - */ -class HitTest - { -public: - /** - * @return the leaf-most visual is under aPos, or NULL if not found - */ - IMPORT_C static CAlfVisual* VisualByCoordinates( const CAlfControl& aControl, - const TPoint& aPos ); - }; - -// ---------------------------------------------------------------------------- -// Default constructor for real point -// ---------------------------------------------------------------------------- -// -inline TRealPoint::TRealPoint() - : iX( 0 ), iY( 0 ) - { - } - -// ---------------------------------------------------------------------------- -// Copy constructor for real point -// ---------------------------------------------------------------------------- -// -inline TRealPoint::TRealPoint( const TRealPoint& aPoint ) - : iX( aPoint.iX ), iY( aPoint.iY ) - { - } - -// ---------------------------------------------------------------------------- -// Copy constructor for real point -// ---------------------------------------------------------------------------- -// -inline TRealPoint::TRealPoint( TReal aX, TReal aY ) - : iX( aX ), iY( aY ) - { - } - -// ---------------------------------------------------------------------------- -// Default constructor for real point -// ---------------------------------------------------------------------------- -// -inline TBool TRealPoint::operator==( const TRealPoint& aPoint ) const - { - return iX == aPoint.iX && iY == aPoint.iY; - } - - -} // namespace GestureHelper - -#endif // _GESTUREOBSERVER_H_