--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingandcamerafws/camerafw/Include/MCameraOverlay.h Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,264 @@
+// 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
+ @released
+*/
+
+#ifndef MCAMERAOVERLAY_H
+#define MCAMERAOVERLAY_H
+
+#include <ecam/cameraoverlay.h>
+#include <ecam/ecamcommonuidif.hrh>
+
+/**
+This is the UID which is used to obtain the MCameraOverlay interface,
+via a call to CCamera::CustomInterface(), which provides implementation of the M-class interface.
+
+@see KECamMCameraOverlayUidValue
+ */
+static const TUid KECamMCameraOverlayUid = {KECamMCameraOverlayUidValue};
+
+/**
+This is the UID which is used to obtain the MCameraOverlay2 interface,
+via a call to CCamera::CustomInterface(), which provides implementation of the M-class interface.
+
+@see KECamMCameraOverlay2UidValue
+
+@publishedPartner
+@prototype
+*/
+static const TUid KECamMCameraOverlay2Uid = {KECamMCameraOverlay2UidValue};
+
+
+/**
+This is a mixin class to be implemented by providers of the camera extension API for image overlays.
+
+@note This class is intended for sub classing by licensees only.
+
+@see CCamera::CCameraOverlay
+
+@publishedPartner
+@released
+*/
+class MCameraOverlay
+ {
+public:
+ /**
+ Creates an image overlay object on the ECam implementation, returning a handle to the newly created object.
+
+ @param aParameters
+ The parameters characterizing the overlay to be created.
+ @param aBitmap
+ The image that is to become the overlay.
+ By default this is set to NULL, allowing the client to provide the image at some point after
+ the overlay object has been created, by using SetOverlayBitmapL().
+
+ @leave KErrNoMemory if out of memory; also any system wide error.
+
+ @leave KErrArgument if the member variables in TOverlayParameters are such that they create mutual exclusion.
+
+ @return The overlay handle.
+ */
+ virtual TUint CreateOverlayL(const CCamera::CCameraOverlay::TOverlayParameters& aParameters, CFbsBitmap* aBitmap)=0;
+
+ /**
+ Allows the overlay image data to be changed for a specified overlay.
+ Use this function to set the overlay image data if it was not specified when the overlay
+ was created using CreateOverlayL().
+
+ @param aOverlayHandle
+ The handle of the overlay whose overlay image data is to be changed.
+ @param aBitmap
+ The new image data for the overlay.
+
+ @leave KErrArgument if aOverlayHandle is out of range; also any system wide error.
+
+ @note Once this method is called, overlay size should not be changed for the given overlay. Hence,
+ SetOverlayParametersL should not be called after this method.
+ */
+ virtual void SetOverlayBitmapL(TUint aOverlayHandle, const CFbsBitmap* aBitmap)=0;
+
+ /**
+ Gets the overlay image data for a specified overlay.
+
+ @param aOverlayHandle
+ The handle of the overlay whose overlay image data is to be obtained.
+ @param aBitmap
+ A CFbsBitmap that will receive the returned image data for the overlay.
+
+ @leave KErrArgument if aOverlayHandle is out of range; also any system wide error.
+
+ @leave KErrNotSupported if a sharing client (which did not create the given overlay) tries to retrieve the overlay
+ bitmap and the implementation may not be interested in providing the overlay.
+
+ @note The ECam implementation will transfer the ownership of the aBitmap to the client.
+ */
+ virtual void GetOverlayBitmapL(TUint aOverlayHandle, CFbsBitmap* aBitmap)=0;
+
+ /**
+ Gets the parameters that characterize a given overlay.
+
+ @param aOverlayHandle
+ The handle of the overlay whose parameters are required.
+ @param aInfo
+ Reference to TOverlayParameters object that will contain the returned overlay parameters.
+
+ @leave KErrArgument if aOverlayHandle is out of range; also any system wide error.
+ */
+ virtual void GetOverlayParametersL(TUint aOverlayHandle, CCamera::CCameraOverlay::TOverlayParameters& aInfo)=0;
+
+ /**
+ Sets new parameters that characterize a given overlay.
+
+ @param aOverlayHandle
+ The handle of the overlay whose parameters are to be changed.
+ @param aParameters
+ The new overlay parameters.
+
+ @leave KErrNotSupported if TOverlayCameraMode passed in TOverlayParameters is not supported;
+ also any system wide error.
+
+ @leave KErrArgument if the member variables in TOverlayParameters are such that they create mutual exclusion.
+ */
+ virtual void SetOverlayParametersL(TUint aOverlayHandle, const CCamera::CCameraOverlay::TOverlayParameters& aParameters)=0;
+
+ /**
+ Releases the specified overlay handle.
+
+ @note If the handle specified in aOverlayHandle is invalid (out of range) the function
+ call is ignored and no error is reported.
+
+ @param aOverlayHandle
+ The handle of the overlay that is to be released.
+ */
+ virtual void ReleaseOverlay(TUint aOverlayHandle)=0;
+
+ /**
+ Releases and destroys all overlay handles on the ECam implementation.
+ This function is called from the destructor of CCamera::CCameraOverlay.
+ */
+ virtual void Release()=0;
+
+ /**
+ Gets information on the overlay functionality supported by the ECam implementation.
+
+ @param aInfo
+ A reference to a TOverlaySupportInfo object that will receive the overlay support information.
+ */
+ virtual void GetOverlaySupport(CCamera::CCameraOverlay::TOverlaySupportInfo& aInfo)=0;
+
+ /**
+ Gets all the overlay handles maintained by the ECam implementation, in order of their Z-Value.
+
+ @param aOverlayHandles
+ Returned list, in Z-Value order, of all the overlay handles maintained on the ECam implementation.
+ The topmost overlay is the first element of the array.
+
+ @leave KErrNoMemory if out of memory; also any system wide error.
+ */
+ virtual void GetAllOverlaysInZOrderL(RArray<TUint>& aOverlayHandles)=0;
+
+ /**
+ Sets Z-Order of all the overlay handles known by this CCameraOverlay object.
+
+ @param aOverlayHandles
+ The overlay handles in aOverlayHandles array. This must be the complete current set
+ of handles known to this CCameraOverlay object. The client specifies the desired
+ order by placing the topmost overlay in the first element of the array.
+
+ @leave KErrNoMemory if out of memory; also any system wide error.
+ */
+ virtual void SetAllOverlaysInZOrderL(const RArray<TUint>& aOverlayHandles)=0;
+ };
+
+
+/**
+This is a mixin class to be implemented by providers of the camera extension API for extra features for image overlays.
+
+@see CCamera::CCameraOverlay
+
+@publishedPartner
+@prototype
+*/
+class MCameraOverlay2
+ {
+public:
+ /**
+ Releases the interface.
+ */
+ virtual void Release()=0;
+
+ /**
+ Allows the overlay image data to be changed for a specified overlay. Ownership of the bitmap is passed to the
+ implementation.
+ Use this function to set the overlay image data if it was not specified when the overlay was created using
+ CreateOverlayL().
+
+ @param aOverlayHandle
+ The handle of the overlay whose overlay image data is to be changed.
+ @param aBitmap
+ The new image data for the overlay.
+
+ @leave May leave with any error code.
+
+ @note If required, implementation is free to modify the overlay bitmap passed to it.
+
+ @note SetOverlayParametersL should not be called after this method for the given overlay since it may change the
+ overlay parameters considerably. In such a case, SetOverlayParametersL may leave with error KErrArgument.
+ */
+ virtual void SetModifiableOverlayBitmapL(TUint aOverlayHandle, CFbsBitmap* aBitmap)=0;
+
+ /**
+ Gets all the overlay handles maintained by the ECam implementation, in order of their z-value, for a particular camera mode.
+ If for viewfinder, then the handle number is used to get z-value for the viewfinder whose handle number is passed.
+
+ @param aOverlayCameraMode
+ The specific camera mode whose overlays' z-value information is required.
+
+ @param aViewFinderHandle
+ The specific viewfinder handle, if overlays' z-value information is required for viewfinder camera mode.
+
+ @param aOverlayHandles
+ Returned list, in z-value order, of all the overlay handles maintained on the ECam implementation.
+ The topmost overlay is the first element of the array.
+
+ @leave May leave with any error code.
+ */
+ virtual void GetAllOverlaysInZOrderL(CCamera::CCameraOverlay::TOverlayCameraMode aOverlayCameraMode, TInt aViewFinderHandle, RArray<TUint>& aOverlayHandles) const=0;
+
+ /**
+ Sets all the overlay handles maintained by the ECam implementation, in order of their z-value, for a particular camera mode.
+ If for viewfinder, then the handle number is used to set the z-value for the viewfinder whose handle number is passed.
+
+ @param aOverlayCameraMode
+ The specific camera mode whose overlays' z-value is to be set.
+
+ @param aViewFinderHandle
+ The specific viewfinder handle, if overlays' z-value is required to be set for viewfinder camera mode.
+
+ @param aOverlayHandles
+ The overlay handles in aOverlayHandles array. This must be the complete current set
+ of handles known to this CCameraOverlay object for the given camera mode (and for given viewfinder, if applicable).
+ The client specifies the desired order by placing the topmost overlay in the first element of the array.
+
+ @leave May leave with any error code.
+ */
+ virtual void SetAllOverlaysInZOrderL(CCamera::CCameraOverlay::TOverlayCameraMode aOverlayCameraMode, TInt aViewFinderHandle, const RArray<TUint>& aOverlayHandles)=0;
+ };
+
+#endif // MCAMERAOVERLAY_H
\ No newline at end of file