epoc32/include/ecamadvsettings.h
branchSymbian3
changeset 4 837f303aceeb
parent 2 2fe1408b6811
equal deleted inserted replaced
3:e1b950c65cb4 4:837f303aceeb
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     2 // All rights reserved.
     2 // All rights reserved.
     3 // This component and the accompanying materials are made available
     3 // This component and the accompanying materials are made available
     4 // under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
     4 // under the terms of "Eclipse Public License v1.0"
     5 // which accompanies this distribution, and is available
     5 // which accompanies this distribution, and is available
     6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
     7 //
     7 //
     8 // Initial Contributors:
     8 // Initial Contributors:
     9 // Nokia Corporation - initial contribution.
     9 // Nokia Corporation - initial contribution.
    10 //
    10 //
    11 // Contributors:
    11 // Contributors:
    12 //
    12 //
    13 // Description:
    13 // Description:
    14 //
    14 //
    15 
    15 
    16 
       
    17 
       
    18 /**
    16 /**
    19  @file	
    17  @file	
    20  @publishedAll
    18  @publishedAll
    21  @released
    19  @released
    22 */
    20 */
    28 #include <ecamadvsettingsuids.hrh>
    26 #include <ecamadvsettingsuids.hrh>
    29 #include <gdi.h>
    27 #include <gdi.h>
    30 #include <s32strm.h>
    28 #include <s32strm.h>
    31 #include <ecam/ecamconstants.h>
    29 #include <ecam/ecamconstants.h>
    32 #include <ecamimageprocessing.h>
    30 #include <ecamimageprocessing.h>
       
    31 #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS
       
    32 #include <ecamadvsettingsconst.h>
       
    33 #include <ecamadvsettingsdef.h>
       
    34 #endif
    33 
    35 
    34 class MCameraPresets;
    36 class MCameraPresets;
    35 class MCameraAdvancedSettings;
    37 class MCameraAdvancedSettings;
    36 class MCameraAdvancedSettings2;
    38 class MCameraAdvancedSettings2;
    37 class MCameraAdvancedSettings3;
    39 class MCameraAdvancedSettings3;
    38 class MCameraAdvancedSettings4;
    40 class MCameraAdvancedSettings4;
    39 class MCameraPresets2;
    41 class MCameraPresets2;
       
    42 class MCameraContinuousZoom;
    40 
    43 
    41 /* General purpose constants */
    44 /* General purpose constants */
    42 
    45 
    43 /** 
    46 
    44 The current Version of the TECamLEDSpecialEffectStep class.
    47 /**
    45 
       
    46 @internalTechnology
       
    47 */
       
    48 static const TUint KECamLEDSpecialEffectStepCurrentVersion = 1;
       
    49 
       
    50 /** 
       
    51 	UID used to identify the CCamera Advanced Settings API.
    48 	UID used to identify the CCamera Advanced Settings API.
    52 	This API is used to control specific individual advanced settings of camera hardware.
    49 	This API is used to control specific individual advanced settings of camera hardware.
    53 	These settings directly relate to the image acquisition phase.
    50 	These settings directly relate to the image acquisition phase.
    54 	
    51 
    55 	@see CCamera::CCameraAdvancedSettings
    52 	@see CCamera::CCameraAdvancedSettings
    56 */
    53 */
    57 static const TUid KECamAdvancedSettingUid 	= {KECamAdvancedSettingUidValue};
    54 static const TUid KECamAdvancedSettingUid 	= {KECamAdvancedSettingUidValue};
    58 
    55 
    59 /** 
    56 /**
    60 	UID used to identify the CCamera Presets API.
    57 	UID used to identify the CCamera Presets API.
    61 	This API is used to simplify user - camera interaction by allowing simultaneous 
    58 	This API is used to simplify user - camera interaction by allowing simultaneous 
    62 	setting of various advanced camera hardware settings using a single predefined parameter. 
    59 	setting of various advanced camera hardware settings using a single predefined parameter. 
    63 	@see CCamera::CCameraPresets
    60 	@see CCamera::CCameraPresets
    64 */
    61 */
    65 static const TUid  KECamPresetsUid 			= {KECamPresetsUidValue};
    62 static const TUid  KECamPresetsUid 			= {KECamPresetsUidValue};
    66 
    63 
    67 	
       
    68 /** All clients receive these events, irrespective of camera index.  */
    64 /** All clients receive these events, irrespective of camera index.  */
    69 /** Camera slots in for 8 cameras. */
    65 /** Camera slots in for 8 cameras. */
    70 /** Camera with index 0 Plugged-in */
    66 /** Camera with index 0 Plugged-in */
    71 static const TUid  KUidECamEventGlobalCamera00PluggedIn = {KUidECamEventGlobalCamera00PluggedInUidValue};
    67 static const TUid  KUidECamEventGlobalCamera00PluggedIn = {KUidECamEventGlobalCamera00PluggedInUidValue};
    72 /** Camera with index 1 Plugged-in */
    68 /** Camera with index 1 Plugged-in */
   298 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   294 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   299 
   295 
   300 */
   296 */
   301 static const TUid  KUidECamEventCameraSettingAFAssistantLight	= {KUidECamEventCameraSettingAFAssistantLightUidValue};
   297 static const TUid  KUidECamEventCameraSettingAFAssistantLight	= {KUidECamEventCameraSettingAFAssistantLightUidValue};
   302 
   298 
   303 /**
   299 
   304 Notifies the client that continuous zoom limit has been reached.
   300 
   305 
   301 class CCameraContinuousZoom;
   306 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   302 /**	
   307 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   303 A mixin class to be implemented by the client in order to use the Continuous Zoom API. The callbacks are invoked by the implementation
   308 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   304 whenever the continuous zoom operations are ready to be notified.
   309 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   305 
   310 
   306 @see CCameraContinuousZoom
   311 @publishedPartner
   307 
       
   308 @internalTechnology
   312 @prototype
   309 @prototype
   313 */
   310 */	
   314 static const TUid KUidECamEventCameraSettingContinuousZoomReachedLimit = {KUidECamEventCameraSettingContinuousZoomReachedLimitUidValue};
   311 class MContinuousZoomObserver
   315 
   312 	{	
   316 /**
   313 public:
   317 Notifies the client about the setting of performance operation preference.
   314 	
   318 
   315 	/**
   319 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   316 	This callback is sent when a new zoom factor is achieved. Client may not receive a callback for every new zoom factor as it is up
   320 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   317 	to the implementation to choose the zoom factors for which it will issue this callback. Should an error occur, this implies that the
   321 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   318 	continuous zoom operation has been stopped.
   322 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   319 
   323 
   320 	@param  aContinuousZoomHandle
   324 @publishedPartner
   321 			Reference to CCameraContinuousZoom class object which was used to start the continuous zoom operation.
   325 @prototype
   322 
   326 */
   323 	@param  aZoomFactor
   327 static const TUid KUidECamEventCameraSettingOperationPreference = {KUidECamEventCameraSettingOperationPreferenceUidValue};
   324 		    The new zoom factor value, multiplied by KECamFineResolutionFactor, which has been achieved.
   328 
   325 
   329 /**
   326 	@param  aError
   330 Notifies the client that the flicker removal value has been set.
   327 			Appropriate error code.
   331 
   328 	*/
   332 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   329 	virtual void ContinuousZoomProgress(CCamera::CCameraContinuousZoom& aContinuousZoomHandle, TInt aZoomFactor, TInt aError)=0;
   333 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   330 
   334 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   331 	/**
   335 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   332 	Implementation sends this callback when the Continuous Zoom operation has been completed. This callback will be sent when
   336 
   333 	target zoom factor is achieved. This zoom factor may in some cases be less than the target zoom factor due to the complexity
   337 @internalTechnology
   334 	of the continuous zoom operation. Once this callback is received, client need not issue StopContinuousZoom() and can call
   338 */
   335 	StartContinuousZoom() again.
   339 static const TUid KUidECamEventCameraSettingFlickerRemovalValue = {KUidECamEventCameraSettingFlickerRemovalValueUidValue};
   336 
   340 
   337 	@param  aContinuousZoomHandle
   341 /**
   338 			Reference to CCameraContinuousZoom class object which was used to start the continuous zoom operation.
   342 Notifies the client about the setting of neutral density filter.
   339 
   343 
   340 	@param  aFinalZoomFactor
   344 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   341 			The final zoom factor value once the continuous zoom operation has completed. This zoom factor may in some cases be
   345 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   342 			less than the target zoom factor due to the complexity of the continuous zoom operation.
   346 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   343 
   347 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   344 	@param  aErrorCode
   348 
   345 			Appropriate error code.
   349 @internalTechnology
   346 	*/
   350 */
   347 	virtual void ContinuousZoomCompleted(CCamera::CCameraContinuousZoom& aContinuousZoomHandle, TInt aFinalZoomFactor, TInt aError)=0;
   351 static const TUid KUidECamEventCameraSettingNDFilter = {KUidECamEventCameraSettingNDFilterUidValue};
   348 
   352 
   349 	/**
   353 /**
   350 	Gets a custom interface for future callbacks. This method will be called by the implementation to get a new interface
   354 Notifies the client about the setting of LED effect.
   351 	which would support future callbacks.
   355 
   352 
   356 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   353 	@param  aInterface
   357 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   354 		    The Uid of the particular interface function required for callbacks.
   358 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   355 		   
   359 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   356 	@param  aPtrInterface
   360 
   357 		    The implementation has to type-cast the retrieved custom interface pointer to the appropriate type.	
   361 @internalTechnology
   358 
   362 */
   359 	@return The error code.
   363 static const TUid KUidECamEventCameraSettingLEDEffect = {KUidECamEventCameraSettingLEDEffectUidValue};
   360 	*/
   364 
   361 	virtual TInt CustomInterface(TUid aInterface, TAny*& aPtrInterface)=0;
   365 /**
   362 	};
   366 Notifies the client about the setting of LED 'custom' effect.
   363 
   367 
       
   368 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   369 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   370 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   371 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   372 
       
   373 @internalTechnology
       
   374 */
       
   375 static const TUid KUidECamEventCameraSettingLEDCustomEffect = {KUidECamEventCameraSettingLEDCustomEffectUidValue};
       
   376 
       
   377 /**
       
   378 Notifies the client about the white balance lock setting.
       
   379 
       
   380 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   381 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   382 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   383 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   384 
       
   385 @internalTechnology
       
   386 */
       
   387 static const TUid KUidECamEventCameraSettingLockWhiteBalance = {KUidECamEventCameraSettingLockWhiteBalanceUidValue};
       
   388 
       
   389 /**
       
   390 Instructs the client to restore its original priority.
       
   391 
       
   392 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   393 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   394 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   395 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   396 
       
   397 @internalTechnology
       
   398 */
       
   399 static const TUid KUidECamEventCameraSettingRestoreClientPriority = {KUidECamEventCameraSettingRestoreClientPriorityUidValue};
       
   400 
   364 
   401 /** 
   365 /** 
   402 CCamera advanced settings class exposes an API for controlling individually 
   366 CCamera advanced settings class exposes an API for controlling individually 
   403 digital camera advanced settings. These settings directly relate to the 
   367 digital camera advanced settings. These settings directly relate to the 
   404 image acquisition phase both for still images and video.
   368 image acquisition phase both for still images and video.
   564 	/** Specifies the drive mode for the camera. This determines how and in what sucession are images 
   528 	/** Specifies the drive mode for the camera. This determines how and in what sucession are images 
   565     shot. EDriveModeSingleShot is the default.*/				
   529     shot. EDriveModeSingleShot is the default.*/				
   566 	enum TDriveMode
   530 	enum TDriveMode
   567 		{
   531 		{
   568 		/** Automatic. Default */
   532 		/** Automatic. Default */
   569 		EDriveModeAuto			= 0x0000,
   533 		EDriveModeAuto				= 0x0000,
   570 		/** Camera takes a single image/shot. */	
   534 		/** Camera takes a single image/shot. */	
   571 		EDriveModeSingleShot	= 0x0001,
   535 		EDriveModeSingleShot		= 0x0001,
   572 		/** Camera continuously captures images (as fast as it can) until stopped or out of storage medium. */	
   536 		/** Camera continuously captures images (as fast as it can) until stopped or out of storage medium. */	
   573 		EDriveModeContinuous	= 0x0002,
   537 		EDriveModeContinuous		= 0x0002,
   574 		/** Camera is in bracketing mode, producing individual frames. @see TBracketMode */	
   538 		/** Camera is in bracketing mode, producing individual frames. @see TBracketMode */	
   575 		EDriveModeBracket		= 0x0004,
   539 		EDriveModeBracket			= 0x0004,
   576 		/** Camera is in bracketing mode, but producing a single image. @see TBracketMode */	
   540 		/** Camera is in bracketing mode, but producing a single image. @see TBracketMode */	
   577 		EDriveModeBracketMerge	= 0x0008,
   541 		EDriveModeBracketMerge		= 0x0008,
   578 		/** camera captures a single shot after specified time period. @see Timer() */	
   542 		/** camera captures a single shot after specified time period. @see Timer() */	
   579 		EDriveModeTimed			= 0x0010,
   543 		EDriveModeTimed				= 0x0010,
   580 		/** Camera captures a set of images with an uniform interval between them. @see TimeLapse() */	
   544 		/** Camera captures a set of images with an uniform interval between them. @see TimeLapse() */	
   581 		EDriveModeTimeLapse		= 0x0020,
   545 		EDriveModeTimeLapse			= 0x0020,
   582 		/** Camera captures a set of images as fast as it can, but in batches(bursts). */	
   546 		/** Camera captures a set of images as fast as it can, but in batches(bursts). */	
   583 		EDriveModeBurst			= 0x0040		
   547 		EDriveModeBurst				= 0x0040,
       
   548 		/** Camera captures a set of images before and after camera capture key press event. Client can specify
       
   549 		the amount of pre-capture and post-capture images to be saved via TDriveModeDependentAttributes.
       
   550 		The total amount of images to be saved will be pre-capture images + 1 + post-capture images.
       
   551 
       
   552 		@note This drive mode is only available to clients using the CCamera::New2L() or CCamera::NewDuplicate2L()
       
   553 			  in addition to the new image capture APIs ie. CCameraPreImageCaptureControl, CCameraImageCapture and
       
   554 			  CCameraPostImageCaptureControl.
       
   555 
       
   556 		@publishedPartner
       
   557 		@prototype
       
   558 		*/
       
   559 		EDriveModeTimeNudgeCapture	= 0x0080
   584 		};
   560 		};
   585 
   561 
   586 	/** Specifies Bracket mode. */				
   562 	/** Specifies Bracket mode. */				
   587 	enum TBracketMode
   563 	enum TBracketMode
   588 		{
   564 		{
  1005 		TInt iFrequencyStep;
   981 		TInt iFrequencyStep;
  1006 		/** Time duration for which the particular LED special effect step would be valid. */
   982 		/** Time duration for which the particular LED special effect step would be valid. */
  1007 		TTimeIntervalMicroSeconds32 iDuration;
   983 		TTimeIntervalMicroSeconds32 iDuration;
  1008 	};
   984 	};
  1009 
   985 
       
   986 	/**
       
   987 	Class used to provide supported continuous zoom information.
       
   988 	
       
   989 	@internalTechnology
       
   990 	@prototype
       
   991 	*/
       
   992 	class TContinuousZoomSupportInfo
       
   993 		{
       
   994 	public:
       
   995 		IMPORT_C TContinuousZoomSupportInfo();
       
   996 
       
   997 		IMPORT_C TUint Size() const;
       
   998 		IMPORT_C TUint Version() const;
       
   999 
       
  1000 	private:
       
  1001 		//for future expansion
       
  1002 		TUint iSize:24;
       
  1003 		TUint iVersion:8;
       
  1004 
       
  1005 		// reserved for future expansion
       
  1006 		TInt iReserved1;
       
  1007 		TInt iReserved2;
       
  1008 		TInt iReserved3;
       
  1009 
       
  1010 	public:
       
  1011 		/** Maximum continuous zoom speed supported. Minimum speed is 0. */
       
  1012 		TInt iMaxSpeedSupported;
       
  1013 		/**  Minimum continuous zoom acceleration supported. A negative value signifies deceleration. */
       
  1014 		TInt iMinAccelerationSupported;
       
  1015 		/**  Maximum continuous zoom acceleration supported. */
       
  1016 		TInt iMaxAccelerationSupported;
       
  1017 		/** Minimum continuous zoom value. For digital zoom, this could be 0 unless viewfinder frames are not cropped and scaled up by default.
       
  1018 		Represented as a concrete value multiplied by KECamFineResolutionFactor. */
       
  1019 		TInt iContinuousZoomMinLimit;
       
  1020 		/** Maximum continuous zoom value. Represented as a concrete value multiplied by KECamFineResolutionFactor. */
       
  1021 		TInt iContinuousZoomMaxLimit;
       
  1022 		};
       
  1023 
       
  1024 	/**
       
  1025 	Class used to provide essential parameters for continuous zoom operation.
       
  1026 	
       
  1027 	@internalTechnology
       
  1028 	@prototype
       
  1029 	*/
       
  1030 	class TContinuousZoomParameters
       
  1031 		{
       
  1032 	public:
       
  1033 		IMPORT_C TContinuousZoomParameters();
       
  1034 
       
  1035 		IMPORT_C TUint Size() const;
       
  1036 		IMPORT_C TUint Version() const;
       
  1037 
       
  1038 	private:
       
  1039 		//for future expansion
       
  1040 		TUint iSize:24;
       
  1041 		TUint iVersion:8;
       
  1042 
       
  1043 		// reserved for future expansion
       
  1044 		TInt iReserved1;
       
  1045 		TInt iReserved2;
       
  1046 		TInt iReserved3;
       
  1047 
       
  1048 	public:
       
  1049 		/** Type of continuous zoom to be used. */
       
  1050 		TContinuousZoomType iContinuousZoomType;
       
  1051 		/**  Zoom direction to be used. */
       
  1052 		TZoomDirection iZoomDirection;
       
  1053 		/**  Continuous zoom speed to be used. Represented as a concrete value multiplied by KECamFineResolutionFactor. */
       
  1054 		TInt iContinuousZoomSpeed;
       
  1055 		/** Continuous zoom acceleration to be used. Represented as a concrete value multiplied by KECamFineResolutionFactor. */
       
  1056 		TInt iContinuousZoomAcceleration;
       
  1057 		/** Limit of continuous zoom range. Represented as a concrete value multiplied by KECamFineResolutionFactor. */
       
  1058 		TInt iContinuousZoomLimit;
       
  1059 		};
  1010 
  1060 
  1011 public:
  1061 public:
  1012 
  1062 
  1013     IMPORT_C static CCameraAdvancedSettings* NewL(CCamera& aCamera);
  1063     IMPORT_C static CCameraAdvancedSettings* NewL(CCamera& aCamera);
  1014 
  1064 
  1305 	IMPORT_C void GetAFAssistantLightL(TAFAssistantLight& aAFAssistantLight) const;
  1355 	IMPORT_C void GetAFAssistantLightL(TAFAssistantLight& aAFAssistantLight) const;
  1306 	
  1356 	
  1307 	IMPORT_C void SetAFAssistantLightL(TAFAssistantLight aAFAssistantLight); 
  1357 	IMPORT_C void SetAFAssistantLightL(TAFAssistantLight aAFAssistantLight); 
  1308 	
  1358 	
  1309 	IMPORT_C void GetSupportedContinuousZoomTypeL(TUint& aSupportedContinuousZoomType) const;
  1359 	IMPORT_C void GetSupportedContinuousZoomTypeL(TUint& aSupportedContinuousZoomType) const;
  1310 
       
  1311 	IMPORT_C void StartContinuousZoomL(TContinuousZoomType aContinuousZoomType, TZoomDirection aZoomDirection);
       
  1312 
       
  1313 	IMPORT_C void StopContinuousZoom();
       
  1314 	
  1360 	
  1315 	IMPORT_C void GetFocalLengthInfoL(TInt& aMinFocalLength, TInt& aCurrentFocalLength, TInt& aMaxFocalLength) const;
  1361 	IMPORT_C void GetFocalLengthInfoL(TInt& aMinFocalLength, TInt& aCurrentFocalLength, TInt& aMaxFocalLength) const;
  1316 	
  1362 	
  1317 	IMPORT_C void GetNumOperationPreferenceL(TUint& aNumOperationPreferenceSupported) const;
  1363 	IMPORT_C void GetNumOperationPreferenceL(TUint& aNumOperationPreferenceSupported) const;
  1318 	
  1364 	
  1326 	
  1372 	
  1327 	IMPORT_C void GetSupportedEventsL(RArray<TUid>& aSupportedEvents) const;
  1373 	IMPORT_C void GetSupportedEventsL(RArray<TUid>& aSupportedEvents) const;
  1328 	
  1374 	
  1329 	IMPORT_C void GetIndirectFeatureChangesL(TUid aRequestedSetting, RArray<TUid>& aIndirectFeatureChanges) const;
  1375 	IMPORT_C void GetIndirectFeatureChangesL(TUid aRequestedSetting, RArray<TUid>& aIndirectFeatureChanges) const;
  1330 	
  1376 	
       
  1377 	IMPORT_C void CreateContinuousZoomL(MContinuousZoomObserver& aObserver, TContinuousZoomType aContinuousZoomType, CCameraContinuousZoom*& aContinuousZoom);
       
  1378 
  1331 private:
  1379 private:
  1332 	IMPORT_C CCameraAdvancedSettings(CCamera& aOwner);
  1380 	IMPORT_C CCameraAdvancedSettings(CCamera& aOwner);
  1333 	IMPORT_C void ConstructL();
  1381 	IMPORT_C void ConstructL();
  1334 	
  1382 	
  1335 private:
  1383 private:
       
  1384 	enum TECAMEventFilterScheme
       
  1385 		{
       
  1386 		/** Black listing will mean not to receive specific events */
       
  1387 		EECAMEventFilterSchemeBlackList, 
       
  1388 		/** White listing will mean to receive only specific events */
       
  1389 		EECAMEventFilterSchemeWhiteList
       
  1390 		};
       
  1391 
  1336 	void RegisterEventsL(TECAMEventFilterScheme aEventFilter, const RArray<TUid>& aEvents);
  1392 	void RegisterEventsL(TECAMEventFilterScheme aEventFilter, const RArray<TUid>& aEvents);
  1337 	void GetRegisterEventsL(TECAMEventFilterScheme aEventFilter, RArray<TUid>& aEvents, TValueInfo& aInfo) const;
  1393 	void GetRegisterEventsL(TECAMEventFilterScheme aEventFilter, RArray<TUid>& aEvents, TValueInfo& aInfo) const;
  1338 	
  1394 	
  1339 	void GetSupportedFlickerRemovalValueL(TUint& aSupportedFlickerRemovalValue) const;
  1395 	void GetSupportedFlickerRemovalValueL(TUint& aSupportedFlickerRemovalValue) const;
  1340 	void GetFlickerRemovalValueL(TFlickerRemoval& aFlickerRemovalValue) const;
  1396 	void GetFlickerRemovalValueL(TFlickerRemoval& aFlickerRemovalValue) const;
  1487 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1543 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1488 CCamera::NewDuplicate2L().
  1544 CCamera::NewDuplicate2L().
  1489 
  1545 
  1490 */
  1546 */
  1491 static const TUid  KUidECamPresetAmbienceMood		= {KUidECamPresetAmbienceMoodUidValue};
  1547 static const TUid  KUidECamPresetAmbienceMood		= {KUidECamPresetAmbienceMoodUidValue};
  1492 /** 
       
  1493 Used to for video telephony.
       
  1494 
       
  1495 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1496 CCamera::NewDuplicate2L().
       
  1497 
       
  1498 @publishedPartner
       
  1499 @prototype
       
  1500 */
       
  1501 static const TUid  KUidECamPresetVideoTelephony		= {KUidECamPresetVideoTelephonyUidValue};
       
  1502 
       
  1503 /** 
       
  1504 Used to clarify that camera is not under any preset mode. Possible scenario: client sets camera in a particular preset 
       
  1505 mode and then makes some setting changes on top of it. Then theoretically camera is out of that preset. Hence, 
       
  1506 KUidECamPresetNone will be used in such cases.
       
  1507 
       
  1508 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1509 CCamera::NewDuplicate2L().
       
  1510 
       
  1511 @publishedPartner
       
  1512 @prototype
       
  1513 */
       
  1514 static const TUid  KUidECamPresetNone		= {KUidECamPresetNoneUidValue};
       
  1515  
       
  1516 /** Notifications related to presets */
       
  1517 /**
       
  1518 Used to notify clients about possible range restrictions, when camera works under a particular preset mode.
       
  1519 This is not a particular preset uid.
       
  1520 
       
  1521 @note   Call CCamera::CCameraPresets::GetRangeRestrictedSettingsL(RArray<TUid>& aRangeRestrictedSettings) to retrieve 
       
  1522 		the list of settings whose range have been restricted.
       
  1523 
       
  1524 @publishedPartner
       
  1525 @prototype
       
  1526 */
       
  1527 static const TUid  KUidECamEventRangeRestricted  = {KUidECamEventRangeRestrictedUidValue};
       
  1528 
       
  1529 /**
       
  1530 Used to notify clients about possible feature restrictions, when camera works under a particular preset mode.
       
  1531 This is not a particular preset uid.
       
  1532 
       
  1533 @note   Call CCamera::CCameraPresets::GetFeatureRestrictedSettingsL(RArray<TUid>& aFeatureRestrictedSettings) to retrieve 
       
  1534 		the list of settings which have been restricted.
       
  1535 
       
  1536 @publishedPartner
       
  1537 @prototype
       
  1538 */
       
  1539 static const TUid  KUidECamEventFeatureRestricted  = {KUidECamEventFeatureRestrictedUidValue};
       
  1540 
       
  1541 /**
       
  1542 Used to notify clients that locking of the preset operation has completed, when camera works under a particular preset mode.
       
  1543 This is not a particular preset uid.
       
  1544 
       
  1545 @publishedPartner
       
  1546 @prototype
       
  1547 */
       
  1548 static const TUid  KUidECamEventPresetLocked  = {KUidECamEventPresetLockedUidValue};
       
  1549 
       
  1550 /**
       
  1551 Used to notify clients that unlocking of the preset operation has completed, when camera works under a particular preset mode.
       
  1552 This is not a particular preset uid.
       
  1553 
       
  1554 @publishedPartner
       
  1555 @prototype
       
  1556 */
       
  1557 static const TUid  KUidECamEventPresetUnlocked  = {KUidECamEventPresetUnlockedUidValue};
       
  1558  
       
  1559  
  1548  
  1560 /**
  1549 /**
  1561 This API is used to simplify user - camera interaction by allowing simultaneous
  1550 This API is used to simplify user - camera interaction by allowing simultaneous
  1562 setting of various advanced camera hardware settings using a single parameter.
  1551 setting of various advanced camera hardware settings using a single parameter.
  1563 
  1552 
  1616 private:	
  1605 private:	
  1617 	CCamera&        iOwner; 
  1606 	CCamera&        iOwner; 
  1618     MCameraPresets* iImpl;  // not owned
  1607     MCameraPresets* iImpl;  // not owned
  1619     MCameraPresets2* iImpl2;  // not owned
  1608     MCameraPresets2* iImpl2;  // not owned
  1620 	};
  1609 	};
  1621 	
  1610 
       
  1611 
       
  1612 /**
       
  1613 This API is used to provide advanced continuous zoom support to the user.
       
  1614 
       
  1615 This class is not directly created by the client but instead created via 
       
  1616 CCameraAdvancedSettings::CreateContinuousZoomL(). Ownership of the object
       
  1617 is passed back to the client.
       
  1618 
       
  1619 @note  This class is not intended for sub-classing and used to standardise existing
       
  1620        varieties of implementations.
       
  1621       
       
  1622 @note  If the class methods leave, the output type parameter value is not guaranteed to be valid.
       
  1623 
       
  1624 @internalTechnology
       
  1625 @prototype
       
  1626 */
       
  1627 class CCamera::CCameraContinuousZoom : public CBase
       
  1628 	{
       
  1629 	friend void CCamera::CCameraAdvancedSettings::CreateContinuousZoomL(MContinuousZoomObserver& aObserver, TContinuousZoomType aContinuousZoomType, CCameraContinuousZoom*& aContinuousZoom);
       
  1630 
       
  1631 public:
       
  1632 	IMPORT_C void StartContinuousZoomL(CCamera::CCameraAdvancedSettings::TContinuousZoomParameters aContinuousZoomParameters);
       
  1633 
       
  1634 	IMPORT_C void StopContinuousZoom();
       
  1635 
       
  1636 	IMPORT_C void GetContinuousZoomSupportInfoL(CCamera::CCameraAdvancedSettings::TContinuousZoomSupportInfo& aContinuousZoomInfo) const;
       
  1637 
       
  1638 	IMPORT_C void GetContinuousZoomId(TInt& aZoomId) const;
       
  1639 
       
  1640 	IMPORT_C ~CCameraContinuousZoom();
       
  1641 
       
  1642 private:
       
  1643 	static CCameraContinuousZoom* CreateL(MContinuousZoomObserver& aObserver, CCamera::CCameraAdvancedSettings::TContinuousZoomType aContinuousZoomType, const MImplementationFactory& aImplFactory);
       
  1644 
       
  1645 	CCameraContinuousZoom();
       
  1646 	void ConstructL(MContinuousZoomObserver& aObserver, CCamera::CCameraAdvancedSettings::TContinuousZoomType aContinuousZoomType, const MImplementationFactory& aImplFactory);
       
  1647 
       
  1648 private:
       
  1649 	MCameraContinuousZoom*		iImpl;
       
  1650 	};
       
  1651 
  1622 #endif // ECAMADVSETTINGS_H
  1652 #endif // ECAMADVSETTINGS_H
       
  1653 
       
  1654 
       
  1655