--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/texthandling/stext/TXTPLAIN.H Tue Feb 02 02:02:46 2010 +0200
@@ -0,0 +1,137 @@
+/*
+* Copyright (c) 1998-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:
+* Header for the classes that import and export plain text into and out of ETEXT.
+*
+*/
+
+
+#ifndef __TXTPLAIN__
+#define __TXTPLAIN__ 1
+
+#include <e32std.h>
+#include <s32mem.h>
+#include <txtetext.h>
+#include "TxtWriter.h"
+
+class CCnvCharacterSetConverter;
+class TPlainTextIOState;
+
+NONSHARABLE_CLASS(CPlainTextConverter) : public CBase
+/**
+@internalComponent
+*/
+ {
+ public:
+ static CPlainTextConverter* NewLC();
+ ~CPlainTextConverter();
+ void PrepareToConvertL(TPlainTextIOState& aState,const TDesC8* aSample);
+
+ enum
+ {
+ EConversionBufferSize = 1024
+ };
+
+ CCnvCharacterSetConverter* iConverter; // use this converter to translate input or output
+ TUint8* iConversionBuffer; // the buffer used by iConverter for non-Unicode text
+ TInt iConversionBufferLength; // current number of characters in the conversion buffer
+ };
+
+class TPlainTextIOState
+/**
+@internalComponent
+*/
+ {
+ public:
+ TPlainTextIOState(const CPlainText::TImportExportParam& aParam,CPlainText::TImportExportResult& aResult,
+ RWriteStream& aOutput,RReadStream& aInput);
+ TBool Finished() const
+ { return iResult.iOutputChars >= iParam.iMaxOutputChars || iResult.iInputChars >= iParam.iMaxInputChars; }
+ TText ReadRawCharL();
+ void WriteRawCharL(TText aChar);
+
+ const CPlainText::TImportExportParam& iParam;
+ CPlainText::TImportExportResult& iResult;
+ RWriteStream& iOutput;
+ RReadStream& iInput;
+ CPlainTextConverter* iConverter;// if non-null, use CHARCONV, via this object, to convert a
+ // foreign encoding to or from Unicode
+ TBool iSwapInput; // input needs to be byte-swapped
+ TBool iCheckByteOrder; // flip iSwapInput if the next input character is 0xFFFE (byte-swapped byte order mark)
+ };
+
+class TPlainTextWriter: public TPlainTextIOState
+/**
+@internalComponent
+*/
+ {
+ public:
+ static void TranslateL(const CPlainText::TImportExportParam& aParam,CPlainText::TImportExportResult& aResult,
+ RWriteStream& aOutput,RReadStream& aInput);
+
+ private:
+ TPlainTextWriter(const CPlainText::TImportExportParam& aParam,CPlainText::TImportExportResult& aResult,
+ RWriteStream& aOutput,RReadStream& aInput);
+ void TranslateHelperL();
+
+ enum
+ {
+ EDefaultLineBufferSize = CPlainTextConverter::EConversionBufferSize * 2
+ };
+
+ void TranslateToEofL();
+ void FlushL();
+ void WriteCharL(TText aChar);
+ void WriteNewLineL();
+ void WriteAndConvertL(const TText* aText,TInt aLength);
+
+ RBufReadStream iBufReadStream; // a stream over the input buffer
+ TInt iMaxLineLength; // wrap lines automatically if they exceed this length
+ TInt iLineLength; // length of the current line
+ TText* iLineBuffer; // if non-null, this buffer contains the current line, or Unicode text
+ // to be converted to a foreign encoding
+ TInt iMaxLineBufferLength; // maximum number of characters in iLineBuffer
+ };
+
+/**
+@internalComponent
+*/
+NONSHARABLE_CLASS(TPlainTextReader) : public TPlainTextIOState, public MOutputChar
+ {
+ public:
+ static void TranslateL(const CPlainText::TImportExportParam& aParam,CPlainText::TImportExportResult& aResult,
+ RWriteStream& aOutput,RReadStream& aInput);
+
+ private:
+ TPlainTextReader(const CPlainText::TImportExportParam& aParam,CPlainText::TImportExportResult& aResult,
+ RWriteStream& aOutput,RReadStream& aInput);
+ void TranslateHelperL(TSLBTransaltor& aSLBTranslator);
+
+ enum
+ {
+ EInputBufferSize = CPlainTextConverter::EConversionBufferSize * 2
+ };
+
+ void TranslateToEofL(TSLBTransaltor& aSLBTranslator);
+ TText ReadAndConvertL();
+ virtual void OutputCharL(TText aChar);
+
+ TText* iInputBuffer; // if non-null, this buffer contains Unicode text
+ // converted from a foreign encoding
+ TInt iInputLength; // number of characters currently stored in iInputBuffer
+ TInt iInputPos; // current position in iInputBuffer;
+ TInt iConversionState; // state used by iConverter when converting to Unicode
+ };
+
+#endif // __TXTPLAIN__