filehandling/htmltorichtextconverter/inc/CHtmlToCrtConvBuffer.h
author fimarlaht2 <>
Mon, 18 Oct 2010 15:01:14 +0300
branchRCL_3
changeset 85 32f887d619a0
parent 0 2e3d3ce01487
permissions -rw-r--r--
Bug 3556 - Not possible to restore factory settings

// Copyright (c) 2001-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:
//

#include <e32std.h>
#include <e32base.h>
#include <f32file.h>
#include <charconv.h>

class CHtmlToCrtConvBuffer : public CBase
	{
	public:
		static CHtmlToCrtConvBuffer* NewL(const TDesC& aFile, RFs& aFsSession, CCnvCharacterSetConverter& aCnvCharacterSetConverter);
		~CHtmlToCrtConvBuffer();

	/**
		@fn		TBool ReadCharacterL(TChar& aCharacter, TInt& aBufferPosition, TBool& aEndOfBuffer)		
		Intended Usage	: gets next character from the file
		@param	aCharacter the character which was read
		@param	aBufferPosition	the current buffer position
		@param	aEndOfBuffer	ETrue if end of buffer reached, else EFalse
		@return	TBool ETrue if character read, else EFalse
	 */
		TBool ReadCharacterL(TChar& aCharacter, TInt& aBufferPosition, TBool& aEndOfBuffer);
		void GetPartOfBufferL(TPtrC16& aPartOfBuffer, TInt aStartPosition, TInt aEndPosition) const;
		void GetToEndOfBufferL(TPtrC16& aPartOfBuffer, TInt aStartPosition) const;
	/**
		@fn		GetSampleOfTextFromFileL(TDes8& aSample, TInt aLength, TInt aOffset)
		Intended Usage	:	reads the specified number of characters from the file at a specified offset 
		@param	aSample	descriptor into which characters are read
		@param	aLength	number of characters to be read
		@param	aOffset	offset from start of file
		@return	void
	 */
		void GetSampleOfTextFromFileL(TDes8& aSample, TInt aLength, TInt aOffset);
		void ResetL();

	private:
		CHtmlToCrtConvBuffer(CCnvCharacterSetConverter& aCnvCharacterSetConverter);
		void ConstructL(const TDesC& aFile, RFs& aFsSession);
	/**
		@fn		TBool FillBufferL()
		Intended Usage	:	used to read characters from the file into the buffer 
		@return	TBool EFalse if no characters read from file, else Etrue
	 */
		TBool FillBufferL();
		void DoConvertBufferL(TPtr8& aSourcePtr, TPtr16& aUnicodePtr, TInt& aLength, TBool& aEndOfFile);

	private:
		CCnvCharacterSetConverter& iCnvCharacterSetConverter;
		TInt iState;
		RFile iFile;
		HBufC8* iSourceBuffer;
		HBufC16* iUnicodeBuffer;
		TInt iBufferPosition;
	};