imagingandcamerafws/imagingfws/ImageProcessor/inc/imageprocessorpreview.h
branchRCL_3
changeset 50 948c7f65f6d4
parent 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingandcamerafws/imagingfws/ImageProcessor/inc/imageprocessorpreview.h	Wed Sep 01 12:38:50 2010 +0100
@@ -0,0 +1,121 @@
+// Copyright (c) 2008-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:
+//
+
+/**
+ @file
+ @publishedAll 
+ @released 
+*/
+
+#ifndef __IMAGE_PROCESSOR_PREVIEW_H__
+#define __IMAGE_PROCESSOR_PREVIEW_H__
+
+#include <e32base.h>
+#include <gdi.h>
+#include <imageframe.h>
+
+class CFbsBitmap;
+class CImageFrame;
+
+namespace ImageProcessor
+	{
+
+class CImageProcessorImpl;
+
+namespace Plugin
+	{
+	class MPreview;
+	}
+
+/**
+A preview representation of the rendered image after effects and geometric operations have been applied. Has the ability to zoom and pan the output image in the 
+supplied pixel buffer. Typically this is a low resolution representation of the image which allows effects and operations
+to be applied quickly to the image without needing to process the whole image.
+
+@publishedAll
+@released
+*/
+class TPreview
+	{
+public:
+	/**
+	The state of the preview screen
+	*/
+	enum TState 
+		{
+		/** State means the preview has not been initialized, need to call InitializeL() to initialize*/
+		EUninitialized,
+		/** State means the preview is being initialized by async call of InitializeL()*/
+		EInitializing,
+		/** State means the initialize process has finished and preview is available to be rendered*/
+		EInitialized,
+		/** State means the preview is being rendered by async call of RenderL()*/
+		ERendering,
+
+        /** Count of valid preview states (boundary marker - not a true state). */
+		EStatesCount
+		};
+
+public:
+	IMPORT_C void SupportedImageFrameFormatsL(RArray<TUid>& aFormats) const;
+	IMPORT_C void SupportedOutputDisplayModesL(RArray<TDisplayMode>& aDisplayModes) const;
+	
+	IMPORT_C void SetOutputL(CFbsBitmap& aBitmap);
+	IMPORT_C void SetOutputL(CImageFrame& aPixelBuffer);
+	
+	IMPORT_C CImageFrame* CreateOutputL(const TSize &aFrameSize, const TFrameFormatBase &aFrameFormat, const TFrameLayoutBase &aFrameLayout);
+
+	IMPORT_C void InitializeL();
+	IMPORT_C void UninitializeL();
+
+	IMPORT_C void RenderL();
+	IMPORT_C void ResetL();
+	IMPORT_C void Cancel();
+		
+	IMPORT_C void SetZoomL(TReal32 aZoom);
+	IMPORT_C void SetPanL(TReal32 aPanX, TReal32 aPanY);
+	IMPORT_C void SetPreviewId(TInt aPreviewId);
+	IMPORT_C void GetZoomLevelSettings(TReal32& aMinimumLevel, TReal32& aMaximumLevel);
+	IMPORT_C void GetPanLevelSettings(TReal32& aMinimumLevel, TReal32& aMaximumLevel);
+		
+	IMPORT_C TReal32 ZoomL() const;
+	IMPORT_C void PanL(TReal32& aPanX, TReal32& aPanY) const;
+	IMPORT_C TSize SizeL() const;
+	IMPORT_C TRect CanvasAreaL() const;
+	IMPORT_C TInt PreviewId() const;
+	
+	IMPORT_C void PreviewToCurrentCoordL(const TPoint& aPreviewPoint, TPoint& aCurrentPoint) const;
+	IMPORT_C void CanvasToCurrentCoordL(const TPoint& aCanvasPoint, TPoint& aCurrentPoint) const;
+
+	IMPORT_C TPreview::TState State() const;
+
+private:
+	friend class CImageProcessorImpl;
+	CImageProcessorImpl& iImageProcessorImpl;
+	TPreview(Plugin::MPreview& aPreviewImpl, CImageProcessorImpl& aImageProcessorImpl);
+
+	void SetStateL(TPreview::TState aState);
+
+	static const TBool iValidStates[TPreview::EStatesCount][TPreview::EStatesCount];
+	Plugin::MPreview& iPreviewImpl;
+	
+	TPreview::TState iState;
+	TBool iIsOutputSet;
+	TInt iReserved; // future proof
+	};
+
+	} //namespace ImageProcessor
+
+#endif //__IMAGE_PROCESSOR_PREVIEW_H__