textrendering/textformatting/inc/form_and_etext_editor.h
changeset 0 1fb32624e06b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/textrendering/textformatting/inc/form_and_etext_editor.h	Tue Feb 02 02:02:46 2010 +0200
@@ -0,0 +1,104 @@
+/*
+* Copyright (c) 2000-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 FORM_AND_ETEXT_EDITOR_H_
+#define FORM_AND_ETEXT_EDITOR_H_ 1
+
+#include <frmtview.h>
+#include <txtrich.h>
+#include "unified_editor.h"
+
+/**
+TFormAndEtextEditor is an editor interface class that can be constructed as a facade
+over a FORM object and an ETEXT object, which may be either a CGlobalText or a CRichText
+object. It implements the unified editing interface, MUnifiedEditor,
+@internalAll
+*/
+class TFormAndEtextEditor: public MUnifiedEditor,
+	public MUnifiedEditor::MStyleSupport,
+	public MUnifiedEditor::MPictureSupport,
+	public MUnifiedEditor::MClipboardSupport
+
+	{
+public:
+	TFormAndEtextEditor(): iTextView(NULL), iGlobalText(NULL), iRichText(NULL) { }
+	TFormAndEtextEditor(CTextView& aTextView,CGlobalText& aRichText):
+		iTextView(&aTextView), iGlobalText(&aRichText), iRichText(NULL) { }
+	TFormAndEtextEditor(CTextView& aTextView,CRichText& aRichText):
+		iTextView(&aTextView), iGlobalText(&aRichText), iRichText(&aRichText) { }
+	void Set(CTextView& aTextView,CGlobalText& aGlobalText)
+		{ iTextView = &aTextView; iGlobalText = &aGlobalText; iRichText = NULL; }
+	void Set(CTextView& aTextView,CRichText& aRichText)
+		{ iTextView = &aTextView; iGlobalText = &aRichText; iRichText = &aRichText; }
+
+	// virtual functions from MUnifiedEditor
+	IMPORT_C MTmOptionalInterface* Interface(TUint aId);
+	IMPORT_C TInt DocumentLength() const;
+	IMPORT_C void GetText(TInt aPos,TPtrC& aText) const;
+	IMPORT_C void GetBaseFormatL(TTmCharFormat& aCharFormat,RTmParFormat& aParFormat) const;
+	IMPORT_C void GetCharFormat(TInt aPos,TFormatLevel aLevel,
+								TTmCharFormatLayer& aFormat,TInt& aRunLength) const;
+	IMPORT_C void GetParFormatL(TInt aPos,TFormatLevel aLevel,
+								RTmParFormatLayer& aFormat,TInt& aRunLength) const;
+	IMPORT_C void InsertTextL(TInt aPos,const TDesC& aText,
+							  const TDesC* aStyle = NULL,
+							  const TTmCharFormatLayer* aCharFormat = NULL,
+							  const RTmParFormatLayer* aParFormat = NULL);
+	IMPORT_C void DeleteTextL(TInt aPos,TInt aLength);
+	IMPORT_C void SetBaseFormatL(const TTmCharFormat& aCharFormat,const RTmParFormat& aParFormat);
+	IMPORT_C void SetCharFormatL(TInt aPos,TInt aLength,const TTmCharFormatLayer& aFormat);
+	IMPORT_C void SetParFormatL(TInt aPos,TInt aLength,const RTmParFormatLayer& aFormat);
+	IMPORT_C void DeleteCharFormatL(TInt aPos,TInt aLength);
+	IMPORT_C void DeleteParFormatL(TInt aPos,TInt aLength);
+
+	// virtual functions from MUnifiedEditor::MStyleSupport
+	IMPORT_C TInt CreateStyleL(const RTmStyle& aStyle);
+	IMPORT_C TInt ChangeStyleL(const RTmStyle& aStyle);
+	IMPORT_C TInt SetStyleL(TInt aPos,TInt aLength,const TDesC& aName);
+	IMPORT_C TInt RenameStyleL(const TDesC& aOldName,const TDesC& aNewName);
+	IMPORT_C TInt DeleteStyleL(const TDesC& aName);
+	IMPORT_C TInt StyleCount() const;
+	IMPORT_C void GetStyle(TInt aPos,TPtrC& aName,TInt& aRunLength) const;
+	IMPORT_C TInt GetStyleByNameL(const TDesC& aName,RTmStyle& aStyle) const;
+	IMPORT_C TInt GetStyleByIndexL(TInt aIndex,RTmStyle& aStyle) const;
+
+	// virtual functions from MUnifiedEditor::MPictureSupport
+	IMPORT_C void InsertPictureL(TInt aPos, const TPictureHeader& aPictureIn);
+	IMPORT_C void DropPictureL(TInt aPos);
+	IMPORT_C void Picture(TInt aPos, TPictureHeader& aPictureOut) const;
+
+	// virtual functions from MUnifiedEditor::MClipboardSupport
+	IMPORT_C void CopyToStoreL(CStreamStore& aStore, CStreamDictionary& aDictionary,
+		TInt aPos, TInt aLength) const;
+	IMPORT_C void PasteFromStoreL(const CStreamStore& aStore,
+		const CStreamDictionary& aDictionary, TInt aPos);
+
+private:
+	void SetCharFormatHelperL(TInt aPos, TInt aLength, const TTmCharFormatLayer& aFormat);
+	void SetParFormatHelperL(TInt aPos, TInt aLength, const RTmParFormatLayer& aFormat);
+	TInt SetStyleHelperL(TInt aPos, TInt aLength, const TDesC& aName);
+	void AdjustSelectionL(TInt aPos, TInt aIncreaseInCharacterNumber, TBool aFormatChanged);
+
+	CTextView* iTextView;
+	CGlobalText* iGlobalText;
+	CRichText* iRichText;
+	};
+
+#endif // FORM_AND_ETEXT_EDITOR_H_