diff -r 000000000000 -r bde4ae8d615e os/mm/imagingandcamerafws/camerafw/Include/MCameraSnapshot.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/os/mm/imagingandcamerafws/camerafw/Include/MCameraSnapshot.h Fri Jun 15 03:10:57 2012 +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 +#include + +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& 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