diff -r 000000000000 -r 2e3d3ce01487 filehandling/richtexttohtmlconverter/inc/RT2HTMCV.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/filehandling/richtexttohtmlconverter/inc/RT2HTMCV.H Tue Feb 02 10:12:00 2010 +0200 @@ -0,0 +1,113 @@ +// 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: +// Converter Architecture wrappers for CRT -> HTML conversion +// +// + +#ifndef __HTML_2_CRT_CONV_H__ +#define __HTML_2_CRT_CONV_H__ + +const TUid KCrt2HTMLConverterUid = {0x1000071c}; + +#include + +//------------------------------------------------------------------------------------------------- +// Fwd Decl. +class TOutputSink; + +//------------------------------------------------------------------------------------------------- +// Class CCrtToHTMLConverter. +// The CConverterBase2 derived class which is responsable for performing the conversion operation. +// 1. Only supports File->File conversions +// 2. Does not support embedded objects (ConArc has no mechanism to request a filename to convert the +// embedded object into) +// 3. The conversion is performed on a paragraph by paragraph basis + +class CCrtToHTMLConverter : public CConverterBase2, MRichTextStoreResolver +{ + public: // from CConverterBase2 + void ConvertL(const TFileName& aSourceFile, const TFileName& aTargetFile, MConverterUiObserver* aObserver = NULL); + void ConvertObjectL(RReadStream& aReadStream, RWriteStream& aWriteStream, MConverterUiObserver* aObserver=NULL); // Leaves with KErrNotSupported + void ConvertAL(const TFileName& aSourceFile, const TFileName& aTargetFile, MConverterUiObserver* aObserver=NULL); // Leaves with KErrNotSupported + void ConvertObjectAL(RReadStream& aReadStream, RWriteStream& aWriteStream, MConverterUiObserver* aObserver=NULL); // Leaves with KErrNotSupported + + TBool DoConvertL(); + TUid Uid(); + TInt Capabilities(); + void CancelConvert(); + + CCrtToHTMLConverter(); + ~CCrtToHTMLConverter(); + + // From MRichTextStoreResolver + const CStreamStore& StreamStoreL(TInt /*aPos*/)const { return *iStore; }; + static CConverterBase2* NewL(); + private: + void ResetMembers(); + void RestoreInputTextL(const TFileName& aSourceFile); + void PrepForConversionL(const TFileName& aSourceFile, const TFileName& aTargetFile); + void PrepForConversionL(RReadStream& aReadStream, RWriteStream& aWriteStream); + + // Output + void StartDocumentL(); + void EndDocumentL(); + void TranslateL (const TDesC& aBuf); + void WriteTagL(const TDesC8& aTagText); + void WriteContentL(const TDesC& aText); + // Processing + void ProcessParagraphFormatL(const CParaFormat* aParaFormat, TBool aClosePara = ETrue); + void ProcessParagraphTextL(TInt aPos, TInt aLength); + + void OpenCharFormatL (const TCharFormatMask& aMask, const TCharFormat& aFormat); + void CloseCharFormatL(const TCharFormatMask& aMask, const TCharFormat& aFormat); + void DiffCharFormats(const TCharFormat& aFormatA, const TCharFormat& aFormatB, TCharFormatMask& aMask); + + private: + CParaFormatLayer* iParaLayer; // The global paragraph format layer + CCharFormatLayer* iCharLayer; // The global character format layer + CRichText* iInputText; // The input rich text + HBufC* iInternalFile; // Interanl file copy for the input text + + CDirectFileStore* iStore; // The Root stream from which we are reading + + RFs iFs; // Our file server session + RFileWriteStream iFileStream; + RWriteStream& iHTMLOut; // Somewhere to write our output to + + TBullet* iBullet; // Pointer to any current bullet object. Null if we're not processing a list. + TInt iIndent; // Indent level (Number of
tags to insert) + + TInt iParaRemain; // How many paragraphs remain to be processed + TInt iParaCount; // How many paragraphs are there + TInt iParaNum; // Which paragraph are we processing now (-1 if we haven't started processing yet) + TInt iParaLen; // How long is the current paragraph + TInt iParaPos; // What is the offset of the start of the curent paragraph from the start of the input text + + TBool iInsertBlankDivClose; // Flag indicates if the current paragraph was blank + TInt iStyleIndex; // Index into the RichText style list, or -1 + TInt iOldFmtCount; // Checks if this loop has previously been entered + + MConverterUiObserver* iObserver; // Our observer object (or NULL if no-one is watching) + }; + +enum TTextToHTMLPanic + { + EHTMLTagTooSmall, + EHTMLBeyondLastPara, + EHTMLNotAPicture + }; + +void Panic(TTextToHTMLPanic aPanic); + +#endif