diff -r 000000000000 -r 1fb32624e06b textrendering/textformatting/inc/FRMCURS.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textrendering/textformatting/inc/FRMCURS.H Tue Feb 02 02:02:46 2010 +0200 @@ -0,0 +1,234 @@ +/* +* Copyright (c) 2003-2009 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: +* FORM Cursor Navigation header file holding policy interface class. +* +*/ + + +#ifndef __FRMCURS_H__ +#define __FRMCURS_H__ + + +#include +#include + + +class CTmViewAnchoredLayout; +class TTmDocPos; + +/** +This policy interface class maintains the cursor position and sets the +policy for its movement. +@publishedPartner +@deprecated +*/ +class MCursorPositioningPolicy + + { +public: + + //-- Interface enumerations --------------------------------------------- + + + /** Types of delete operation. This is used when...??? + */ + enum TDeleteType + { + EDeleteUndefined = 0, + EDeleteBackspace = 1, + EDeleteForward = 2, + + EDeleteLast + }; + + /** Types of reformatting. This is used when...??? + */ + enum TTextChangeType + { + ETextChangeUndefined = 0, + /** Change that causes no change in cursor position. */ + ETextChangeNonLocal = 1, + /** Change that moves the cursor to its trailing edge. */ + ETextChangeTyping = 2, + + // Maybe several more. + // ... + ETExtChangeLast + }; + + /** + Hint for positioning the visual cursor. Describes properties of the + editing operation that is most likely to happen next. + */ + enum TPosHint + { + EPosHintUndefined = 0, + /** Left to right typing expected. */ + EInsertStrongL2R = 1, + /** Right to left typing expected. */ + EInsertStrongR2L = 2, + + // Maybe several more. + //... + EPosHintLast + }; + +public: + + //-- Object creation/setup API ------------------------------------------ + + /** + */ + virtual ~MCursorPositioningPolicy() {} + + /** + Sets the document/layout object on which all the cursor navigation will + take place. + */ + virtual void SetTmLayout(CTmViewAnchoredLayout* aLayout) = 0; + + + //-- Cursor positioning API --------------------------------------------- + + /** + Gets the cursor position for display and insertion. + @return TTmDocPos value holding cursor document position. + */ + virtual const TTmDocPos& Pos() const = 0; + + /** + Sets the cursor position explicitly. + @param aNewPos New position cursor is to be moved to. + */ + virtual void SetPos(const TTmDocPos& aNewPos) = 0; + + + /** + @return ETrue if successful, EFalse otherwise e.g. no formatting + */ + virtual void PosXyL(TPoint& aXy) const = 0; + + /** + Sets the X, Y co-ordinates to jump to. + @param aXy Layout co-ordinates to approx. move the cursor to. + On exit + @return ETrue if successful, EFalse otherwise e.g. no formatting + */ + virtual void SetPosByXyL(TPoint& aNewXy) = 0; + + /** + Allows change of cursor position in response to a hint as to + positioning. + @param aHint Text directional hint from client. + */ + virtual void SetPositioningHintL(TPosHint aHint) = 0; + + /** + Suggests a new latent X,Y position for Up/Down operations/scrolls. + @param aX X Layout co-ordinate for latent position of cursor. + */ + virtual void SetLatentX(TInt aX) = 0; + + /** + Suggests a new latent X,Y position for Up/Down operations/scrolls. + @param aY Y Layout co-ordinate for latent position of cursor. + */ + virtual void SetLatentY(TInt aY) = 0; + + /** + Suggests a new latent X,Y position for Up/Down operations/scrolls. + @param aXy X,Y Layout co-ordinate for latent position of cursor. + */ + virtual const TPoint& LatentXy() const = 0; + + /** + Suggests a new latent X,Y position for Up/Down operations/scrolls. + @param aXy X,Y Layout co-ordinate for latent position of cursor. + */ + virtual void SetLatentXy(const TPoint& aXy) = 0; + + /** + @leave + */ + virtual const TPoint& UpdateLatentXyL() = 0; + + + //--- Cursor navigation API --------------------------------------------- + + + /** + Moves the cursor up or down a line. + @param aUp ETrue if wish to move up, EFalse to go down. + @return TCursorMove Actual movement that took place. + */ + virtual TCursorMove UpDownL(TBool aUp) = 0; + + /** + Moves the cursor left or right a character position. + @param aDown ETrue if wish to move left, EFalse to go right. + @return TCursorMove Actual movement that took place. + */ + virtual TCursorMove LeftRightL(TBool aLeft) = 0; + + /** + Moves the cursor to the start or to the end of the line. + @param aStart ETrue if wish to move to the start, EFalse to go to the end. + @return TCursorMove Actual movement that took place. + */ + virtual TCursorMove LineStartEndL(TBool aStart) = 0; + + + //--- Cursor reactionary API to changes --------------------------------- + + + /** + Responds to total change of formatting. + */ + virtual void HandleGlobalReformatL() = 0; + + /** + Responds to partial change of formatting. + @param aStart ? + @param aOldEnd ? + @param aNewEnd ? + @param aParaFormatChg ? + @param aChgType ? + */ + virtual void HandleReformatL(TInt aStart, TInt aOldEnd, + TInt aNewEnd, TBool aParaFormatChg, TTextChangeType aChgType) = 0; + + + //-- Misc/Unknown API --------------------------------------------------- + + + /** + Gets the cursor position for delete. ??? + @param aDelType ? + @param aStart ? + @param aEnd ? + */ + virtual void GetDeletePosition(TDeleteType aDelType, TInt& aStart, + TInt& aEnd) const = 0; + + /** + Place holder for future expansion when if more virtual methods + are requried. + */ + virtual void* ExtendedInterface(TUid aInterfaceId) = 0; + + }; + + +#endif // __FRMCURS_H__