filehandling/htmltorichtextconverter/inc/CHtmlToCrtConvActionProcessor.h
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/filehandling/htmltorichtextconverter/inc/CHtmlToCrtConvActionProcessor.h	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,205 @@
+// 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:
+//
+
+#ifndef __CHTMLTOCRTCONVACTIONPROCESSOR_H__
+#define __CHTMLTOCRTCONVACTIONPROCESSOR_H__
+
+#include <e32std.h>
+#include <e32base.h>
+#include <f32file.h>
+#include <txtrich.h> 
+#include <txtfrmat.h>
+
+#define KDefaultTextColor KRgbBlack
+
+#include "CHtmlToCrtConvParser.h"
+#include "MHtmlToCrtConvResourceFile.h"
+
+enum THtmlToCrtConvTagType;
+enum THtmlToCrtConvAttributeType;
+
+class CHtmlToCrtConvActionProcessor : public CBase
+	{
+	enum TParserFlags
+		{
+		ENull = 0x00,
+		EAlignAttribPending = 0x01,
+		EBlockquotePending = 0x02,
+		EListPending = 0x04,
+		EIgnoreText = 0x08,
+		ESeenAltAttribute = 0x10
+		};
+
+	public:
+		static CHtmlToCrtConvActionProcessor* NewL(CRichText& aRichText, MHtmlToCrtConvResourceFile& aResourceFile);
+		~CHtmlToCrtConvActionProcessor();
+
+		void DoTagActionL(THtmlToCrtConvTagType aTagType, CHtmlToCrtConvParser::TTagState aTagState);
+		void DoAttributeActionL(THtmlToCrtConvTagType aTagType, CHtmlToCrtConvParser::TTagState aTagState, const THtmlToCrtConvAttributeType& aType, const TDesC8& aValue, TBool& aImgTagResourceReqd);
+	/**
+		@fn				void DoWriteTextL(const TDesC16& aText)
+		Intended Usage	: inserts text at the end of the CRichText object
+		@param			aText The text to be inserted
+		@return			void
+	 */
+		void DoWriteTextL(const TDesC16& aText);
+		void InsertImgTagResourceL();
+
+	private:
+		CHtmlToCrtConvActionProcessor(CRichText& aRichText, MHtmlToCrtConvResourceFile& aResourceFile);
+		void ConstructL();
+
+		void TrimBufferL(TPtr& aPtr);
+	/**
+		@fn				void DoBlockLevelTagActionL()
+		Intended Usage	: inserts a paragraph delimiter and applies alignment to the CRichText object.
+						  Should be called for each block level HTML tag
+		@return			void
+	 */
+		void DoBlockLevelTagActionL();
+		void ApplyAlignmentL();
+		void InsertParagraphDelimiterL();
+		void SetFontStrokeWeightL(TFontStrokeWeight aStrokeWeight);
+		void SetFontPostureL(TFontPosture aFontPosture);
+		void SetFontUnderlineL(TFontUnderline aFontUnderline);
+		void SetFontPrintPositionL(TFontPrintPosition aFontPrintPosition);
+		void SetFontStrikethroughL(TFontStrikethrough aFontStrikethrough);
+		void SetFontTextColorL(const TRgb& aFontTextColor);
+		void SetFontSizeL(TInt aFontSizeInTwips);
+//
+//tags
+//
+	/**
+		@fn				void DoHeaderL(CHtmlToCrtConvParser::TTagState aTagState, TInt aFontSizeInTwips)
+		Intended Usage	: sets font stroke weight and font size in the CRichText object
+		@param			aTagState  whether the HTML tag is an opening or closing tag
+		@param			aFontSizeInTwips  the font size in twips
+		@return			void
+	 */
+		void DoHeaderL(CHtmlToCrtConvParser::TTagState aTagState, TInt aFontSizeInTwips);	
+		void DoCenterL(CHtmlToCrtConvParser::TTagState aTagState);
+		void DoBlockquoteL(CHtmlToCrtConvParser::TTagState aTagState);
+	/**
+		@fn				void DoFormL(CHtmlToCrtConvParser::TTagState aTagState)
+		Intended Usage	: updates the flag EIgnoreText
+		@param			aTagState  whether the HTML tag is an opening or closing tag
+		@return			void
+	 */
+		void DoFormL(CHtmlToCrtConvParser::TTagState aTagState);
+	/**
+		@fn				void DoUnorderedListL(CHtmlToCrtConvParser::TTagState aTagState)
+		Intended Usage	: applies bulleted list formatting to the CRichText object
+		@param			aTagState  whether the HTML tag is an opening or closing tag
+		@return			void
+	 */
+		void DoUnorderedListL(CHtmlToCrtConvParser::TTagState aTagState);
+		void DoParagraphL();
+		void DoTableL();
+		void DoDivisionL();
+		void DoPreformattedL();
+		void DoHorizontalRuleL();
+		void DoItalicL(CHtmlToCrtConvParser::TTagState aTagState);
+		void DoBoldL(CHtmlToCrtConvParser::TTagState aTagState);
+		void DoUnderlineL(CHtmlToCrtConvParser::TTagState aTagState);
+		void DoSubscriptL(CHtmlToCrtConvParser::TTagState aTagState);
+		void DoSuperscriptL(CHtmlToCrtConvParser::TTagState aTagState);
+		void DoStrikethroughL(CHtmlToCrtConvParser::TTagState aTagState);
+		void DoBreakL(CHtmlToCrtConvParser::TTagState aTagState);
+	/**
+		@fn				void DoTitleL(CHtmlToCrtConvParser::TTagState aTagState)
+		Intended Usage	: renders title text as a header (H1) and inserts a paragraph delimiter
+		@param			aTagState  whether the HTML tag is an opening or closing tag
+		@return			void
+	 */
+		void DoTitleL(CHtmlToCrtConvParser::TTagState aTagState);
+	/**
+		@fn				void DoCaptionL(CHtmlToCrtConvParser::TTagState aTagState)
+		Intended Usage	: inserts a paragraph delimiter at the end of the CRichText object
+		@param			aTagState  whether the HTML tag is an opening or closing tag
+		@return			void
+	 */
+		void DoCaptionL(CHtmlToCrtConvParser::TTagState aTagState);
+	/**
+		@fn				void DoTableDataL(CHtmlToCrtConvParser::TTagState aTagState)
+		Intended Usage	: inserts a paragraph delimiter at the end of the CRichText object
+		@param			aTagState  whether the HTML tag is an opening or closing tag
+		@return			void
+	 */
+		void DoTableDataL(CHtmlToCrtConvParser::TTagState aTagState);
+	/**
+		@fn				void DoListItemL(CHtmlToCrtConvParser::TTagState aTagState)
+		Intended Usage	: updates the flag EListPending
+		@param			aTagState  whether the HTML tag is an opening or closing tag
+		@return			void
+	 */
+		void DoListItemL(CHtmlToCrtConvParser::TTagState aTagState);
+		void DoHtmlL(CHtmlToCrtConvParser::TTagState aTagState);
+
+		//attributes
+		void DoAlignL(const TDesC8& aValue, CHtmlToCrtConvParser::TTagState aTagState);
+	/**
+		@fn				void DoShowUrlL(const TDesC8& aValue, CHtmlToCrtConvParser::TTagState aTagState)
+		Intended Usage	: inserts " ( aValue )" at the end of the CRichText object
+		@param			aValue     the value of the Href or Src HTML tag attribute
+		@param			aTagState  whether the HTML tag is an opening or closing tag
+		@return			void
+	 */
+		void DoShowUrlL(const TDesC8& aValue, CHtmlToCrtConvParser::TTagState aTagState, THtmlToCrtConvTagType aTagType);
+	/**
+		@fn				void DoAltL(const TDesC8& aValue, CHtmlToCrtConvParser::TTagState aTagState)
+		Intended Usage	: inserts "<aValue>" at the end of the CRichText object
+		@param			aValue     the value of the Alt HTML tag attribute
+		@param			aTagState  whether the HTML tag is an opening or closing tag
+		@param			aTagType  the type of HTML tag
+		@return			void
+	 */
+		void DoAltL(const TDesC8& aValue, CHtmlToCrtConvParser::TTagState aTagState);
+
+		//flags
+		inline void SetFlag (TParserFlags aFlag);
+		inline TBool IsFlagSet (TParserFlags aFlag) const;
+		inline void ClearFlag (TParserFlags aFlag);
+
+	private:
+		CRichText& iText;//reference to rich text object owned by converter
+		TInt iTextPosition;
+		TInt iAlignmentStartPosition;
+		TInt iBlockquoteStartPosition;
+		TInt iListStartPosition;
+		TUint iFlags;
+
+		TCharFormatMask iCharFormatMask;
+		TCharFormat iCharFormat;
+		TParaFormatMask iParaFormatMask;
+		CParaFormat* iParaFormat;
+		MHtmlToCrtConvResourceFile& iResourceFile;
+	};
+
+void CHtmlToCrtConvActionProcessor::SetFlag (TParserFlags aFlag)
+	{
+	iFlags |= aFlag;
+	}
+
+TBool CHtmlToCrtConvActionProcessor::IsFlagSet (TParserFlags aFlag) const
+	{
+	return (iFlags & aFlag);
+	}
+
+void CHtmlToCrtConvActionProcessor::ClearFlag (TParserFlags aFlag)
+	{
+	iFlags &= ~aFlag;
+	}
+
+#endif