diff -r 000000000000 -r 1fb32624e06b textrendering/texthandling/incp/T_RTPAR.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/textrendering/texthandling/incp/T_RTPAR.H Tue Feb 02 02:02:46 2010 +0200 @@ -0,0 +1,118 @@ +/* +* Copyright (c) 1997-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 __T_RTPAR_H__ +#define __T_RTPAR_H__ + +#include +#include + +// classes defined in this header +class CRichTextReader; +class CPMLWriter; +// + +enum TTagType { // Possible types of tag + EGlobal, + EParagraph, + ECharacter , + EControl + }; + +enum TTagStatus { + ETagStart, // "<" + ETagEnd // ">" + }; + + +class CRichTextReader : public CBase + { +public: + static CRichTextReader* NewL(); + void Destruct(); + + // these functions convert a supplied RichText doc into PML + // which is contained in the returned buffer. + CBufSeg* ConvertRichText(CRichText* aRichTextDoc, RConsole aConsole); + CBufSeg* ConvertRichText(CRichText* aRichTextDoc); +protected: + CRichTextReader(); + void ConstructL(); +private: + void SenseGlobalFormat(); + TInt TranslatePhrase(TInt aPos); + void CompareParaFormats(); + void CompareCharFormats(); + void CompareParaToFactory(CParaFormat* aSensed); + void CompareCharToFactory(TCharFormat aSensed); + void CheckTabList(CParaFormat* aFormatOne, CParaFormat* aFormatTwo); + TParaBorder* CopyBorderL(const TParaBorder* aFrom,TParaBorder* aTo); + TBullet* CopyBulletL(const TBullet* aFrom,TBullet* aTo); +private: + CRichText* iRichTextDoc; + CParaFormat* iThisParaFormat; + CParaFormat* iPrevParaFormat; + TCharFormat iThisCharFormat; + TCharFormat iPrevCharFormat; + TParaBorder* iBorder; + + RConsole iConsole; + TBool iConsoleExists; + CPMLWriter* iPMLWriter; + TInt iParaStart; // Start pos of current paragraph + TInt iDocLength; // length in chars of rich text doc + }; + + +class CPMLWriter : public CBase + { +public: + static CPMLWriter* NewL(); + void Destruct(); + + void Insert(const TDesC& aBuf); // inserts a string into PML doc + void Delete(TUint aNumberOfCharsToDelete); // deletes chars prior to current insert pos + void Output(RConsole aConsole); // output PML doc to screen + inline CBufSeg* ReturnPmlDoc() {return iTextBuf;} + inline TUint WritePos() {return iInsertPos;} + void SetTag(TTagType, TTagStatus); // Prints tag delimiters & tag type + void SetTab(TTabStop aTabStop); + void SetFormat(TTextFormatAttribute aAttribute, TInt aValue); + void SetFormat(TTextFormatAttribute aAttribute, TParaBorder* aParaBorder); + void SetFormat(TTextFormatAttribute aAttribute, const TTypeface &aTypeface); + void SetFormat(TTextFormatAttribute aAttribute, TBullet* aBullet); + void SetFormat(TTextFormatAttribute aAttribute, TTabStop aTabStop); +protected: + CPMLWriter(); + void ConstructL(); +private: + void ProcessAlignment(TInt aValue); + void ProcessLineSpacingControl(TInt aValue); + void ProcessFontPrintPos(TInt aValue); + void ProcessBooleanAtt(TTextFormatAttribute aAttribute, TInt aValue); + void ProcessBorder(TTextFormatAttribute aAttribute, TInt aValue); + void SquashBuf(const TDesC& aBuffer, TDes8& aTarget); // squashes 16 bit buffers to 8 bit (for unicode) + void ExpandBuf(const TDes8& aBuffer, TDes& aTarget); +private: + CBufSeg* iTextBuf; // Buffer for text file to be read into + TUint iInsertPos; + }; + + + +#endif