imagingandcamerafws/camerafw/Include/ecamconst.h
changeset 0 40261b775718
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imagingandcamerafws/camerafw/Include/ecamconst.h	Tue Feb 02 01:56:55 2010 +0200
@@ -0,0 +1,180 @@
+// Copyright (c) 2002-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 ECAM__CONST_H
+#define ECAM__CONST_H
+
+#ifdef SYMBIAN_ENABLE_SPLIT_HEADERS
+#include <ecamuidsconst.hrh>
+#endif
+/** 
+Event indicating continuous zoom progess. This event is used for StartContinuousZoomL feature. This is a part of class 
+CCamera::CCameraAdvancedSettings. This event should be packed in TECAMEvent2 class. 
+
+This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::
+NewDuplicate2L():
+void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
+void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
+void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
+
+Note: TECAMEvent2::iParam represents percentage continuous zoom completion.
+
+@note  If zoom direction is EZoomDirectionWide, percentage completion will target minimum possible value as 100%.
+@note  If zoom direction is EZoomDirectionTele, percentage completion will target maximum possible value as 100%.
+
+@publishedPartner
+@prototype
+*/
+static const TUid  KUidECamEvent2CameraSettingContinuousZoomPercentageCompletion  = {KUidECamEvent2CameraSettingContinuousZoomPercentageCompletionUidValue};
+
+/**
+Notifies that unrequested feature changes have occurred. The method GetIndirectFeatureChangesL() is called to
+retrieve the list of unrequested feature changes. The unrequested feature changes are ECAM component wide.
+
+This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
+void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
+void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
+void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
+
+Note: TECAMEvent2::iParam represents the TInt used to obtain a uid which represents the requested feature change.
+
+@publishedPartner
+@prototype
+*/
+static const TUid KUidECamEvent2IndirectFeatureChange  = {KUidECamEvent2IndirectFeatureChangeUidValue};
+
+/**
+Event indicating auto aperture is being used.
+This event should be packed in TECAMEvent2 class.
+
+This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::
+NewDuplicate2L():
+void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
+void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
+void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
+
+Note: TECAMEvent2::iParam represents actual value of aperture being used if camera is capable of. Otherwise, KErrNotFound will be retrieved.
+Note: This event is also used if exposure is set to CCamera::EExposureAuto or CCamera::EExposureShutterPriority.
+
+
+@publishedPartner
+@prototype
+*/
+static const TUid  KUidECamEvent2CameraSettingAutoAperture  = {KUidECamEvent2CameraSettingAutoApertureUidValue};
+
+/** Specifies whether the camera is reserved or not.
+	The enumeration list may be extended in future.
+	
+@publishedPartner
+@prototype
+*/
+enum TECamReserveStatus
+	{
+	/** Camera Status unknown */
+	ECameraStatusUnknown,
+	/** Camera is reserved */
+	ECameraReserved,
+	/** Camera is unreserved */
+	ECameraUnReserved
+	};
+
+/** Mixin base class for camera clients to handle the notification of Reserve status.
+
+Client must implement MReserveObserver in order to handle the notifications and take appropriate steps accordingly. 
+
+@note  By the time client gets unreserved status via callback, the camera may be on its way getting reserved by another client who 
+	   might be continuously polling for it.
+	   So, there is no guarantee that the client will be able to reserve it. But it is guaranteed that the client will
+	   receive the notification about change in reserve status. 
+
+@publishedPartner
+@prototype
+*/
+class MReserveObserver
+	{
+public:
+	/**
+	This notification is send to provide the reserve status for the camera. 
+	
+	@param aCameraIndex
+		   The camera index for which the Reserve status has to be provided.
+		   
+	@param aReserveStatus
+		   The reserve status for the camera.
+		   
+	@param aErrorCode
+		   The error value. 
+		   
+	@note  If error is not KErrNone, then the client is expected to destroy the CCameraStatusWatch retrieved through 
+		   TReservedInfo::SubscribeReserveInfoL and re-subscribe if desired.
+	*/
+	virtual void ReserveStatus(TInt iCameraIndex, TECamReserveStatus aReserveStatus, TInt aErrorCode) =0;
+	};
+
+class CCameraStatusWatch;
+
+/**
+@publishedPartner
+@prototype
+
+Client uses it to asynchronously receive the reserve status of a camera index through MReserveObserver
+*/
+class TReservedInfo
+	{
+public:
+	IMPORT_C static void SubscribeReserveInfoL(MReserveObserver& aReserveObserver, TInt aCameraIndex, CCameraStatusWatch*& aCameraStatusWatch); 
+	};
+
+/**
+This class is used to provide extra buffer informations through a custom interface.
+
+@see MCameraImageBuffer
+
+@publishedPartner
+@prototype
+*/
+class MCameraBuffer2 : public MCameraBuffer
+	{
+public:
+	/**
+	Retrieves an array of uids which represents the class identifier used for buffer extension.
+	
+	@param aInterfaceUids
+		   An array of uids which represents the class identifier.
+		   
+	@return The error code.
+	*/
+	virtual TInt GetInterfaceUids(RArray<TUid>& aInterfaceUids) = 0;
+	
+	/**
+	Gets a custom interface for extra buffer information. 
+
+	@param aInterface
+		   The Uid of the particular interface function required for buffer information.
+		   
+	@param aPtrInterface
+		   The client has to cast the custom interface pointer to the appropriate type.	
+
+	@return The error code.
+	*/
+	virtual TInt CustomInterface(TUid aInterface, TAny*& aPtrInterface) = 0;
+	};
+	
+#endif // ECAM__CONST_H