imagingandcamerafws/camerafw/Include/ECam/ecamadvsettingsintf.h
changeset 0 40261b775718
equal deleted inserted replaced
-1:000000000000 0:40261b775718
       
     1 // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 /**
       
    17  @file
       
    18  @publishedPartner
       
    19  @released
       
    20 */
       
    21 
       
    22 #ifndef  ECAMADVSETTINGSINTF_H
       
    23 #define  ECAMADVSETTINGSINTF_H
       
    24 
       
    25 #include <ecamadvsettings.h>
       
    26 #include <ecam/ecamimageprocessingintf.h>
       
    27 #include <ecam/ecamadvsettingsintfuids.hrh>
       
    28 
       
    29 /** This is the UID which is used to obtain the interface MCameraPresets, via the 
       
    30 CCamera::CustomInterface() call, which provides implementation of the M-class interface.
       
    31  */   
       
    32 static const TUid KECamMCameraPresetsUid 			=  {KECamMCameraPresetsUidValue};
       
    33 
       
    34 /** 
       
    35 This is the UID which is used to obtain the interface MCameraPresets2, via the 
       
    36 CCamera::CustomInterface() call, which provides implementation of the M-class interface. 
       
    37 @publishedPartner
       
    38 @prototype 
       
    39 */   
       
    40 static const TUid KECamMCameraPresets2Uid 			=  {KECamMCameraPresets2UidValue};
       
    41 
       
    42 /** This is the UID which is used to obtain the interface MCameraAdvancedSettings, via the 
       
    43 CCamera::CustomInterface() call, which provides implementation of the M-class interface. */   
       
    44 static const TUid KECamMCameraAdvancedSettingsUid 	=  {KECamMCameraAdvancedSettingsUidValue};
       
    45 
       
    46 /** This is the UID which is used to obtain the interface MCameraAdvancedSettings2, via the 
       
    47 CCamera::CustomInterface() call, which provides implementation of the M-class interface. */   
       
    48 static const TUid KECamMCameraAdvancedSettings2Uid 	=  {KECamMCameraAdvancedSettings2UidValue};
       
    49 
       
    50 /** 
       
    51 This is the UID which is used to obtain the interface MCameraAdvancedSettings3, via the 
       
    52 CCamera::CustomInterface() call, which provides implementation of the M-class interface.
       
    53 */   
       
    54 static const TUid KECamMCameraAdvancedSettings3Uid 	=  {KECamMCameraAdvancedSettings3UidValue};
       
    55 
       
    56 /** 
       
    57 This is the UID which is used to obtain the interface MCameraAdvancedSettings4, via the 
       
    58 CCamera::CustomInterface() call, which provides implementation of the M-class interface.
       
    59 @publishedPartner
       
    60 @prototype 
       
    61 */   
       
    62 static const TUid KECamMCameraAdvancedSettings4Uid 	=  {KECamMCameraAdvancedSettings4UidValue};
       
    63 
       
    64 /** 
       
    65 This is the UID which is used to obtain the interface MCameraContinuousZoom, via the 
       
    66 CCamera::CCameraAdvancedSettings::CreateContinuousZoomImpl() call, which provides 
       
    67 implementation of the M-class interface.
       
    68 @internalTechnology
       
    69 @prototype 
       
    70 */   
       
    71 static const TUid KECamMCameraContinuousZoomUid 	=  {KECamMCameraContinuousZoomUidValue};
       
    72 
       
    73 /** 
       
    74 Mixin class for implementation by providers of the Advanced Settings Camera Extension API.
       
    75 CCamera advanced settings class exposes an API for controlling individually 
       
    76 digital camera advanced settings. These settings directly relate to the 
       
    77 image acquisition phase both for still images and video.
       
    78 
       
    79 @publishedPartner
       
    80 @released 	
       
    81 */	
       
    82 class MCameraAdvancedSettings
       
    83 	{
       
    84 	
       
    85 public:
       
    86 	
       
    87 	/** 
       
    88 	Releases the interface. 
       
    89 	*/
       
    90 	virtual void Release()=0;
       
    91 	
       
    92    	/** 
       
    93 	Gets the type of this camera. 
       
    94 	@see TCameraType
       
    95 
       
    96 	@return a TCameraType value. 
       
    97 	*/
       
    98   	virtual CCamera::CCameraAdvancedSettings::TCameraType CameraType() const=0;
       
    99   	
       
   100   	/** 
       
   101 	Get the type of a specific  camera denoted by its index. A pluggable camera
       
   102 	may not necessarily be physically present. The type denotes whether the slot allocated
       
   103 	to that index is for pluggable or onboard camera. 
       
   104 
       
   105     @param aCameraIndex
       
   106            An integer in the range of [0: CCamera::CamerasAvailable()-1].
       
   107            
       
   108 	@return the TCameraType value for the specific camera. 
       
   109 	        If the index is out of range, the return value is ECameraUnknown.
       
   110 	*/
       
   111 	virtual CCamera::CCameraAdvancedSettings::TCameraType CameraType(TInt aCameraIndex) const=0;
       
   112 	
       
   113    	/** 
       
   114 	Checks whether the current camera is present.
       
   115            
       
   116 	@return Whether the camera is currently present. 
       
   117 			ETrue if camera is present, EFalse otherwise. 
       
   118 			For example ECameraOnBoard (built-in) cameras are always present.   
       
   119 	*/	
       
   120 	virtual TBool IsCameraPresent() const=0;
       
   121 	
       
   122 	/** 
       
   123 	Checks whether the camera, denoted by its index, is currently present.
       
   124 	The index uniquely identifies the camera on the device.
       
   125 	
       
   126     @param aCameraIndex
       
   127            An integer in the range of [0:CCamera::CamerasAvailable()-1] specifying the
       
   128 	       camera device to use
       
   129            
       
   130 	@return Whether the camera is currently present. 
       
   131 			ETrue if camera is present, EFalse otherwise. 
       
   132 			For example built-in (ECameraOnBoard) cameras 
       
   133 			are always present. 
       
   134 	*/	
       
   135    	virtual TBool IsCameraPresent(TInt aCameraIndex) const=0;
       
   136 
       
   137     /**
       
   138     Gets current camera index. The index uniquely identifies the camera on the device.
       
   139 	 
       
   140 	@return camera index in the inclusive range of [0:CCamera::CamerasAvailable() - 1].
       
   141     */
       
   142   	virtual TInt CameraIndex() const=0;	
       
   143   	
       
   144     /** 
       
   145 	Gets all of the supported stabilization modes on the device. The result is a bitfield
       
   146 	of the valid TStabilizationMode flags. 
       
   147 
       
   148 	@return a bitfield of all supported stabilization modes. 
       
   149 	*/
       
   150     virtual TInt SupportedStabilizationModes() const=0;
       
   151     
       
   152     /** 
       
   153 	Gets current stabilization mode on the device. 
       
   154 	The result is a valid TStabilizationMode value. 
       
   155 
       
   156 	@return current stabilization mode of type TStabilizationMode. 
       
   157 	*/
       
   158     virtual CCamera::CCameraAdvancedSettings::TStabilizationMode StabilizationMode() const=0;
       
   159     
       
   160     /** 
       
   161 	Sets a specific stabilization mode on the device.
       
   162 	
       
   163 	Stabilization mode change fires a KUidECamEventCameraSettingStabilizationMode
       
   164 	event to all MCameraObserver2 clients of this specific camera.
       
   165 	
       
   166 	@param aStabilizationMode
       
   167 	       new stabilization mode of TStabilizationMode type.
       
   168 	*/
       
   169     virtual void SetStabilizationMode(CCamera::CCameraAdvancedSettings::TStabilizationMode aStabilizationMode)=0;
       
   170     
       
   171     /** 
       
   172 	Gets all of the supported focus modes on the device. The result is a bitfield
       
   173 	of the valid TFocusMode flags. 
       
   174 
       
   175 	@return a bitfield of all supported focus modes. 
       
   176 	*/
       
   177     virtual TInt SupportedFocusModes() const=0;
       
   178     
       
   179     /** 
       
   180 	Gets current focus mode on the device. 
       
   181 	The result is a valid TFocusMode value. 
       
   182 
       
   183 	@return current focus mode. 
       
   184 	*/
       
   185     virtual CCamera::CCameraAdvancedSettings::TFocusMode FocusMode() const=0;
       
   186     
       
   187     /** 
       
   188 	Sets a specific focus mode on the device.
       
   189 	Focus mode change fires a KUidECamEventCameraSettingFocusMode event
       
   190 	to all MCameraObserver2 clients of the camera.
       
   191 	
       
   192 	@param aFocusMode 
       
   193 	       new focus mode of TFocusMode type.
       
   194 	*/
       
   195     virtual void SetFocusMode(CCamera::CCameraAdvancedSettings::TFocusMode aFocusMode)=0;
       
   196     
       
   197 	/** 
       
   198 	Gets all supported focus ranges on the device.
       
   199 
       
   200 	@return an integer - a bitfield of all supported TFocusRange values. 
       
   201 	*/
       
   202     virtual TInt SupportedFocusRanges() const=0;
       
   203     
       
   204     /** 
       
   205 	Gets current focus range on the device.
       
   206 
       
   207 	@return the current TFocusRange value. 
       
   208 	*/
       
   209     virtual CCamera::CCameraAdvancedSettings::TFocusRange FocusRange() const=0;
       
   210     
       
   211     /** 
       
   212 	Sets a specific focus range on the device.
       
   213 	The focus range change fires both, KUidECamEventCameraSettingFocusRange and 
       
   214 	KUidECamEventCameraSettingFocusRange2 event	to all MCameraObserver2 clients of the camera.
       
   215 	@see KUidECamEventCameraSettingFocusRange
       
   216     
       
   217     @param aFocusRange
       
   218            newly selected focus range.
       
   219 	*/
       
   220     virtual void SetFocusRange(CCamera::CCameraAdvancedSettings::TFocusRange aFocusRange)=0;
       
   221     
       
   222     /** 
       
   223 	Gets all supported auto focus types on the device.
       
   224 
       
   225 	@return an integer - a bitfield of all supported TAutoFocusType values. 
       
   226 	*/
       
   227     virtual TInt SupportedAutoFocusTypes() const=0;
       
   228     
       
   229     /** 
       
   230 	Gets current auto focus type on the device.
       
   231 
       
   232 	@return a CCamera::TAutoFocusType value. 
       
   233 	*/
       
   234     virtual CCamera::CCameraAdvancedSettings::TAutoFocusType AutoFocusType() const=0;
       
   235     
       
   236     /** 
       
   237 	Sets a specific auto focus type on the device.
       
   238 	The focus type change fires both, KUidECamEventCameraSettingAutoFocusType and 
       
   239 	KUidECamEventCameraSettingAutoFocusType2 event to all MCameraObserver2 clients of the camera.
       
   240 	@see KUidECamEventCameraSettingAutoFocusType
       
   241 
       
   242 	@param aAutoFocusType
       
   243 	       Autofocus selection.
       
   244     */
       
   245     virtual void SetAutoFocusType(CCamera::CCameraAdvancedSettings::TAutoFocusType aAutoFocusType)=0;
       
   246 
       
   247     /** 
       
   248 	Gets all supported auto focus areas on the device.
       
   249 
       
   250 	@return an integer - a bitfield of al supported TAutoFocusArea values. 
       
   251 	*/
       
   252     virtual TInt SupportedAutoFocusAreas() const=0;
       
   253     
       
   254     /** 
       
   255 	Gets current chosen auto focus area on the device.
       
   256 
       
   257 	@return a CCamera::TAutoFocusArea value. 
       
   258 	*/
       
   259     virtual CCamera::CCameraAdvancedSettings::TAutoFocusArea AutoFocusArea() const=0;
       
   260     
       
   261     /** 
       
   262 	Sets a specific auto focus area on the device.
       
   263 	Focus area change fires a KUidECamEventCameraSettingAutoFocusArea event
       
   264 	to all MCameraObserver2 clients of the camera.
       
   265 
       
   266 	@param aAutoFocusArea
       
   267 	       Autofocus area selection.
       
   268     */
       
   269     virtual void SetAutoFocusArea(CCamera::CCameraAdvancedSettings::TAutoFocusArea aAutoFocusArea)=0;
       
   270 
       
   271     /**
       
   272     Get focus distance in millimetres.
       
   273     
       
   274     @return the current focus distance in millimetres, directly from user setting of lenses.
       
   275     */
       
   276 	virtual TInt FocusDistance() const=0;
       
   277 	
       
   278 	/**
       
   279     Set focus distance in millimetres. Focus distance change fires a KUidECamEventCameraSettingFocusDistance event
       
   280     to all MCameraObserver2 clients of the camera.
       
   281     
       
   282     @param aDistance 
       
   283     		the current value in millimetres, directly from user setting of lenses.
       
   284     */
       
   285 	virtual void SetFocusDistance(TInt aDistance)=0;
       
   286 
       
   287 	/**
       
   288     Get minimum focus distance in millimetres. 
       
   289     
       
   290     @return the minimum (35 camera equivalent) focal length of a device. 
       
   291     @note Current Focal length is calculated as 
       
   292      		focalLength =  opticalZoom * minFocalLength;  
       
   293     */
       
   294 	virtual TInt GetMinFocalLength() const=0;
       
   295  
       
   296 	/**
       
   297     Gets the set of camera supported ISO rates.
       
   298     
       
   299     @param aSupportedIsoRates
       
   300            an array of integers which gets filled in with the supported ISO rates. 
       
   301     
       
   302     @note  When camera device is incapable of revealing the ISO rates supported, it has to be assumed that 
       
   303 		   camera will work only on the parmanently set value. If this value is not known, empty array should be 
       
   304 		   returned, and the corresponding getter/setters for this feature for this feature should not be used. 
       
   305     */
       
   306     virtual void GetSupportedIsoRatesL(RArray<TInt>& aSupportedIsoRates) const=0;
       
   307     
       
   308     /**
       
   309     Gets current ISO rate.
       
   310     
       
   311     @return current ISO rate as a TInt value.
       
   312     
       
   313     @note  In case there is an error, a negative error value from system wide error should be returned.
       
   314     */
       
   315     virtual TInt IsoRate() const=0;
       
   316     
       
   317     /**
       
   318     Set current ISO rate for the camera.
       
   319     Triggers a KUidECamEventCameraSettingIsoRate event to all MCameraObserver2 clients of the camera.
       
   320     
       
   321     @param aRate
       
   322     	   required new ISO rate.
       
   323     */
       
   324     virtual void SetIsoRate(TInt aRate)=0;
       
   325 	
       
   326 	/** 
       
   327 	Gets the current discrete aperture steps (F-stops) supported by the device.
       
   328 	
       
   329 	@param  aFStops
       
   330 	        A reference to an empty array of TInt which would be populated by the implementation with 
       
   331 	        the specific supported values. If the array is empty on return, 
       
   332 	        the camera supports all integer values in the aperture range. Each value is multiplied by 
       
   333 	        a factor of KECamFineResolutionFactor.
       
   334 	
       
   335 	@param  aInfo 
       
   336 	        a reference to TValueInfo, which establishes the type of the returned data.     
       
   337 	
       
   338 	@leave KErrNoMemory Out of memory.
       
   339 	
       
   340 	@note  When camera device is incapable of revealing the aperture openings supported, it has to be assumed that 
       
   341 		   camera will work only on the parmanently set value. If this value is not known, empty array should be 
       
   342 		   returned and TValueInfo should be ENotActive, and the corresponding getter/setters for this feature should not be used.
       
   343  	*/
       
   344     virtual void GetAperturesL(RArray<TInt>& aFStops, TValueInfo& aInfo) const=0;
       
   345     
       
   346     /** 
       
   347     Get current aperture value.
       
   348     The default aperture value is ECAM implementation specific and could be either auto aperture or any other supported value.
       
   349 
       
   350     @return Current aperture value as an integer, multiplied by KECamFineResolutionFactor. 
       
   351     	    For example the function will return 280 for the actual aperture of F2.8.
       
   352     
       
   353     @note  In case there is an error, a negative error value from system wide error should be returned. 
       
   354     */
       
   355     virtual TInt Aperture() const=0; 
       
   356     
       
   357     /** 
       
   358     Set a new aperture value. 
       
   359     All MCameraObserver2 clients of the camera receive a KUidECamEventCameraSettingAperture 
       
   360     event notification when aperture value is changed.
       
   361     
       
   362     @note The aperture parameter value is an integer, multiplied by KECamFineResolutionFactor. 
       
   363     	  For example to set an aperture of F2.8, call SetAperture(280).
       
   364     
       
   365     @param aFStop 
       
   366     	   a new aperture value in the supported by the device range.       
       
   367     */
       
   368     virtual void SetAperture(TInt aFStop)=0; 
       
   369 	
       
   370 	/**
       
   371 	Gets the set of supported shutter speeds
       
   372 	
       
   373 	@param aShutterSpeeds
       
   374 			a reference to an RArray of TInt representing the discrete shutter speeds supported 
       
   375 			currently by the device.
       
   376 
       
   377 	@param  aInfo 
       
   378 			a reference to TValueInfo, which establishes the type of the returned data.     
       
   379 
       
   380 	@return the populated array with all shutter speeds in microseconds. 
       
   381 
       
   382 	@leave KErrNoMemory Out of memory.
       
   383 	
       
   384 	@note  When camera device is incapable of revealing the shutter speeds supported, it has to be assumed that 
       
   385 		   camera will work only on the parmanently set value. If this value is not known, empty array should be 
       
   386 		   returned and TValueInfo should be ENotActive, and the corresponding getter/setters for this feature should not be used.
       
   387 	*/
       
   388 	virtual void GetShutterSpeedsL(RArray<TInt>& aShutterSpeeds, TValueInfo& aInfo) const=0; 
       
   389 		
       
   390 	/**
       
   391 	Gets the current shutter speed
       
   392 	
       
   393 	@return the current shutter speed in microseconds. 
       
   394 	
       
   395 	@note  In case there is an error, a negative error value from system wide error should be returned.
       
   396 	*/
       
   397     virtual TInt ShutterSpeed() const=0; 
       
   398     
       
   399     /**
       
   400 	Sets the current shutter speed. When set, all MCameraObserver2 clients of the camera
       
   401 	receive a KUidECamEventCameraSettingShutterSpeed event
       
   402 	
       
   403 	@param aShutterSpeed
       
   404 	       the required shutter speed in microseconds.
       
   405 	
       
   406 	*/
       
   407     virtual void SetShutterSpeed(TInt aShutterSpeed)=0; 
       
   408     
       
   409 	/**
       
   410 	Get all supported metering modes on this device represented as bitfield of type TMeteringMode.
       
   411 	
       
   412 	@return the set of supported metering modes.
       
   413 	*/
       
   414     virtual TInt SupportedMeteringModes() const=0;
       
   415     
       
   416     /**
       
   417     Get current metering mode.
       
   418     
       
   419     @return a value of type TMeteringMode.
       
   420     */
       
   421     virtual CCamera::CCameraAdvancedSettings::TMeteringMode MeteringMode() const=0;
       
   422     
       
   423     /**
       
   424     Set the current metering mode. When set, all MCameraObserver2 clients are notified 
       
   425     with a KUidECamEventCameraSettingMeteringMode event.
       
   426     
       
   427     @param aMeteringMode
       
   428     		a new selection for metering mode of type TMeteringMode.
       
   429     */
       
   430     virtual void SetMeteringMode(CCamera::CCameraAdvancedSettings::TMeteringMode aMeteringMode)=0;
       
   431     
       
   432     /** 
       
   433     Get all supported drive modes as bitfields of TDriveMode type. 
       
   434     
       
   435     @return the set of supported drive modes.
       
   436     */
       
   437     virtual TInt SupportedDriveModes() const=0;
       
   438     
       
   439     /** 
       
   440     Gets currently active drive mode.
       
   441     
       
   442     @return current drive mode.
       
   443     */
       
   444     virtual CCamera::CCameraAdvancedSettings::TDriveMode DriveMode() const=0;
       
   445     
       
   446     /**
       
   447     Set the current metering mode. When set all MCameraObserver2 clients are notified with a
       
   448     KUidECamEventCameraSettingDriveMode event. 
       
   449     
       
   450     @param aDriveMode
       
   451     		new selection for drive mode value of type TDriveMode.
       
   452     
       
   453     @note  Unless reduced Latency scheme is not used (ie CaptureImageL(TInt aSequenceNumber) or PerformantStopVideoCaptureL())
       
   454 	   	   if an image/video capture is still outstanding, this method may report error KErrInUse.
       
   455     */
       
   456     virtual void SetDriveMode(CCamera::CCameraAdvancedSettings::TDriveMode aDriveMode)=0;
       
   457 
       
   458 	/**
       
   459 	Get all supported bracket modes as bitfields.
       
   460 	
       
   461 	@return the set of all supported bracket modes.
       
   462 	*/
       
   463     virtual TInt SupportedBracketModes() const=0;
       
   464     
       
   465     /**
       
   466 	Get current bracket mode.
       
   467 
       
   468 	@return the current bracket mode TBracketMode.
       
   469 	*/
       
   470     virtual CCamera::CCameraAdvancedSettings::TBracketMode BracketMode() const=0;
       
   471     
       
   472     /**
       
   473     Set new bracket mode. All MCameraObserver2 clients are notified with a
       
   474     KUidECamEventCameraSettingBracketMode event. 
       
   475     
       
   476     @param aBracketMode
       
   477     		new selection for bracket mode of type TBracketMode.
       
   478     */
       
   479     virtual void SetBracketMode(CCamera::CCameraAdvancedSettings::TBracketMode aBracketMode)=0;
       
   480     
       
   481  	/**
       
   482 	Get all supported bracket parameters as bitfields.
       
   483 	
       
   484 	@return the set of all currently supported bracket modes.
       
   485 	*/
       
   486     virtual TInt SupportedBracketParameters() const=0;
       
   487     
       
   488     /**
       
   489 	Get current bracket parameter.
       
   490 
       
   491 	@return the current bracket mode TBracketParameter.
       
   492 	*/
       
   493     virtual CCamera::CCameraAdvancedSettings::TBracketParameter BracketParameter() const=0;
       
   494     
       
   495     /**
       
   496     Set new bracket parameter
       
   497     When set all clients are notified with a
       
   498     KUidECamEventCameraSettingBracketParameter event. 
       
   499     
       
   500     @param aBracketParameter
       
   501     		new selection for parameter type of type TBracketParameter.
       
   502     */
       
   503     virtual void SetBracketParameter(CCamera::CCameraAdvancedSettings::TBracketParameter aBracketParameter)=0;
       
   504     
       
   505 	/**
       
   506 	Get all supported bracket steps as bitfields.
       
   507 	
       
   508 	@return the set of all supported bracket modes.
       
   509 	*/
       
   510     virtual TInt SupportedBracketSteps() const=0;
       
   511     
       
   512     /**
       
   513 	Get current bracket step.
       
   514 
       
   515 	@return the current bracket mode TBracketStep.
       
   516 	*/
       
   517     virtual CCamera::CCameraAdvancedSettings::TBracketStep BracketStep() const=0;
       
   518     
       
   519     /**
       
   520     Set new bracket step. All MCameraObserver2 clients are notified with 
       
   521     KUidECamEventCameraSettingBracketStep. 
       
   522     
       
   523     @param aBracketStep
       
   524     		new selection for step of type TBracketStep.
       
   525     */
       
   526     virtual void SetBracketStep(CCamera::CCameraAdvancedSettings::TBracketStep aBracketStep)=0;
       
   527     
       
   528     /** 
       
   529 	Gets the settings for which frames to merge. Valid only in EDriveModeBracketMerge mode. 
       
   530 	@note there must be at least two images to merge. All are assumed to form a sequence and 
       
   531 		are identified using the first frame index and number of frames e.g. to  merge two frames - one 
       
   532 		on and one +1, when in EBracketMode3Image, one sets the start index to 1 and frames to two.
       
   533 	@note It is very much TBracketMode setting dependent. 
       
   534 	
       
   535 	@param  aStartIndex
       
   536 			the index of the start frame, starts from 0.
       
   537 			
       
   538 	@param  aFrames
       
   539 			the number of frames to be merged.		
       
   540 	*/
       
   541 	virtual void GetBracketMerge(TInt& aStartIndex, TInt& aFrames) const=0;
       
   542 	
       
   543 	/** 
       
   544 	Sets the settings for which frames to merge. Valid only in EDriveModeBracketMerge mode. 
       
   545 	@note there must be at least two images to merge. All are assumed to form a sequence and 
       
   546 		are identified using the first frame index and number of frames e.g. to  merge two frames - one 
       
   547 		on and one +1, when in EBracketMode3Image, one sets the start index to 1 and frames to 2.
       
   548 		MCameraObserver2 clients are notified with a KUidECamEventBracketMerge event.
       
   549 	
       
   550 	@note It is very TBracketMode setting dependent. 
       
   551 		
       
   552 	@param  aStartIndex
       
   553 			the index of the start frame, starts from 0.
       
   554 			
       
   555 	@param  aFrames
       
   556 			the number of frames to be merged.		
       
   557 	*/
       
   558 	virtual void SetBracketMerge(TInt aStartIndex, TInt aFrames)=0;
       
   559     
       
   560     /**
       
   561     Get camera all supported flash modes CCamera::TFlash
       
   562     
       
   563     @return the set of all supported flash modes as bitfields in an integer.
       
   564     */
       
   565     virtual TInt SupportedFlashModes() const=0;
       
   566     
       
   567     /** 
       
   568 	Gets the currently set flash mode.
       
   569 
       
   570 	@return  The currently set flash mode. 
       
   571 	*/
       
   572 	virtual CCamera::TFlash FlashMode() const=0;
       
   573 
       
   574     /** 
       
   575 	Sets the flash mode.
       
   576 
       
   577     Triggers a KUidECamEventCameraSettingFlashMode event to all camera 
       
   578     MCameraObserver2 clients.
       
   579     
       
   580 	@param  aMode
       
   581 	        The required flash mode. 
       
   582 	*/
       
   583 	virtual void SetFlashMode(CCamera::TFlash aMode)=0;
       
   584 
       
   585     /** 
       
   586 	Gets whether the flash red eye reduction is switched on.
       
   587     
       
   588 	@return The present state - ETrue for switched on and EFalse for switched off. 
       
   589 	*/
       
   590     virtual TBool RedEyeReduceOn() const=0;
       
   591     
       
   592     /** 
       
   593 	Sets the flash red eye reduction on or off.
       
   594 
       
   595     Triggers a KUidECamEventCameraSettingFlashRedEyeReduce event to all camera 
       
   596     MCameraObserver2 clients.
       
   597     
       
   598 	@param  aState
       
   599 	        The required state ETrue for switching it on and EFalse for switching it off. 
       
   600 	*/
       
   601     virtual void SetRedEyeReduceOn(TBool aState)=0;
       
   602     
       
   603 	/** 
       
   604 	Get flash compensation steps as integers multiplied by KECamFineResolutionFactor.
       
   605 	For example 0.5 EV is 50. 
       
   606 	
       
   607 	@param aFlashCompensationSteps
       
   608 	       an RArray of integers which is populated on return to reflect the supported 
       
   609 	       flash compensation steps.
       
   610 	       
       
   611    	@param aInfo 
       
   612    	       an TValueInfo reference, which establishes the organization of the returned data. 
       
   613    	
       
   614    	@see TValueInfo   
       
   615    		     
       
   616 	@leave KErrNoMemory Out of memory. 
       
   617 	
       
   618 	@note  When camera device doesn't support this, empty array should be returned and TValueInfo should be ENotActive, 
       
   619 		   and the corresponding getter/setters for this feature should not be used. 
       
   620 		   When camera device is incapable of revealing the flash compensation steps supported, 
       
   621 		   it has to be assumed that camera will work only on the parmanently set value. If this value is not known, empty 
       
   622 		   array should be returned and TValueInfo should be ENotActive, and the corresponding getter/setters for this feature should not be used.
       
   623 	*/
       
   624 	virtual void GetFlashCompensationStepsL(RArray<TInt>& aFlashCompensationSteps, TValueInfo& aInfo) const=0; 
       
   625 	
       
   626 	/**
       
   627 	@deprecated Use TInt GetFlashCompensationStep(TInt& aFlashCompensationStep);
       
   628 	
       
   629 	Get current flash power compensation step.
       
   630 	
       
   631 	@return current flash compensation step.
       
   632 	*/
       
   633 	virtual TInt FlashCompensationStep() const=0;
       
   634 
       
   635 	/** 
       
   636 	Get current flash power compensation step.
       
   637 	
       
   638 	@param aFlashCompensationStep
       
   639 		   Reference to the current flash power compensation step.	
       
   640 	
       
   641 	@return system wide error code.
       
   642 	*/
       
   643 	virtual TInt GetFlashCompensationStep(TInt& aFlashCompensationStep) const=0;
       
   644 	
       
   645     /** 
       
   646 	Set current flash compensation step as an integer multiplied by KECamFineResolutionFactor.
       
   647 	For example to set a compensation of -0.3 EV, one should use a parameter with value -30.  
       
   648 	All clients receive a KUidECamEventCameraSettingFlashCompensationStep event, when the value has changed. 
       
   649 	
       
   650 	@param aFlashCompensationStep
       
   651 	       a new value for the flash compensation step.
       
   652 	*/
       
   653 	virtual void SetFlashCompensationStep(TInt aFlashCompensationStep)=0;
       
   654 	
       
   655 	/**
       
   656 	Get current flash power compensation range measured in a already selected compensation step.
       
   657 	@note This range may change if a different compensation step is selected. 
       
   658 	For example if flash compensation range is in the range -1EV 1.5EV and the selected flash compensation 
       
   659 	step is selected to be 0.3 EV, the result of this call will be 
       
   660 	aNegativeCompensation = -3 and aPositiveCompensation = 5.
       
   661 	as there can be only three full steps for negative compensation (1/0.3) and five for flash power boost (1.5/0.3).
       
   662     In this way developers, having pre-selected a step value from the supported set, would need to provide 
       
   663     just the multplier (in steps) and the direction (the sign). Steps are always assumed integers.	
       
   664 	
       
   665 	@param  aNegativeCompensation
       
   666 	        reference to an integer returning the maximum number of steps available for negative compensation.
       
   667 	        
       
   668 	@param aPositiveCompensation
       
   669 	        reference to an integer returning the maximum number of steps available for positive compensation.     
       
   670 	*/
       
   671 	virtual void GetFlashCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const=0;
       
   672 
       
   673 	/** 
       
   674 	@deprecated Use TInt GetFlashCompensation(TInt& aFlashCompensation);
       
   675 	
       
   676 	Get the current flash compensation value as integer steps. Positive values boost flash power,
       
   677 	negative reduce flash power. The change is not cumulative i.e. the change is stateless.
       
   678 	Each call assumes no previous compensation has been performed i.e. that there is a zero compensation.
       
   679 	   
       
   680 	@note if returned value is 2 (compensation steps) and the current flash compensation step is 0.3 EV, 
       
   681 	then the actual compensation effect will be 0.6 EV. 
       
   682 	   
       
   683 	@return  the current number compensation steps as an integer.
       
   684 	*/
       
   685 	virtual TInt FlashCompensation() const=0;
       
   686 
       
   687 	/** 
       
   688 	Get the current flash compensation value as integer steps. Positive values boost flash power,
       
   689 	negative reduce flash power. The change is not cumulative i.e. the change is stateless.
       
   690 	Each call assumes no previous compensation has been performed i.e. that there is a zero compensation.
       
   691 	   
       
   692 	@note if retrieved value is 2 (compensation steps) and the current flash compensation step is 0.3 EV, 
       
   693 	then the actual compensation effect will be 0.6 EV. 
       
   694 	
       
   695 	@param   aFlashCompensation
       
   696 			 Reference to the current number of compensation steps as an integer.
       
   697 	
       
   698 	@return  system wide error code.
       
   699 	*/
       
   700 	virtual TInt GetFlashCompensation(TInt& aFlashCompensation) const=0;
       
   701 	
       
   702 	/** 
       
   703 	Set the current flash compensation value as integer steps. 
       
   704 	Positive values increase power, negative reduce power. The change is not cumulative i.e. the change is stateless.
       
   705 	Each call assumes no previous compensation has been performed i.e. that there is a zero compensation.
       
   706 	Triggers a KUidECamEventCameraSettingFlashCompensation event.
       
   707 	
       
   708 	@param 	aFlashCompensationSteps  
       
   709 	        a required compensation steps - negative value reduce the flash power
       
   710 	        positive boosts up the flash power. 
       
   711 	*/
       
   712 	virtual void SetFlashCompensation(TInt aFlashCompensationSteps)=0;
       
   713 	
       
   714 	/**
       
   715 	Check whether there is an external flash source.
       
   716 	
       
   717 	@return ETrue if an external flash source is present, EFalse otherwise  
       
   718 	*/ 
       
   719 	virtual TBool IsExternalFlashPresent() const=0;
       
   720 	   
       
   721 	/** 
       
   722 	Gets the current discrete manual flash power levels supported by the device in range 0-100 
       
   723 	as a percentage of maximum power level.
       
   724 	
       
   725 	@param  aManualFlashPowerLevels
       
   726 	        An empty array of TInt which would be populated by the implementation with 
       
   727 	        the specific supported values. If the array is empty on return, 
       
   728 	        the camera does not support this functionality.
       
   729 	@param  aInfo 
       
   730 	        a reference to TValueInfo, which establishes the type of the returned data.             
       
   731 		
       
   732 	@leave KErrNoMemory Out of memory. 
       
   733 	
       
   734 	@note  When camera device doesn't support this, empty array should be returned and TValueInfo should be ENotActive,
       
   735 		   and the corresponding getter/setters for this feature should not be used. 
       
   736 		   When camera device is incapable of revealing the manual flash power levels supported, 
       
   737 		   it has to be assumed that camera will work only on the parmanently set value. If this value is not known, empty 
       
   738 		   array should be returned and TValueInfo should be ENotActive, and the corresponding getter/setters for this feature should not be used.
       
   739 	*/
       
   740     virtual void GetManualFlashPowerLevelsL(RArray<TInt>& aManualFlashPowerLevels, TValueInfo& aInfo) const=0;
       
   741     
       
   742     /**
       
   743     Gets the current manual flash power level on the device.
       
   744 	
       
   745 	@return the current manual flash power level as a value in the range [0:100]. 
       
   746 	
       
   747 	@note  In case there is an error, a negative error value from system wide error should be returned.
       
   748 	*/
       
   749     virtual TInt ManualFlashPowerLevel() const=0;
       
   750     
       
   751     /**
       
   752     Sets the current manual flash power level on the device.
       
   753     Triggers a KUidECamEventCameraSettingFlashManualPower event to all MCameraObserver2 clients.
       
   754 	
       
   755 	@param  aManualFlashPowerLevel
       
   756 	        one of the values returned in GetManualFlashPowerLevelsL(). 
       
   757 	*/
       
   758     virtual void SetManualFlashPowerLevel(TInt aManualFlashPowerLevel)=0;
       
   759     
       
   760 	/**
       
   761 	Get Supported exposure modes - bitfields of CCamera::TExposure
       
   762 	
       
   763 	@return the set of supported exposure modes.  
       
   764 	*/
       
   765 	virtual TInt SupportedExposureModes() const=0;
       
   766 	
       
   767 	/** 
       
   768 	Gets the currently set exposure setting value.
       
   769 
       
   770 	@return  The currently set exposure setting value. 
       
   771 	*/
       
   772 	virtual CCamera::TExposure ExposureMode() const=0;
       
   773 
       
   774 	/** 
       
   775 	Sets the exposure mode of the device.
       
   776 
       
   777 	Triggers a KUidECamEventCameraSettingExposureMode event to all MCameraObserver2 clients.
       
   778 
       
   779 	@param  aExposureMode
       
   780 	        The required exposure adjustment. 	        
       
   781 	*/
       
   782 	virtual void SetExposureMode(CCamera::TExposure aExposureMode)=0;
       
   783 	
       
   784 	/** 
       
   785 	Get exposure compensation steps as integers multiplied by KECamFineResolutionFactor.
       
   786 	For example 0.3 EV is 30.
       
   787 	
       
   788 	@param aExposureCompensationSteps
       
   789 	       an RArray of integers which is populated to reflect the supported 
       
   790 	       exposure compensation steps, all values have been multiplied by KECamFineResolutionFactor before 
       
   791 	       truncated to integers.
       
   792 	       
       
   793 	@param aInfo 
       
   794 		   a reference to TValueInfo, which establishes the type of the returned data.            
       
   795 	
       
   796 	@leave KErrNoMemory Out of memory. May also leave as a result of other system errors.
       
   797 	
       
   798 	@note  When camera device doesn't support this, empty array should be returned and TValueInfo should be ENotActive,
       
   799 		   and the corresponding getter/setters for this feature should not be used.
       
   800 		   When camera device is incapable of revealing the exposure compensation steps supported, 
       
   801 		   it has to be assumed that camera will work only on the parmanently set value. If this value is not known, empty 
       
   802 		   array should be returned and TValueInfo should be ENotActive, and the corresponding getter/setters for this feature should not be used.
       
   803 	*/
       
   804 	virtual void GetExposureCompensationStepsL(RArray<TInt>& aExposureCompensationSteps, TValueInfo& aInfo) const=0; 
       
   805 	
       
   806 	/** 
       
   807 	@deprecated Use TInt GetExposureCompensationStep(TInt& aExposureCompensationStep);
       
   808 	
       
   809 	Get current exposure compensation step.
       
   810 	
       
   811 	@return current exposure compensation step.
       
   812 	*/
       
   813 	virtual TInt ExposureCompensationStep() const=0;
       
   814 	
       
   815 	/** 
       
   816 	Get current exposure compensation step.
       
   817 	
       
   818 	@param aExposureCompensationStep
       
   819 		   Reference to the current exposure compensation step.
       
   820 	
       
   821 	@return system wide error code.
       
   822 	*/
       
   823 	virtual TInt GetExposureCompensationStep(TInt& aExposureCompensationStep) const=0;
       
   824 	
       
   825 	/** 
       
   826 	Set current exposure compensation step as an integer multiplied by KECamFineResolutionFactor.
       
   827 	All MCameraObserver2 clients receive a KUidECamEventCameraSettingExposureCompensationStep event,  
       
   828 	when the value has changed. 
       
   829 	
       
   830 	@param aExposureCompensationStep
       
   831 	       a new value for the exposure compensation step.
       
   832 	*/
       
   833 	virtual void SetExposureCompensationStep(TInt aExposureCompensationStep)=0;
       
   834 	
       
   835 	/**
       
   836 	Get current exposure compensation range in steps. It depends on the previously 
       
   837 	selected exposure compensation step. 
       
   838 	
       
   839 	@param  aNegativeCompensation
       
   840 	        reference to an integer returning the maximum number of steps 
       
   841 	        available for negative compensation.
       
   842 	        
       
   843 	@param aPositiveCompensation
       
   844 	        reference to an integer returning the maximum number of steps 
       
   845 	        available for positive compensation. 
       
   846 	        
       
   847 	@see GetFlashCompensationRangeInSteps()
       
   848 	*/
       
   849 	virtual void GetExposureCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const=0;
       
   850 
       
   851 	/** 
       
   852 	@deprecated Use TInt GetExposureCompensation(TInt& aExposureCompensation);
       
   853 	
       
   854 	Get the current exposure compensation value as integer steps. Positive values increase exposure times, 
       
   855 	negative reduce exposure times. The change is not cumulative i.e. the change is stateless.
       
   856 	Each call assumes no previous compensation has been performed i.e. that there is a zero compensation.
       
   857 			   
       
   858 	@note if returned value is 2 (compensation steps) and the current exposure compensation step is 0.3 EV, 
       
   859 	then the actual compensation effect will be 0.6 EV. 
       
   860 	   
       
   861 	@return  current number compensation steps as an integer.
       
   862 	*/
       
   863 	virtual TInt ExposureCompensation() const=0;
       
   864 
       
   865 	/** 
       
   866 	Get the current exposure compensation value as integer steps. Positive values increase exposure times, 
       
   867 	negative reduce exposure times. The change is not cumulative i.e. the change is stateless.
       
   868 	Each call assumes no previous compensation has been performed i.e. that there is a zero compensation.
       
   869 			   
       
   870 	@note if retrieved value is 2 (compensation steps) and the current exposure compensation step is 0.3 EV, 
       
   871 	then the actual compensation effect will be 0.6 EV. 
       
   872 	
       
   873 	@param aExposureCompensation
       
   874 		   Reference to the current number of compensation steps as an integer.
       
   875 		   
       
   876 	@return  system wide error code.
       
   877 	*/
       
   878 	virtual TInt GetExposureCompensation(TInt& aExposureCompensation) const=0;
       
   879 	
       
   880 	/** 
       
   881 	Set the current exposure compensation value as integer steps.
       
   882 	Triggers a KUidECamEventCameraSettingExposureCompensation event to all MCameraObserver2 clients.
       
   883 	
       
   884 	@param 	aExposureCompensationSteps  
       
   885 	        a required compensation value negative value reduce the exposure time
       
   886 	        positive increases the exposure time. 
       
   887 	
       
   888 	*/
       
   889 	virtual void SetExposureCompensation(TInt aExposureCompensationSteps)=0;
       
   890 
       
   891     /**
       
   892     Gets camera supported set of white balance adjustments.
       
   893     
       
   894     @return bitfield of all supported CCamera::TWhiteBalance values.  
       
   895     */
       
   896 	virtual TInt SupportedWhiteBalanceModes() const=0;
       
   897 	
       
   898 	/** 
       
   899 	Gets the current white balance value.
       
   900 
       
   901 	@return  The current white balance value.
       
   902 	*/
       
   903 	virtual CCamera::TWhiteBalance WhiteBalanceMode() const=0;
       
   904 	
       
   905 	/** 
       
   906 	Sets the white balance adjustment of the device.
       
   907 
       
   908 	No effect if this is not supported, see TCameraInfo::iWhiteBalanceModesSupported.
       
   909 	Triggers a KUidECamEventCameraSettingWhiteBalanceMode event to all MCameraObserver2 clients.
       
   910 
       
   911 	@param  aWhiteBalanceMode
       
   912 	        The required white balance mode.
       
   913 	*/
       
   914 	virtual void SetWhiteBalanceMode(CCamera::TWhiteBalance aWhiteBalanceMode)=0;
       
   915 
       
   916     /** 
       
   917     Gets the current state for aperture and exposure lock.
       
   918     
       
   919     @return ETrue if aperture and exposure values are locked together, 
       
   920            EFalse if these are not locked. 
       
   921     */
       
   922 	virtual TBool ApertureExposureLockOn() const=0;
       
   923 	
       
   924 	/** 
       
   925     Sets the current state for aperture and exposure lock.
       
   926     Triggers a KUidECamEventAELock event to all MCameraObserver2 clients.
       
   927     
       
   928     @param aAELock
       
   929            a value whether to lock exposure and aperture together.
       
   930     */
       
   931 	virtual void SetApertureExposureLockOn(TBool aAELock)=0;
       
   932 
       
   933 	/**
       
   934 	Gets the current state for button clicking sound effect.
       
   935 	
       
   936 	@return  boolean, ETrue to switch clicking sound on, EFalse sound off  
       
   937 	*/
       
   938 	virtual TBool ShootClickOn() const=0;
       
   939 	
       
   940 	/**
       
   941 	Sets the button clicking sound effect on /off. Triggers a KUidECamEventSoundClick event 
       
   942 	to all MCameraObserver2 clients. 
       
   943 	
       
   944 	@param aShootClickOn
       
   945 	       boolean, ETrue to switch clicking sound on, EFalse sound is switched off.  
       
   946 	*/
       
   947 	virtual void SetShootClickOn(TBool aShootClickOn)=0;
       
   948 	
       
   949 	/**
       
   950 	Get camera supported timer values. Active only when drive mode EDriveModeTimed.
       
   951 	Time is in microseconds. As time interval is expected to be relatively short, 
       
   952 	integer value is considered sufficient. 
       
   953 	
       
   954 	@param aTimerIntervals 
       
   955 	       an RArray of integers which is populated to reflect the supported 
       
   956 	       timer interval steps.
       
   957 	       
       
   958  	@param aInfo 
       
   959  	       an TValueInfo reference, which establishes the organization of 
       
   960    		   the returned data. 
       
   961    	
       
   962    	@see TValueInfo  
       
   963    	
       
   964    	@note  When camera device doesn't support this, empty array should be returned and TValueInfo should be ENotActive,
       
   965    		   and the corresponding getter/setters for this feature should not be used. 
       
   966 	*/
       
   967 	virtual void GetTimerIntervalsL(RArray<TInt>& aTimerIntervals, TValueInfo& aInfo) const=0;
       
   968 	
       
   969 	/**
       
   970 	Get current timer value. Active only when drive mode is EDriveModeTimed.
       
   971 	Timer resolution is in microseconds. 
       
   972 	
       
   973 	@return current time interval value. 
       
   974 	
       
   975 	@note  In case there is an error, a negative error value from system wide error should be returned.
       
   976 	*/
       
   977     virtual TInt TimerInterval() const=0;  
       
   978     
       
   979     /**
       
   980 	Set current timer value. Active only when drive mode EDriveModeTimed.
       
   981 	This is the time interval (delay) in microseconds between user pressing the button and image is taken.  
       
   982 	The setting of the value triggers a KUidECamEventCameraSettingTimerInterval event 
       
   983 	to all MCameraObserver2 clients. 
       
   984 	
       
   985 	@param aTimerInterval
       
   986 	       The selected timer interval in microseconds        
       
   987 	*/
       
   988     virtual void SetTimerInterval(TInt aTimerInterval)=0; 
       
   989 
       
   990 	/**
       
   991 	Get camera supported time lapse period range. Active only when drive mode EDriveModeTimeLapse.
       
   992 	The time lapse is denoted as the uniform time period between consecutive frames.
       
   993 	
       
   994 	@param aTimeLapseMin
       
   995 	       The minimum time value. 
       
   996 	       
       
   997 	@param aTimeLapseMax
       
   998 	       The maximum time value.
       
   999 	*/
       
  1000 	virtual void GetTimeLapsePeriodRange(TTime& aTimeLapseMin, TTime& aTimeLapseMax) const=0;
       
  1001 	
       
  1002 	/**
       
  1003 	Get current time lapse value. Active only when drive mode EDriveModeTimeLapse.
       
  1004 	The time lapse is denoted as the uniform time period 
       
  1005 	between consecutive frames and operation is configurable by its start, end and a fixed interval.
       
  1006 	@param aStart
       
  1007 			the start of the  timelapse period
       
  1008 	@param aEnd
       
  1009 			the end of the  timelapse period; start < end.
       
  1010 	@param aInterval
       
  1011 			the set parameter between two successive snapshots.		
       
  1012 	*/
       
  1013     virtual void GetTimeLapse(TTime& aStart, TTime& aEnd, TTime& aInterval) const=0;  
       
  1014     
       
  1015     /**
       
  1016 	Set current time lapse value. Active only when drive mode EDriveModeTimeLapse.
       
  1017 	The time lapse is denoted as the uniform time period between consecutive frames. 
       
  1018 	Setting triggers a KUidECamEventCameraSettingTimeLapse event to all MCameraObserver2 camera clients.
       
  1019 	
       
  1020 	@param aStart
       
  1021 			the start of the timelapse period.
       
  1022 	@param aEnd
       
  1023 			the end of the timelapse period; start < end.
       
  1024 	@param aInterval
       
  1025 			the set parameter between two successive snapshots.	
       
  1026 	*/
       
  1027     virtual void SetTimeLapse(const TTime& aStart, const TTime& aEnd, const TTime& aInterval)=0; 
       
  1028     
       
  1029 	/**
       
  1030 	Get current picture orientation.
       
  1031 	
       
  1032 	@return a TPictureOrientation value.
       
  1033 	*/
       
  1034     virtual CCamera::CCameraAdvancedSettings::TPictureOrientation PictureOrientation() const=0;
       
  1035     
       
  1036     /**
       
  1037     Set a new picture orientation
       
  1038     This triggers a KUidECamEventCameraSettingPictureOrientation event to all MCameraObserver2 clients.
       
  1039     
       
  1040     @param aOrientation
       
  1041            a value of TPictureOrientation denoting the new orientation.
       
  1042     */
       
  1043     virtual void SetPictureOrientation(CCamera::CCameraAdvancedSettings::TPictureOrientation aOrientation)=0; 
       
  1044 
       
  1045     /**
       
  1046 	Get supported pixel aspect ratio.
       
  1047 	
       
  1048 	@return a bitfield of all supported TPixelAspectRatio values.
       
  1049 	*/
       
  1050     virtual TInt SupportedPixelAspectRatios() const=0;
       
  1051 	/**
       
  1052 	Get current pixel aspect ratio.
       
  1053 	
       
  1054 	@return a TPixelAspectRatio value.
       
  1055 	*/
       
  1056     virtual CCamera::CCameraAdvancedSettings::TPixelAspectRatio PixelAspectRatio() const=0;
       
  1057     
       
  1058     /**
       
  1059     Set a new pixel aspect ratio.
       
  1060     This triggers a KUidECamEventPixelAspectRatio event to all MCameraObserver2 clients.
       
  1061     
       
  1062     @param aPixelAspectRatio
       
  1063            a value of TPixelAspectRatio denoting the new pixel aspect ratio.
       
  1064     */
       
  1065     virtual void SetPixelAspectRatio(CCamera::CCameraAdvancedSettings::TPixelAspectRatio aPixelAspectRatio)=0; 
       
  1066 
       
  1067 	/**
       
  1068 	Get supported YUV ranges.
       
  1069 	
       
  1070 	@return a bitfileld of all supported TYuvRange values.
       
  1071 	*/
       
  1072     virtual TInt SupportedYuvRanges() const=0;
       
  1073     
       
  1074 	/**
       
  1075 	Get the current YUV range.
       
  1076 	
       
  1077 	@return a TYuvRange value.
       
  1078 	*/
       
  1079     virtual CCamera::CCameraAdvancedSettings::TYuvRange YuvRange() const=0;
       
  1080     
       
  1081     /**
       
  1082     Set a new YUV range.
       
  1083     This triggers a KUidECamEventYuvRange event to all MCameraObserver2 clients.
       
  1084     
       
  1085     @param aYuvRange
       
  1086            a value of TYuvRange denoting the new YUV range.
       
  1087     */
       
  1088     virtual void SetYuvRange(CCamera::CCameraAdvancedSettings::TYuvRange aYuvRange)=0;
       
  1089 	
       
  1090 	/**
       
  1091 	Get the number of images captured normally under EDriveModeBurst condition.
       
  1092 	@note: due to memory or image size limitations the actual number may be less. 
       
  1093 	
       
  1094 	@return the number of images set to capture in burst mode. 
       
  1095 	*/
       
  1096     virtual TInt BurstImages() const=0;
       
  1097     
       
  1098     /**
       
  1099     Set the number of images captured normally under EDriveModeBurst condition.
       
  1100     Triggers a KUidECamEventBurstImages event to all MCameraObserver2 clients.
       
  1101 	@note: due to memory or image size limitations the actual number may be less. 
       
  1102 	
       
  1103 	@param aImages
       
  1104 		   the number of images set to capture in burst mode. 
       
  1105 		   
       
  1106 	@note  Unless reduced Latency scheme is not used (ie CaptureImageL(TInt aSequenceNumber) or PerformantStopVideoCaptureL())
       
  1107 	   	   if an image/video capture is still outstanding, this method may report error KErrInUse.
       
  1108     */
       
  1109     virtual void SetBurstImages(TInt aImages)=0;	
       
  1110 
       
  1111     /** 
       
  1112 	Gets the optical zoom levels.
       
  1113 
       
  1114 	@param  aOpticalZoomSteps
       
  1115 	        Array to hold optical zoom values multiplied by KECamFineResolutionFactor to retain precision. 
       
  1116 	        So that if zoom is not supported the array will return a single element of value 
       
  1117 	        KECamFineResolutionFactor.
       
  1118 
       
  1119 	@param  aInfo 
       
  1120 			a reference to TValueInfo, which establishes the type of the returned data.     
       
  1121 
       
  1122 	@note   Such approach allows for support for both linear and non-linear zoom steps.
       
  1123 			When camera device doesn't support this, empty array should be returned and TValueInfo should be ENotActive, 
       
  1124 			and the corresponding getter/setters for this feature should not be used.
       
  1125 	
       
  1126 	@leave KErrNoMemory Out of memory. May also leave as a result of other system errors. 
       
  1127 	*/
       
  1128 	virtual void GetOpticalZoomStepsL(RArray<TInt>& aOpticalZoomSteps, TValueInfo& aInfo) const=0;
       
  1129 	
       
  1130 	/** 
       
  1131 	Gets the currently set zoom value.
       
  1132 
       
  1133 	@return  The currently set optical zoom value. The value is multiplied by 
       
  1134 			 KECamFineResolutionFactor to retain precision.
       
  1135 			 
       
  1136 	@note  In case there is an error, a negative error value from system wide error should be returned. 
       
  1137 	*/
       
  1138 	virtual TInt OpticalZoom() const=0;
       
  1139 	
       
  1140 	/** 
       
  1141 	Sets the zoom using a specific value. Triggers a KUidECamEventCameraSettingOpticalZoom 
       
  1142 	event to all MCameraObserver2 clients.
       
  1143 
       
  1144 	@param aOpticalZoom 
       
  1145 	       Required zoom value.
       
  1146 	*/
       
  1147 	virtual void SetOpticalZoom(TInt aOpticalZoom)=0;
       
  1148 
       
  1149 	/** 
       
  1150 	Gets the digital zoom levels.
       
  1151 
       
  1152 	@param  aDigitalZoomSteps
       
  1153 	        Array to hold digital zoom values multiplied by KECamFineResolutionFactor to retain precision. 
       
  1154 	        So that if zoom is not supported the array will return a single element of value 
       
  1155 	        KECamFineResolutionFactor.
       
  1156 	        
       
  1157 	@param  aInfo 
       
  1158 			a reference to TValueInfo, which establishes the type of the returned data.
       
  1159 		
       
  1160 	@note   Such approach allows for support for both linear and non-linear zoom steps.
       
  1161 			When camera device doesn't support this, empty array should be returned and TValueInfo should be ENotActive
       
  1162 			and the corresponding getter/setters for this feature should not be used.
       
  1163 	
       
  1164 	@leave KErrNoMemory Out of memory. May also leave as a result of other system errors.
       
  1165 	*/
       
  1166 	virtual void GetDigitalZoomStepsL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo) const=0;
       
  1167 	
       
  1168 	/** 
       
  1169 	Gets the currently set digital zoom value.
       
  1170 
       
  1171 	@return  The currently set digital zoom value. The value is multiplied by 
       
  1172 			 KECamFineResolutionFactor to retain precision. 
       
  1173 			 
       
  1174 	@note  In case there is an error, a negative error value from system wide error should be returned.
       
  1175 	*/
       
  1176 	virtual TInt DigitalZoom() const=0;
       
  1177 	
       
  1178 	/** 
       
  1179 	Sets the digital zoom value. Triggers a KUidECamEventCameraSettingDigitalZoom event
       
  1180 	 to all MCameraObserver2 clients.
       
  1181 
       
  1182 	@param aDigitalZoom 
       
  1183 	       Required zoom value.
       
  1184 	
       
  1185 	*/
       
  1186 	virtual void SetDigitalZoom(TInt aDigitalZoom)=0;
       
  1187 
       
  1188 	/** 
       
  1189 	Checks whether exposure value is locked or not.
       
  1190 
       
  1191 	@return whether exposure value is locked or not. 
       
  1192 			ETrue if locked, EFalse otherwise. 
       
  1193 	*/
       
  1194 	virtual TBool ExposureLockOn() const=0;
       
  1195 	
       
  1196 	/** 
       
  1197 	Sets exposure lock state. Triggers a KUidECamEventCameraSettingExposureLock event
       
  1198 	 to all MCameraObserver2 clients.
       
  1199 
       
  1200 	@param aState 
       
  1201 	       Required new state.
       
  1202 	*/
       
  1203 	virtual void SetExposureLockOn(TBool aState)=0;
       
  1204 		
       
  1205 	/** 
       
  1206 	Checks whether AutoFocus value is locked or not.
       
  1207 
       
  1208 	@return whether AutoFocus value is locked or not. 
       
  1209 			ETrue if locked, EFalse otherwise. 
       
  1210 	*/
       
  1211 	virtual TBool AutoFocusLockOn() const=0;
       
  1212 	
       
  1213 	/** 
       
  1214 	Sets autofocus lock state. Triggers a KUidECamEventCameraSettingAutoFocusLock event
       
  1215 	to all MCameraObserver2 clients.
       
  1216 
       
  1217 	@param aState 
       
  1218 	       Required new state.
       
  1219 	*/
       
  1220 	virtual void SetAutoFocusLockOn(TBool aState)=0;
       
  1221 		
       
  1222 	/** 
       
  1223 	Gets an array of all the advanced settings parameters supported by the device. 
       
  1224 	These are identified by UIDs and relate to the set or subset of it of all defined settings UIDs. 
       
  1225 	
       
  1226 	@param  aSettings
       
  1227 	        An empty array of TUids which would be populated by the implementation with 
       
  1228 	        the UIDs of the supported parameters. If the array is empty on return, 
       
  1229 	        the camera does not support any settings.  
       
  1230 	
       
  1231 	@leave KErrNoMemory Out of memory. May also leave as a result of other system errors.
       
  1232 	*/
       
  1233     virtual void GetSupportedSettingsL(RArray<TUid>& aSettings) const=0;
       
  1234     
       
  1235     /** 
       
  1236 	Gets an array of all the advanced settings parameters currently active on the device. 
       
  1237 	These are identified by UIDs and relate to the set or subset of it of all supported
       
  1238 	settings UIDs. 
       
  1239 	
       
  1240 	@param  aActiveSettings
       
  1241 	        An empty array of TUids which would be populated by the implementation with 
       
  1242 	        the active setting UIDs. If the array is empty on return, 
       
  1243 	        the camera does not support any settings.  
       
  1244 	
       
  1245 	@leave KErrNoMemory Out of memory. May also leave as a result of other system errors. 
       
  1246 	*/
       
  1247     virtual void GetActiveSettingsL(RArray<TUid>& aActiveSettings) const=0;
       
  1248     
       
  1249     /** 
       
  1250 	Gets an array of all the advanced settings parameters currently disabled on the device. 
       
  1251 	These are identified by UIDs and relate to the set or subset of it of all supported
       
  1252 	settings UIDs. 
       
  1253 	
       
  1254 	@param  aDisabledSettings
       
  1255 	        An empty array of TUids which would be populated by the implementation with 
       
  1256 	        the disabled setting UIDs. If the array is empty on return, 
       
  1257 	        the camera does not support any settings.  
       
  1258 	
       
  1259 	@leave KErrNoMemory Out of memory. May also leave as a result of other system errors. 
       
  1260 	*/
       
  1261     virtual void GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const=0;
       
  1262 	
       
  1263 	/** 
       
  1264 	Retrieves the state for automatic size selection option. Default value is EFalse.
       
  1265 	
       
  1266 	@return ETrue if the automatic selection is switched on. Default value is EFalse.
       
  1267 	*/
       
  1268 	virtual TBool AutomaticSizeSelectionChangeOn() const=0;	
       
  1269 
       
  1270 	/** 
       
  1271 	Allow camera to proactively change image size due external factors. 
       
  1272 	Default value is EFalse. Triggers a KUidECamEventCameraSettingAutomaticSizeSelection event notification.
       
  1273 	@param aSetOn
       
  1274 	       whether the option should be switched on
       
  1275 	 */     
       
  1276 	virtual void SetAutomaticSizeSelectionChangeOn(TBool aSetOn)=0;	
       
  1277 
       
  1278     /** 
       
  1279     Retrieves the timeout values camera supported by the camera when in continuous auto focus mode. 
       
  1280     Timeouts are in microseconds.
       
  1281     
       
  1282    	@param  aTimeouts
       
  1283 	        An empty array to hold timeout values.
       
  1284 	        
       
  1285 	@param  aInfo 
       
  1286 			a reference to TValueInfo, which establishes the type of the returned data.
       
  1287 			
       
  1288 	@leave  KErrNoMemory Out of memory. May also leave as a result of other system errors.
       
  1289 	
       
  1290 	@note   When camera device doesn't support this, empty array should be returned and TValueInfo should be ENotActive
       
  1291 			and the corresponding getter/setters for this feature should not be used.
       
  1292     */
       
  1293     virtual void GetSupportedContinuousAutoFocusTimeoutsL(RArray<TInt>& aTimeouts, TValueInfo& aInfo) const=0;
       
  1294     
       
  1295     /**
       
  1296     Gets the current value for continuous autofocus timeout. Timeouts are in microseconds.
       
  1297     
       
  1298     @return  the timeout value in microseconds. 
       
  1299     
       
  1300     @note  In case there is an error, a negative error value from system wide error should be returned.
       
  1301     */
       
  1302     virtual TInt ContinuousAutoFocusTimeout() const=0; 
       
  1303        
       
  1304     /**
       
  1305     Sets new value for continuous autofocus timeout. Timeouts are in microseconds.
       
  1306     All MCameraObserver2 clients of the camera receive a 
       
  1307     KUidECamEventCameraSettingsContinuousAutoFocusTimeout 
       
  1308     event notification when timeout value is changed.
       
  1309     
       
  1310     @param  aTimeout
       
  1311 	        a new timeout value in microseconds. 
       
  1312     */
       
  1313     virtual void SetContinuousAutoFocusTimeout(TInt aTimeout)=0;
       
  1314    
       
  1315     /**
       
  1316     Gets all supported stabilization effects on the device.
       
  1317     
       
  1318     @return an integer - a bitfield of all supported TStabilizationEffect values. 
       
  1319     */
       
  1320 	virtual TInt SupportedStabilizationEffects() const=0;
       
  1321 	
       
  1322     /**
       
  1323     Gets current active stabilization effect on the device.
       
  1324     
       
  1325     @return a TStabilizationEffect value.
       
  1326     */
       
  1327 	virtual CCamera::CCameraAdvancedSettings::TStabilizationEffect StabilizationEffect() const=0;
       
  1328     
       
  1329     /**
       
  1330     Sets a specific stabilization effect on the device. 
       
  1331     When a value is set, MCameraObserver2 clients for that camera will receive a 
       
  1332     KUidECamEventCameraSettingsStabilizationEffect event notification.
       
  1333     
       
  1334     @param aEffect
       
  1335            stabilization effect selection of type TStabilizationEffect.
       
  1336     */
       
  1337     virtual void SetStabilizationEffect(CCamera::CCameraAdvancedSettings::TStabilizationEffect aEffect)=0;
       
  1338 
       
  1339     /**
       
  1340     Gets all supported stabilization algorithm values on the device.
       
  1341     
       
  1342     @return an integer - a bitfield of all supported TStabilizationAlgorithmComplexity values. 
       
  1343     */
       
  1344 	virtual TInt SupportedStabilizationComplexityValues() const=0;
       
  1345     
       
  1346     /**
       
  1347     Gets current active stabilization algorithm selection on the device.
       
  1348     
       
  1349     @return a TStabilizationAlgorithmComplexity value.
       
  1350     */
       
  1351 	virtual CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity StabilizationComplexity() const=0;
       
  1352     
       
  1353     /**
       
  1354     Sets a specific stabilization algorithm on the device. 
       
  1355     When a value is set, MCameraObserver2 clients for that camera will receive a 
       
  1356     KUidECamEventSettingsStabilizationAlgorithmComplexity event notification.
       
  1357     
       
  1358     @param aComplexity
       
  1359            stabilization effect selection of type TStabilizationAlgorithmComplexity.
       
  1360     */
       
  1361 	virtual void SetStabilizationComplexity(CCamera::CCameraAdvancedSettings::TStabilizationAlgorithmComplexity aComplexity)=0;
       
  1362 
       
  1363     /**
       
  1364     Gets the units in which the white balance is measured on the device. The methods used to get 
       
  1365     or set these differ depending on the supported unit type.  
       
  1366     It is expected that a device will support only a single type or none.
       
  1367     
       
  1368     @return a value of TWBUnits type.   
       
  1369     */
       
  1370     virtual CCamera::CCameraAdvancedSettings::TWBUnits SupportedWBUnits() const=0;
       
  1371     
       
  1372     /**
       
  1373     Get white balance value represented as a RGB triplet (TRgb)
       
  1374     
       
  1375     @param aValue
       
  1376     	   a reference to TRgb object which will contain the current white balance.
       
  1377     */
       
  1378 	virtual void GetWBRgbValue(TRgb& aValue) const=0;
       
  1379     
       
  1380     /**
       
  1381     Set white balance value using a RGB triplet (TRgb). 
       
  1382     Change in value causes an event notification KUidECamEventCameraSettingsWBValue 
       
  1383     to be sent to all MCameraObserver2 clients of this camera. 
       
  1384     
       
  1385     @param aValue
       
  1386     	   a const reference to TRgb object, which contains the new white balance.
       
  1387     */
       
  1388     virtual void SetWBRgbValue(const TRgb& aValue)=0;
       
  1389     
       
  1390     /**
       
  1391     Get the white balance values, as temperature measured in Kelvin, supported on the device.
       
  1392 	
       
  1393 	@param  aWBColorTemperatures
       
  1394         	A reference to an empty array of TInt which would be populated by the implementation with 
       
  1395         	the specific supported values. 
       
  1396 	
       
  1397 	@param  aInfo 
       
  1398 	        a reference to TValueInfo, which establishes the type of the returned data.     
       
  1399 	        
       
  1400 	@note   When camera device doesn't support this, empty array should be returned and TValueInfo should be ENotActive,
       
  1401 			and the corresponding getter/setters for this feature should not be used.
       
  1402     */
       
  1403 	virtual void GetWBSupportedColorTemperaturesL(RArray<TInt>& aWBColorTemperatures, TValueInfo& aInfo) const=0;
       
  1404     
       
  1405     /**
       
  1406     Get the white balance as a temperature in Kelvin.
       
  1407     
       
  1408     @return current white balance value as a temperature in Kelvins.
       
  1409     
       
  1410     @note  In case there is an error, a negative error value from system wide error should be returned.
       
  1411     */
       
  1412  	virtual TInt WBColorTemperature() const=0;   
       
  1413  	
       
  1414  	/**
       
  1415     Set white balance value using a temperature, measured in Kelvin. 
       
  1416     Change in value causes an event notification KUidECamEventCameraSettingsWBValue 
       
  1417     to be sent to all MCameraObserver2 clients of this camera. 
       
  1418     
       
  1419     @param aWBColorTemperature
       
  1420     	   the new white balance value in Kelvin.
       
  1421     */
       
  1422 	virtual void SetWBColorTemperature(TInt aWBColorTemperature)=0;
       
  1423 	};
       
  1424 
       
  1425 
       
  1426 /** 
       
  1427 Mixin class for implementation by providers of some enhanced functionalities of the 
       
  1428 Advanced Settings Camera Extension API.
       
  1429 
       
  1430 @publishedPartner
       
  1431 @released	
       
  1432 */	
       
  1433 class MCameraAdvancedSettings2
       
  1434 	{
       
  1435 	
       
  1436 public:
       
  1437 	/** 
       
  1438 	Releases the interface. 
       
  1439 	*/
       
  1440 	virtual void Release()=0;
       
  1441 	
       
  1442 	/** 
       
  1443  	Checks whether the flash is ready.
       
  1444      
       
  1445     @param 	aReady
       
  1446     		A reference to a boolean set by the implementation to ETrue if the flash is ready, 
       
  1447     		EFalse otherwise.
       
  1448             
       
  1449  	@return KErrNotSupported if the implementation of this method is not supported.
       
  1450  	*/	
       
  1451  	virtual TInt IsFlashReady(TBool& aReady) const=0;
       
  1452  	
       
  1453  	/**
       
  1454     Get the number of focus steps for current focus mode.
       
  1455  	
       
  1456  	@param  aFocusModeSteps
       
  1457          	A reference to an empty array of TInt which would be populated by the implementation with 
       
  1458          	the specific supported values. 
       
  1459  	
       
  1460  	@param  aInfo 
       
  1461  	        a reference to TValueInfo, which establishes the type of the returned data. 
       
  1462  	
       
  1463  	@leave  KErrNotSupported if the implementation of this method is not supported. May also leave as a result of other system errors.
       
  1464     
       
  1465     @note   When camera device doesn't support this, empty array should be returned and TValueInfo should be ENotActive, 
       
  1466             and the corresponding getter/setters for this feature should not be used.
       
  1467     */
       
  1468  	virtual void GetCurrentFocusModeStepsL(RArray<TInt>& aFocusModeSteps, TValueInfo& aInfo) const=0;
       
  1469 	};
       
  1470 	
       
  1471 /** 
       
  1472 Mixin class for implementation by providers of 'some of the enhanced functionalities' of the 
       
  1473 Advanced Settings Camera Extension API.
       
  1474 
       
  1475 @publishedPartner
       
  1476 @released	
       
  1477 */	
       
  1478 class MCameraAdvancedSettings3
       
  1479 	{
       
  1480 	
       
  1481 public:
       
  1482 	/** 
       
  1483 	Releases the interface. 
       
  1484 	*/
       
  1485 	virtual void Release()=0;
       
  1486 	
       
  1487 	/**
       
  1488  	Gets all supported ISO types on the device.
       
  1489  	
       
  1490  	@param  aSupportedISORateTypes 
       
  1491  			A reference to an integer which is a bitfield of all supported TISORateType values. 
       
  1492  			EISONone means feature is not supported.
       
  1493   	
       
  1494   	@leave  May leave as a result of some error. 
       
  1495   	*/	
       
  1496 	virtual void GetSupportedISORateTypeL(TInt& aSupportedISORateTypes) const=0;
       
  1497 	
       
  1498 	/** 
       
  1499 	Set the type of ISO rate and the exposure parameter or value specified.
       
  1500 	 
       
  1501 	@param 	aISORateType
       
  1502 			The type of ISO rate to be set.
       
  1503 
       
  1504 	@param  aParam
       
  1505 			Depending on the value of aISORateType, possible values of aParam are one of the following:-
       
  1506 			The value of ISO rate to be used in case of manual type of ISO rate (EISOManual). 
       
  1507 			OR
       
  1508 			Redundant parameter in case of unprioritised type of auto ISO (EISOAutoUnPrioritised). It is left to the camera hardware/firmware 
       
  1509 			to decide how the ISO rate is selected. No priority regarding exposure is specified.
       
  1510 			OR
       
  1511 			Highest ISO rate to be picked by the camera while deciding for the best exposure in case of ISO prioritised 
       
  1512 			type of auto ISO (EISOAutoISOPrioritised). ISO rate closest to this (and lower) may be used so that best possible exposure is achieved.
       
  1513 			OR
       
  1514 			Slowest shutter speed to be picked by the camera while deciding for the best exposure in case of shutter speed 
       
  1515 			prioritised type of auto ISO (EISOAutoShutterSpeedPrioritised). After using this shutter speed, ISO rate is chosen by the camera to achieve 
       
  1516 			proper exposure. Shutter speed closest to this (and faster) may be used so that best possible exposure is achieved.
       
  1517 			OR
       
  1518 			Minimum aperture opening (deepest depth of field) to be picked by the camera while deciding 
       
  1519 			for the best exposure in case of aperture prioritised type of auto ISO (EISOAutoAperturePrioritised). After using this aperture opening, ISO
       
  1520 			rate is chosen by the camera to achieve proper exposure. Aperture opening closest to this (and wider) may be 
       
  1521 			used to achieve best possible exposure.
       
  1522 	
       
  1523 	@note   Triggers KUidECamEventCameraSettingIsoRateType to all MCameraObserver2 clients of the camera. 
       
  1524 			Uses HandleEvent to report the result or any possible error. 
       
  1525 	*/	
       
  1526 	virtual void SetISORate(CCamera::CCameraAdvancedSettings::TISORateType aISORateType, TInt aParam)=0;
       
  1527 	
       
  1528 	/** 
       
  1529  	Get the type of ISO rate, exposure parameter and value set.
       
  1530  
       
  1531 	@param 	aISORateType
       
  1532 			A reference to the type of ISO rate set. EISONone means feature is not supported.
       
  1533 
       
  1534 	@param  aParam
       
  1535 			Depending on the value of aISORateType, possible values of aParam are one of the following:-
       
  1536 			A reference to the redundant parameter in case of manual type of ISO rate(EISOManual) 
       
  1537 			OR
       
  1538 			A reference to the redundant parameter in case of unprioritised type of auto ISO(EISOAutoUnPrioritised)
       
  1539 			OR
       
  1540     		A reference to the highest ISO rate that may be picked up in case of ISO prioritised type of auto ISO(EISOAutoISOPrioritised) 
       
  1541     		OR
       
  1542 			A reference to the slowest shutter speed that may be picked up in case of shutter speed prioritised type of auto ISO(EISOAutoShutterSpeedPrioritised) 
       
  1543 			OR
       
  1544 			A reference to the minimum aperture opening that may be picked up in case of aperture prioritised type of auto ISO(EISOAutoAperturePrioritised)
       
  1545 
       
  1546 	@param  aISORate   
       
  1547 			A reference to the value of ISO rate currently being used, if camera device is capable of doing that. 
       
  1548 			Otherwise KErrNotFound should be retrieved indicating the incapability of camera.
       
  1549 	
       
  1550 	@leave  May leave as a result of some other error.
       
  1551 	
       
  1552 	@note   Since camera hardware may be incapable of providing the actual ISO value when one of the auto ISO type has 
       
  1553 			been set, then, in these cases, the 3rd argument should be retrieved as KErrNotFound.    
       
  1554 	*/	
       
  1555 	virtual void GetISORateL(CCamera::CCameraAdvancedSettings::TISORateType& aISORateType, TInt& aParam, TInt& aISORate) const=0;
       
  1556 	
       
  1557 	/**
       
  1558 	Provide reference screen for orientation information.
       
  1559 
       
  1560 	@param  aScreenDevice
       
  1561 			A reference to the screen device.
       
  1562 
       
  1563 	@note	For consistency, when DSA view finder runs, it also provides a screen device. So, the DSA view finder's internal implementation 
       
  1564 			should call this method with the screen device passed ( 2nd argument to DSA view finder) to avoid disparity in knowing the refeence screen.
       
  1565 			Triggers KUidECamEventCameraSettingReferenceScreen to all MCameraObserver2 clients of the camera. 
       
  1566 			Uses HandleEvent to report the result or any possible error. 
       
  1567 	*/	
       
  1568 	virtual void SetReferenceScreen(CWsScreenDevice& aScreenDevice)=0;
       
  1569 	
       
  1570 	/**
       
  1571 	Get the digital zoom steps for the still image when a particular image format and size are specified.
       
  1572 	
       
  1573 	@param  aDigitalZoomSteps
       
  1574 			A reference to an empty array of TInt to hold digital zoom step values for still image and multiplied by 
       
  1575 			KECamFineResolutionFactor to retain precision. If list returned is empty, this means feature is not supported.
       
  1576 	
       
  1577 	@param  aInfo
       
  1578 			A reference to TValueInfo, which establishes the type of the returned data.
       
  1579 			
       
  1580 	@param  aSizeIndex
       
  1581 			A value providing the size index which must be in the range 0 to TCameraInfo::iNumImageSizesSupported-1
       
  1582 			inclusive.
       
  1583 			
       
  1584 	@param  aFormat
       
  1585 			A value providing the image format which must be one of the formats supported. (see 
       
  1586 			TCameraInfo::iImageFormatsSupported)
       
  1587 	
       
  1588 	@param  aIsInfluencePossible
       
  1589 			If True, signals that digital zoom step values may be influenced by some hardware factor like stabilization etc.
       
  1590 			If False, no influence possible.
       
  1591 	
       
  1592 	@leave  KErrNoMemory Out of memory. May leave with any other error code.
       
  1593 		
       
  1594 	@note   This method retrieves the supported digital zoom steps irrespective of any stabilization influence. 
       
  1595 			In case of stabilization etc. influence, the setting function should set the best possible digital zoom value 
       
  1596 			and return error KErrECamDigitalZoomLimited along with dedicated event.
       
  1597 			
       
  1598 	@note	When camera device doesn't support this feature, empty array should be returned and TValueInfo should be ENotActive,
       
  1599 			and the corresponding getter/setters for this feature should not be used.
       
  1600 	
       
  1601 	@note	Implementation recommendation for old methods which are used to retrieve the supported digital zoom values, is
       
  1602 			to provide only safe values suitable in every cases.
       
  1603 	*/
       
  1604 	virtual void GetDigitalZoomStepsForStillL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aSizeIndex, 
       
  1605 					CCamera::TFormat aFormat, TBool& aIsInfluencePossible) const=0;
       
  1606 	
       
  1607 	/**
       
  1608 	Get the digital zoom steps for the video when a particular video frame format, size and rate are specified.
       
  1609 	
       
  1610 	@param  aDigitalZoomSteps
       
  1611 			A reference to an empty array of TInt to hold digital zoom step values for video and multiplied by 
       
  1612 			KECamFineResolutionFactor to retain precision. If list returned is empty, this means feature is not supported.
       
  1613          	
       
  1614 	@param  aInfo
       
  1615 			A reference to TValueInfo, which establishes the type of the returned data.
       
  1616 			
       
  1617 	@param  aFrameRateIndex
       
  1618 			A value providing the rate index must be in the range 0 to TCameraInfo::iNumVideoFrameRatesSupported-1
       
  1619 	        inclusive.
       
  1620 	
       
  1621 	@param  aSizeIndex
       
  1622 			A value providing the size index which must be in the range 0 to TCameraInfo::iNumVideoFrameSizesSupported-1
       
  1623 			inclusive.
       
  1624 			
       
  1625 	@param  aFormat
       
  1626 			A value providing the format which must be one of the video frame formats supported. (see
       
  1627 	        TCameraInfo::iVideoFrameFormatsSupported)
       
  1628 			
       
  1629 	@param  aIsInfluencePossible
       
  1630 			If True, signals that digital zoom step values may be influenced by some hardware factor like stabilization etc.
       
  1631 			If False, no influence possible.
       
  1632 			
       
  1633 	@param  aExposure
       
  1634 			The exposure mode.
       
  1635 	
       
  1636 	@leave  KErrNoMemory Out of memory. May leave with any other error code.
       
  1637 		
       
  1638 	@note   This method retrieves the supported digital zoom steps irrespective of any stabilization influence. 
       
  1639 			In case of stabilization etc. influence, the setting function should set the best possible digital zoom value 
       
  1640 			and return error KErrECamDigitalZoomLimited along with dedicated event.
       
  1641 			
       
  1642 	@note	When camera device doesn't support this, empty array should be returned and TValueInfo should be ENotActive,
       
  1643 			and the corresponding getter/setters for this feature should not be used.
       
  1644 			
       
  1645 	@note	Implementation recommendation for old methods which are used to retrieve the supported digital zoom values, is
       
  1646 			to provide only safe values suitable in every cases.
       
  1647 	*/
       
  1648 	virtual void GetDigitalZoomStepsForVideoL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aFrameRateIndex, 
       
  1649 					TInt aSizeIndex, CCamera::TFormat aFormat, TBool& aIsInfluencePossible, CCamera::TExposure aExposure) const=0;
       
  1650 	/**
       
  1651 	Retrieves the pre capture warnings supported for a given camera mode
       
  1652 	
       
  1653 	@param  aCameraMode
       
  1654 			Desired camera mode for which the supported pre capture warnings may be retrieved.
       
  1655 			
       
  1656 	@param 	aPreCaptureWarningSupported
       
  1657 			A bitfield of all supported TPreCaptureWarning to be issued in the given camera mode. 
       
  1658 			If no pre capture warning supported for the given camera mode, EPCWNone is retrieved.
       
  1659 			
       
  1660 	@leave  May leave with any error. 
       
  1661 	*/
       
  1662 	virtual void GetPreCaptureWarningSupportedL(CCamera::CCameraAdvancedSettings::TCameraMode aCameraMode, TInt& aPreCaptureWarningSupported) const=0;
       
  1663 	
       
  1664 	/**
       
  1665 	Subscribe in order to receive event which indicates warnings on occurrence of some specific unfavourable 
       
  1666 	conditions before image/video capture.
       
  1667 	
       
  1668 	@param  aPreCaptureWarning
       
  1669 			A bitfield specifying all the TPreCaptureWarning types to be subscribed for. 
       
  1670 			
       
  1671 	@note	When any of the subscribed warnings (represented by aPreCaptureWarning) get generated by the camera device, 
       
  1672 			event KUidECamEventCameraSettingPreCaptureWarning is issued. TECAMEvent2 class should be used in order to 
       
  1673 			provide the status of every PreCaptureWarning. 
       
  1674 			
       
  1675 	@leave  May leave with any error.
       
  1676 	*/
       
  1677 	virtual void SubscribeToPreCaptureWarningL(TInt aPreCaptureWarning)=0;
       
  1678 	
       
  1679 	/**
       
  1680 	Unsubscribe so that further events are not received when warnings get issued.
       
  1681 	
       
  1682 	@leave  May leave with any error.
       
  1683 	*/
       
  1684 	virtual void UnSubscribePreCaptureWarningL()=0;
       
  1685 	
       
  1686 	/**
       
  1687 	Get the status of every warnings defined.
       
  1688 	
       
  1689 	@param  aPreCaptureWarning
       
  1690 			A reference to the integer - bitfield  representing all the TPreCaptureWarning types issued.
       
  1691 	
       
  1692 	@leave  May leave with any error.
       
  1693 	
       
  1694 	@note   This method may be called after receiving the event KUidECamEventCameraSettingPreCaptureWarning OR
       
  1695 			user may also opt for polling on this.
       
  1696 	*/
       
  1697 	virtual void GetPreCaptureWarningL(TInt& aPreCaptureWarning) const=0;
       
  1698 	
       
  1699 	/**
       
  1700 	Retrieve the different supported AF assistant light. 
       
  1701 
       
  1702 	@param  aSupportedAFAssistantLight
       
  1703 	        A reference to integer - bitfield indicating the supported AF assistant light.
       
  1704 		    If EAFAssistantLightOff, this means AF assistant light is not supported. 
       
  1705 		    If EAFAssistantLightManualOn, then manual AF assistant light is supported.  
       
  1706 		    If EAFAssistantLightAuto, auto assistant light is supported. 
       
  1707 		    If combination of EAFAssistantLightManualOn||EAFAssistantLightAuto , then both manual and Auto assistant light are supported.
       
  1708 		    
       
  1709 	@leave  May leave with any error.
       
  1710 	*/
       
  1711 	virtual void GetSupportedAFAssistantLightL(TInt& aSupportedAFAssistantLight) const=0;
       
  1712 			 
       
  1713 	/**
       
  1714 	Get the type ( and state) of AF assistant light currently set.
       
  1715 
       
  1716 	@param  aAFAssistantLight
       
  1717 			A reference to AF assistant light.
       
  1718 			If EAFAssistantLightOff, then manual and auto assistant light are switched off.
       
  1719 			If EAFAssistantLightManualOn, manual assistant light is switched on. 
       
  1720 			If EAFAssistantLightAuto, AF assistant light is set to auto.
       
  1721 			
       
  1722 	@leave  May leave with any error. 
       
  1723 	*/
       
  1724 	virtual void GetAFAssistantLightL(CCamera::CCameraAdvancedSettings::TAFAssistantLight& aAFAssistantLight) const=0;
       
  1725 	
       
  1726 	/**
       
  1727 	Set a particular type ( and state) of AF assistant light.
       
  1728 
       
  1729 	@param  aAFAssistantLight
       
  1730 			Type of AF assistant light to be set.
       
  1731 			If EAFAssistantLightOff, switch off the manual or auto assistant light.
       
  1732 			If EAFAssistantLightManualOn, manually switch on the assistant light. 
       
  1733 			If EAFAssistantLightAuto, camera will automatically switch it on/off as per the conditions.
       
  1734 		   
       
  1735 	@note   Triggers KUidECamEventCameraSettingAFAssistantLight to all MCameraObserver2 clients of the camera. 
       
  1736 			Uses HandleEvent to report the result or any possible error.
       
  1737 	*/	
       
  1738 	virtual void SetAFAssistantLight(CCamera::CCameraAdvancedSettings::TAFAssistantLight aAFAssistantLight)=0; 
       
  1739 	};
       
  1740 	
       
  1741 /** 
       
  1742 Mixin class for implementation by providers of 'advanced camera feature extensions' of the 
       
  1743 Advanced Settings Camera Extension API.
       
  1744 
       
  1745 @publishedPartner
       
  1746 @prototype	
       
  1747 */	
       
  1748 class MCameraAdvancedSettings4
       
  1749 	{
       
  1750 	
       
  1751 public:
       
  1752 	/** 
       
  1753 	Releases the interface. 
       
  1754 	*/
       
  1755 	virtual void Release()=0;
       
  1756 	
       
  1757 	/**
       
  1758 	Retrieves the supported continuous zoom types.
       
  1759 
       
  1760 	@param  aSupportedContinuousZoomType
       
  1761 			Retrieves a bitfield of TUint which indicates the supported continuous zoom type as given by 
       
  1762 			CCamera::CCameraAdvancedSettings::TContinuousZoomType
       
  1763 			
       
  1764 	@leave  May leave with any error code.
       
  1765 	*/
       
  1766 	virtual void GetSupportedContinuousZoomTypeL(TUint& aSupportedContinuousZoomType) const=0;
       
  1767 	
       
  1768 	/**
       
  1769 	Retrieves the minimum, current and maximum focal length in millimeters. This information is useful to find out 
       
  1770 	which zoom directions can be used on the fly.
       
  1771 	
       
  1772 	@param  aMinFocalLength
       
  1773 			Minimum focal length if positive. 
       
  1774 			Error value if negative (for example, KErrNotFound if information not available).
       
  1775 			
       
  1776 	@param  aCurrentFocalLength
       
  1777 			Current focal length if positive. 
       
  1778 			Error value if negative (for example, KErrNotFound if information not available).
       
  1779 	
       
  1780 	@param  aMaxFocalLength
       
  1781 			Maximum focal length if positive. 
       
  1782 			Error value if negative (for example, KErrNotFound if information not available).
       
  1783 			
       
  1784 	@leave  May leave with any error code.
       
  1785 	*/	
       
  1786 	virtual void GetFocalLengthInfoL(TInt& aMinFocalLength, TInt& aCurrentFocalLength, TInt& aMaxFocalLength) const=0;
       
  1787 	
       
  1788 	/**
       
  1789 	Retrieves the total number of operation preferences supported by the implementation. Operation preferences are 
       
  1790 	specified in terms of performance vectors, that is, speed, quality, low memory consumption and low power consumption.
       
  1791 	
       
  1792 	@param  aNumOperationPreferenceSupported
       
  1793 			Retrieves the number of operation preferences supported.
       
  1794 	
       
  1795 	@leave  May leave with any error code.
       
  1796 	*/
       
  1797 	virtual void GetNumOperationPreferenceL(TUint& aNumOperationPreferenceSupported) const=0;
       
  1798 	
       
  1799 	/**
       
  1800 	Enumerate the available operation preferences.
       
  1801 	
       
  1802 	@param  aOperationPreferenceIndex
       
  1803 			A particular index which represents an operation preference. The level of different performance vectors may be known 
       
  1804 			through other arguments. This varies from 0 to n-1, where n is given by GetNumOperationPreferenceL(n).
       
  1805 	
       
  1806 	@param  aSpeedLevel
       
  1807 			A TPerformanceLevel which specifies the speed level related to the index aOperationPreferenceIndex.
       
  1808 			
       
  1809 	@param  aQualityLevel
       
  1810 			A TPerformanceLevel which specifies the quality level related to the index aOperationPreferenceIndex.
       
  1811 			
       
  1812 	@param  aLowMemoryConsumptionLevel
       
  1813 			A TPerformanceLevel which specifies the low memory consumption level related to the index aOperationPreferenceIndex.
       
  1814 			The lower the memory consumption, the higher the level.
       
  1815 			
       
  1816 	@param  aLowPowerConsumptionLevel
       
  1817 			A TPerformanceLevel which specifies the low power consumption level related to the index aOperationPreferenceIndex.
       
  1818 			The lower the power consumption, the higher the level.
       
  1819 			
       
  1820 	@note   It is up to the implementation how the performance levels are achieved. For example, shutter opening, JPEQ quality 
       
  1821 			and parallel buffering in case of streamed image output can be controlled in order to provide the desired 
       
  1822 			performance.
       
  1823 			
       
  1824 	@leave  May leave with any error code.
       
  1825 	*/
       
  1826 	virtual void EnumerateOperationPreferenceL(TUint aOperationPreferenceIndex, CCamera::CCameraAdvancedSettings::
       
  1827 						TPerformanceLevel& aSpeedLevel, CCamera::CCameraAdvancedSettings::TPerformanceLevel& aQualityLevel, 
       
  1828 						CCamera::CCameraAdvancedSettings::TPerformanceLevel& aLowMemoryConsumptionLevel, 
       
  1829 						CCamera::CCameraAdvancedSettings::TPerformanceLevel& aLowPowerConsumptionLevel) const=0;
       
  1830 	
       
  1831 	/**
       
  1832 	Set a particular operation preference.
       
  1833 	
       
  1834 	@param  aOperationPreferenceIndex
       
  1835 			An index which reveals a set of levels to be used for performance vectors, that is, speed, quality, low memory 
       
  1836 			consumption and low power consumption.
       
  1837 	
       
  1838 	@note   Event KUidECamEventCameraSettingOperationPreference is used to notify clients about setting an operation preference.
       
  1839 	*/										
       
  1840 	virtual void SetOperationPreference(TUint aOperationPreferenceIndex)=0;
       
  1841 	
       
  1842 	/**
       
  1843 	Get the current operation preference being used.
       
  1844 	
       
  1845 	@param  aOperationPreferenceIndex
       
  1846 			Currently used operation preference index.
       
  1847 						
       
  1848 	@leave  May leave with any error code. 
       
  1849 	*/
       
  1850 	virtual void GetOperationPreferenceL(TInt& aOperationPreferenceIndex) const=0;
       
  1851 	
       
  1852 	/**
       
  1853 	Retrieves the event uids which the underlying implementation supports. The client may use these events notifications as
       
  1854 	milestones in their application.
       
  1855 	
       
  1856 	@param  aSupportedEvents
       
  1857 			Retrieves as array of TUid. Every member of the array represents a supported event uid. These events are ECAM 
       
  1858 			component wide. 
       
  1859 			
       
  1860 	@leave  May leave with any error code.
       
  1861 	
       
  1862 	@note   This method may retrieve unrecognized events which may be introduced later on.
       
  1863 	*/	
       
  1864 	virtual void GetSupportedEventsL(RArray<TUid>& aSupportedEvents) const=0;
       
  1865 	
       
  1866 	/**
       
  1867 	Retrieves the indirect feature changes which occur because of a particular requested feature change.
       
  1868 	Since the camera setting operation is asynchronous in nature, changing a particular camera feature, in certain cases, 
       
  1869 	involves indirectly changing another feature. In order to notify the ECam client about this indirect feature change, 
       
  1870 	event KUidECamEvent2IndirectFeatureChange is issued. After this notification, the client may use this method to retrieve 
       
  1871 	the	full list of indirect feature changes.
       
  1872 
       
  1873 	@param  aRequestedSetting
       
  1874 			The actual requested feature change. This uid is supposed to be ECAM component wide and not restricted to 
       
  1875 			advanced camera settings.
       
  1876 
       
  1877 	@param  aIndirectFeatureChanges
       
  1878 			An array of uids which retrieves the indirect feature changes. These uids are supposed to be ECAM component wide 
       
  1879 			and not restricted to advanced camera settings.
       
  1880 			
       
  1881 	@leave  May leave with any error code.
       
  1882 	*/
       
  1883 	virtual void GetIndirectFeatureChangesL(TUid aRequestedSetting, RArray<TUid>& aIndirectFeatureChanges) const=0;
       
  1884 	
       
  1885 	/**
       
  1886 	Retrieves the concrete factory handle for the continuous zoom implementation.
       
  1887 		   
       
  1888 	@param  aImplFactoryPtr
       
  1889 		    The concrete factory handle for the continuous zoom implementation.
       
  1890 		   
       
  1891 	@leave  May leave with any error code.
       
  1892 	*/
       
  1893 	virtual void CreateContinuousZoomImplFactoryL(MImplementationFactory*& aImplFactoryPtr) const=0;
       
  1894 	};
       
  1895 
       
  1896 /** 
       
  1897 Mixin class for implementation by providers of the Presets Camera Extension API.
       
  1898 
       
  1899 This API is used to simplify user - camera interaction by allowing simultaneous
       
  1900 setting of various advanced camera hardware settings using a single parameter.
       
  1901 
       
  1902 A preset is identified by a single UID and relates to a known predefined outcome. 
       
  1903 For example the 'Night' Preset is used to set the camera into a night mode 
       
  1904 so that the user can take photos in dark conditions. 
       
  1905 
       
  1906 The settings associated with a particular preset and their specific values and ranges 
       
  1907 are specific to each type of camera hardware and are therefore not defined by the API. 
       
  1908 
       
  1909 @publishedPartner
       
  1910 @released 	
       
  1911 */
       
  1912 class MCameraPresets 
       
  1913 	{
       
  1914 	
       
  1915 public:
       
  1916 
       
  1917 	/** 
       
  1918 	Releases the interface. 
       
  1919 	*/
       
  1920     virtual void Release()=0; 
       
  1921     
       
  1922 	/** 
       
  1923 	Gets the presets supported by the device. These are identified by UIDs 
       
  1924 	and relate to a known expected outcome.
       
  1925 	The settings associated with a particular preset and their specific values and ranges are 
       
  1926 	specific to each type of camera hardware and are therefore not defined by the API. 
       
  1927 	
       
  1928 	@param  aPresets
       
  1929 	        An empty array of TUids which the API implementation must populate with the specific supported preset values. If the array is empty on return, 
       
  1930         	the camera does not support presets.   
       
  1931 	
       
  1932 	@leave KErrNoMemory Out of memory. May also leave as a result of other system errors.
       
  1933 	*/
       
  1934     virtual void GetSupportedPresetsL(RArray<TUid>& aPresets) const=0;
       
  1935     
       
  1936     /** 
       
  1937 	Sets a specific preset supported by the camera.  
       
  1938 	All clients, implementing the MCameraObserver2 interface will receive a notification 
       
  1939 	with the UID of the specific preset, signalling a new preset has been selected.
       
  1940 	
       
  1941 	@param  aPreset 
       
  1942 	        The UID of the new requested preset.
       
  1943 	
       
  1944 	@note A particular preset is only active if it was established (through a call to 
       
  1945 	MCameraPresets ::SetPreset()) as the most recent operation affecting camera settings. 
       
  1946 	If some other camera setting is changed after calling MCameraPresets ::SetPreset() 
       
  1947 	then the preset is no longer active. 
       
  1948 	*/
       
  1949     virtual void SetPreset(TUid aPreset)=0;
       
  1950     
       
  1951     /** 
       
  1952 	Gets the preset that was established by the last call to MCameraPresets ::SetPreset()
       
  1953 	
       
  1954 	@return  The UID of the preset. If there is no active preset then the 
       
  1955 	         returned value is KNullUid.
       
  1956 	         
       
  1957 	@note A particular preset is only active if it was established (through a call to 
       
  1958 	MCameraPresets ::SetPreset()) as the most recent operation affecting camera settings. 
       
  1959 	If some other camera setting is changed after calling MCameraPresets ::SetPreset() 
       
  1960 	then the preset is no longer active. 
       
  1961 	*/
       
  1962     virtual TUid Preset() const=0;
       
  1963     
       
  1964     /**
       
  1965     Gets all settings affected by the current preset. All settings that are related to 
       
  1966     the preset in question will be included in the list, including any whose values 
       
  1967     have not changed as a result of applying the preset.
       
  1968     
       
  1969     @param  aSettings
       
  1970 	        An empty array of TUids which the API implementation must populate with the specific settings.
       
  1971 	
       
  1972 	@leave KErrNoMemory Out of memory. May also leave as a result of other system errors.
       
  1973 	*/
       
  1974     virtual void GetAffectedSettingsL(RArray<TUid>& aSettings) const=0;
       
  1975    
       
  1976     /**
       
  1977     Gets all settings associated with a specific preset. This function does not require a preset to have been set prior the call as in 
       
  1978     GetAffectedSettingsL() function.
       
  1979     The returned array will contain the UIDs of all settings which are associated and 
       
  1980     potentially affected by that particular preset.
       
  1981     
       
  1982     @param  aPreset 
       
  1983             the UID of the preset in question.
       
  1984             
       
  1985     @param  aSettings
       
  1986 	        An empty array of TUids which would be populated by the implementation with 
       
  1987 	        the UIDs of the settings associated with that preset. 
       
  1988 	
       
  1989 	@leave KErrArgument if the preset UID is not recognised 
       
  1990 	@leave KErrNoMemory Out of memory. May also leave as a result of other system errors.
       
  1991 	*/
       
  1992     virtual void GetAssociatedSettingsL(TUid aPreset, RArray<TUid>& aSettings) const=0;
       
  1993 	};
       
  1994 	
       
  1995 /**
       
  1996 Mixin class for implementation of extra methods of the Presets Camera Extension API.
       
  1997 
       
  1998 @publishedPartner
       
  1999 @prototype
       
  2000 */
       
  2001 class MCameraPresets2 
       
  2002 	{
       
  2003 	
       
  2004 public:
       
  2005 
       
  2006 	/** 
       
  2007 	Releases the interface. 
       
  2008 	*/
       
  2009     virtual void Release()=0; 
       
  2010     
       
  2011     /**
       
  2012     Retrieves those settings for which ranges have been restricted in order to let the camera work in a given preset mode.
       
  2013     The client will be notified of range restrictions through uid KUidECamEventRangeRestricted. After receiving this 
       
  2014     notification, the client may use this method to retrieve those settings whose ranges have been restricted.
       
  2015     
       
  2016     @param  aRangeRestrictedSettings
       
  2017     		An array of uid which represents those settings whose ranges have been restricted. These settings are ECam 
       
  2018     		component wide. For each of the settings, the client can query about the restricted range as per the usual way.
       
  2019     
       
  2020     @leave  May leave with any error code.
       
  2021     */
       
  2022     virtual void GetRangeRestrictedSettingsL(RArray<TUid>& aRangeRestrictedSettings) const=0;
       
  2023     
       
  2024     /**
       
  2025     Retrieves those settings which have been restricted (settings no longer supported) in order to let the camera work in a given preset mode.
       
  2026     The client will be notified of feature restrictions through uid KUidECamEventFeatureRestricted. After receiving this 
       
  2027     notification, the client may use this method to retrieve these settings.
       
  2028     
       
  2029     @param  aFeatureRestrictedSettings
       
  2030     		An array of uid which represents those settings which have been restricted. These settings are ECam 
       
  2031     		component wide.
       
  2032     
       
  2033     @leave  May leave with any error code.
       
  2034     */
       
  2035     virtual void GetFeatureRestrictedSettingsL(RArray<TUid>& aFeatureRestrictedSettings) const=0;
       
  2036     
       
  2037     /**
       
  2038     Retrieves information about whether the preset unlock feature is supported or not. Unlocking the preset helps in making some 
       
  2039     further changes in the setting after the camera works in a particular preset mode
       
  2040     
       
  2041     @param  aUnlockSupported
       
  2042     		ETrue indicates preset unlock feature is supported.
       
  2043     		EFalse indicates preset lock feature is not supported.
       
  2044     		
       
  2045     @leave  May leave with any error code.
       
  2046     */
       
  2047     virtual void IsPresetUnlockSupportedL(TBool& aUnlockSupported) const=0;
       
  2048 	
       
  2049 	/**
       
  2050 	Locks the preset for any further setting changes.
       
  2051 
       
  2052 	@note   Event KUidECamEventPresetLocked is used to notify clients that the preset has been locked.
       
  2053 	*/
       
  2054 	virtual void LockPreset()=0;
       
  2055 	
       
  2056 	/**
       
  2057 	Unlocks the preset to apply further setting changes.
       
  2058 
       
  2059 	@note   Event KUidECamEventPresetUnlocked is used to notify clients that the preset has been unlocked.
       
  2060 	*/
       
  2061 	virtual void UnlockPreset()=0;
       
  2062 	};
       
  2063 
       
  2064 /**
       
  2065 Mixin class for implementation of extra methods of the Continuous Zoom API.
       
  2066 
       
  2067 @internalTechnology
       
  2068 @prototype
       
  2069 */
       
  2070 class MCameraContinuousZoom
       
  2071 	{
       
  2072 public:
       
  2073 
       
  2074 	/**
       
  2075 	Passes both the continuous zoom observer and pointer to the continuous zoom class to the implementation so callbacks 
       
  2076 	can be sent to the client along with the continuous zoom handle.
       
  2077 		
       
  2078 	@param  aObserver
       
  2079 			The reference to the continuous zoom observer.
       
  2080 		
       
  2081 	@param  aContinuousZoomHandle
       
  2082 			The pointer to the continuous zoom class object.
       
  2083 				
       
  2084 	@see    MContinuousZoomObserver
       
  2085 	*/
       
  2086 	virtual void SetContinuousZoomObserverAndHandle(MContinuousZoomObserver& aObserver, CCamera::CCameraContinuousZoom* aContinuousZoomHandle)=0;
       
  2087 
       
  2088 	/**
       
  2089 	Starts the continuous zoom operation. Clients will receive MContinuousZoomObserver::ContinuousZoomProgress() callback for intermediate zoom factors
       
  2090 	achieved. It is up to the implementation to choose the zoom factors for which it will issue this callback. Implementation will not use this callback to notify
       
  2091 	reaching the target zoom factor. This will be done via MContinuousZoomObserver::ContinuousZoomComplete() callback.
       
  2092 
       
  2093 	@param  aContinuousZoomParameters
       
  2094 			The desired parameters to be used for the continuous zoom operation.
       
  2095 
       
  2096 	@note  If the implementation does not support re-configuring of zoom parameters whilst an existing continuous zoom operation is active then
       
  2097 		   StartContinuousZoomL() will leave with KErrInUse.
       
  2098 
       
  2099 	@note  If client has selected EDirectionTele zoom direction and the current zoom factor is greater than the target zoom factor, StartContinuousZoomL()
       
  2100 		   will leave with KErrArgument. Similarly, StartContinuousZoomL() will also leave with KErrArgument if client has selected EDirectionWide zoom
       
  2101 		   direction and current zoom factor is less than target zoom factor.
       
  2102 
       
  2103 	@leave  May leave with any error code.
       
  2104 	*/
       
  2105 	virtual void StartContinuousZoomL(CCamera::CCameraAdvancedSettings::TContinuousZoomParameters aContinuousZoomParameters)=0;
       
  2106 
       
  2107 	/**
       
  2108 	Stop any exisiting continuous zoom operation.
       
  2109 	Since this method is synchronous, no callback shall be issued for the concerned continuous zoom operation.
       
  2110 	*/
       
  2111 	virtual void StopContinuousZoom()=0;
       
  2112 
       
  2113 	/**
       
  2114 	Retrieves information about the supported settings related to continuous zoom support.
       
  2115 
       
  2116 	@param  aContinuousZoomInfo
       
  2117 			The information of supported continuous zoom functionality.
       
  2118 
       
  2119 	@leave  May leave with any error code.
       
  2120 	*/
       
  2121 	virtual void GetContinuousZoomSupportInfoL(CCamera::CCameraAdvancedSettings::TContinuousZoomSupportInfo& aContinuousZoomInfo) const=0;
       
  2122 
       
  2123 	/**
       
  2124 	Retrieves the unique id of the continuous zoom object.
       
  2125 	This is used to identify the continuous zoom handle returned to clients via the MContinuousZoomObserver callback.
       
  2126 
       
  2127 	@param  aZoomId
       
  2128 			The unique id of this Continuous Zoom object.
       
  2129 	*/
       
  2130 	virtual void GetContinuousZoomId(TInt& aZoomId) const=0;
       
  2131 
       
  2132 	/** 
       
  2133 	Releases the interface. 
       
  2134 	*/
       
  2135 	virtual void Release()=0;
       
  2136 	};
       
  2137 
       
  2138 #endif // ECAMADVSETTINGSINTF_H