--- /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