textrendering/textformatting/inc/FRMCURS.H
changeset 0 1fb32624e06b
--- /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 <frmconst.h>
+#include <frmconst_partner.h>
+
+
+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__