diff -r 000000000000 -r bde4ae8d615e os/textandloc/textrendering/textformatting/inc/FRMTLAY_INTERNAL.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/textandloc/textrendering/textformatting/inc/FRMTLAY_INTERNAL.H Fri Jun 15 03:10:57 2012 +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 +#include +#include +#include + +#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS +#include +#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