imageeditor/ImageEditorManager/inc/ImageEditorPluginManager.h
changeset 1 edfc90759b9f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imageeditor/ImageEditorManager/inc/ImageEditorPluginManager.h	Fri Jan 29 13:53:17 2010 +0200
@@ -0,0 +1,527 @@
+/*
+* Copyright (c) 2010 Ixonos Plc.
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the "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:
+* Ixonos Plc
+*
+* Description: 
+*
+*/
+
+
+
+#ifndef IMAGEEDITORPLUGINMANAGER_H
+#define IMAGEEDITORPLUGINMANAGER_H
+
+//	INCLUDES
+#include <e32base.h>
+
+#include "imageeditordebugutils.h"
+#include "commondefs.h"
+
+/// FORWARD DECLARATIONS
+class CCoeControl;
+class CFbsBitmap;
+class CPluginLoader;
+class CEditorImage;
+class CEngineWrapper;
+class CSystemParameters;
+class CArrayFixedFlat;
+
+#ifdef RD_CONTENTNOTIFICATION
+class CContentNotification;
+#endif
+
+/*	CLASS: CImageEditorPluginManager
+*
+*	CImageEditorPluginManager functions as Model of the application in 
+*	MVC design pattern sense. It includes an instance of Scalado's MIA
+*	image processing engine and manages plug-in communication with the
+*	application controller.
+*/
+class CImageEditorPluginManager : public CBase
+{
+public:
+
+/** @name Methods:*/
+//@{
+
+	/** NewL factory method, pops cleanupstack
+	*
+	*	@param -
+	*	@return pointer to created CImageEditorPluginManager object
+	*/
+	IMPORT_C static CImageEditorPluginManager * NewL ();
+
+	/** Destructor
+	*
+	*	@param -
+	*	@return -
+	*/
+	IMPORT_C virtual ~CImageEditorPluginManager ();
+
+	/** OpenPluginL
+	*
+	*	Loads and opens plug-in
+	*	
+	*	@param aFileName - plug-in file name
+	*	@return -
+	*/
+	IMPORT_C void OpenPluginL (const TDesC & aFileName);
+
+	/** CreatePluginControlL
+	*
+	*	Creates UI control for the plug-in in question.
+	*	
+	*	@param aRect - control rectangle
+	*	@param aParent - parent control 
+	*	@param aPluginControl - reference to plug-in control
+	*	@return pointer to plug-in control
+	*/
+	IMPORT_C TInt CreatePluginControlL (
+		const TRect &	aRect,
+		CCoeControl *	aParent,
+		CCoeControl *&	aPluginControl
+		);
+
+	/** ClosePlugin
+	*
+	*	Deletes current plug-in and unloads it.
+	*	
+	*	@param -
+	*	@return -
+	*/
+	IMPORT_C void ClosePlugin ();
+
+	/** ShowPluginPopup
+	*
+	*	Shows plugin-related popup note.
+	*	
+	*	@param -
+	*	@return -
+	*/
+	IMPORT_C void ShowPluginPopup ();
+
+	/** UndoL
+	*
+	*	Undoes last operation performed to the image.
+	*	
+	*	@param -
+	*	@return -
+	*/
+	IMPORT_C void UndoL();
+
+	/** RedoL
+	*
+	*	Redoes the last removed operation to the image.
+	*	
+	*	@param -
+	*	@return -
+	*/
+	IMPORT_C void RedoL();
+
+	/** LoadImageL
+	*
+	*	Loads image with MIA engine.
+	*	
+	*	@param aUseIPECodec - ImageEditor's own codec should be used
+	*	@return -
+	*/
+	IMPORT_C void LoadImageL (const TBool aUseIPECodec);
+
+    /** SaveImageL
+	*
+	*	Saves image with MIA engine.
+	*	
+	*	@param aQuality - JPEG quality factor
+	*	@param aSize - if not NULL includes the custom output size
+	*	@return -
+	*/
+	IMPORT_C void SaveImageL (
+        const TInt      aQuality,
+        const TSize *   aSize = NULL    
+        );
+
+	/** PrepareAsyncSaveL
+    *
+	*	Prepares to save the image by block
+	*	
+	*	@param aBlockCount - Number of blocks to save
+	*	@param aQuality - JPEG quality factor
+	*	@param aSize - if not NULL includes the custom output size
+	*	@return -
+	*/
+	IMPORT_C void PrepareAsyncSaveL (
+        const TInt      aQuality,
+        const TSize *   aSize = NULL
+        );
+
+	/** SaveBlock
+	*
+	*	Saves a block 
+	*	
+	*	@param - 
+	*	@return - returns percentage of image data saved, 100 when ready
+	*/
+	IMPORT_C TInt SaveBlockL();
+
+	/** SaveAbortL
+	*
+	*	Must be called after aborting block saving
+	*	
+	*	@param - 
+	*/
+	EXPORT_C void SaveAbortL();
+
+	/** FinishAsyncSave
+	*
+	*	Finishes asynchronous saving with MIA engine.
+	*	
+	*	@param  - 
+	*	@return -
+	*/
+	IMPORT_C void FinishAsyncSaveL();
+
+	/** ProcessImageL
+    *
+	*	Processes image with MIA engine.
+	*	
+	*	@param -
+	*	@return -
+	*/
+	IMPORT_C void ProcessImageL();
+
+	/** PrepareAsyncProcessL
+    *
+	*	Prepares to process the image by block
+	*	
+	*	@param aBlockCount - Number of blocks to process
+	*	@return -
+	*/
+	IMPORT_C void PrepareAsyncProcessL(TInt& aBlockCount);
+
+	/** ProcessBlockL
+	*
+	*	Render a block 
+	*	
+	*	@param - 
+	*	@return - error code, KErrNone until whole image is saved and KErrCompletion
+    *             when ready
+	*/
+	IMPORT_C TInt ProcessBlockL();
+
+	/** FinishAsyncProcessL
+	*
+	*	Finishes asynchronous processing with MIA engine.
+	*	
+	*	@param  - 
+	*	@return -
+	*/
+	IMPORT_C void FinishAsyncProcess();
+
+    /** GetPreviewImage
+	*
+	*	Getter for preview bitmap.
+	*
+	*	@param -
+	*	@return pointer to CFbsBitmap
+	*/
+	IMPORT_C CFbsBitmap * GetPreviewImage();
+
+    /** GetFullImage
+	*
+	*	Getter for bfull size bitmap.
+	*
+	*	@param -
+	*	@return pointer to CFbsBitmap
+	*/
+	IMPORT_C CFbsBitmap * GetFullImage();
+
+    /** GetImageName
+	*
+	*	Getter for image file name
+	*
+	*	@param -
+	*	@return reference to the file name
+	*/
+	IMPORT_C const TDesC & GetImageName();
+
+	/** SetPreviewImage 
+	*
+	*	Setter for preview bitmap.
+	*
+	*	@param aBitmap - pointer to preview bitmap
+	*	@return -
+	*/
+	IMPORT_C void SetPreviewImage (CFbsBitmap * aBitmap);
+
+	/** SetFullImage 
+	*
+	*	Setter for preview bitmap.
+	*
+	*	@param aBitmap - pointer to full size bitmap
+	*	@return -
+	*/
+	IMPORT_C void SetFullImage (CFbsBitmap * aBitmap);
+
+    /** SetImageName
+	*
+	*	Setter for image file name
+	*
+	*	@param aFileName - new file name
+	*	@return -
+	*/
+	IMPORT_C void SetImageName (const TDesC & aFileName);
+
+	/** SetScreenSizeL
+	*
+	*	Set current screen size to the engine
+	*
+	*	@param -
+	*	@return -
+	*/
+	IMPORT_C void SetScreenSizeL ();
+
+	/** ResetEngine
+	*
+	*	Resets MIA engine.
+	*
+	*	@param -
+	*	@return -
+	*/
+	IMPORT_C void ResetEngineL();
+
+	/** PurgeUndoRedoHistory
+	*
+	*	Purges undo / redo history.
+	*
+	*	@param -
+	*	@return -
+	*/
+	IMPORT_C void PurgeUndoRedoHistory();
+
+    /** CanUndo
+	*
+	*	Checks, if undoable changes are made.
+	*
+	*	@param -
+	*	@return - ETrue if we can undo, EFalse otherwise
+	*/
+	IMPORT_C TBool CanUndo();
+
+    /** IsImageChanged
+	*
+	*	Checks, if image is changed.
+	*
+	*	@param -
+	*	@return - ETrue if image changed, EFalse otherwise
+	*/
+	IMPORT_C TBool IsImageChanged();
+
+    /** IsLandscapeEnabledL
+	*
+	*	Checks, if plugin is landscape enabled.
+	*
+	*	@param -
+	*	@return - ETrue if landscape enabled, EFalse otherwise
+	*/
+    IMPORT_C TBool IsLandscapeEnabledL() const;
+
+
+    /** ZoomL
+	*
+	*	Zooms image.
+	*
+	*	@param aZoom - zoom mode to be set
+	*	@return - 
+	*/
+	IMPORT_C void ZoomL (const TZoom aZoom);
+
+    /** GetZoomMode
+     * Returns current zoom mode.
+     *
+     * @since S60 v5.0
+     * @param -
+     * @return TZoomMode current zooming mode
+     */
+    IMPORT_C TZoomMode GetZoomMode();
+    
+    /** PanL
+	*
+	*   Pans image.
+	*
+	*	@param aDir - direction 
+	*	@return -
+    *   @see commondefs.h
+	*/
+	IMPORT_C void PanL (const TDirection aDir);
+    
+    /** Pan
+	*
+	*   Pans image.
+	*
+	*	@param aXChange x-directional change on the screen
+	*	@param aYChange y-directional change on the screen
+	*	@return -
+	*/
+	IMPORT_C void PanL( TInt aXChange, TInt aYChange );
+
+
+    /** RotateL
+	*
+	*	Rotates image.
+	*
+	*	@param aRot - rotate direction 
+	*	@return -
+    *   @see commondefs.h
+	*/
+	IMPORT_C void RotateL (const TRotation aRot);
+
+	/** AddFilterToEngineL
+	*
+	*	Adds filter to MIA engine. Sets undo/redo point.
+	*
+	*	@param -
+	*	@return -
+	*/
+	IMPORT_C void AddFilterToEngineL();
+
+	/** GetSystemParameters
+	*
+	*	Gets system parameters.
+	*
+	*	@param -
+	*	@return const CSystemParameters &
+	*/
+	IMPORT_C const CSystemParameters & GetSystemParameters() const;
+
+    /** IsPluginLoaded
+	*
+	*	Check if a plug-in is loaded
+    *
+    *	@param -
+	*	@return - ETrue if plug-in is loaded, EFalse otherwise
+    */
+	IMPORT_C TBool IsPluginLoaded() const;
+
+    /** RestoreFilterL
+	*
+	*	Restores current filter to main engine.
+    *
+    *	@param -
+	*	@return - 
+    */
+	IMPORT_C void RestoreFilterL() const;
+
+//@}
+
+protected:
+
+/** @name Methods:*/
+//@{
+
+//@}
+
+/** @name Members:*/
+//@{
+
+//@}
+
+private:
+
+/** @name Methods:*/
+//@{
+
+	/** Default constructor
+	*
+	*	@param -
+	*	@return -
+	*/
+	CImageEditorPluginManager ();
+
+	/** Second phase constructor, may leave
+	*
+	*	@param -
+	*	@return -
+	*/
+	void ConstructL ();
+
+	/** SetParameters
+	*
+	*	Sets engine parameters depending on the filter type
+	*
+	*	@param -
+	*	@return -
+	*/
+	void SetParametersL();
+
+	/** RenderL
+	*
+	*	Renders image.
+	*
+	*	@param aMultiSessionBlockCount - Has two purposes:
+	*			1) If not null, marks a request to render 
+	*			   calling RenderBlock several times
+	*			2) On return, contains the number of blocks to save
+	*	@return -
+	*/
+	void RenderL(TInt* aMultiSessionBlockCount = NULL);
+
+	/** Cleanup
+	*
+	*	Deletes current plug-in, editor image, engine and cleans up wrapper
+	*	parameters.
+	*
+	*	@param -
+	*	@return -
+	*/
+	void Cleanup();
+
+    /** Copy constructor, disabled
+	*/
+	CImageEditorPluginManager (const CImageEditorPluginManager & rhs);
+
+	/** Assignment operator, disabled 
+	*/
+	CImageEditorPluginManager & operator= (const CImageEditorPluginManager & rhs);
+
+//@}
+
+/** @name Members:*/
+//@{
+	/// Plug-in loader
+	CPluginLoader *		iPluginLoader;
+	/// Edited image as CEditorImage
+	CEditorImage *		iImage;
+    /// MIA engine wrapper
+    CEngineWrapper *	iEngineWrapper;
+    
+    #ifdef RD_CONTENTNOTIFICATION
+    // Notification for Media Gallery
+    CContentNotification * iEventNotifier;
+    #endif
+    
+    /// Loaded filter type
+    TInt                iFilterType;
+    /// Loaded UI type
+    TInt                iUiType;
+    /// Is global zoom disabled
+    TBool               iGlobalZoomDisabled;
+    /// Closing
+    TBool               iOnTheWayToDestruction;
+    /// Plug-in scope
+    TInt                iPluginScope;
+//@}
+
+};
+
+
+#endif