1 // Copyright (c) 1997-2009 Nokia Corporation and/or its subsidiary(-ies).
2 // All rights reserved.
3 // This component and the accompanying materials are made available
4 // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
5 // which accompanies this distribution, and is available
6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
8 // Initial Contributors:
9 // Nokia Corporation - initial contribution.
16 #ifndef __TXTGLOBL_H__
17 #define __TXTGLOBL_H__
26 // forward declarations
27 class CParaFormatLayer;
28 class CCharFormatLayer;
30 class TCharFormatXMask;
33 // Globally formatted text.
34 // Uses one instance of each a paragraph format and character format class; Each presents
35 // the formatting applied to the total document contents. Both of the format classes used
36 // may utilise layering of formats through 'based on' links to achieve full format specification.
37 // These global layers are *never* owned by global text, merely referenced.
40 Text with globally applied formatting.
42 Global text uses a single set of paragraph format attributes to describe the
43 appearance of every paragraph and a single set of character format attributes
44 to describe the appearance of every character.
46 The paragraph formatting is stored in a CParaFormatLayer and the character
47 formatting is stored in a CCharFormatLayer. A format layer is a set of character
48 or paragraph format attributes, which may own a pointer to another format
49 layer. This pointer is called a based-on link. The effective formatting of
50 a global text object is the set of attributes specified in its two format
51 layers, as well as any attributes inherited from the layers' chain of based-on
52 links. To get the effective formatting, the links are read in turn, so that
53 each attribute's value is taken from the first layer in the chain in which
54 it has been set. Use GetCharFormat() and GetParaFormatL() to get the text
55 object's effective formatting.
57 A global text object references the two format layers; it does not own them.
58 This allows more than one global text object to use the same formatting. The
59 format layers may be modified (see ApplyParaFormatL() and ApplyCharFormatL())
60 or replaced (see SetGlobalParaFormat() and SetGlobalCharFormat()) during the
61 text object's lifetime.
65 class CGlobalText : public CPlainText,public MLayDoc,public MFormatText
68 // Special member functions
69 // Create new global text component whose sole content is an end-of-document character.
70 IMPORT_C static CGlobalText* NewL(const CParaFormatLayer* aGlobalParaLayer,const CCharFormatLayer* aGlobalCharLayer,
71 TDocumentStorage aStorage=ESegmentedStorage,TInt aDefaultTextGranularity=EDefaultTextGranularity);
72 // Restore a new global text, that uses the specified global layers.
73 IMPORT_C static CGlobalText* NewL(const CStreamStore& aStore,TStreamId aStreamId,
74 const CParaFormatLayer* aGlobalParaLayer,const CCharFormatLayer* aGlobalCharLayer,
75 MTextFieldFactory* aFieldFactory=NULL,
76 TDocumentStorage=ESegmentedStorage);
77 IMPORT_C ~CGlobalText();
78 // Global Format Layers
79 IMPORT_C void SetGlobalParaFormat(const CParaFormatLayer* aParaFormatLayer);
80 IMPORT_C void SetGlobalCharFormat(const CCharFormatLayer* aCharFormatLayer);
81 inline const CParaFormatLayer* GlobalParaFormatLayer()const;
82 inline const CCharFormatLayer* GlobalCharFormatLayer()const;
83 // MLayDoc implementation
84 IMPORT_C virtual TInt LdDocumentLength()const;
85 IMPORT_C virtual TInt LdToParagraphStart(TInt& aCurrentPos)const;
86 IMPORT_C virtual void GetParagraphFormatL(CParaFormat* aFormat,TInt aPos)const;
87 IMPORT_C virtual void GetChars(TPtrC& aView,TCharFormat& aFormat,TInt aStartPos)const;
88 IMPORT_C virtual TInt GetPictureSizeInTwips(TSize& aSize, TInt aPos)const;
89 IMPORT_C virtual CPicture* PictureHandleL(TInt aPos,MLayDoc::TForcePictureLoad aForceLoad)const;
90 IMPORT_C virtual TBool EnquirePageBreak(TInt aPos,TInt aLength=0)const;
91 IMPORT_C virtual TBool SelectParagraphLabel(TInt aPos);
92 IMPORT_C virtual void CancelSelectLabel();
93 // MFormatText implementation
94 IMPORT_C virtual void GetParaFormatL(CParaFormat* aFormat,TParaFormatMask& aVaries,TInt aPos,TInt aLength,
95 CParaFormat::TParaFormatGetMode aMode=CParaFormat::EAllAttributes)const;
96 IMPORT_C virtual void ApplyParaFormatL(const CParaFormat* aFormat,const TParaFormatMask& aMask,TInt aPos,TInt aLength);
97 IMPORT_C virtual void GetCharFormat(TCharFormat& aFormat,TCharFormatMask& aVaries,TInt aPos,TInt aLength)const;
98 IMPORT_C virtual void ApplyCharFormatL(const TCharFormat& aFormat,const TCharFormatMask& aMask,TInt aPos,TInt aLength);
100 IMPORT_C CGlobalText();
101 IMPORT_C CGlobalText(const CParaFormatLayer* aGlobalParaLayer,
102 const CCharFormatLayer* aGlobalCharLayer);
104 CGlobalText(const CGlobalText& aGlobalText);
105 CGlobalText& operator=(const CGlobalText& aGlobalText);
107 const CParaFormatLayer* iGlobalParaFormatLayer; // the global paragraph format layer; not owned
108 const CCharFormatLayer* iGlobalCharFormatLayer; // the global character format layer; not owned
115 #include <txtglobl.inl>