textrendering/textformatting/inc/FRMTLAY_INTERNAL.H
changeset 0 1fb32624e06b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/textformatting/inc/FRMTLAY_INTERNAL.H	Tue Feb 02 02:02:46 2010 +0200
@@ -0,0 +1,140 @@
+/*
+* Copyright (c) 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: 
+*
+*/
+
+#ifndef __FRMTLAY_INTERNAL_H__
+#define __FRMTLAY_INTERNAL_H__
+
+#include <e32std.h>
+#include <e32base.h>
+#include <gdi.h>
+#include <tagma.h>
+
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <tagma_internal.h>
+#endif
+
+class MLayDoc;
+class MFormCustomInterfaceProvider; 
+class MFormCustomInvisibleCharacterRemapper;
+class MFormCustomWrap;
+class MFormCustomDraw;
+
+/**
+@internalTechnology
+Internal to Symbian
+*/
+NONSHARABLE_CLASS(TLayDocTextSource) : public MTmSource, public MFormLabelApi, public MTmTextDrawExt, public MTmCustomExtension
+	{
+	public:
+
+	enum
+		{
+		EDefaultFontHeightIncreaseFactor = 7,
+		EDefaultMinimumLineDescent = 3
+		};
+
+	TLayDocTextSource();
+
+	// overrides for MTmSource pure virtual functions
+	MGraphicsDeviceMap& FormatDevice() const;
+	MGraphicsDeviceMap& InterpretDevice() const;
+	TInt DocumentLength() const;
+	void GetText(TInt aPos,TPtrC& aText,TTmCharFormat& aFormat) const;
+	void GetParagraphFormatL(TInt aPos,RTmParFormat& aFormat) const;
+	TInt ParagraphStart(TInt aPos) const;
+
+	// overrides for other MTmSource virtual functions
+	TRgb SystemColor(TUint aColorIndex,TRgb aDefaultColor) const;
+	CPicture* PictureL(TInt aPos) const;
+	TInt GetPictureSizeInTwipsL(TInt aPos,TSize& aSize) const;
+	TBool LabelModeSelect(TLabelType aType, TInt aPos);
+	void LabelModeCancel();
+	void LabelMetrics(TLabelType aType, TSize& aLabelSize, TInt& aMarginSize) const;
+	TUint Map(TUint aChar) const;
+	void SetLineHeight(const TLineHeightParam& aParam,TInt& aAscent,TInt& aDescent) const;
+	TBool PageBreakInRange(TInt aStartPos,TInt aEndPos) const;
+	void DrawBackground(CGraphicsContext& aGc,const TPoint& aTextLayoutTopLeft,const TRect& aRect,
+						const TLogicalRgb& aBackground,TRect& aRectDrawn) const;
+	void DrawLineGraphics(CGraphicsContext& aGc,const TPoint& aTextLayoutTopLeft,const TRect& aRect,
+						  const TTmLineInfo& aLineInfo) const;
+	void DrawText(CGraphicsContext& aGc,const TPoint& aTextLayoutTopLeft,const TRect& aRect,
+				  const TTmLineInfo& aLineInfo,const TTmCharFormat& aFormat,
+				  const TDesC& aText,const TPoint& aTextOrigin,TInt aExtraPixels) const;
+	virtual void DrawPicture(CGraphicsContext& aGc,
+							 const TPoint& aTextLayoutTopLeft, const TRect& aRect,
+							 MGraphicsDeviceMap& aDevice, const CPicture& aPicture) const;
+	void DrawText(CGraphicsContext& aGc,const TPoint& aTextLayoutTopLeft,const TRect& aRect,
+				  const TTmLineInfo& aLineInfo,const TTmCharFormat& aFormat,
+				  const TDesC& aText, const TInt aStart, const TInt aEnd, const TPoint& aTextOrigin,TInt aExtraPixels) const;
+	
+	// overrides for the MTmSource virtual functions which implements the MFormCustomWrap
+	// if iCustomWrap is set. 
+	TBool LineBreakPossible(TUint aPrevClass,TUint aNextClass,TBool aHaveSpaces) const;
+	TUint LineBreakClass(TUint aCode,TUint& aRangeStart,TUint& aRangeEnd) const;
+	TBool GetLineBreakInContext(const TDesC& aText,TInt aMinBreakPos,TInt aMaxBreakPos,
+												 TBool aForwards,TInt& aBreakPos) const;
+	TBool IsHangingCharacter(TUint aChar) const;
+	
+	// other functions
+	TBool CanMap() const;
+
+	TAny* GetExtendedInterface(const TUid& aInterfaceId);
+
+	//MTmTextDrawExt implementations
+	virtual void DrawLine(CGraphicsContext& aGc, const TPoint& aPt1, const TPoint& aPt2) const;
+	virtual void DrawText(CGraphicsContext& aGc, const TDesC& aText, const TPoint& aPt) const;
+	virtual void DrawRect(CGraphicsContext& aGc, const TRect& aRc) const;
+
+	//Set/reset opaque flag of aGc graphics context
+	void SetOpaque(CGraphicsContext& aGc) const;
+	void ResetOpaque(CGraphicsContext& aGc) const;
+
+	// flags
+	enum
+		{
+		EWrap = 1,
+		ETruncateWithEllipsis = 2,
+		EUseLabelsDevice = 4
+		};
+
+	MLayDoc* iLayDoc;
+	TUint iFlags;								// wrap, truncate, etc.
+	TInt iWidth;								// wrapping width
+	TChar iEllipsis;							// ellipsis character (or none if 0xFFFF) used if truncating
+	TInt iLabelsWidth;
+	TInt iLabelsGutter;
+	CLayoutData::TFormatMode iFormatMode;
+	MGraphicsDeviceMap* iImageDevice;			// device map used for drawing text
+	MGraphicsDeviceMap* iLabelsDevice;			// device map used for labels
+	MGraphicsDeviceMap* iFormatDevice;			// device map used for formatting
+	TInt iFontHeightIncreaseFactor;				// percentage automatically added to font heights
+	TInt iMinimumLineDescent;					// minimum line descent in pixels
+	TNonPrintingCharVisibility iNonPrintingCharVisibility;
+	const MFormParam* iFormParam;				// if non-null, points to the object that supplies system colours
+	const MFormCustomDraw* iCustomDraw;			// if non-null, points to custom drawing routines
+	const MFormCustomWrap* iCustomWrap;			// if non-null, points to custom wrapping routines 
+    /** Optional object able to provide a concrete customisation object for use 
+	    internally by Form. */
+	MFormCustomInterfaceProvider* iInterfaceProvider;
+	TBool iDrawOpaque;						// Opaque drawing active if the flag is ETrue
+	TInt iExcessHeightRequired;				// delta required to position the baseline so there is enough
+											// space for the highset glyph in pixels.  
+	MFormCustomInvisibleCharacterRemapper* iInvisibleCharacterRemapper;	// Used to customize the remapping of 
+																		// invisible characters to visible characters
+	};
+
+#endif