imagingandcamerafws/camerafw/Include/MCameraSnapshot.h
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingandcamerafws/camerafw/Include/MCameraSnapshot.h	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,310 @@
+// Copyright (c) 2005-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
+ @publishedPartner
+ @prototype
+*/
+
+#ifndef MCAMERASNAPSHOT_H
+#define MCAMERASNAPSHOT_H
+
+#include <ecam/camerasnapshot.h> 
+#include <ecam/ecamcommonuidif.hrh>
+
+class TRgb;
+
+/** 
+This is the UID which is used to obtain the MCameraSnapshot interface, 
+via a call to CCamera::CustomInterface(), which provides implementation of the M-class interface. 
+
+@see KECamMCameraSnapshotUidValue
+*/   
+static const TUid KECamMCameraSnapshotUid = {KECamMCameraSnapshotUidValue};
+
+/** 
+This is the UID which is used to obtain the MCameraSnapshot2 interface, 
+via a call to CCamera::CustomInterface(), which provides implementation of the M-class interface. 
+
+@see KECamMCameraSnapshot2UidValue
+*/   
+static const TUid KECamMCameraSnapshot2Uid = {KECamMCameraSnapshot2UidValue};
+
+/**
+This is a mixin class to be implemented by providers of the extension API for the camera snapshot.
+
+@note This class is intended for sub classing by licensees only.
+
+@see CCamera::CCameraSnapshot
+
+@publishedPartner
+@prototype
+*/
+
+class MCameraSnapshot
+	{
+	
+public:	
+	/**
+	@publishedPartner
+	@released
+	
+	Gets a list of camera formats for which the ECam implementation supports snapshots.
+
+	@return	Bit field containing the supported camera formats as CCamera::TFormat values.
+	*/
+	virtual TUint32 SupportedFormats()=0;
+			
+	/**
+	@deprecated Use void MCameraSnapshot2::PrepareSnapshotL(const CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters);
+
+	Sets the properties of the snapshot data including the background colour and the position of the snapshot.
+
+	@param 	aFormat
+			The image format that the snapshot must have.
+	@param 	aPosition
+			The top left corner position (in pixels) which determines the layout of the snapshot image  
+			within the dimensions provided by the aSize parameter when the snapshot has been scaled 
+			maintaining its aspect ratio. See also SetPositionL().
+	@param 	aSize
+			The size of the snapshot in pixels.
+	@param 	aBgColor
+			The background colour to be used if the snapshot has been scaled (maintaining its aspect ratio)
+			and does not fully fill the dimension provided by the aSize parameter. See also SetBgColorL().
+	@param 	aMaintainAspectRatio
+			Set to ETrue if the aspect ratio of the snapshot image must be maintained when scaling down.
+
+	@leave  KErrNotSupported if the specified image format is not supported; also any system wide error.
+	*/
+    virtual void PrepareSnapshotL(CCamera::TFormat aFormat, const TPoint& aPosition, const TSize& aSize, const TRgb& aBgColor, TBool aMaintainAspectRatio)=0;
+    
+	/**
+	@deprecated Use void MCameraSnapshot2::PrepareSnapshotL(const CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters);
+
+	Sets the properties of the snapshot data, excluding the background colour and the position of the snapshot.
+	This method can be used when the client wishes to determine the layout and background colour after the
+	snapshot image has been generated. See also SetPositionL() and SetBgColorL().
+
+	@param 	aFormat
+			The image format that the snapshot must have.
+	@param 	aSize
+			The size of the snapshot in pixels.
+	@param 	aMaintainAspectRatio
+			Set to ETrue if the aspect ratio of the snapshot image must be maintained when scaling down.
+
+	@leave  KErrNotSupported if the specified image format is not supported; also any system wide error.
+	*/
+	virtual void PrepareSnapshotL(CCamera::TFormat aFormat, const TSize& aSize, TBool aMaintainAspectRatio)=0;
+	
+	/**
+	@deprecated Use void MCameraSnapshot2::SetSnapshotParametersL(const CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters);
+
+	Sets the background colour to be used if the snapshot has been scaled (maintaining its aspect ratio)
+	and does not fully fill the snapshot size as specified in PrepareSnapshot().
+
+	@param 	aBgColor
+			The new background colour.
+
+	@leave  KErrNotSupported if the specified image format is not supported; also any system wide error.
+	*/		
+	virtual void SetBgColorL(const TRgb& aBgColor)=0; 
+	
+	/**
+	@deprecated Use void MCameraSnapshot2::SetSnapshotParametersL(const CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters);
+
+	Sets the top left corner position (in pixels), where the snapshot should be laid out after scaling
+	down (maintaining its aspect ratio). The position is within the dimensions provided by the snapshot 
+	size specified in PrepareSnapshot().
+	
+	@param 	aPosition
+			The top left corner position in pixels of the snapshot.  		
+	
+	@leave  KErrNotSupported if the specified image format is not supported; also any system wide error.
+	*/
+	virtual void SetPositionL(const TPoint& aPosition)=0;
+	
+	/**
+	@deprecated Use void MCameraSnapshot2::GetSnapshotStatusL(CCamera::CCameraSnapshot::TSnapshotState& aSnapshotState) const;
+
+	Determines if the snapshot feature is active.
+
+	@return	ETrue, if StartSnapshot() has been called, otherwise EFalse.
+	*/
+    virtual TBool IsSnapshotActive() const=0;
+
+	/**
+	@deprecated Use void MCameraSnapshot2::EnableSnapshotL();
+
+	Activates the snapshot feature. Calls to this method when the snapshot feature is already active
+	will be ignored. 
+
+	The client will not receive snapshot notifications until the snapshot feature is activated. 
+	*/
+    virtual void StartSnapshot()=0;
+
+	/**
+	@deprecated Use void MCameraSnapshot2::DisableSnapshotL();
+	
+	Deactivates the snapshot feature if it is active. 
+
+	Once the snapshot has been deactivated, the client will no longer receive notifications about snapshots.
+	*/
+	virtual void StopSnapshot()=0;
+        	
+	/**
+	@deprecated Use callbacks: MCaptureImageObserver::ClientSnapshotForImageReady and MCaptureVideoObserver::
+				ClientSnapshotReady
+	
+	Returns the snapshot data from ECam implementation to the client. 
+
+	The data is returned in an MCameraBuffer object. In the case where the driving mode returns more 
+	than one image (burst mode, bracket mode, etc.) the buffer contains several snapshots which may 
+	be returned in any order. The aFrameIndexOrder array provides the image sequence numbers in the 
+	order in which the snapshots for those images are returned within the MCameraBuffer.
+
+	@param 	aFrameIndexOrder
+			A reference to an array that will receive the image sequence numbers in the order to which  
+			the snapshots within MCameraBuffer relate.
+
+	@return	A reference to an MCameraBuffer which will contain the returned snapshot image data.
+		
+	@leave	KErrNoMemory if the ECam implementation has not been able to create the camera buffer;
+			also any system wide error.
+	*/
+	virtual MCameraBuffer& SnapshotDataL(RArray<TInt>& aFrameIndexOrder)=0;
+
+	/**
+	Destroys the object of this class on the ECam implementation. 
+	This function is called from the destructor of CCamera::CCameraSnapshot.
+	*/
+	virtual void Release()=0;
+	    
+	};
+	
+/**
+This is a mixin class to be implemented by providers of the extension API for the extra features for camera snapshot.
+
+@see CCamera::CCameraSnapshot
+
+@publishedPartner
+@prototype
+*/
+
+class MCameraSnapshot2
+	{
+	
+public:	
+	/** 
+	Releases the interface. 
+	*/
+	virtual void Release()=0;
+	
+	/**
+	Sets the client viewfinder on which the client snapshot will be displayed.
+	
+	@param aClientViewFinderId
+		   The client viewfinder on which this client snapshot will be displayed.
+	*/
+	virtual void SetClientViewFinderId(TInt aClientViewFinderId)=0;
+	
+	/**
+	Retrieves the concrete factory handle for the histogram implementation in order to 
+	use it specifically for a given snapshot.
+		   
+	@param aImplFactoryPtr
+		   The concrete factory handle for the histogram implementation specific to the given snapshot.
+		   
+	@leave  May leave with any error code.
+	*/
+	virtual void CreateHistogramImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const=0;
+	
+	/**
+	Sets the properties of the snapshot. ECam implementation may use a different size than that specified by this method. 
+	
+	@param  aSnapshotParameters
+			The snaspshot parameters.
+	
+	@leave  May leave with any error code.
+	
+	@note   This method is used to provide snapshot parameters.
+	*/
+	virtual void PrepareSnapshotL(const CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters)=0;
+	
+	/**
+	Retrieves the snapshot parameters. ECam implementation may use a different size than that provided by this method.
+	
+	@param  aSnapshotParameters
+			Retrieves the currently used snapshot parameters.
+	
+	@leave  May leave with any error code.
+	
+	@note   This method is used to retrieve snapshot parameters.
+	*/
+	virtual void GetSnapshotParametersL(CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters)=0;
+	
+	/**
+	Sets/updates the snapshot parameters.
+	
+	@param  aSnapshotParameters
+			The desired snapshot parameters.
+			
+	@leave  May leave with any error code.
+	
+	@note   This method is used to set/update snapshot parameters.
+	*/
+	virtual void SetSnapshotParametersL(const CCamera::CCameraSnapshot::TSnapshotParameters& aSnapshotParameters)=0; 
+
+	/**
+	Retrieves the current status for the snapshot.
+	
+	@param  aSnapshotState
+			Retrieves information about the current snapshot state.
+		
+	@leave  May leave with any error code.
+
+	@note   This method is used to retrieve the snapshot status.
+	*/
+	virtual void GetSnapshotStatusL(CCamera::CCameraSnapshot::TSnapshotState& aSnapshotState) const=0;
+	
+	/**
+	The method specifies the frames to be used from video captured data in order to create snapshot for video.
+
+	@param  aSnapshotVideoFrames
+			A TSnapshotVideoFrames used to specify the desired frames to be used for creating snapshots for video. 
+			
+	@leave  May leave with any error code.
+	*/
+	virtual void SelectSnapshotVideoFramesL(CCamera::CCameraSnapshot::TSnapshotVideoFrames aSnapshotVideoFrames)=0;
+	
+	/**
+	Activates the snapshot feature. Calls to this method when the snapshot feature is already active will be ignored. 
+
+	The client will not receive snapshot notifications until the snapshot feature is activated. 
+
+	Implementation shall use the observers: MCaptureImageObserver and MCaptureVideoObserver. Snapshot notifications will 
+	be send	to the clients via these observers and not through events.
+	*/
+	virtual void EnableSnapshot()=0;
+	
+	/**
+	Deactivates the snapshot feature if it is active. 
+
+	Once the snapshot has been deactivated, the client will no longer receive notifications about snapshots.
+	*/
+	virtual void DisableSnapshot()=0;
+	};
+	
+#endif // MCAMERASNAPSHOT_H