epoc32/include/ecamadvsettings.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
child 4 837f303aceeb
equal deleted inserted replaced
1:666f914201fb 2:2fe1408b6811
     1 ecamadvsettings.h
     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 the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 
       
    17 
       
    18 /**
       
    19  @file	
       
    20  @publishedAll
       
    21  @released
       
    22 */
       
    23 #ifndef  ECAMADVSETTINGS_H
       
    24 #define  ECAMADVSETTINGS_H
       
    25 
       
    26 #include <e32base.h>
       
    27 #include <ecam.h>
       
    28 #include <ecamadvsettingsuids.hrh>
       
    29 #include <gdi.h>
       
    30 #include <s32strm.h>
       
    31 #include <ecam/ecamconstants.h>
       
    32 #include <ecamimageprocessing.h>
       
    33 
       
    34 class MCameraPresets;
       
    35 class MCameraAdvancedSettings;
       
    36 class MCameraAdvancedSettings2;
       
    37 class MCameraAdvancedSettings3;
       
    38 class MCameraAdvancedSettings4;
       
    39 class MCameraPresets2;
       
    40 
       
    41 /* General purpose constants */
       
    42 
       
    43 /** 
       
    44 The current Version of the TECamLEDSpecialEffectStep class.
       
    45 
       
    46 @internalTechnology
       
    47 */
       
    48 static const TUint KECamLEDSpecialEffectStepCurrentVersion = 1;
       
    49 
       
    50 /** 
       
    51 	UID used to identify the CCamera Advanced Settings API.
       
    52 	This API is used to control specific individual advanced settings of camera hardware.
       
    53 	These settings directly relate to the image acquisition phase.
       
    54 	
       
    55 	@see CCamera::CCameraAdvancedSettings
       
    56 */
       
    57 static const TUid KECamAdvancedSettingUid 	= {KECamAdvancedSettingUidValue};
       
    58 
       
    59 /** 
       
    60 	UID used to identify the CCamera Presets API.
       
    61 	This API is used to simplify user - camera interaction by allowing simultaneous 
       
    62 	setting of various advanced camera hardware settings using a single predefined parameter. 
       
    63 	@see CCamera::CCameraPresets
       
    64 */
       
    65 static const TUid  KECamPresetsUid 			= {KECamPresetsUidValue};
       
    66 
       
    67 	
       
    68 /** All clients receive these events, irrespective of camera index.  */
       
    69 /** Camera slots in for 8 cameras. */
       
    70 /** Camera with index 0 Plugged-in */
       
    71 static const TUid  KUidECamEventGlobalCamera00PluggedIn = {KUidECamEventGlobalCamera00PluggedInUidValue};
       
    72 /** Camera with index 1 Plugged-in */
       
    73 static const TUid  KUidECamEventGlobalCamera01PluggedIn = {KUidECamEventGlobalCamera01PluggedInUidValue};
       
    74 /** Camera with index 2 Plugged-in */
       
    75 static const TUid  KUidECamEventGlobalCamera02PluggedIn = {KUidECamEventGlobalCamera02PluggedInUidValue};
       
    76 /** Camera with index 3 Plugged-in */
       
    77 static const TUid  KUidECamEventGlobalCamera03PluggedIn = {KUidECamEventGlobalCamera03PluggedInUidValue};
       
    78 /** Camera with index 4 Plugged-in */
       
    79 static const TUid  KUidECamEventGlobalCamera04PluggedIn = {KUidECamEventGlobalCamera04PluggedInUidValue};
       
    80 /** Camera with index 5 Plugged-in */
       
    81 static const TUid  KUidECamEventGlobalCamera05PluggedIn = {KUidECamEventGlobalCamera05PluggedInUidValue};
       
    82 /** Camera with index 6 Plugged-in */
       
    83 static const TUid  KUidECamEventGlobalCamera06PluggedIn = {KUidECamEventGlobalCamera06PluggedInUidValue};
       
    84 /** Camera with index 7 Plugged-in */
       
    85 static const TUid  KUidECamEventGlobalCamera07PluggedIn = {KUidECamEventGlobalCamera07PluggedInUidValue};
       
    86 
       
    87 /** Camera slots plugged out for 8 cameras. */
       
    88 /** Camera with index 0 Plugged-out */
       
    89 static const TUid  KUidECamEventGlobalCamera00PluggedOut = {KUidECamEventGlobalCamera00PluggedOutUidValue};
       
    90 /** Camera with index 1 Plugged-out */
       
    91 static const TUid  KUidECamEventGlobalCamera01PluggedOut = {KUidECamEventGlobalCamera01PluggedOutUidValue};
       
    92 /** Camera with index 2 Plugged-out */
       
    93 static const TUid  KUidECamEventGlobalCamera02PluggedOut = {KUidECamEventGlobalCamera02PluggedOutUidValue};
       
    94 /** Camera with index 3 Plugged-out */
       
    95 static const TUid  KUidECamEventGlobalCamera03PluggedOut = {KUidECamEventGlobalCamera03PluggedOutUidValue};
       
    96 /** Camera with index 4 Plugged-out */
       
    97 static const TUid  KUidECamEventGlobalCamera04PluggedOut = {KUidECamEventGlobalCamera04PluggedOutUidValue};
       
    98 /** Camera with index 5 Plugged-out */
       
    99 static const TUid  KUidECamEventGlobalCamera05PluggedOut = {KUidECamEventGlobalCamera05PluggedOutUidValue};
       
   100 /** Camera with index 6 Plugged-out */
       
   101 static const TUid  KUidECamEventGlobalCamera06PluggedOut = {KUidECamEventGlobalCamera06PluggedOutUidValue};
       
   102 /** Camera with index 7 Plugged-out */
       
   103 static const TUid  KUidECamEventGlobalCamera07PluggedOut = {KUidECamEventGlobalCamera07PluggedOutUidValue};
       
   104 
       
   105 /** Camera slots available for 8 cameras. */
       
   106 /** Signals a camera previously has been reserved and then released again. 
       
   107     In this way available clients may attempt to reserve the camera */
       
   108 /** Camera with index 0 Available. */
       
   109 static const TUid  KUidECamEventGlobalCamera00Available  = {KUidECamEventGlobalCamera00AvailableUidValue};
       
   110 /** Camera with index 1 Available. */
       
   111 static const TUid  KUidECamEventGlobalCamera01Available  = {KUidECamEventGlobalCamera01AvailableUidValue};
       
   112 /** Camera with index 2 Available. */
       
   113 static const TUid  KUidECamEventGlobalCamera02Available  = {KUidECamEventGlobalCamera02AvailableUidValue};
       
   114 /** Camera with index 3 Available. */
       
   115 static const TUid  KUidECamEventGlobalCamera03Available  = {KUidECamEventGlobalCamera03AvailableUidValue};
       
   116 /** Camera with index 4 Available. */
       
   117 static const TUid  KUidECamEventGlobalCamera04Available  = {KUidECamEventGlobalCamera04AvailableUidValue};
       
   118 /** Camera with index 5 Available. */
       
   119 static const TUid  KUidECamEventGlobalCamera05Available  = {KUidECamEventGlobalCamera05AvailableUidValue};
       
   120 /** Camera with index 6 Available. */
       
   121 static const TUid  KUidECamEventGlobalCamera06Available  = {KUidECamEventGlobalCamera06AvailableUidValue};
       
   122 /** Camera with index 7 Available. */
       
   123 static const TUid  KUidECamEventGlobalCamera07Available  = {KUidECamEventGlobalCamera07AvailableUidValue};
       
   124 
       
   125 /** Individual camera events. These are used by the camera to signal its observers. */
       
   126 /** Lens changed. */
       
   127 static const TUid  KUidECamEventLensChanged 			= {KUidECamEventLensChangedUidValue};
       
   128 /** Flash source added. */
       
   129 static const TUid  KUidECamEventFlashSourceAdded 		= {KUidECamEventFlashSourceAddedUidValue};
       
   130 /** Flash source removed. */
       
   131 static const TUid  KUidECamEventFlashSourceRemoved		= {KUidECamEventFlashSourceRemovedUidValue};
       
   132 /** Image resolution changed. */
       
   133 static const TUid  KUidECamEventCameraSettingImageSize 	= {KUidECamEventCameraSettingImageSizeUidValue};
       
   134 /** Image Format changed. */
       
   135 static const TUid  KUidECamEventCameraSettingImageFormat 		= {KUidECamEventCameraSettingImageFormatUidValue};
       
   136 /** Camera orientation changed. */
       
   137 static const TUid  KUidECamEventCameraSettingCameraOrientation  = {KUidECamEventCameraSettingCameraOrientationUidValue};
       
   138 /** Optimal focus */
       
   139 static const TUid KUidECamEventCameraSettingsOptimalFocus 		= {KUidECamEventCameraSettingsOptimalFocusUidValue};
       
   140 
       
   141 /** Advanced settings. */
       
   142 /** Stabilization mode.  */
       
   143 static const TUid  KUidECamEventCameraSettingStabilizationMode 	= {KUidECamEventCameraSettingStabilizationModeUidValue};
       
   144 /** Focus mode. */
       
   145 static const TUid  KUidECamEventCameraSettingFocusMode 			= {KUidECamEventCameraSettingFocusModeUidValue};
       
   146 /** Focus range. 
       
   147 @deprecated
       
   148 
       
   149 Replaced by KUidECamEventCameraSettingFocusRange2
       
   150 
       
   151 In the first release of this event, KUidECamEventCameraSettingFocusRange was incorrectly given an already existing uid. 
       
   152 In order to preserve compatibility this event is marked as deprecated and has been replaced by KUidECamEventCameraSettingFocusRange2.
       
   153 Camera servers predating this API change will continue to send the original event which is indistinguishable by value. 
       
   154 Caching the old value and comparing it with the current value, will allow the client to determine that the value has changed.
       
   155 Camera servers which have been updated should send both KUidECamEventCameraSettingFocusRange and KUidECamEventCameraSettingFocusRange2 on a focus range change. 
       
   156 Camera clients should therefore process both events(old and new). 
       
   157 
       
   158 @see KUidECamEventCameraSettingFocusRange2
       
   159 */
       
   160 static const TUid  KUidECamEventCameraSettingFocusRange 		= {KUidECamEventCameraSettingFocusRangeUidValue};
       
   161 /** Autofocus type.
       
   162 @deprecated
       
   163 
       
   164 Replaced by KUidECamEventCameraSettingAutoFocusType2
       
   165 
       
   166 In the first release of this event, KUidECamEventCameraSettingAutoFocusType was incorrectly given an already existing uid. 
       
   167 In order to preserve compatibility this event is marked as deprecated and has been replaced by KUidECamEventCameraSettingAutoFocusType2.
       
   168 Camera servers predating this API change will continue to send the original event which is indistinguishable by value. 
       
   169 Caching the old value and comparing it with the current value, will allow the client to determine that the value has changed.
       
   170 Camera servers which have been updated should send both KUidECamEventCameraSettingAutoFocusType and KUidECamEventCameraSettingAutoFocusType2 on a focus range change. 
       
   171 Camera clients should therefore process both events(old and new). 
       
   172 
       
   173 @see KUidECamEventCameraSettingAutoFocusType2*/
       
   174 static const TUid  KUidECamEventCameraSettingAutoFocusType 		= {KUidECamEventCameraSettingAutoFocusTypeUidValue};
       
   175 /** Autofocus area. */
       
   176 static const TUid  KUidECamEventCameraSettingAutoFocusArea 		= {KUidECamEventCameraSettingAutoFocusAreaUidValue};
       
   177 /** Autofocus lock state.  */
       
   178 static const TUid  KUidECamEventCameraSettingAutoFocusLock		= {KUidECamEventCameraSettingAutoFocusLockUidValue};
       
   179 /** Focus distance */
       
   180 static const TUid  KUidECamEventCameraSettingFocusDistance 		= {KUidECamEventCameraSettingFocusDistanceUidValue};
       
   181 /** Sensitivity - ISO rate. */
       
   182 static const TUid  KUidECamEventCameraSettingIsoRate 			= {KUidECamEventCameraSettingIsoRateUidValue};
       
   183 /** Aperture. */
       
   184 static const TUid  KUidECamEventCameraSettingAperture 			= {KUidECamEventCameraSettingApertureUidValue};
       
   185 /** Aperture range. */
       
   186 static const TUid  KUidECamEventCameraSettingApertureRange 		= {KUidECamEventCameraSettingApertureRangeUidValue};
       
   187 /** Shutter speed. */
       
   188 static const TUid  KUidECamEventCameraSettingShutterSpeed 		= {KUidECamEventCameraSettingShutterSpeedUidValue};
       
   189 /** Shutter speed range.  */
       
   190 static const TUid  KUidECamEventCameraSettingShutterSpeedRange 	= {KUidECamEventCameraSettingShutterSpeedRangeUidValue};
       
   191 /**  Metering mode. */
       
   192 static const TUid  KUidECamEventCameraSettingMeteringMode 		= {KUidECamEventCameraSettingMeteringModeUidValue};
       
   193 /** Drive mode. */
       
   194 static const TUid  KUidECamEventCameraSettingDriveMode 			= {KUidECamEventCameraSettingDriveModeUidValue};
       
   195 /** Braket mode. */
       
   196 static const TUid  KUidECamEventCameraSettingBracketMode 		= {KUidECamEventCameraSettingBracketModeUidValue};
       
   197 /** Bracket step. */
       
   198 static const TUid  KUidECamEventCameraSettingBracketStep 		= {KUidECamEventCameraSettingBracketStepUidValue};
       
   199 /** Bracket parameter. */
       
   200 static const TUid  KUidECamEventCameraSettingBracketParameter 	= {KUidECamEventCameraSettingBracketParameterUidValue};
       
   201 /** Bracket merge. */
       
   202 static const TUid  KUidECamEventBracketMerge					= {KUidECamEventBracketMergeUidValue};
       
   203 /** Picture orientation.  */
       
   204 static const TUid  KUidECamEventCameraSettingPictureOrientation = {KUidECamEventCameraSettingPictureOrientationUidValue};
       
   205 /** Automatic size selection option */
       
   206 static const TUid  KUidECamEventCameraSettingAutomaticSizeSelection = {KUidECamEventCameraSettingAutomaticSizeSelectionUidValue};
       
   207 /** Flash setting. */
       
   208 static const TUid  KUidECamEventCameraSettingFlashMode 			= {KUidECamEventCameraSettingFlashModeUidValue};
       
   209 /** Flash compensation step. */
       
   210 static const TUid  KUidECamEventCameraSettingFlashCompensationStep 		= {KUidECamEventCameraSettingFlashCompensationStepUidValue};
       
   211 /** Flash compensation. */
       
   212 static const TUid  KUidECamEventCameraSettingFlashCompensation 	= {KUidECamEventCameraSettingFlashCompensationUidValue};
       
   213 /** Manual flash power. */
       
   214 static const TUid  KUidECamEventCameraSettingFlashManualPower 	= {KUidECamEventCameraSettingFlashManualPowerUidValue};
       
   215 /** Red eye reduce mode. */
       
   216 static const TUid  KUidECamEventCameraSettingFlashRedEyeReduce 	= {KUidECamEventCameraSettingFlashRedEyeReduceUidValue};
       
   217 /** Exposure mode setting. */
       
   218 static const TUid  KUidECamEventCameraSettingExposureMode 		= {KUidECamEventCameraSettingExposureModeUidValue};
       
   219 /** Exposure compensation step. */
       
   220 static const TUid  KUidECamEventCameraSettingExposureCompensationStep 	= {KUidECamEventCameraSettingExposureCompensationStepUidValue};
       
   221 /** Exposure compensation. */
       
   222 static const TUid  KUidECamEventCameraSettingExposureCompensation 		= {KUidECamEventCameraSettingExposureCompensationUidValue};
       
   223 /** Exposure lock state. */
       
   224 static const TUid  KUidECamEventCameraSettingExposureLock 		= {KUidECamEventCameraSettingExposureLockUidValue};
       
   225 /** AE lock option. */
       
   226 static const TUid  KUidECamEventAELock 							= {KUidECamEventAELockUidValue};
       
   227 /** White balance.  */
       
   228 static const TUid  KUidECamEventCameraSettingWhiteBalanceMode 	= {KUidECamEventCameraSettingWhiteBalanceModeUidValue};
       
   229 /** Timer changed. */
       
   230 static const TUid  KUidECamEventCameraSettingTimerInterval 		= {KUidECamEventCameraSettingTimerIntervalUidValue};
       
   231 /** Timer lapse period.  */
       
   232 static const TUid  KUidECamEventCameraSettingTimeLapse			= {KUidECamEventCameraSettingTimeLapseUidValue};
       
   233 /** Optical zoom. */
       
   234 static const TUid  KUidECamEventCameraSettingOpticalZoom 		= {KUidECamEventCameraSettingOpticalZoomUidValue};
       
   235 /** Optical zoom range.  */
       
   236 static const TUid  KUidECamEventCameraSettingOpticalZoomRange 	= {KUidECamEventCameraSettingOpticalZoomRangeUidValue};
       
   237 /** Digital zoom. */
       
   238 static const TUid  KUidECamEventCameraSettingDigitalZoom 		= {KUidECamEventCameraSettingDigitalZoomUidValue};
       
   239 /** Digital zoom range.  */
       
   240 static const TUid  KUidECamEventCameraSettingDigitalZoomRange 	= {KUidECamEventCameraSettingDigitalZoomRangeUidValue};
       
   241 /** Clicking sound state.  */
       
   242 static const TUid  KUidECamEventSoundClick 						= {KUidECamEventSoundClickUidValue};
       
   243 /** Pixel aspect ratio. */
       
   244 static const TUid  KUidECamEventPixelAspectRatio 				= {KUidECamEventPixelAspectRatioUidValue};
       
   245 /** Yuv range. */
       
   246 static const TUid  KUidECamEventYuvRange 						= {KUidECamEventYuvRangeUidValue};
       
   247 /** Burst images. */
       
   248 static const TUid  KUidECamEventBurstImages						= {KUidECamEventBurstImagesUidValue};
       
   249 /** Stabilization effect - magnitude of stabilization */
       
   250 static const TUid KUidECamEventCameraSettingsStabilizationEffect 		= {KUidECamEventCameraSettingsStabilizationEffectUidValue};
       
   251 /** Stabilization algorithm */
       
   252 static const TUid KUidECamEventSettingsStabilizationAlgorithmComplexity = {KUidECamEventSettingsStabilizationAlgorithmComplexityUidValue};
       
   253 /** Continuous Autofocus timeout */
       
   254 static const TUid KUidECamEventCameraSettingsContinuousAutoFocusTimeout = {KUidECamEventCameraSettingsContinuousAutoFocusTimeoutUidValue};
       
   255 /** White Balance manual setting */
       
   256 static const TUid KUidECamEventCameraSettingsWBValue 					= {KUidECamEventCameraSettingsWBValueUidValue};	
       
   257 /** Flash ready */
       
   258 static const TUid KUidECamEventFlashReady 						= {KUidECamEventFlashReadyUidValue};	
       
   259 /** Flash not ready */
       
   260 static const TUid KUidECamEventFlashNotReady 					= {KUidECamEventFlashNotReadyUidValue};
       
   261 /** Focus range. 
       
   262 This is the new UID value to notify change on focus range and takes immediate effect as previous UID KUidECamEventCameraSettingFocusRange has been deprecated.
       
   263 @see KUidECamEventCameraSettingFocusRange */
       
   264 static const TUid  KUidECamEventCameraSettingFocusRange2 		= {KUidECamEventCameraSettingFocusRange2UidValue};
       
   265 /** Autofocus type.
       
   266 This is the new UID value to notify change on autofocus type and takes immediate effect as previous UID KUidECamEventCameraSettingAutoFocusType has been deprecated.
       
   267 @see KUidECamEventCameraSettingAutoFocusType */
       
   268 static const TUid  KUidECamEventCameraSettingAutoFocusType2 		= {KUidECamEventCameraSettingAutoFocusType2UidValue};
       
   269 
       
   270 /** 
       
   271 ISO Rate type. 
       
   272 
       
   273 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   274 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   275 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   276 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   277 
       
   278 */
       
   279 static const TUid  KUidECamEventCameraSettingIsoRateType 		= {KUidECamEventCameraSettingIsoRateTypeUidValue};
       
   280 
       
   281 /** 
       
   282 Reference Screen setting. 
       
   283 
       
   284 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   285 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   286 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   287 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   288 
       
   289 */
       
   290 static const TUid  KUidECamEventCameraSettingReferenceScreen    = {KUidECamEventCameraSettingReferenceScreenUidValue};
       
   291 
       
   292 /** 
       
   293 Pre Capture Warning indication.
       
   294 
       
   295 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   296 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   297 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   298 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   299 
       
   300 */
       
   301 static const TUid  KUidECamEventCameraSettingAFAssistantLight	= {KUidECamEventCameraSettingAFAssistantLightUidValue};
       
   302 
       
   303 /**
       
   304 Notifies the client that continuous zoom limit has been reached.
       
   305 
       
   306 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   307 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   308 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   309 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   310 
       
   311 @publishedPartner
       
   312 @prototype
       
   313 */
       
   314 static const TUid KUidECamEventCameraSettingContinuousZoomReachedLimit = {KUidECamEventCameraSettingContinuousZoomReachedLimitUidValue};
       
   315 
       
   316 /**
       
   317 Notifies the client about the setting of performance operation preference.
       
   318 
       
   319 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   320 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   321 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   322 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   323 
       
   324 @publishedPartner
       
   325 @prototype
       
   326 */
       
   327 static const TUid KUidECamEventCameraSettingOperationPreference = {KUidECamEventCameraSettingOperationPreferenceUidValue};
       
   328 
       
   329 /**
       
   330 Notifies the client that the flicker removal value has been set.
       
   331 
       
   332 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   333 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   334 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   335 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   336 
       
   337 @internalTechnology
       
   338 */
       
   339 static const TUid KUidECamEventCameraSettingFlickerRemovalValue = {KUidECamEventCameraSettingFlickerRemovalValueUidValue};
       
   340 
       
   341 /**
       
   342 Notifies the client about the setting of neutral density filter.
       
   343 
       
   344 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   345 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   346 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   347 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   348 
       
   349 @internalTechnology
       
   350 */
       
   351 static const TUid KUidECamEventCameraSettingNDFilter = {KUidECamEventCameraSettingNDFilterUidValue};
       
   352 
       
   353 /**
       
   354 Notifies the client about the setting of LED effect.
       
   355 
       
   356 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   357 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   358 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   359 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   360 
       
   361 @internalTechnology
       
   362 */
       
   363 static const TUid KUidECamEventCameraSettingLEDEffect = {KUidECamEventCameraSettingLEDEffectUidValue};
       
   364 
       
   365 /**
       
   366 Notifies the client about the setting of LED 'custom' effect.
       
   367 
       
   368 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   369 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   370 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   371 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   372 
       
   373 @internalTechnology
       
   374 */
       
   375 static const TUid KUidECamEventCameraSettingLEDCustomEffect = {KUidECamEventCameraSettingLEDCustomEffectUidValue};
       
   376 
       
   377 /**
       
   378 Notifies the client about the white balance lock setting.
       
   379 
       
   380 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   381 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   382 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   383 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   384 
       
   385 @internalTechnology
       
   386 */
       
   387 static const TUid KUidECamEventCameraSettingLockWhiteBalance = {KUidECamEventCameraSettingLockWhiteBalanceUidValue};
       
   388 
       
   389 /**
       
   390 Instructs the client to restore its original priority.
       
   391 
       
   392 This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
       
   393 void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
   394 void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
   395 void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
   396 
       
   397 @internalTechnology
       
   398 */
       
   399 static const TUid KUidECamEventCameraSettingRestoreClientPriority = {KUidECamEventCameraSettingRestoreClientPriorityUidValue};
       
   400 
       
   401 /** 
       
   402 CCamera advanced settings class exposes an API for controlling individually 
       
   403 digital camera advanced settings. These settings directly relate to the 
       
   404 image acquisition phase both for still images and video.
       
   405 
       
   406 @note This class is not intended for sub-classing  and used to standardise existing
       
   407        varieties of implementations.
       
   408        
       
   409 @note   If the class methods leave, the output type parameter value is not guaranteed to be valid.
       
   410 
       
   411 @publishedAll
       
   412 @released
       
   413 */
       
   414 class CCamera::CCameraAdvancedSettings : public CBase
       
   415 	{
       
   416 	/* so can use internal factory functions etc. */
       
   417 	friend class CCamera;
       
   418 
       
   419 public:
       
   420    
       
   421 	/** Specifies camera type. */ 
       
   422 	enum TCameraType
       
   423 		{
       
   424 		/** Unable to identify. */  
       
   425 		ECameraUnknown 		= 0x00, 
       
   426 		/** Camera is non-detachable from device. Camera is always present. */
       
   427 		ECameraOnBoard	 	= 0x01,
       
   428 		/** Camera is detachable from device. Camera is not always present. */
       
   429 		ECameraPluggable 	= 0x02
       
   430 		};
       
   431 	
       
   432 	/** Specifies stabilization mode of the camera. */
       
   433 	enum TStabilizationMode
       
   434 		{
       
   435 		/** Not present or switched off, default */
       
   436 		EStabilizationModeOff			= 0x00,
       
   437 		/** Stabilization only in horizontal direction. */
       
   438 		EStabilizationModeHorizontal	= 0x01,
       
   439 		/** Stabilization only in vertical direction. */
       
   440 		EStabilizationModeVertical		= 0x02,
       
   441 		/** Rotational stabilization. */
       
   442 		EStabilizationModeRotation		= 0x04,
       
   443 		/** Automatic stabilization. */
       
   444 		EStabilizationModeAuto			= 0x08,
       
   445 		/** Manual stabilization. */
       
   446 		EStabilizationModeManual		= 0x10   
       
   447 		};
       
   448 	
       
   449 	/** Supported magnitudes of stabilization effect when in manual mode. */	
       
   450 	enum TStabilizationEffect
       
   451 		{
       
   452 		/** Stabilization effect is off. */ 
       
   453 		EStabilizationOff		= 0x00, 
       
   454 		/** Stabilization effect is automatic, default. */
       
   455 		EStabilizationAuto		= 0x01,
       
   456 		/** Stabilization effect is very small in magnitude. */
       
   457 		EStabilizationFine 		= 0x02,
       
   458 		/** Stabilization effect is average in magnitude. */
       
   459 		EStabilizationMedium	= 0x04,
       
   460 		/** Stabilization effect is large in magnitude. */
       
   461 		EStabilizationStrong	= 0x08
       
   462 		};
       
   463 	
       
   464 	/** Supported stabilization algorithms, graded on complexity. */	
       
   465 	enum TStabilizationAlgorithmComplexity
       
   466 		{
       
   467 		/** Stabilization algorithm selection is automatic, default. */ 
       
   468 		EStabilizationComplexityAuto	= 0x00, 
       
   469 		/** Stabilization algorithm is simple - less precise but fast. */
       
   470 		EStabilizationComplexityLow		= 0x01,
       
   471 		/** Stabilization algorithm is of medium complexity. */
       
   472 		EStabilizationComplexityMedium	= 0x02,
       
   473 		/** Stabilization algorithm is of high complexity. */
       
   474 		EStabilizationComplexityHigh	= 0x04
       
   475 		};
       
   476 		
       
   477 	/** Supported focus modes. */	
       
   478 	enum TFocusMode
       
   479 		{
       
   480 		/** Focus mode is unknown. */ 
       
   481 		EFocusModeUnknown	= 0x00, 
       
   482 		/** Focus is automatic, default. */
       
   483 		EFocusModeAuto		= 0x01,
       
   484 		/** Focus is fixed. */
       
   485 		EFocusModeFixed 	= 0x02,
       
   486 		/** Focus is manually set. */
       
   487 		EFocusModeManual	= 0x04
       
   488 		};
       
   489 	
       
   490 	/** Supported focus ranges. */	
       
   491 	enum TFocusRange
       
   492 		{
       
   493 		/** Auto. Default */
       
   494 		EFocusRangeAuto 		= 0x00,
       
   495 		/** Focus operates in close range (macro). */
       
   496 		EFocusRangeMacro		= 0x01,
       
   497 		/** Normal operation. */
       
   498 		EFocusRangeNormal		= 0x02,
       
   499 		/** Extended (tele) operation. */
       
   500 		EFocusRangeTele			= 0x04,
       
   501 		/** Focus at larger areas at short to medium distance. */
       
   502 		EFocusRangePortrait		= 0x08,
       
   503 		/** Optimised macro operation, 
       
   504 		where depth of field is very shallow and observation area changes quickly. */
       
   505 		EFocusRangeSuperMacro	= 0x10,
       
   506 		/** 
       
   507 		All objects at distances from half of the hyperfocal distance out to infinity will be in focus.
       
   508 		This gives gives maximum depth of field.
       
   509 		
       
   510 		This enum value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
   511 		CCamera::NewDuplicate2L().
       
   512 		
       
   513 		*/ 
       
   514 		EFocusRangeHyperfocal 	= 0x20,
       
   515 		/** 
       
   516 		When there is a near obstacle or better focus wanted for far away objects.
       
   517 		
       
   518 		This enum value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
   519 		CCamera::NewDuplicate2L().
       
   520 		
       
   521 		*/ 
       
   522 		EFocusRangeInfinite		= 0x40
       
   523 		};	
       
   524 			
       
   525 	/** Specifies the supported autofocus types. */
       
   526 	enum TAutoFocusType
       
   527 		{
       
   528 		/** Autofocus is switched off. */
       
   529 		EAutoFocusTypeOff	 		= 0x00,
       
   530 		/** Operates on a single shot, consumes less power. */
       
   531 		EAutoFocusTypeSingle	 	= 0x01,
       
   532 		/** Continious autofocus, more precise but consumes more power. 
       
   533 		    also known as AF Servo. */
       
   534 		EAutoFocusTypeContinuous	= 0x02
       
   535 		};
       
   536 		
       
   537 	/** Specifies the autofocus area. */
       
   538 	enum TAutoFocusArea
       
   539 		{
       
   540 		/** Automatic. Default value */
       
   541 		EAutoFocusTypeAuto				= 0x00,
       
   542 		/** Single area, suitable for relatively flat surfaces and portrait. */
       
   543 		EAutoFocusTypeSingleArea		= 0x01,
       
   544 		/** Multiple points of an object, more weighting for centre points. */
       
   545 		EAutoFocusTypeMultiAreaCentered	= 0x02
       
   546 		};
       
   547 
       
   548 	/** Specifies the Metering mode for the camera. 
       
   549 	EMeteringModeAuto is the default value. */	
       
   550 	enum TMeteringMode
       
   551 		{
       
   552 		/** Automatic mode, default. */	
       
   553 		EMeteringModeAuto				= 0x0000, 
       
   554 		/** Metering in which the center is given a weighted priority. */	
       
   555 		EMeteringModeCenterWeighted		= 0x0001,
       
   556 		/** Metering of a central area/spot only, also known as partial. */	
       
   557 		EMeteringModeSpot				= 0x0002, 
       
   558 		/** Metering is evaluated over a matrix(several spots) and calculated 
       
   559 		    as a function of that. Usually best but with increased 
       
   560 		    power consumption. Alternative name multi-metering mode. */	
       
   561 		EMeteringModeEvaluative			= 0x0004
       
   562 		};	
       
   563 
       
   564 	/** Specifies the drive mode for the camera. This determines how and in what sucession are images 
       
   565     shot. EDriveModeSingleShot is the default.*/				
       
   566 	enum TDriveMode
       
   567 		{
       
   568 		/** Automatic. Default */
       
   569 		EDriveModeAuto			= 0x0000,
       
   570 		/** Camera takes a single image/shot. */	
       
   571 		EDriveModeSingleShot	= 0x0001,
       
   572 		/** Camera continuously captures images (as fast as it can) until stopped or out of storage medium. */	
       
   573 		EDriveModeContinuous	= 0x0002,
       
   574 		/** Camera is in bracketing mode, producing individual frames. @see TBracketMode */	
       
   575 		EDriveModeBracket		= 0x0004,
       
   576 		/** Camera is in bracketing mode, but producing a single image. @see TBracketMode */	
       
   577 		EDriveModeBracketMerge	= 0x0008,
       
   578 		/** camera captures a single shot after specified time period. @see Timer() */	
       
   579 		EDriveModeTimed			= 0x0010,
       
   580 		/** Camera captures a set of images with an uniform interval between them. @see TimeLapse() */	
       
   581 		EDriveModeTimeLapse		= 0x0020,
       
   582 		/** Camera captures a set of images as fast as it can, but in batches(bursts). */	
       
   583 		EDriveModeBurst			= 0x0040		
       
   584 		};
       
   585 
       
   586 	/** Specifies Bracket mode. */				
       
   587 	enum TBracketMode
       
   588 		{
       
   589 		/** Bracket mode is switched off. Default value. */	
       
   590 		EBracketModeOff			= 0x0000,
       
   591 		/** Bracket mode on. Three consecutive pictures are taken in order
       
   592 			under (-1), on (0), over (+1), where correction magnitude 
       
   593 			is defined by bracket step size and by TBracketParameter 
       
   594 			@see TBracketStep
       
   595 			@see TBracketParameter */	
       
   596 		EBracketMode3Image		= 0x0001, 
       
   597 		/** Bracket mode on. Five consecutive pictures are taken in order
       
   598 			under (-2),under (-1), on (0), over (+1), over (+2), where correction magnitude 
       
   599 			is defined by bracket step size and by TBracketParameter
       
   600 			@see TBracketStep 
       
   601 			@see TBracketParameter */	
       
   602 		EBracketMode5Image		= 0x0002  
       
   603 		};	
       
   604 
       
   605 	/** Supported parameters used for bracketing.
       
   606 	@note Bracket mode parameter value changes by 
       
   607 	a selected uniform step between successive image shots. 
       
   608 	@see TBracketStep 
       
   609 	@see TBracketMode.	*/			
       
   610 	enum TBracketParameter
       
   611 		{
       
   612 		/** None. */	
       
   613 		EBracketParameterNone			= 0x0000,
       
   614 		/** Exposure settings change. */	
       
   615 		EBracketParameterExposure		= 0x0001,
       
   616 		/** Flash power change. */		
       
   617 		EBracketParameterFlashPower	    = 0x0002,
       
   618 		/** Colour balance settings change. */		
       
   619 		EBracketParameterColourBalance	= 0x0004,
       
   620 		/** Aperture settings change. */
       
   621 		BracketParameterAperture		= 0x0008, 
       
   622 		/** Autofocus settings change. */ 
       
   623 		BracketParameterAutoFocus		= 0x0010
       
   624 		};
       
   625 		
       
   626 	/** Specifies the magnitude of bracketing step. 
       
   627 	The actual value and availability is parameter dependent.
       
   628 	@see TBracketParameter 
       
   629 	*/				
       
   630 	enum TBracketStep
       
   631 		{
       
   632 		/** Not supported. */
       
   633 		EBracketStepNonConfig	= 0x00, 
       
   634 		/** Small value. */	
       
   635 		EBracketStepSmall		= 0x01,
       
   636 		/** Medium value. */	
       
   637 		EBracketStepMedium 	    = 0x02,
       
   638 		/** Large value. */	
       
   639 		EBracketStepLarge		= 0x04
       
   640 		};
       
   641 
       
   642 	/** Specifies the orientation of the picture. */		
       
   643 	enum TPictureOrientation
       
   644 		{
       
   645 		/** No information about picture orientation. */	
       
   646 		EPictureOrientationUnknown		= 0x00,
       
   647 		/** Portrait - height larger than width. */	
       
   648 		EPictureOrientationPortrait		= 0x01,
       
   649 		/** Landscape width larger than height. */	
       
   650 		EPictureOrientationLandscape	= 0x02,
       
   651 		/** Square width equals the height. */	
       
   652 		EPictureOrientationSquare		= 0x04
       
   653 		};	
       
   654 
       
   655 	/** Specifies the pixel aspect ratio  
       
   656 	@note It is specified as a fraction of  
       
   657 	(x) horizontal pixel size divided by vertical (y) pixel size. 
       
   658 	The pixel aspect ratio for square pixels is 1/1. 
       
   659 	*/		
       
   660 	enum TPixelAspectRatio
       
   661 		{
       
   662 		/** Pixel ratio undetermined */
       
   663 		EPixelAspectUnknown		= 0x00,
       
   664 		/** Pixel Ratio 1:1. */	
       
   665 		EPixelAspect1To1		= 0x01,
       
   666 		/** Pixel Ratio 12:11 */	
       
   667 		EPixelAspect12To11		= 0x02,
       
   668 		/** Pixel Ratio 11:10. */	
       
   669 		EEPixelAspect11To10		= 0x04,
       
   670 		/** Pixel Ratio 59:54. */	
       
   671 		EEPixelAspect59To54		= 0x08,
       
   672 		/** Pixel Ratio 16:11.
       
   673 		    @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
       
   674 		*/	
       
   675 		EEPixelAspect16To11		= 0x10,
       
   676 		/** Pixel Ratio 10:11.
       
   677 		    @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
       
   678 		*/	
       
   679 		EEPixelAspect10To11		= 0x20,		
       
   680 		/** Pixel Ratio 40:33. 
       
   681 		    @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
       
   682 		*/	
       
   683 		EEPixelAspect40To33		= 0x40
       
   684 		};
       
   685 	
       
   686 	/** Specifies YUV colour space dynamic range. 
       
   687 	@note video compressors often use narrower than the default range.
       
   688 	The nominal Y range is [16:235] and the U and V ranges [16:240]. 
       
   689 	*/		
       
   690 	enum TYuvRange
       
   691 		{
       
   692 		/** Yuv range undetermined */
       
   693 		EYuvRangeUnknown		= 0x00,
       
   694 		/** Yuv Full Range. The nominal Y,U and V colours range is [0:255].  */	
       
   695 		EYuvRangeFull			= 0x01,
       
   696 		/** Yuv Cropped Range. The nominal Y range is [16:235] and the U and V ranges [16:240]. */	
       
   697 		EYuvRangeVideoCropped	= 0x02
       
   698 		};
       
   699 	
       
   700 	/** Specifies the units supported by the camera for manual white balance setting. 
       
   701 	 */				
       
   702 	enum TWBUnits
       
   703 		{
       
   704 		/** The units type is undetermined or not supported. */ 
       
   705 		EWBUnknown,
       
   706 		/** The white balance is represented as temperature degrees in Kelvin. */   	
       
   707 		EWBColorTemperature,
       
   708 		/** The white balance is represented as RGB triples.  */ 
       
   709 		EWBRgb
       
   710 		};
       
   711 		
       
   712 	/** 
       
   713 	Specifies the ISO type supported by the camera. ISO refers to the sensivity of the 
       
   714 	image sensor and is one of the factors influencing the exposure.
       
   715 	
       
   716 	*/		
       
   717 	enum TISORateType
       
   718 		{
       
   719 		/** ISO Not supported. Camera uses a fixed ISO rate internally and never reveals this information. */
       
   720 		EISONone						 = 0x00,
       
   721 		/** Camera gives a list of manual ISO rates to the user to set. Recommendation is to start camera in the manual ISO mode, by default. */
       
   722 		EISOManual 						 = 0x01,
       
   723 		/** Camera chooses the ISO on its own without prioritising any particular exposure parameters. */
       
   724 		EISOAutoUnPrioritised 			 = 0x02,	
       
   725 		/** Camera chooses the ISO on its own by prioritising ISO. */
       
   726 		EISOAutoISOPrioritised 		 	 = 0x04,	
       
   727 		/** Camera chooses the ISO on its own after prioritising shutter speed. */
       
   728 		EISOAutoShutterSpeedPrioritised  = 0x08,
       
   729 		/** Camera chooses the ISO on its own after prioritising aperture opening. */	
       
   730 		EISOAutoAperturePrioritised 	 = 0x10	
       
   731 		};
       
   732 			  	
       
   733 	/** 
       
   734 	Specifies the unfavourable circumstances as pre capture warnings which may be issued before image/video capture. 
       
   735 	
       
   736 	*/	
       
   737 	enum TPreCaptureWarning
       
   738 		{
       
   739 		/** No warnings */
       
   740 		EPCWNone 						= 0x0000,
       
   741 		/** warning to indicate that camera sensor is over exposed */
       
   742 		EPCWOverExposure 				= 0x0001,
       
   743 		/** warning to indicate that camera sensor is under exposed */
       
   744 		EPCWUnderExposure 				= 0x0002,
       
   745 		/** warning to indicate that camera operates under insufficient lightning conditions */
       
   746 		EPCWLowLight 					= 0x0004,
       
   747 		/** warning to indicate that focussing is not optimum. This is valid for manual/fixed focus only */
       
   748 		EPCWBadFocus 					= 0x0008, 
       
   749 		/** warning to indicate that camera might not be firmly gripped (Tripod required). This is same as long exposure */ 
       
   750 		EPCWHandShakePossible 			= 0x0010,  
       
   751 		/** warning to indicate that camera has not enough power to survive the flash operations (battery discharged) */
       
   752 		EPCWNotEnoughPowerForFlash 		= 0x0020,
       
   753 		/** warning to indicate that the current white balance is not the desired one */
       
   754 		EPCWWrongWhiteBalanceValue 		= 0x0040,
       
   755 		/** warning to indicate that the current flash value is not the desired one */
       
   756 		EPCWWrongFlashValue 			= 0x0080,
       
   757 		/** warning to indicate that the current digital zoom value is not the desired one */
       
   758 		EPCWWrongDigiZoomValue 			= 0x0100,
       
   759 		/** warning to indicate that the desired digital zoom affects the quality of image */
       
   760 		EPCWDigiZoomBadQuality        	= 0x0200, 
       
   761 		/** warning to indicate that flash is not ready. Recommendation: user may subscribe for this warning or issue 
       
   762 		IsFlashReady() also. Using both options is not encouraged */
       
   763 		EPCWFlashNotReady				= 0x0400,
       
   764 		/** unknown reason */
       
   765 		EPCWGeneralWarning 				= 0x0800,
       
   766 		/** warning to indicate that flash has been overheated.
       
   767 		
       
   768 		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
       
   769 		
       
   770 		@publishedPartner
       
   771 		@prototype
       
   772 		*/
       
   773 		EPCWFlashOverheated				= 0x1000,
       
   774 		/** warning to indicate that flash will not be fired because of enough ambient light.
       
   775 		
       
   776 		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
       
   777 		
       
   778 		@publishedPartner
       
   779 		@prototype
       
   780 		*/
       
   781 		EPCWFlashNotNeeded				= 0x2000
       
   782 		};
       
   783 		
       
   784 	/**
       
   785 	Describes the camera mode.
       
   786 	
       
   787 	*/	
       
   788 	enum TCameraMode
       
   789 		{
       
   790 		/** Camera is Idle */
       
   791 		EModeIdle				= 0x00,
       
   792 		/** DSA based Viewfinder runs */
       
   793 		EModeDSAViewFinder		= 0x01,
       
   794 		/** Client based Viewfinder runs */
       
   795 		EModeClientViewFinder	= 0x02		
       
   796 		};
       
   797 		
       
   798 	/** 
       
   799 	Specifies the different types of auto focus assistant light	
       
   800 	*/
       
   801 	enum TAFAssistantLight
       
   802 		{
       
   803 		/** switch off the AF assistant light from either of 'manual on' or 'auto' mode */
       
   804 		EAFAssistantLightOff 			= 0x00, 
       
   805 		/** switch on the AF assistant light manually */
       
   806 		EAFAssistantLightManualOn 		= 0x01,
       
   807 		/** Put the AF assistant light in auto mode. It will be automatically decided when to switch on or off. */
       
   808 		EAFAssistantLightAuto 			= 0x02
       
   809 		};
       
   810 	
       
   811 	/**
       
   812 	Specifies the different types of continuous zoom supported.
       
   813 	The enumeration list may be extended in future.
       
   814 	
       
   815 	@publishedPartner
       
   816 	@prototype
       
   817 	*/
       
   818 	enum TContinuousZoomType
       
   819 		{
       
   820 		/** Continuous zoom not supported */
       
   821 		EContinuousZoomNotSupported		= 0x00,
       
   822 		/** Continuous zoom 'Optical' only, No 'Digital' */
       
   823 		EContinuousZoomOpticalOnly		= 0x01,
       
   824 		/** Continuous zoom 'Optical' and 'Digital' */
       
   825 		EContinuousZoomMixed			= 0x02,
       
   826 		/** Continuous zoom 'Digital' only, No 'Optical' */
       
   827 		EContinuousZoomDigitalOnly		= 0x04
       
   828 		};
       
   829 	
       
   830 	/**
       
   831 	Specifies the zoom direction for continuous zoom operation. 
       
   832 	The enumeration list may be extended in future.
       
   833 	
       
   834 	@publishedPartner
       
   835 	@prototype
       
   836 	*/	
       
   837 	enum TZoomDirection
       
   838 		{
       
   839 		/** Implies that feature not supported. */
       
   840 		EZoomDirectionNone		=0x00,
       
   841 		/** Implies zooming out. */
       
   842 		EZoomDirectionWide		=0x01,
       
   843 		/** Implies zooming in. */
       
   844 		EZoomDirectionTele		=0x02
       
   845 		};
       
   846 	
       
   847 	/**
       
   848 	Different levels for performance vectors like speed, quality, low memory consumption and low power consumption.
       
   849 	The enumeration list may be extended in future.
       
   850 	
       
   851 	@publishedPartner
       
   852 	@prototype
       
   853 	*/	
       
   854 	enum TPerformanceLevel
       
   855 		{
       
   856 		/** High level preference. */
       
   857 		ELevelHigh			= 1,
       
   858 		/** Medium level preference. */
       
   859 		ELevelMedium		= 2,
       
   860 		/** Low level preference. */
       
   861 		ELevelLow			= 3,
       
   862 		/** Dont care (No preference). */
       
   863 		ELevelDontCare		= 4
       
   864 		};
       
   865 	
       
   866 	/**
       
   867 	Specifies flicker removal options.
       
   868 	The enumeration list may be extended in future. 
       
   869 	
       
   870 	@internalTechnology
       
   871 	*/
       
   872 	enum TFlickerRemoval
       
   873 		{
       
   874 		/** Not Supported. */
       
   875 		EFlickerRemovalNone  		= 0x00,
       
   876 		/** Flicker removal for Field frequency of 50Hz. */
       
   877 		EFlickerRemoval50Hz 		= 0x01,
       
   878 		/** Flicker removal for Field frequency of 60Hz. */
       
   879 		EFlickerRemoval60Hz			= 0x02,
       
   880 		/** Auto flicker removal. */
       
   881 		EFlickerRemovalAuto 		= 0x04,
       
   882 		/** Switch Off flicker removal. */
       
   883 		EFlickerRemovalSwitchOff   	= 0x08
       
   884 		};
       
   885 	
       
   886 	/**
       
   887 	Specifes the type of neutral density filters available. 
       
   888 	The enumeration list may be extended in future.
       
   889 	
       
   890 	@internalTechnology
       
   891 	*/
       
   892 	enum TNDFilter
       
   893 		{
       
   894 		/** Not Supported. */
       
   895 		ENDFilterNone  			= 0x00,
       
   896 		/** Auto ND Filter. */
       
   897 		ENDFilterAuto	  		= 0x01,
       
   898 		/** Switched off ND Filter. */
       
   899 		ENDFilterSwitchedOff	= 0x02,
       
   900 		/** High level ND Filter. */
       
   901 		ENDFilterHigh	 		= 0x04,
       
   902 		/** Medium level ND Filter. */
       
   903 		ENDFilterMedium	   		= 0x08,
       
   904 		/** Low level ND Filter. */
       
   905 		ENDFilterLow			= 0x10,
       
   906 		/** General ND Filter. */
       
   907 		ENDFilterGeneral		= 0x20
       
   908 		};
       
   909 	
       
   910 	/**
       
   911 	Specifies the various events for which the LED effects could be used.
       
   912 	The enumeration list may be extended in future.
       
   913 	
       
   914 	@internalTechnology
       
   915 	*/
       
   916 	enum TLEDEvent
       
   917 		{
       
   918 		/** Not supported. */
       
   919 		ELEDEventNone 				= 0x00,
       
   920 		/** LED effect needed for self timer. */
       
   921 		ELEDEventSelfTimer 			= 0x01,
       
   922 		/** LED effect needed for starting of viewfinder. */
       
   923 		ELEDEventViewfinderStart 	= 0x02,
       
   924 		/** LED effect needed for stoping of viewfinder. */
       
   925 		ELEDEventViewfinderStop		= 0x04,
       
   926 		/** LED effect needed for still image capture. */
       
   927 		ELEDEventStillImageCapture	= 0x08,
       
   928 		/** LED effect needed for video recording. */
       
   929 		ELEDEventVideoRecording		= 0x10
       
   930 		};
       
   931 	
       
   932 	/**
       
   933 	Specifes the type of LED effects available. 
       
   934 	The enumeration list may be extended in future.
       
   935 	
       
   936 	@internalTechnology
       
   937 	*/
       
   938 	enum TLEDEffect
       
   939 		{
       
   940 		/** Not supported. */
       
   941 		ELEDEffectNone				=0x00,
       
   942 		/** LED always on. */
       
   943 		ELEDEffectHardwired			=0x01,
       
   944 		/** LED auto. */
       
   945 		ELEDEffectAuto				=0x02,
       
   946 		/** LED Effect manually switched on. */
       
   947 		ELEDEffectManualSwitchOn	=0x04,
       
   948 		/** LED Effect switched off. */
       
   949 		ELEDEffectSwitchOff			=0x08,
       
   950 		/** LED Custom Effect. */
       
   951 		ELEDEffectCustom			=0x10
       
   952 		};
       
   953 	
       
   954 	/**
       
   955 	Color channels on which manual gain can be selectively applied.
       
   956 	The enumeration list may be extended in future.
       
   957 	
       
   958 	@internalTechnology
       
   959 	*/	
       
   960 	enum TColorChannel
       
   961 		{
       
   962 		/** Red Color Channel (RGB model). */
       
   963 		EColorChannelRed,
       
   964 		/** Green Color Channel (RGB model). */
       
   965 		EColorChannelGreen,
       
   966 		/** Blue Color Channel (RGB model). */
       
   967 		EColorChannelBlue,
       
   968 		/** Luminance Y component (YUV model). */ 
       
   969 		EChannelLumaY,
       
   970 		/** Chrominance U component (YUV model). */ 
       
   971 		EChannelChromaU,
       
   972 		/** Chrominance V component (YUV model). */ 
       
   973 		EChannelChromaV
       
   974 		};
       
   975 	
       
   976 	/**
       
   977 	Class used to provide a particular custom LED effect.
       
   978 	
       
   979 	@internalTechnology
       
   980 	*/
       
   981 	class TECamLEDSpecialEffectStep
       
   982 	{
       
   983 	public:
       
   984 		TECamLEDSpecialEffectStep();
       
   985 		
       
   986 		TUint Size() const;
       
   987 		TUint Version() const;
       
   988 		
       
   989 	private:
       
   990 		//for future expansion
       
   991 		TUint iSize:24;
       
   992 		TUint iVersion:8;
       
   993 				
       
   994 		// reserved for future expansion.
       
   995 		TInt iReserved1;
       
   996 		TInt iReserved2;
       
   997 		TInt iReserved3;
       
   998 		
       
   999 	public:
       
  1000 		/** Blinking frequency of LED in Hertz. */
       
  1001 		TUint iBlinkingFrequency;
       
  1002 		/** Represents the intensity of LED in millicandela. */
       
  1003 		TUint iIntensity;
       
  1004 		/** Frequency step with which the blinking frequency changes with time. May be positive as well as negative. */
       
  1005 		TInt iFrequencyStep;
       
  1006 		/** Time duration for which the particular LED special effect step would be valid. */
       
  1007 		TTimeIntervalMicroSeconds32 iDuration;
       
  1008 	};
       
  1009 
       
  1010 
       
  1011 public:
       
  1012 
       
  1013     IMPORT_C static CCameraAdvancedSettings* NewL(CCamera& aCamera);
       
  1014 
       
  1015   	IMPORT_C TCameraType CameraType() const;
       
  1016   	
       
  1017 	IMPORT_C TCameraType CameraType(TInt aCameraIndex);
       
  1018 
       
  1019 	IMPORT_C TBool IsCameraPresent() const;
       
  1020 	
       
  1021    	IMPORT_C TBool IsCameraPresent(TInt aCameraIndex);
       
  1022 
       
  1023   	IMPORT_C TInt CameraIndex() const;	
       
  1024   	
       
  1025     IMPORT_C TInt SupportedStabilizationModes() const;
       
  1026     
       
  1027     IMPORT_C TStabilizationMode StabilizationMode() const;
       
  1028     
       
  1029     IMPORT_C void SetStabilizationMode(TStabilizationMode aStabilizationMode);
       
  1030     
       
  1031     IMPORT_C TInt SupportedFocusModes() const;
       
  1032     
       
  1033     IMPORT_C TFocusMode FocusMode() const;
       
  1034     
       
  1035     IMPORT_C void SetFocusMode(TFocusMode aFocusMode);
       
  1036     
       
  1037     IMPORT_C TInt SupportedFocusRanges() const;
       
  1038     
       
  1039     IMPORT_C TFocusRange FocusRange() const;
       
  1040     
       
  1041     IMPORT_C void SetFocusRange(TFocusRange aFocusRange);
       
  1042     
       
  1043     IMPORT_C TInt SupportedAutoFocusTypes() const;
       
  1044     
       
  1045     IMPORT_C TAutoFocusType AutoFocusType() const;
       
  1046     
       
  1047     IMPORT_C void SetAutoFocusType(TAutoFocusType aAutoFocusType);
       
  1048 
       
  1049     IMPORT_C TInt SupportedAutoFocusAreas() const;
       
  1050     
       
  1051     IMPORT_C TAutoFocusArea AutoFocusArea() const;
       
  1052     
       
  1053     IMPORT_C void SetAutoFocusArea(TAutoFocusArea aAutoFocusArea);
       
  1054 
       
  1055 	IMPORT_C TInt FocusDistance() const;
       
  1056 	
       
  1057 	IMPORT_C void SetFocusDistance(TInt aDistance);
       
  1058 
       
  1059 	IMPORT_C TInt GetMinFocalLength() const;
       
  1060  
       
  1061     IMPORT_C void GetSupportedIsoRatesL(RArray<TInt>& aSupportedIsoRates) const;
       
  1062     
       
  1063     IMPORT_C TInt IsoRate() const;
       
  1064     
       
  1065     IMPORT_C void SetIsoRate(TInt aRate);
       
  1066 
       
  1067     IMPORT_C void GetAperturesL(RArray<TInt>& aFStops, TValueInfo& aInfo) const;
       
  1068     
       
  1069     IMPORT_C TInt Aperture() const; 
       
  1070     
       
  1071     IMPORT_C void SetAperture(TInt aFStop); 
       
  1072 	
       
  1073 	IMPORT_C void GetShutterSpeedsL(RArray<TInt>& aShutterSpeeds, TValueInfo& aInfo) const; 
       
  1074 		
       
  1075     IMPORT_C TInt ShutterSpeed() const; 
       
  1076     
       
  1077     IMPORT_C void SetShutterSpeed(TInt aShutterSpeed); 
       
  1078     
       
  1079     IMPORT_C TInt SupportedMeteringModes() const;
       
  1080     
       
  1081     IMPORT_C TMeteringMode MeteringMode() const;
       
  1082     
       
  1083     IMPORT_C void SetMeteringMode(TMeteringMode aMeteringMode);
       
  1084     
       
  1085     IMPORT_C TInt SupportedDriveModes() const;
       
  1086     
       
  1087     IMPORT_C TDriveMode DriveMode() const;
       
  1088     
       
  1089     IMPORT_C void SetDriveMode(TDriveMode aDriveMode);
       
  1090 
       
  1091     IMPORT_C TInt SupportedBracketModes() const;
       
  1092     
       
  1093     IMPORT_C TBracketMode BracketMode() const;
       
  1094     
       
  1095     IMPORT_C void SetBracketMode(TBracketMode aBracketMode);
       
  1096     
       
  1097     IMPORT_C TInt SupportedBracketParameters() const;
       
  1098     
       
  1099     IMPORT_C TBracketParameter BracketParameter() const;
       
  1100     
       
  1101     IMPORT_C void SetBracketParameter(TBracketParameter aBracketParameter);
       
  1102     
       
  1103     IMPORT_C TInt SupportedBracketSteps() const;
       
  1104     
       
  1105     IMPORT_C TBracketStep BracketStep() const;
       
  1106     
       
  1107     IMPORT_C void SetBracketStep(TBracketStep aBracketStep);
       
  1108     
       
  1109 	IMPORT_C void GetBracketMerge(TInt& aStartIndex, TInt& aFrames) const;
       
  1110 	
       
  1111 	IMPORT_C void SetBracketMerge(TInt aStartIndex, TInt aFrames);
       
  1112     
       
  1113     IMPORT_C TInt SupportedFlashModes() const;
       
  1114     
       
  1115 	IMPORT_C CCamera::TFlash FlashMode() const;
       
  1116 
       
  1117 	IMPORT_C void SetFlashMode(CCamera::TFlash aMode);
       
  1118 
       
  1119     IMPORT_C TBool RedEyeReduceOn() const;
       
  1120     
       
  1121     IMPORT_C void SetRedEyeReduceOn(TBool aState);
       
  1122     
       
  1123 	IMPORT_C void GetFlashCompensationStepsL(RArray<TInt>& aFlashCompensationSteps, TValueInfo& aInfo) const; 
       
  1124 	
       
  1125 	IMPORT_C TInt FlashCompensationStep() const;
       
  1126 	
       
  1127 	IMPORT_C TInt GetFlashCompensationStep(TInt& aFlashCompensationStep) const;	
       
  1128 	
       
  1129 	IMPORT_C void SetFlashCompensationStep(TInt aFlashCompensationStep);
       
  1130 	
       
  1131 	IMPORT_C void GetFlashCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
       
  1132 
       
  1133 	IMPORT_C TInt FlashCompensation() const;
       
  1134 	
       
  1135 	IMPORT_C TInt GetFlashCompensation(TInt& aFlashCompensation) const;
       
  1136 	
       
  1137 	IMPORT_C void SetFlashCompensation(TInt aFlashCompensationInSteps);
       
  1138 	
       
  1139 	IMPORT_C TBool IsExternalFlashPresent() const;
       
  1140 	   
       
  1141     IMPORT_C void GetManualFlashPowerLevelsL(RArray<TInt>& aManualFlashPowerLevels, TValueInfo& aInfo) const;
       
  1142     
       
  1143     IMPORT_C TInt ManualFlashPowerLevel() const;
       
  1144 
       
  1145     IMPORT_C void SetManualFlashPowerLevel(TInt aManualFlashPowerLevel);
       
  1146     
       
  1147 	IMPORT_C TInt SupportedExposureModes() const;
       
  1148 	
       
  1149 	IMPORT_C CCamera::TExposure ExposureMode() const;
       
  1150 
       
  1151 	IMPORT_C void SetExposureMode(CCamera::TExposure aExposureMode);
       
  1152 	
       
  1153 	IMPORT_C void GetExposureCompensationStepsL(RArray<TInt>& aExposureCompensationSteps, TValueInfo& aInfo) const; 
       
  1154 	
       
  1155 	IMPORT_C TInt ExposureCompensationStep() const;
       
  1156 	
       
  1157 	IMPORT_C TInt GetExposureCompensationStep(TInt& aExposureCompensationStep) const;
       
  1158 	
       
  1159 	IMPORT_C void SetExposureCompensationStep(TInt aExposureCompensationStep);
       
  1160 	
       
  1161 	IMPORT_C void GetExposureCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
       
  1162 
       
  1163 	IMPORT_C TInt ExposureCompensation() const;
       
  1164 	
       
  1165 	IMPORT_C TInt GetExposureCompensation(TInt& aExposureCompensation) const;
       
  1166 	
       
  1167 	IMPORT_C void SetExposureCompensation(TInt aExposureCompensationInSteps);
       
  1168 
       
  1169 	IMPORT_C TInt SupportedWhiteBalanceModes() const;
       
  1170 	
       
  1171 	IMPORT_C CCamera::TWhiteBalance WhiteBalanceMode() const;
       
  1172 	
       
  1173 	IMPORT_C void SetWhiteBalanceMode(CCamera::TWhiteBalance aWhiteBalanceMode);
       
  1174 
       
  1175 	IMPORT_C TBool ApertureExposureLockOn() const;
       
  1176 	
       
  1177 	IMPORT_C void SetApertureExposureLockOn(TBool aAELock);
       
  1178 
       
  1179 	IMPORT_C TBool ShootClickOn() const;
       
  1180 	
       
  1181 	IMPORT_C void SetShootClickOn(TBool aShootClickOn);
       
  1182 	
       
  1183 	IMPORT_C void GetTimerIntervalsL(RArray<TInt>& aTimerIntervals, TValueInfo& aInfo) const;
       
  1184 	
       
  1185     IMPORT_C TInt TimerInterval() const;  
       
  1186     
       
  1187     IMPORT_C void SetTimerInterval(TInt aTimerInterval); 
       
  1188 
       
  1189 	IMPORT_C void GetTimeLapsePeriodRange(TTime& aTimeLapseMin, TTime& aTimeLapseMax) const;
       
  1190 	
       
  1191 	IMPORT_C void GetTimeLapse(TTime& aStart, TTime& aEnd, TTime& aInterval) const;  
       
  1192     
       
  1193     IMPORT_C void SetTimeLapse(const TTime& aStart, const TTime& aEnd, const TTime& aInterval); 
       
  1194     
       
  1195     IMPORT_C TPictureOrientation PictureOrientation() const;
       
  1196     
       
  1197     IMPORT_C void SetPictureOrientation(TPictureOrientation aOrientation); 
       
  1198 
       
  1199     IMPORT_C TInt SupportedPixelAspectRatios() const;
       
  1200 
       
  1201     IMPORT_C TPixelAspectRatio PixelAspectRatio() const;
       
  1202     
       
  1203     IMPORT_C void SetPixelAspectRatio(TPixelAspectRatio aPixelAspectRatio); 
       
  1204 
       
  1205     IMPORT_C TInt SupportedYuvRanges() const;
       
  1206     
       
  1207     IMPORT_C TYuvRange YuvRange() const;
       
  1208     
       
  1209     IMPORT_C void SetYuvRange(TYuvRange aYuvRange);
       
  1210 	
       
  1211     IMPORT_C TInt BurstImages() const;
       
  1212     
       
  1213     IMPORT_C void SetBurstImages(TInt aImages);	
       
  1214 
       
  1215 	IMPORT_C void GetOpticalZoomStepsL(RArray<TInt>& aOpticalZoomSteps, TValueInfo& aInfo) const;
       
  1216 	
       
  1217 	IMPORT_C TInt OpticalZoom() const;
       
  1218 	
       
  1219 	IMPORT_C void SetOpticalZoom(TInt aOpticalZoom);
       
  1220 
       
  1221 	IMPORT_C void GetDigitalZoomStepsL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo) const;
       
  1222 	
       
  1223 	IMPORT_C TInt DigitalZoom() const;
       
  1224 	
       
  1225 	IMPORT_C void SetDigitalZoom(TInt aDigitalZoom);
       
  1226 
       
  1227 	IMPORT_C TBool ExposureLockOn() const;
       
  1228 	
       
  1229 	IMPORT_C void SetExposureLockOn(TBool aState);
       
  1230 		
       
  1231 	IMPORT_C TBool AutoFocusLockOn() const;
       
  1232 	
       
  1233 	IMPORT_C void SetAutoFocusLockOn(TBool aState);
       
  1234 		
       
  1235     IMPORT_C void GetSupportedSettingsL(RArray<TUid>& aSettings) const;
       
  1236     
       
  1237     IMPORT_C void GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
       
  1238     
       
  1239     IMPORT_C void GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
       
  1240 	
       
  1241 	IMPORT_C TBool AutomaticSizeSelectionChangeOn() const;	
       
  1242 
       
  1243 	IMPORT_C void SetAutomaticSizeSelectionChangeOn(TBool aSetOn);		
       
  1244 
       
  1245     IMPORT_C void GetSupportedContinuousAutoFocusTimeoutsL(RArray<TInt>& aTimeouts, TValueInfo& aInfo) const;
       
  1246     
       
  1247     IMPORT_C TInt ContinuousAutoFocusTimeout() const; 
       
  1248        
       
  1249     IMPORT_C void SetContinuousAutoFocusTimeout(TInt aTimeout);
       
  1250    
       
  1251 	IMPORT_C TInt SupportedStabilizationEffects() const;
       
  1252 	
       
  1253 	IMPORT_C TStabilizationEffect StabilizationEffect() const;
       
  1254     
       
  1255     IMPORT_C void SetStabilizationEffect(TStabilizationEffect aEffect);
       
  1256 
       
  1257 	IMPORT_C TInt SupportedStabilizationComplexityValues() const;
       
  1258     
       
  1259 	IMPORT_C TStabilizationAlgorithmComplexity StabilizationComplexity() const;
       
  1260     
       
  1261 	IMPORT_C void SetStabilizationComplexity(TStabilizationAlgorithmComplexity aComplexity);
       
  1262 
       
  1263     IMPORT_C TWBUnits SupportedWBUnits() const;
       
  1264     
       
  1265 	IMPORT_C void GetWBRgbValue(TRgb& aValue) const;
       
  1266     
       
  1267     IMPORT_C void SetWBRgbValue(const TRgb& aValue);
       
  1268     
       
  1269 	IMPORT_C void GetWBSupportedColorTemperaturesL(RArray<TInt>& aWBColorTemperatures, TValueInfo& aInfo) const;
       
  1270     
       
  1271  	IMPORT_C TInt WBColorTemperature() const;   
       
  1272  	
       
  1273 	IMPORT_C void SetWBColorTemperature(TInt aWBColorTemperature);
       
  1274 	
       
  1275 	IMPORT_C ~CCameraAdvancedSettings();
       
  1276 	
       
  1277  	IMPORT_C TInt IsFlashReady(TBool& aReady) const;
       
  1278 	
       
  1279 	IMPORT_C void GetCurrentFocusModeStepsL(RArray<TInt>& aFocusModeSteps, TValueInfo& aInfo) const;
       
  1280 	
       
  1281 	IMPORT_C void GetSupportedISORateTypeL(TInt& aSupportedISORateTypes) const;
       
  1282 	
       
  1283 	IMPORT_C void SetISORateL(TISORateType aISORateType, TInt aParam);
       
  1284 	
       
  1285 	IMPORT_C void GetISORateL(TISORateType& aISORateType, TInt& aParam, TInt& aISORate) const;
       
  1286 	
       
  1287 	IMPORT_C void SetReferenceScreenL(CWsScreenDevice& aScreenDevice);
       
  1288 	
       
  1289 	IMPORT_C void GetDigitalZoomStepsForStillL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aSizeIndex, 
       
  1290 												CCamera::TFormat aFormat, TBool& aIsInfluencePossible) const;
       
  1291 	
       
  1292 	IMPORT_C void GetDigitalZoomStepsForVideoL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aFrameRateIndex, 
       
  1293 			TInt aSizeIndex, CCamera::TFormat aFormat, TBool& aIsInfluencePossible, CCamera::TExposure aExposure) const;
       
  1294 	
       
  1295 	IMPORT_C void GetPreCaptureWarningSupportedL(TCameraMode aCameraMode, TInt& aPreCaptureWarningSupported) const;
       
  1296 	
       
  1297 	IMPORT_C void SubscribeToPreCaptureWarningL(TInt aPreCaptureWarning);
       
  1298 	
       
  1299 	IMPORT_C void UnSubscribePreCaptureWarningL();
       
  1300 	
       
  1301 	IMPORT_C void GetPreCaptureWarningL(TInt& aPreCaptureWarning) const;
       
  1302 	
       
  1303 	IMPORT_C void GetSupportedAFAssistantLightL(TInt& aSupportedAFAssistantLight) const;
       
  1304 			 
       
  1305 	IMPORT_C void GetAFAssistantLightL(TAFAssistantLight& aAFAssistantLight) const;
       
  1306 	
       
  1307 	IMPORT_C void SetAFAssistantLightL(TAFAssistantLight aAFAssistantLight); 
       
  1308 	
       
  1309 	IMPORT_C void GetSupportedContinuousZoomTypeL(TUint& aSupportedContinuousZoomType) const;
       
  1310 
       
  1311 	IMPORT_C void StartContinuousZoomL(TContinuousZoomType aContinuousZoomType, TZoomDirection aZoomDirection);
       
  1312 
       
  1313 	IMPORT_C void StopContinuousZoom();
       
  1314 	
       
  1315 	IMPORT_C void GetFocalLengthInfoL(TInt& aMinFocalLength, TInt& aCurrentFocalLength, TInt& aMaxFocalLength) const;
       
  1316 	
       
  1317 	IMPORT_C void GetNumOperationPreferenceL(TUint& aNumOperationPreferenceSupported) const;
       
  1318 	
       
  1319 	IMPORT_C void EnumerateOperationPreferenceL(TUint aOperationPreferenceIndex, TPerformanceLevel& aSpeedLevel, 
       
  1320 											TPerformanceLevel& aQualityLevel, TPerformanceLevel& aLowMemoryConsumptionLevel, 
       
  1321 											TPerformanceLevel& aLowPowerConsumptionLevel) const;
       
  1322 											
       
  1323 	IMPORT_C void SetOperationPreferenceL(TUint aOperationPreferenceIndex);
       
  1324 	
       
  1325 	IMPORT_C void GetOperationPreferenceL(TInt& aOperationPreferenceIndex) const;
       
  1326 	
       
  1327 	IMPORT_C void GetSupportedEventsL(RArray<TUid>& aSupportedEvents) const;
       
  1328 	
       
  1329 	IMPORT_C void GetIndirectFeatureChangesL(TUid aRequestedSetting, RArray<TUid>& aIndirectFeatureChanges) const;
       
  1330 	
       
  1331 private:
       
  1332 	IMPORT_C CCameraAdvancedSettings(CCamera& aOwner);
       
  1333 	IMPORT_C void ConstructL();
       
  1334 	
       
  1335 private:
       
  1336 	void RegisterEventsL(TECAMEventFilterScheme aEventFilter, const RArray<TUid>& aEvents);
       
  1337 	void GetRegisterEventsL(TECAMEventFilterScheme aEventFilter, RArray<TUid>& aEvents, TValueInfo& aInfo) const;
       
  1338 	
       
  1339 	void GetSupportedFlickerRemovalValueL(TUint& aSupportedFlickerRemovalValue) const;
       
  1340 	void GetFlickerRemovalValueL(TFlickerRemoval& aFlickerRemovalValue) const;
       
  1341 	void SetFlickerRemovalValueL(TFlickerRemoval aFlickerRemovalValue);
       
  1342 	
       
  1343 	void GetSupportedNDFilterL(TUint& aSupportedNDFilter) const;
       
  1344 	void GetNDFilterL(TNDFilter& aNDFilter) const;
       
  1345 	void SetNDFilterL(TNDFilter aNDFilter);
       
  1346 	
       
  1347 	void GetLEDEffectL(TLEDEvent aLEDEvent, TLEDEffect& aLEDEffect) const;
       
  1348 	void SetLEDEffectL(TLEDEvent aLEDEvent, TLEDEffect aLEDEffect);
       
  1349 	void SetLEDCustomEffectL(TLEDEvent aLEDEvent, const RArray<TECamLEDSpecialEffectStep>& aLEDSpecialEffectSteps);
       
  1350 
       
  1351 	void ReserveL(const TTimeIntervalMicroSeconds32& aMaxTimeToWait, TBool aKickOut);
       
  1352 	void SetClientPriorityL(TInt aPriority);
       
  1353 	void RestoreClientPriorityL();
       
  1354 	
       
  1355 	void GetSupportedManualGainL(RArray<TInt>& aSupportedManualGain, TColorChannel aColorChannel) const;
       
  1356 	void GetManualGainL(TInt& aManualGain, TColorChannel aColorChannel) const;
       
  1357 	void SetManualGainL(TInt aManualGain, TColorChannel aColorChannel);
       
  1358 
       
  1359 	void SetWhiteBalanceLockL(TBool aEnableLock);
       
  1360 	void GetWhiteBalanceLockStateL(TBool& aIsLocked) const;
       
  1361 	
       
  1362 	void EnableStateSavingL(RWriteStream& aLatestCameraState);
       
  1363 	void DisableStateSavingL();
       
  1364 	void RestoreLatestStateL(RReadStream& aLatestCameraState);
       
  1365 	void SaveCameraStateL(RWriteStream& aCustomCameraState);
       
  1366 	void DisableCameraStateSavingL(RWriteStream& aCustomCameraState);
       
  1367 	void RestoreCameraStateL(RReadStream& aCustomCameraState);
       
  1368 
       
  1369 private:	
       
  1370 	CCamera&        			iOwner; 
       
  1371     MCameraAdvancedSettings* 	iImpl;   // not owned
       
  1372     MCameraAdvancedSettings2* 	iImpl2;  // not owned
       
  1373     
       
  1374     MCameraAdvancedSettings3* 	iImpl3;  // not owned
       
  1375     
       
  1376     MCameraAdvancedSettings4* 	iImpl4;  // not owned
       
  1377 	};		
       
  1378 
       
  1379 /**
       
  1380 Supported presets with the assumption for scope and outcome
       
  1381 */
       
  1382 
       
  1383 /** Default settings */
       
  1384 static const TUid  KUidECamPresetFactoryDefault	= {KUidECamPresetFactoryDefaultUidValue};
       
  1385 /** Daytime shot with normal exposure time, one shot autofocus, 
       
  1386 medium ISO rating and no flash. */
       
  1387 static const TUid  KUidECamPresetOutdoor		= {KUidECamPresetOutdoorUidValue};
       
  1388 /** Daytime shot with short exposure time, continuous autofocus, 
       
  1389 high Iso rating and no flash. */
       
  1390 static const TUid  KUidECamPresetOutdoorSport	= {KUidECamPresetOutdoorSportUidValue};
       
  1391 /** Daytime shot with very short exposure time, high shutter speed, 
       
  1392 high Iso rating and no flash. */
       
  1393 static const TUid  KUidECamPresetSnow 			= {KUidECamPresetSnowUidValue};
       
  1394 /** Daytime shot with very short exposure time, high shutter speed, 
       
  1395 high contrast, reflections and no flash. */
       
  1396 static const TUid  KUidECamPresetBeach 			= {KUidECamPresetBeachUidValue};
       
  1397 /** Night time shot with long central exposure time and high flash power. */
       
  1398 static const TUid  KUidECamPresetNightPortrait 	= {KUidECamPresetNightPortraitUidValue};
       
  1399 /** Night time shot with long exposure time and no flash. */
       
  1400 static const TUid  KUidECamPresetNightFireworks = {KUidECamPresetNightFireworksUidValue};
       
  1401 /** Daytime shot with medium exposure time, medium to high Iso rating, 
       
  1402 overcast daylight, low contrast, fill-in flash. */
       
  1403 static const TUid  KUidECamPresetFog 			= {KUidECamPresetFogUidValue};
       
  1404 /** Fluorescent lightning with medium exposure time, 
       
  1405 medium to low shutter speed with flash. */
       
  1406 static const TUid  KUidECamPresetIndoor			= {KUidECamPresetIndoorUidValue};
       
  1407 /** Fluorescent lightning with continuous autofocus, wide aperture, 
       
  1408 high Iso rating with flash. */
       
  1409 static const TUid  KUidECamPresetIndoorSport	= {KUidECamPresetIndoorSportUidValue};
       
  1410 /** 
       
  1411 Used in low light situations. Tries to capture all the photons from a low light scene. 
       
  1412 The image may be processed longer to achieve this. This case may cause blurring, but that could be a 
       
  1413 wanted effect. 
       
  1414 
       
  1415 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1416 CCamera::NewDuplicate2L().
       
  1417 
       
  1418 */
       
  1419 static const TUid  KUidECamPresetNightPartyIndoor	= {KUidECamPresetNightPartyIndoorUidValue};
       
  1420 /** 
       
  1421 Used to capture images of things which can't be seen by eye. 
       
  1422 For example: snowflakes, underwater photography, small insect photos
       
  1423 
       
  1424 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1425 CCamera::NewDuplicate2L().
       
  1426 
       
  1427 */
       
  1428 static const TUid  KUidECamPresetNightCloseUp		= {KUidECamPresetNightCloseUpUidValue};
       
  1429 /** 
       
  1430 Used for revealing assumed details. For example: business card photos, small written text photos, 
       
  1431 underwater photography, insect photos.
       
  1432 
       
  1433 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1434 CCamera::NewDuplicate2L().
       
  1435 
       
  1436 */
       
  1437 static const TUid  KUidECamPresetNightMacro			= {KUidECamPresetNightMacroUidValue};
       
  1438 /** 
       
  1439 Used for taking clear pictures of text or drawings. Also used to capture business cards or of a whiteboard. 
       
  1440 Aim is to optimise text and drawing readability and user expectation of "white" paper. 
       
  1441 Camera shake may reduce quality in case no flash available or not adequate(distance too much from subject).
       
  1442 
       
  1443 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1444 CCamera::NewDuplicate2L().
       
  1445 
       
  1446 */
       
  1447 static const TUid  KUidECamPresetTextDocument		= {KUidECamPresetTextDocumentUidValue};
       
  1448 /** 
       
  1449 Used for providing clear pictures of barcode. Aim is to convert barcode into some form which can be easily decoded. 
       
  1450 Camera shake may reduce this barcode readability and hence, barcode conversion accuracy and reliability.
       
  1451 
       
  1452 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1453 CCamera::NewDuplicate2L().
       
  1454 
       
  1455 */
       
  1456 static const TUid  KUidECamPresetBarcode			= {KUidECamPresetBarcodeUidValue};
       
  1457 /** 
       
  1458 Used when factory default preset in certain cases may not be available or is too restrictive. 
       
  1459 Automatic preset expects the hardware to use automatic detection for most of the features.
       
  1460 
       
  1461 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1462 CCamera::NewDuplicate2L().
       
  1463 
       
  1464 */
       
  1465 static const TUid  KUidECamPresetAuto	 			= {KUidECamPresetAutoUidValue};
       
  1466 /** 
       
  1467 Used for portraits of human subjects in good lighting conditions. Focuses on the people and captures natural 
       
  1468 skin tones. Background details may not be softened.
       
  1469 
       
  1470 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1471 CCamera::NewDuplicate2L().
       
  1472 
       
  1473 */
       
  1474 static const TUid  KUidECamPresetPortrait 			= {KUidECamPresetPortraitUidValue};
       
  1475 /** 
       
  1476 Used for sharp landscape shots with clear outlines, colours and contrast, for example forest, sky. 
       
  1477 The main aim is to get the details of the scene.
       
  1478 
       
  1479 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1480 CCamera::NewDuplicate2L().
       
  1481 
       
  1482 */
       
  1483 static const TUid  KUidECamPresetLandscape			= {KUidECamPresetLandscapeUidValue};
       
  1484 /** 
       
  1485 Used to retain the ambience/mood produced by, for example, warm lighting conditions like sunset, candlelight etc.
       
  1486 
       
  1487 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1488 CCamera::NewDuplicate2L().
       
  1489 
       
  1490 */
       
  1491 static const TUid  KUidECamPresetAmbienceMood		= {KUidECamPresetAmbienceMoodUidValue};
       
  1492 /** 
       
  1493 Used to for video telephony.
       
  1494 
       
  1495 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1496 CCamera::NewDuplicate2L().
       
  1497 
       
  1498 @publishedPartner
       
  1499 @prototype
       
  1500 */
       
  1501 static const TUid  KUidECamPresetVideoTelephony		= {KUidECamPresetVideoTelephonyUidValue};
       
  1502 
       
  1503 /** 
       
  1504 Used to clarify that camera is not under any preset mode. Possible scenario: client sets camera in a particular preset 
       
  1505 mode and then makes some setting changes on top of it. Then theoretically camera is out of that preset. Hence, 
       
  1506 KUidECamPresetNone will be used in such cases.
       
  1507 
       
  1508 This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
       
  1509 CCamera::NewDuplicate2L().
       
  1510 
       
  1511 @publishedPartner
       
  1512 @prototype
       
  1513 */
       
  1514 static const TUid  KUidECamPresetNone		= {KUidECamPresetNoneUidValue};
       
  1515  
       
  1516 /** Notifications related to presets */
       
  1517 /**
       
  1518 Used to notify clients about possible range restrictions, when camera works under a particular preset mode.
       
  1519 This is not a particular preset uid.
       
  1520 
       
  1521 @note   Call CCamera::CCameraPresets::GetRangeRestrictedSettingsL(RArray<TUid>& aRangeRestrictedSettings) to retrieve 
       
  1522 		the list of settings whose range have been restricted.
       
  1523 
       
  1524 @publishedPartner
       
  1525 @prototype
       
  1526 */
       
  1527 static const TUid  KUidECamEventRangeRestricted  = {KUidECamEventRangeRestrictedUidValue};
       
  1528 
       
  1529 /**
       
  1530 Used to notify clients about possible feature restrictions, when camera works under a particular preset mode.
       
  1531 This is not a particular preset uid.
       
  1532 
       
  1533 @note   Call CCamera::CCameraPresets::GetFeatureRestrictedSettingsL(RArray<TUid>& aFeatureRestrictedSettings) to retrieve 
       
  1534 		the list of settings which have been restricted.
       
  1535 
       
  1536 @publishedPartner
       
  1537 @prototype
       
  1538 */
       
  1539 static const TUid  KUidECamEventFeatureRestricted  = {KUidECamEventFeatureRestrictedUidValue};
       
  1540 
       
  1541 /**
       
  1542 Used to notify clients that locking of the preset operation has completed, when camera works under a particular preset mode.
       
  1543 This is not a particular preset uid.
       
  1544 
       
  1545 @publishedPartner
       
  1546 @prototype
       
  1547 */
       
  1548 static const TUid  KUidECamEventPresetLocked  = {KUidECamEventPresetLockedUidValue};
       
  1549 
       
  1550 /**
       
  1551 Used to notify clients that unlocking of the preset operation has completed, when camera works under a particular preset mode.
       
  1552 This is not a particular preset uid.
       
  1553 
       
  1554 @publishedPartner
       
  1555 @prototype
       
  1556 */
       
  1557 static const TUid  KUidECamEventPresetUnlocked  = {KUidECamEventPresetUnlockedUidValue};
       
  1558  
       
  1559  
       
  1560 /**
       
  1561 This API is used to simplify user - camera interaction by allowing simultaneous
       
  1562 setting of various advanced camera hardware settings using a single parameter.
       
  1563 
       
  1564 Preset is identified by a single UID and relates to a known predefined outcome. 
       
  1565 For example the 'Night' Preset will be used to set the camera into a night mode 
       
  1566 so that the user can take night photos. 
       
  1567 
       
  1568 The particular set of settings associated with the specific preset and their specific values 
       
  1569 and ranges are camera hardware specific and outside the scope of this API. 
       
  1570 
       
  1571 @note This class is not intended for sub-classing  and used to standardise existing
       
  1572       varieties of implementations.
       
  1573       
       
  1574 @note   If the class methods leave, the output type parameter value is not guaranteed to be valid.
       
  1575 
       
  1576 @publishedAll
       
  1577 @released
       
  1578 */
       
  1579 class CCamera::CCameraPresets : public CBase 
       
  1580 	{
       
  1581     /** allow access to private constructors. */
       
  1582 	friend class CCamera;
       
  1583 	
       
  1584 public:
       
  1585 
       
  1586     IMPORT_C static CCameraPresets* NewL(CCamera& aCamera);
       
  1587     
       
  1588     IMPORT_C void GetSupportedPresetsL(RArray<TUid>& aPresets) const;
       
  1589     
       
  1590     IMPORT_C void SetPreset(TUid aPreset);
       
  1591     
       
  1592     IMPORT_C TUid Preset() const;
       
  1593     
       
  1594     IMPORT_C void GetAffectedSettingsL(RArray<TUid>& aSettings) const;
       
  1595    
       
  1596     IMPORT_C void GetAssociatedSettingsL(TUid aPreset, RArray<TUid>& aSettings) const;
       
  1597     
       
  1598     IMPORT_C ~CCameraPresets();
       
  1599     
       
  1600     IMPORT_C void GetRangeRestrictedSettingsL(RArray<TUid>& aRangeRestrictedSettings) const;
       
  1601     
       
  1602     IMPORT_C void GetFeatureRestrictedSettingsL(RArray<TUid>& aFeatureRestrictedSettings) const;
       
  1603     
       
  1604     IMPORT_C void IsPresetUnlockSupportedL(TBool& aUnlockSupported) const;
       
  1605 	
       
  1606 	IMPORT_C void LockPresetL();
       
  1607 	
       
  1608 	IMPORT_C void UnlockPresetL();
       
  1609 	    
       
  1610 private:
       
  1611 	IMPORT_C CCameraPresets(CCamera& aOwner);
       
  1612 	IMPORT_C void ConstructL();
       
  1613 	
       
  1614 	void FilterUnrecognisedUids(RArray<TUid>& aUids, const TInt aBaselineUid) const;
       
  1615 
       
  1616 private:	
       
  1617 	CCamera&        iOwner; 
       
  1618     MCameraPresets* iImpl;  // not owned
       
  1619     MCameraPresets2* iImpl2;  // not owned
       
  1620 	};
       
  1621 	
       
  1622 #endif // ECAMADVSETTINGS_H