epoc32/include/ecamadvsettings.h
branchSymbian2
changeset 2 2fe1408b6811
parent 0 061f57f2323e
child 4 837f303aceeb
     1.1 --- a/epoc32/include/ecamadvsettings.h	Tue Nov 24 13:55:44 2009 +0000
     1.2 +++ b/epoc32/include/ecamadvsettings.h	Tue Mar 16 16:12:26 2010 +0000
     1.3 @@ -1,1 +1,1622 @@
     1.4 -ecamadvsettings.h
     1.5 +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
     1.6 +// All rights reserved.
     1.7 +// This component and the accompanying materials are made available
     1.8 +// 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
     1.9 +// which accompanies this distribution, and is available
    1.10 +// at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
    1.11 +//
    1.12 +// Initial Contributors:
    1.13 +// Nokia Corporation - initial contribution.
    1.14 +//
    1.15 +// Contributors:
    1.16 +//
    1.17 +// Description:
    1.18 +//
    1.19 +
    1.20 +
    1.21 +
    1.22 +/**
    1.23 + @file	
    1.24 + @publishedAll
    1.25 + @released
    1.26 +*/
    1.27 +#ifndef  ECAMADVSETTINGS_H
    1.28 +#define  ECAMADVSETTINGS_H
    1.29 +
    1.30 +#include <e32base.h>
    1.31 +#include <ecam.h>
    1.32 +#include <ecamadvsettingsuids.hrh>
    1.33 +#include <gdi.h>
    1.34 +#include <s32strm.h>
    1.35 +#include <ecam/ecamconstants.h>
    1.36 +#include <ecamimageprocessing.h>
    1.37 +
    1.38 +class MCameraPresets;
    1.39 +class MCameraAdvancedSettings;
    1.40 +class MCameraAdvancedSettings2;
    1.41 +class MCameraAdvancedSettings3;
    1.42 +class MCameraAdvancedSettings4;
    1.43 +class MCameraPresets2;
    1.44 +
    1.45 +/* General purpose constants */
    1.46 +
    1.47 +/** 
    1.48 +The current Version of the TECamLEDSpecialEffectStep class.
    1.49 +
    1.50 +@internalTechnology
    1.51 +*/
    1.52 +static const TUint KECamLEDSpecialEffectStepCurrentVersion = 1;
    1.53 +
    1.54 +/** 
    1.55 +	UID used to identify the CCamera Advanced Settings API.
    1.56 +	This API is used to control specific individual advanced settings of camera hardware.
    1.57 +	These settings directly relate to the image acquisition phase.
    1.58 +	
    1.59 +	@see CCamera::CCameraAdvancedSettings
    1.60 +*/
    1.61 +static const TUid KECamAdvancedSettingUid 	= {KECamAdvancedSettingUidValue};
    1.62 +
    1.63 +/** 
    1.64 +	UID used to identify the CCamera Presets API.
    1.65 +	This API is used to simplify user - camera interaction by allowing simultaneous 
    1.66 +	setting of various advanced camera hardware settings using a single predefined parameter. 
    1.67 +	@see CCamera::CCameraPresets
    1.68 +*/
    1.69 +static const TUid  KECamPresetsUid 			= {KECamPresetsUidValue};
    1.70 +
    1.71 +	
    1.72 +/** All clients receive these events, irrespective of camera index.  */
    1.73 +/** Camera slots in for 8 cameras. */
    1.74 +/** Camera with index 0 Plugged-in */
    1.75 +static const TUid  KUidECamEventGlobalCamera00PluggedIn = {KUidECamEventGlobalCamera00PluggedInUidValue};
    1.76 +/** Camera with index 1 Plugged-in */
    1.77 +static const TUid  KUidECamEventGlobalCamera01PluggedIn = {KUidECamEventGlobalCamera01PluggedInUidValue};
    1.78 +/** Camera with index 2 Plugged-in */
    1.79 +static const TUid  KUidECamEventGlobalCamera02PluggedIn = {KUidECamEventGlobalCamera02PluggedInUidValue};
    1.80 +/** Camera with index 3 Plugged-in */
    1.81 +static const TUid  KUidECamEventGlobalCamera03PluggedIn = {KUidECamEventGlobalCamera03PluggedInUidValue};
    1.82 +/** Camera with index 4 Plugged-in */
    1.83 +static const TUid  KUidECamEventGlobalCamera04PluggedIn = {KUidECamEventGlobalCamera04PluggedInUidValue};
    1.84 +/** Camera with index 5 Plugged-in */
    1.85 +static const TUid  KUidECamEventGlobalCamera05PluggedIn = {KUidECamEventGlobalCamera05PluggedInUidValue};
    1.86 +/** Camera with index 6 Plugged-in */
    1.87 +static const TUid  KUidECamEventGlobalCamera06PluggedIn = {KUidECamEventGlobalCamera06PluggedInUidValue};
    1.88 +/** Camera with index 7 Plugged-in */
    1.89 +static const TUid  KUidECamEventGlobalCamera07PluggedIn = {KUidECamEventGlobalCamera07PluggedInUidValue};
    1.90 +
    1.91 +/** Camera slots plugged out for 8 cameras. */
    1.92 +/** Camera with index 0 Plugged-out */
    1.93 +static const TUid  KUidECamEventGlobalCamera00PluggedOut = {KUidECamEventGlobalCamera00PluggedOutUidValue};
    1.94 +/** Camera with index 1 Plugged-out */
    1.95 +static const TUid  KUidECamEventGlobalCamera01PluggedOut = {KUidECamEventGlobalCamera01PluggedOutUidValue};
    1.96 +/** Camera with index 2 Plugged-out */
    1.97 +static const TUid  KUidECamEventGlobalCamera02PluggedOut = {KUidECamEventGlobalCamera02PluggedOutUidValue};
    1.98 +/** Camera with index 3 Plugged-out */
    1.99 +static const TUid  KUidECamEventGlobalCamera03PluggedOut = {KUidECamEventGlobalCamera03PluggedOutUidValue};
   1.100 +/** Camera with index 4 Plugged-out */
   1.101 +static const TUid  KUidECamEventGlobalCamera04PluggedOut = {KUidECamEventGlobalCamera04PluggedOutUidValue};
   1.102 +/** Camera with index 5 Plugged-out */
   1.103 +static const TUid  KUidECamEventGlobalCamera05PluggedOut = {KUidECamEventGlobalCamera05PluggedOutUidValue};
   1.104 +/** Camera with index 6 Plugged-out */
   1.105 +static const TUid  KUidECamEventGlobalCamera06PluggedOut = {KUidECamEventGlobalCamera06PluggedOutUidValue};
   1.106 +/** Camera with index 7 Plugged-out */
   1.107 +static const TUid  KUidECamEventGlobalCamera07PluggedOut = {KUidECamEventGlobalCamera07PluggedOutUidValue};
   1.108 +
   1.109 +/** Camera slots available for 8 cameras. */
   1.110 +/** Signals a camera previously has been reserved and then released again. 
   1.111 +    In this way available clients may attempt to reserve the camera */
   1.112 +/** Camera with index 0 Available. */
   1.113 +static const TUid  KUidECamEventGlobalCamera00Available  = {KUidECamEventGlobalCamera00AvailableUidValue};
   1.114 +/** Camera with index 1 Available. */
   1.115 +static const TUid  KUidECamEventGlobalCamera01Available  = {KUidECamEventGlobalCamera01AvailableUidValue};
   1.116 +/** Camera with index 2 Available. */
   1.117 +static const TUid  KUidECamEventGlobalCamera02Available  = {KUidECamEventGlobalCamera02AvailableUidValue};
   1.118 +/** Camera with index 3 Available. */
   1.119 +static const TUid  KUidECamEventGlobalCamera03Available  = {KUidECamEventGlobalCamera03AvailableUidValue};
   1.120 +/** Camera with index 4 Available. */
   1.121 +static const TUid  KUidECamEventGlobalCamera04Available  = {KUidECamEventGlobalCamera04AvailableUidValue};
   1.122 +/** Camera with index 5 Available. */
   1.123 +static const TUid  KUidECamEventGlobalCamera05Available  = {KUidECamEventGlobalCamera05AvailableUidValue};
   1.124 +/** Camera with index 6 Available. */
   1.125 +static const TUid  KUidECamEventGlobalCamera06Available  = {KUidECamEventGlobalCamera06AvailableUidValue};
   1.126 +/** Camera with index 7 Available. */
   1.127 +static const TUid  KUidECamEventGlobalCamera07Available  = {KUidECamEventGlobalCamera07AvailableUidValue};
   1.128 +
   1.129 +/** Individual camera events. These are used by the camera to signal its observers. */
   1.130 +/** Lens changed. */
   1.131 +static const TUid  KUidECamEventLensChanged 			= {KUidECamEventLensChangedUidValue};
   1.132 +/** Flash source added. */
   1.133 +static const TUid  KUidECamEventFlashSourceAdded 		= {KUidECamEventFlashSourceAddedUidValue};
   1.134 +/** Flash source removed. */
   1.135 +static const TUid  KUidECamEventFlashSourceRemoved		= {KUidECamEventFlashSourceRemovedUidValue};
   1.136 +/** Image resolution changed. */
   1.137 +static const TUid  KUidECamEventCameraSettingImageSize 	= {KUidECamEventCameraSettingImageSizeUidValue};
   1.138 +/** Image Format changed. */
   1.139 +static const TUid  KUidECamEventCameraSettingImageFormat 		= {KUidECamEventCameraSettingImageFormatUidValue};
   1.140 +/** Camera orientation changed. */
   1.141 +static const TUid  KUidECamEventCameraSettingCameraOrientation  = {KUidECamEventCameraSettingCameraOrientationUidValue};
   1.142 +/** Optimal focus */
   1.143 +static const TUid KUidECamEventCameraSettingsOptimalFocus 		= {KUidECamEventCameraSettingsOptimalFocusUidValue};
   1.144 +
   1.145 +/** Advanced settings. */
   1.146 +/** Stabilization mode.  */
   1.147 +static const TUid  KUidECamEventCameraSettingStabilizationMode 	= {KUidECamEventCameraSettingStabilizationModeUidValue};
   1.148 +/** Focus mode. */
   1.149 +static const TUid  KUidECamEventCameraSettingFocusMode 			= {KUidECamEventCameraSettingFocusModeUidValue};
   1.150 +/** Focus range. 
   1.151 +@deprecated
   1.152 +
   1.153 +Replaced by KUidECamEventCameraSettingFocusRange2
   1.154 +
   1.155 +In the first release of this event, KUidECamEventCameraSettingFocusRange was incorrectly given an already existing uid. 
   1.156 +In order to preserve compatibility this event is marked as deprecated and has been replaced by KUidECamEventCameraSettingFocusRange2.
   1.157 +Camera servers predating this API change will continue to send the original event which is indistinguishable by value. 
   1.158 +Caching the old value and comparing it with the current value, will allow the client to determine that the value has changed.
   1.159 +Camera servers which have been updated should send both KUidECamEventCameraSettingFocusRange and KUidECamEventCameraSettingFocusRange2 on a focus range change. 
   1.160 +Camera clients should therefore process both events(old and new). 
   1.161 +
   1.162 +@see KUidECamEventCameraSettingFocusRange2
   1.163 +*/
   1.164 +static const TUid  KUidECamEventCameraSettingFocusRange 		= {KUidECamEventCameraSettingFocusRangeUidValue};
   1.165 +/** Autofocus type.
   1.166 +@deprecated
   1.167 +
   1.168 +Replaced by KUidECamEventCameraSettingAutoFocusType2
   1.169 +
   1.170 +In the first release of this event, KUidECamEventCameraSettingAutoFocusType was incorrectly given an already existing uid. 
   1.171 +In order to preserve compatibility this event is marked as deprecated and has been replaced by KUidECamEventCameraSettingAutoFocusType2.
   1.172 +Camera servers predating this API change will continue to send the original event which is indistinguishable by value. 
   1.173 +Caching the old value and comparing it with the current value, will allow the client to determine that the value has changed.
   1.174 +Camera servers which have been updated should send both KUidECamEventCameraSettingAutoFocusType and KUidECamEventCameraSettingAutoFocusType2 on a focus range change. 
   1.175 +Camera clients should therefore process both events(old and new). 
   1.176 +
   1.177 +@see KUidECamEventCameraSettingAutoFocusType2*/
   1.178 +static const TUid  KUidECamEventCameraSettingAutoFocusType 		= {KUidECamEventCameraSettingAutoFocusTypeUidValue};
   1.179 +/** Autofocus area. */
   1.180 +static const TUid  KUidECamEventCameraSettingAutoFocusArea 		= {KUidECamEventCameraSettingAutoFocusAreaUidValue};
   1.181 +/** Autofocus lock state.  */
   1.182 +static const TUid  KUidECamEventCameraSettingAutoFocusLock		= {KUidECamEventCameraSettingAutoFocusLockUidValue};
   1.183 +/** Focus distance */
   1.184 +static const TUid  KUidECamEventCameraSettingFocusDistance 		= {KUidECamEventCameraSettingFocusDistanceUidValue};
   1.185 +/** Sensitivity - ISO rate. */
   1.186 +static const TUid  KUidECamEventCameraSettingIsoRate 			= {KUidECamEventCameraSettingIsoRateUidValue};
   1.187 +/** Aperture. */
   1.188 +static const TUid  KUidECamEventCameraSettingAperture 			= {KUidECamEventCameraSettingApertureUidValue};
   1.189 +/** Aperture range. */
   1.190 +static const TUid  KUidECamEventCameraSettingApertureRange 		= {KUidECamEventCameraSettingApertureRangeUidValue};
   1.191 +/** Shutter speed. */
   1.192 +static const TUid  KUidECamEventCameraSettingShutterSpeed 		= {KUidECamEventCameraSettingShutterSpeedUidValue};
   1.193 +/** Shutter speed range.  */
   1.194 +static const TUid  KUidECamEventCameraSettingShutterSpeedRange 	= {KUidECamEventCameraSettingShutterSpeedRangeUidValue};
   1.195 +/**  Metering mode. */
   1.196 +static const TUid  KUidECamEventCameraSettingMeteringMode 		= {KUidECamEventCameraSettingMeteringModeUidValue};
   1.197 +/** Drive mode. */
   1.198 +static const TUid  KUidECamEventCameraSettingDriveMode 			= {KUidECamEventCameraSettingDriveModeUidValue};
   1.199 +/** Braket mode. */
   1.200 +static const TUid  KUidECamEventCameraSettingBracketMode 		= {KUidECamEventCameraSettingBracketModeUidValue};
   1.201 +/** Bracket step. */
   1.202 +static const TUid  KUidECamEventCameraSettingBracketStep 		= {KUidECamEventCameraSettingBracketStepUidValue};
   1.203 +/** Bracket parameter. */
   1.204 +static const TUid  KUidECamEventCameraSettingBracketParameter 	= {KUidECamEventCameraSettingBracketParameterUidValue};
   1.205 +/** Bracket merge. */
   1.206 +static const TUid  KUidECamEventBracketMerge					= {KUidECamEventBracketMergeUidValue};
   1.207 +/** Picture orientation.  */
   1.208 +static const TUid  KUidECamEventCameraSettingPictureOrientation = {KUidECamEventCameraSettingPictureOrientationUidValue};
   1.209 +/** Automatic size selection option */
   1.210 +static const TUid  KUidECamEventCameraSettingAutomaticSizeSelection = {KUidECamEventCameraSettingAutomaticSizeSelectionUidValue};
   1.211 +/** Flash setting. */
   1.212 +static const TUid  KUidECamEventCameraSettingFlashMode 			= {KUidECamEventCameraSettingFlashModeUidValue};
   1.213 +/** Flash compensation step. */
   1.214 +static const TUid  KUidECamEventCameraSettingFlashCompensationStep 		= {KUidECamEventCameraSettingFlashCompensationStepUidValue};
   1.215 +/** Flash compensation. */
   1.216 +static const TUid  KUidECamEventCameraSettingFlashCompensation 	= {KUidECamEventCameraSettingFlashCompensationUidValue};
   1.217 +/** Manual flash power. */
   1.218 +static const TUid  KUidECamEventCameraSettingFlashManualPower 	= {KUidECamEventCameraSettingFlashManualPowerUidValue};
   1.219 +/** Red eye reduce mode. */
   1.220 +static const TUid  KUidECamEventCameraSettingFlashRedEyeReduce 	= {KUidECamEventCameraSettingFlashRedEyeReduceUidValue};
   1.221 +/** Exposure mode setting. */
   1.222 +static const TUid  KUidECamEventCameraSettingExposureMode 		= {KUidECamEventCameraSettingExposureModeUidValue};
   1.223 +/** Exposure compensation step. */
   1.224 +static const TUid  KUidECamEventCameraSettingExposureCompensationStep 	= {KUidECamEventCameraSettingExposureCompensationStepUidValue};
   1.225 +/** Exposure compensation. */
   1.226 +static const TUid  KUidECamEventCameraSettingExposureCompensation 		= {KUidECamEventCameraSettingExposureCompensationUidValue};
   1.227 +/** Exposure lock state. */
   1.228 +static const TUid  KUidECamEventCameraSettingExposureLock 		= {KUidECamEventCameraSettingExposureLockUidValue};
   1.229 +/** AE lock option. */
   1.230 +static const TUid  KUidECamEventAELock 							= {KUidECamEventAELockUidValue};
   1.231 +/** White balance.  */
   1.232 +static const TUid  KUidECamEventCameraSettingWhiteBalanceMode 	= {KUidECamEventCameraSettingWhiteBalanceModeUidValue};
   1.233 +/** Timer changed. */
   1.234 +static const TUid  KUidECamEventCameraSettingTimerInterval 		= {KUidECamEventCameraSettingTimerIntervalUidValue};
   1.235 +/** Timer lapse period.  */
   1.236 +static const TUid  KUidECamEventCameraSettingTimeLapse			= {KUidECamEventCameraSettingTimeLapseUidValue};
   1.237 +/** Optical zoom. */
   1.238 +static const TUid  KUidECamEventCameraSettingOpticalZoom 		= {KUidECamEventCameraSettingOpticalZoomUidValue};
   1.239 +/** Optical zoom range.  */
   1.240 +static const TUid  KUidECamEventCameraSettingOpticalZoomRange 	= {KUidECamEventCameraSettingOpticalZoomRangeUidValue};
   1.241 +/** Digital zoom. */
   1.242 +static const TUid  KUidECamEventCameraSettingDigitalZoom 		= {KUidECamEventCameraSettingDigitalZoomUidValue};
   1.243 +/** Digital zoom range.  */
   1.244 +static const TUid  KUidECamEventCameraSettingDigitalZoomRange 	= {KUidECamEventCameraSettingDigitalZoomRangeUidValue};
   1.245 +/** Clicking sound state.  */
   1.246 +static const TUid  KUidECamEventSoundClick 						= {KUidECamEventSoundClickUidValue};
   1.247 +/** Pixel aspect ratio. */
   1.248 +static const TUid  KUidECamEventPixelAspectRatio 				= {KUidECamEventPixelAspectRatioUidValue};
   1.249 +/** Yuv range. */
   1.250 +static const TUid  KUidECamEventYuvRange 						= {KUidECamEventYuvRangeUidValue};
   1.251 +/** Burst images. */
   1.252 +static const TUid  KUidECamEventBurstImages						= {KUidECamEventBurstImagesUidValue};
   1.253 +/** Stabilization effect - magnitude of stabilization */
   1.254 +static const TUid KUidECamEventCameraSettingsStabilizationEffect 		= {KUidECamEventCameraSettingsStabilizationEffectUidValue};
   1.255 +/** Stabilization algorithm */
   1.256 +static const TUid KUidECamEventSettingsStabilizationAlgorithmComplexity = {KUidECamEventSettingsStabilizationAlgorithmComplexityUidValue};
   1.257 +/** Continuous Autofocus timeout */
   1.258 +static const TUid KUidECamEventCameraSettingsContinuousAutoFocusTimeout = {KUidECamEventCameraSettingsContinuousAutoFocusTimeoutUidValue};
   1.259 +/** White Balance manual setting */
   1.260 +static const TUid KUidECamEventCameraSettingsWBValue 					= {KUidECamEventCameraSettingsWBValueUidValue};	
   1.261 +/** Flash ready */
   1.262 +static const TUid KUidECamEventFlashReady 						= {KUidECamEventFlashReadyUidValue};	
   1.263 +/** Flash not ready */
   1.264 +static const TUid KUidECamEventFlashNotReady 					= {KUidECamEventFlashNotReadyUidValue};
   1.265 +/** Focus range. 
   1.266 +This is the new UID value to notify change on focus range and takes immediate effect as previous UID KUidECamEventCameraSettingFocusRange has been deprecated.
   1.267 +@see KUidECamEventCameraSettingFocusRange */
   1.268 +static const TUid  KUidECamEventCameraSettingFocusRange2 		= {KUidECamEventCameraSettingFocusRange2UidValue};
   1.269 +/** Autofocus type.
   1.270 +This is the new UID value to notify change on autofocus type and takes immediate effect as previous UID KUidECamEventCameraSettingAutoFocusType has been deprecated.
   1.271 +@see KUidECamEventCameraSettingAutoFocusType */
   1.272 +static const TUid  KUidECamEventCameraSettingAutoFocusType2 		= {KUidECamEventCameraSettingAutoFocusType2UidValue};
   1.273 +
   1.274 +/** 
   1.275 +ISO Rate type. 
   1.276 +
   1.277 +This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.278 +void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.279 +void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.280 +void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.281 +
   1.282 +*/
   1.283 +static const TUid  KUidECamEventCameraSettingIsoRateType 		= {KUidECamEventCameraSettingIsoRateTypeUidValue};
   1.284 +
   1.285 +/** 
   1.286 +Reference Screen setting. 
   1.287 +
   1.288 +This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.289 +void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.290 +void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.291 +void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.292 +
   1.293 +*/
   1.294 +static const TUid  KUidECamEventCameraSettingReferenceScreen    = {KUidECamEventCameraSettingReferenceScreenUidValue};
   1.295 +
   1.296 +/** 
   1.297 +Pre Capture Warning indication.
   1.298 +
   1.299 +This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.300 +void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.301 +void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.302 +void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.303 +
   1.304 +*/
   1.305 +static const TUid  KUidECamEventCameraSettingAFAssistantLight	= {KUidECamEventCameraSettingAFAssistantLightUidValue};
   1.306 +
   1.307 +/**
   1.308 +Notifies the client that continuous zoom limit has been reached.
   1.309 +
   1.310 +This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.311 +void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.312 +void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.313 +void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.314 +
   1.315 +@publishedPartner
   1.316 +@prototype
   1.317 +*/
   1.318 +static const TUid KUidECamEventCameraSettingContinuousZoomReachedLimit = {KUidECamEventCameraSettingContinuousZoomReachedLimitUidValue};
   1.319 +
   1.320 +/**
   1.321 +Notifies the client about the setting of performance operation preference.
   1.322 +
   1.323 +This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.324 +void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.325 +void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.326 +void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.327 +
   1.328 +@publishedPartner
   1.329 +@prototype
   1.330 +*/
   1.331 +static const TUid KUidECamEventCameraSettingOperationPreference = {KUidECamEventCameraSettingOperationPreferenceUidValue};
   1.332 +
   1.333 +/**
   1.334 +Notifies the client that the flicker removal value has been set.
   1.335 +
   1.336 +This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.337 +void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.338 +void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.339 +void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.340 +
   1.341 +@internalTechnology
   1.342 +*/
   1.343 +static const TUid KUidECamEventCameraSettingFlickerRemovalValue = {KUidECamEventCameraSettingFlickerRemovalValueUidValue};
   1.344 +
   1.345 +/**
   1.346 +Notifies the client about the setting of neutral density filter.
   1.347 +
   1.348 +This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.349 +void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.350 +void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.351 +void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.352 +
   1.353 +@internalTechnology
   1.354 +*/
   1.355 +static const TUid KUidECamEventCameraSettingNDFilter = {KUidECamEventCameraSettingNDFilterUidValue};
   1.356 +
   1.357 +/**
   1.358 +Notifies the client about the setting of LED effect.
   1.359 +
   1.360 +This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.361 +void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.362 +void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.363 +void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.364 +
   1.365 +@internalTechnology
   1.366 +*/
   1.367 +static const TUid KUidECamEventCameraSettingLEDEffect = {KUidECamEventCameraSettingLEDEffectUidValue};
   1.368 +
   1.369 +/**
   1.370 +Notifies the client about the setting of LED 'custom' effect.
   1.371 +
   1.372 +This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.373 +void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.374 +void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.375 +void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.376 +
   1.377 +@internalTechnology
   1.378 +*/
   1.379 +static const TUid KUidECamEventCameraSettingLEDCustomEffect = {KUidECamEventCameraSettingLEDCustomEffectUidValue};
   1.380 +
   1.381 +/**
   1.382 +Notifies the client about the white balance lock setting.
   1.383 +
   1.384 +This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.385 +void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.386 +void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.387 +void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.388 +
   1.389 +@internalTechnology
   1.390 +*/
   1.391 +static const TUid KUidECamEventCameraSettingLockWhiteBalance = {KUidECamEventCameraSettingLockWhiteBalanceUidValue};
   1.392 +
   1.393 +/**
   1.394 +Instructs the client to restore its original priority.
   1.395 +
   1.396 +This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L():
   1.397 +void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray<TUid>& aSettings) const;
   1.398 +void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
   1.399 +void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
   1.400 +
   1.401 +@internalTechnology
   1.402 +*/
   1.403 +static const TUid KUidECamEventCameraSettingRestoreClientPriority = {KUidECamEventCameraSettingRestoreClientPriorityUidValue};
   1.404 +
   1.405 +/** 
   1.406 +CCamera advanced settings class exposes an API for controlling individually 
   1.407 +digital camera advanced settings. These settings directly relate to the 
   1.408 +image acquisition phase both for still images and video.
   1.409 +
   1.410 +@note This class is not intended for sub-classing  and used to standardise existing
   1.411 +       varieties of implementations.
   1.412 +       
   1.413 +@note   If the class methods leave, the output type parameter value is not guaranteed to be valid.
   1.414 +
   1.415 +@publishedAll
   1.416 +@released
   1.417 +*/
   1.418 +class CCamera::CCameraAdvancedSettings : public CBase
   1.419 +	{
   1.420 +	/* so can use internal factory functions etc. */
   1.421 +	friend class CCamera;
   1.422 +
   1.423 +public:
   1.424 +   
   1.425 +	/** Specifies camera type. */ 
   1.426 +	enum TCameraType
   1.427 +		{
   1.428 +		/** Unable to identify. */  
   1.429 +		ECameraUnknown 		= 0x00, 
   1.430 +		/** Camera is non-detachable from device. Camera is always present. */
   1.431 +		ECameraOnBoard	 	= 0x01,
   1.432 +		/** Camera is detachable from device. Camera is not always present. */
   1.433 +		ECameraPluggable 	= 0x02
   1.434 +		};
   1.435 +	
   1.436 +	/** Specifies stabilization mode of the camera. */
   1.437 +	enum TStabilizationMode
   1.438 +		{
   1.439 +		/** Not present or switched off, default */
   1.440 +		EStabilizationModeOff			= 0x00,
   1.441 +		/** Stabilization only in horizontal direction. */
   1.442 +		EStabilizationModeHorizontal	= 0x01,
   1.443 +		/** Stabilization only in vertical direction. */
   1.444 +		EStabilizationModeVertical		= 0x02,
   1.445 +		/** Rotational stabilization. */
   1.446 +		EStabilizationModeRotation		= 0x04,
   1.447 +		/** Automatic stabilization. */
   1.448 +		EStabilizationModeAuto			= 0x08,
   1.449 +		/** Manual stabilization. */
   1.450 +		EStabilizationModeManual		= 0x10   
   1.451 +		};
   1.452 +	
   1.453 +	/** Supported magnitudes of stabilization effect when in manual mode. */	
   1.454 +	enum TStabilizationEffect
   1.455 +		{
   1.456 +		/** Stabilization effect is off. */ 
   1.457 +		EStabilizationOff		= 0x00, 
   1.458 +		/** Stabilization effect is automatic, default. */
   1.459 +		EStabilizationAuto		= 0x01,
   1.460 +		/** Stabilization effect is very small in magnitude. */
   1.461 +		EStabilizationFine 		= 0x02,
   1.462 +		/** Stabilization effect is average in magnitude. */
   1.463 +		EStabilizationMedium	= 0x04,
   1.464 +		/** Stabilization effect is large in magnitude. */
   1.465 +		EStabilizationStrong	= 0x08
   1.466 +		};
   1.467 +	
   1.468 +	/** Supported stabilization algorithms, graded on complexity. */	
   1.469 +	enum TStabilizationAlgorithmComplexity
   1.470 +		{
   1.471 +		/** Stabilization algorithm selection is automatic, default. */ 
   1.472 +		EStabilizationComplexityAuto	= 0x00, 
   1.473 +		/** Stabilization algorithm is simple - less precise but fast. */
   1.474 +		EStabilizationComplexityLow		= 0x01,
   1.475 +		/** Stabilization algorithm is of medium complexity. */
   1.476 +		EStabilizationComplexityMedium	= 0x02,
   1.477 +		/** Stabilization algorithm is of high complexity. */
   1.478 +		EStabilizationComplexityHigh	= 0x04
   1.479 +		};
   1.480 +		
   1.481 +	/** Supported focus modes. */	
   1.482 +	enum TFocusMode
   1.483 +		{
   1.484 +		/** Focus mode is unknown. */ 
   1.485 +		EFocusModeUnknown	= 0x00, 
   1.486 +		/** Focus is automatic, default. */
   1.487 +		EFocusModeAuto		= 0x01,
   1.488 +		/** Focus is fixed. */
   1.489 +		EFocusModeFixed 	= 0x02,
   1.490 +		/** Focus is manually set. */
   1.491 +		EFocusModeManual	= 0x04
   1.492 +		};
   1.493 +	
   1.494 +	/** Supported focus ranges. */	
   1.495 +	enum TFocusRange
   1.496 +		{
   1.497 +		/** Auto. Default */
   1.498 +		EFocusRangeAuto 		= 0x00,
   1.499 +		/** Focus operates in close range (macro). */
   1.500 +		EFocusRangeMacro		= 0x01,
   1.501 +		/** Normal operation. */
   1.502 +		EFocusRangeNormal		= 0x02,
   1.503 +		/** Extended (tele) operation. */
   1.504 +		EFocusRangeTele			= 0x04,
   1.505 +		/** Focus at larger areas at short to medium distance. */
   1.506 +		EFocusRangePortrait		= 0x08,
   1.507 +		/** Optimised macro operation, 
   1.508 +		where depth of field is very shallow and observation area changes quickly. */
   1.509 +		EFocusRangeSuperMacro	= 0x10,
   1.510 +		/** 
   1.511 +		All objects at distances from half of the hyperfocal distance out to infinity will be in focus.
   1.512 +		This gives gives maximum depth of field.
   1.513 +		
   1.514 +		This enum value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
   1.515 +		CCamera::NewDuplicate2L().
   1.516 +		
   1.517 +		*/ 
   1.518 +		EFocusRangeHyperfocal 	= 0x20,
   1.519 +		/** 
   1.520 +		When there is a near obstacle or better focus wanted for far away objects.
   1.521 +		
   1.522 +		This enum value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
   1.523 +		CCamera::NewDuplicate2L().
   1.524 +		
   1.525 +		*/ 
   1.526 +		EFocusRangeInfinite		= 0x40
   1.527 +		};	
   1.528 +			
   1.529 +	/** Specifies the supported autofocus types. */
   1.530 +	enum TAutoFocusType
   1.531 +		{
   1.532 +		/** Autofocus is switched off. */
   1.533 +		EAutoFocusTypeOff	 		= 0x00,
   1.534 +		/** Operates on a single shot, consumes less power. */
   1.535 +		EAutoFocusTypeSingle	 	= 0x01,
   1.536 +		/** Continious autofocus, more precise but consumes more power. 
   1.537 +		    also known as AF Servo. */
   1.538 +		EAutoFocusTypeContinuous	= 0x02
   1.539 +		};
   1.540 +		
   1.541 +	/** Specifies the autofocus area. */
   1.542 +	enum TAutoFocusArea
   1.543 +		{
   1.544 +		/** Automatic. Default value */
   1.545 +		EAutoFocusTypeAuto				= 0x00,
   1.546 +		/** Single area, suitable for relatively flat surfaces and portrait. */
   1.547 +		EAutoFocusTypeSingleArea		= 0x01,
   1.548 +		/** Multiple points of an object, more weighting for centre points. */
   1.549 +		EAutoFocusTypeMultiAreaCentered	= 0x02
   1.550 +		};
   1.551 +
   1.552 +	/** Specifies the Metering mode for the camera. 
   1.553 +	EMeteringModeAuto is the default value. */	
   1.554 +	enum TMeteringMode
   1.555 +		{
   1.556 +		/** Automatic mode, default. */	
   1.557 +		EMeteringModeAuto				= 0x0000, 
   1.558 +		/** Metering in which the center is given a weighted priority. */	
   1.559 +		EMeteringModeCenterWeighted		= 0x0001,
   1.560 +		/** Metering of a central area/spot only, also known as partial. */	
   1.561 +		EMeteringModeSpot				= 0x0002, 
   1.562 +		/** Metering is evaluated over a matrix(several spots) and calculated 
   1.563 +		    as a function of that. Usually best but with increased 
   1.564 +		    power consumption. Alternative name multi-metering mode. */	
   1.565 +		EMeteringModeEvaluative			= 0x0004
   1.566 +		};	
   1.567 +
   1.568 +	/** Specifies the drive mode for the camera. This determines how and in what sucession are images 
   1.569 +    shot. EDriveModeSingleShot is the default.*/				
   1.570 +	enum TDriveMode
   1.571 +		{
   1.572 +		/** Automatic. Default */
   1.573 +		EDriveModeAuto			= 0x0000,
   1.574 +		/** Camera takes a single image/shot. */	
   1.575 +		EDriveModeSingleShot	= 0x0001,
   1.576 +		/** Camera continuously captures images (as fast as it can) until stopped or out of storage medium. */	
   1.577 +		EDriveModeContinuous	= 0x0002,
   1.578 +		/** Camera is in bracketing mode, producing individual frames. @see TBracketMode */	
   1.579 +		EDriveModeBracket		= 0x0004,
   1.580 +		/** Camera is in bracketing mode, but producing a single image. @see TBracketMode */	
   1.581 +		EDriveModeBracketMerge	= 0x0008,
   1.582 +		/** camera captures a single shot after specified time period. @see Timer() */	
   1.583 +		EDriveModeTimed			= 0x0010,
   1.584 +		/** Camera captures a set of images with an uniform interval between them. @see TimeLapse() */	
   1.585 +		EDriveModeTimeLapse		= 0x0020,
   1.586 +		/** Camera captures a set of images as fast as it can, but in batches(bursts). */	
   1.587 +		EDriveModeBurst			= 0x0040		
   1.588 +		};
   1.589 +
   1.590 +	/** Specifies Bracket mode. */				
   1.591 +	enum TBracketMode
   1.592 +		{
   1.593 +		/** Bracket mode is switched off. Default value. */	
   1.594 +		EBracketModeOff			= 0x0000,
   1.595 +		/** Bracket mode on. Three consecutive pictures are taken in order
   1.596 +			under (-1), on (0), over (+1), where correction magnitude 
   1.597 +			is defined by bracket step size and by TBracketParameter 
   1.598 +			@see TBracketStep
   1.599 +			@see TBracketParameter */	
   1.600 +		EBracketMode3Image		= 0x0001, 
   1.601 +		/** Bracket mode on. Five consecutive pictures are taken in order
   1.602 +			under (-2),under (-1), on (0), over (+1), over (+2), where correction magnitude 
   1.603 +			is defined by bracket step size and by TBracketParameter
   1.604 +			@see TBracketStep 
   1.605 +			@see TBracketParameter */	
   1.606 +		EBracketMode5Image		= 0x0002  
   1.607 +		};	
   1.608 +
   1.609 +	/** Supported parameters used for bracketing.
   1.610 +	@note Bracket mode parameter value changes by 
   1.611 +	a selected uniform step between successive image shots. 
   1.612 +	@see TBracketStep 
   1.613 +	@see TBracketMode.	*/			
   1.614 +	enum TBracketParameter
   1.615 +		{
   1.616 +		/** None. */	
   1.617 +		EBracketParameterNone			= 0x0000,
   1.618 +		/** Exposure settings change. */	
   1.619 +		EBracketParameterExposure		= 0x0001,
   1.620 +		/** Flash power change. */		
   1.621 +		EBracketParameterFlashPower	    = 0x0002,
   1.622 +		/** Colour balance settings change. */		
   1.623 +		EBracketParameterColourBalance	= 0x0004,
   1.624 +		/** Aperture settings change. */
   1.625 +		BracketParameterAperture		= 0x0008, 
   1.626 +		/** Autofocus settings change. */ 
   1.627 +		BracketParameterAutoFocus		= 0x0010
   1.628 +		};
   1.629 +		
   1.630 +	/** Specifies the magnitude of bracketing step. 
   1.631 +	The actual value and availability is parameter dependent.
   1.632 +	@see TBracketParameter 
   1.633 +	*/				
   1.634 +	enum TBracketStep
   1.635 +		{
   1.636 +		/** Not supported. */
   1.637 +		EBracketStepNonConfig	= 0x00, 
   1.638 +		/** Small value. */	
   1.639 +		EBracketStepSmall		= 0x01,
   1.640 +		/** Medium value. */	
   1.641 +		EBracketStepMedium 	    = 0x02,
   1.642 +		/** Large value. */	
   1.643 +		EBracketStepLarge		= 0x04
   1.644 +		};
   1.645 +
   1.646 +	/** Specifies the orientation of the picture. */		
   1.647 +	enum TPictureOrientation
   1.648 +		{
   1.649 +		/** No information about picture orientation. */	
   1.650 +		EPictureOrientationUnknown		= 0x00,
   1.651 +		/** Portrait - height larger than width. */	
   1.652 +		EPictureOrientationPortrait		= 0x01,
   1.653 +		/** Landscape width larger than height. */	
   1.654 +		EPictureOrientationLandscape	= 0x02,
   1.655 +		/** Square width equals the height. */	
   1.656 +		EPictureOrientationSquare		= 0x04
   1.657 +		};	
   1.658 +
   1.659 +	/** Specifies the pixel aspect ratio  
   1.660 +	@note It is specified as a fraction of  
   1.661 +	(x) horizontal pixel size divided by vertical (y) pixel size. 
   1.662 +	The pixel aspect ratio for square pixels is 1/1. 
   1.663 +	*/		
   1.664 +	enum TPixelAspectRatio
   1.665 +		{
   1.666 +		/** Pixel ratio undetermined */
   1.667 +		EPixelAspectUnknown		= 0x00,
   1.668 +		/** Pixel Ratio 1:1. */	
   1.669 +		EPixelAspect1To1		= 0x01,
   1.670 +		/** Pixel Ratio 12:11 */	
   1.671 +		EPixelAspect12To11		= 0x02,
   1.672 +		/** Pixel Ratio 11:10. */	
   1.673 +		EEPixelAspect11To10		= 0x04,
   1.674 +		/** Pixel Ratio 59:54. */	
   1.675 +		EEPixelAspect59To54		= 0x08,
   1.676 +		/** Pixel Ratio 16:11.
   1.677 +		    @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
   1.678 +		*/	
   1.679 +		EEPixelAspect16To11		= 0x10,
   1.680 +		/** Pixel Ratio 10:11.
   1.681 +		    @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
   1.682 +		*/	
   1.683 +		EEPixelAspect10To11		= 0x20,		
   1.684 +		/** Pixel Ratio 40:33. 
   1.685 +		    @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
   1.686 +		*/	
   1.687 +		EEPixelAspect40To33		= 0x40
   1.688 +		};
   1.689 +	
   1.690 +	/** Specifies YUV colour space dynamic range. 
   1.691 +	@note video compressors often use narrower than the default range.
   1.692 +	The nominal Y range is [16:235] and the U and V ranges [16:240]. 
   1.693 +	*/		
   1.694 +	enum TYuvRange
   1.695 +		{
   1.696 +		/** Yuv range undetermined */
   1.697 +		EYuvRangeUnknown		= 0x00,
   1.698 +		/** Yuv Full Range. The nominal Y,U and V colours range is [0:255].  */	
   1.699 +		EYuvRangeFull			= 0x01,
   1.700 +		/** Yuv Cropped Range. The nominal Y range is [16:235] and the U and V ranges [16:240]. */	
   1.701 +		EYuvRangeVideoCropped	= 0x02
   1.702 +		};
   1.703 +	
   1.704 +	/** Specifies the units supported by the camera for manual white balance setting. 
   1.705 +	 */				
   1.706 +	enum TWBUnits
   1.707 +		{
   1.708 +		/** The units type is undetermined or not supported. */ 
   1.709 +		EWBUnknown,
   1.710 +		/** The white balance is represented as temperature degrees in Kelvin. */   	
   1.711 +		EWBColorTemperature,
   1.712 +		/** The white balance is represented as RGB triples.  */ 
   1.713 +		EWBRgb
   1.714 +		};
   1.715 +		
   1.716 +	/** 
   1.717 +	Specifies the ISO type supported by the camera. ISO refers to the sensivity of the 
   1.718 +	image sensor and is one of the factors influencing the exposure.
   1.719 +	
   1.720 +	*/		
   1.721 +	enum TISORateType
   1.722 +		{
   1.723 +		/** ISO Not supported. Camera uses a fixed ISO rate internally and never reveals this information. */
   1.724 +		EISONone						 = 0x00,
   1.725 +		/** 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. */
   1.726 +		EISOManual 						 = 0x01,
   1.727 +		/** Camera chooses the ISO on its own without prioritising any particular exposure parameters. */
   1.728 +		EISOAutoUnPrioritised 			 = 0x02,	
   1.729 +		/** Camera chooses the ISO on its own by prioritising ISO. */
   1.730 +		EISOAutoISOPrioritised 		 	 = 0x04,	
   1.731 +		/** Camera chooses the ISO on its own after prioritising shutter speed. */
   1.732 +		EISOAutoShutterSpeedPrioritised  = 0x08,
   1.733 +		/** Camera chooses the ISO on its own after prioritising aperture opening. */	
   1.734 +		EISOAutoAperturePrioritised 	 = 0x10	
   1.735 +		};
   1.736 +			  	
   1.737 +	/** 
   1.738 +	Specifies the unfavourable circumstances as pre capture warnings which may be issued before image/video capture. 
   1.739 +	
   1.740 +	*/	
   1.741 +	enum TPreCaptureWarning
   1.742 +		{
   1.743 +		/** No warnings */
   1.744 +		EPCWNone 						= 0x0000,
   1.745 +		/** warning to indicate that camera sensor is over exposed */
   1.746 +		EPCWOverExposure 				= 0x0001,
   1.747 +		/** warning to indicate that camera sensor is under exposed */
   1.748 +		EPCWUnderExposure 				= 0x0002,
   1.749 +		/** warning to indicate that camera operates under insufficient lightning conditions */
   1.750 +		EPCWLowLight 					= 0x0004,
   1.751 +		/** warning to indicate that focussing is not optimum. This is valid for manual/fixed focus only */
   1.752 +		EPCWBadFocus 					= 0x0008, 
   1.753 +		/** warning to indicate that camera might not be firmly gripped (Tripod required). This is same as long exposure */ 
   1.754 +		EPCWHandShakePossible 			= 0x0010,  
   1.755 +		/** warning to indicate that camera has not enough power to survive the flash operations (battery discharged) */
   1.756 +		EPCWNotEnoughPowerForFlash 		= 0x0020,
   1.757 +		/** warning to indicate that the current white balance is not the desired one */
   1.758 +		EPCWWrongWhiteBalanceValue 		= 0x0040,
   1.759 +		/** warning to indicate that the current flash value is not the desired one */
   1.760 +		EPCWWrongFlashValue 			= 0x0080,
   1.761 +		/** warning to indicate that the current digital zoom value is not the desired one */
   1.762 +		EPCWWrongDigiZoomValue 			= 0x0100,
   1.763 +		/** warning to indicate that the desired digital zoom affects the quality of image */
   1.764 +		EPCWDigiZoomBadQuality        	= 0x0200, 
   1.765 +		/** warning to indicate that flash is not ready. Recommendation: user may subscribe for this warning or issue 
   1.766 +		IsFlashReady() also. Using both options is not encouraged */
   1.767 +		EPCWFlashNotReady				= 0x0400,
   1.768 +		/** unknown reason */
   1.769 +		EPCWGeneralWarning 				= 0x0800,
   1.770 +		/** warning to indicate that flash has been overheated.
   1.771 +		
   1.772 +		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
   1.773 +		
   1.774 +		@publishedPartner
   1.775 +		@prototype
   1.776 +		*/
   1.777 +		EPCWFlashOverheated				= 0x1000,
   1.778 +		/** warning to indicate that flash will not be fired because of enough ambient light.
   1.779 +		
   1.780 +		@note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L()
   1.781 +		
   1.782 +		@publishedPartner
   1.783 +		@prototype
   1.784 +		*/
   1.785 +		EPCWFlashNotNeeded				= 0x2000
   1.786 +		};
   1.787 +		
   1.788 +	/**
   1.789 +	Describes the camera mode.
   1.790 +	
   1.791 +	*/	
   1.792 +	enum TCameraMode
   1.793 +		{
   1.794 +		/** Camera is Idle */
   1.795 +		EModeIdle				= 0x00,
   1.796 +		/** DSA based Viewfinder runs */
   1.797 +		EModeDSAViewFinder		= 0x01,
   1.798 +		/** Client based Viewfinder runs */
   1.799 +		EModeClientViewFinder	= 0x02		
   1.800 +		};
   1.801 +		
   1.802 +	/** 
   1.803 +	Specifies the different types of auto focus assistant light	
   1.804 +	*/
   1.805 +	enum TAFAssistantLight
   1.806 +		{
   1.807 +		/** switch off the AF assistant light from either of 'manual on' or 'auto' mode */
   1.808 +		EAFAssistantLightOff 			= 0x00, 
   1.809 +		/** switch on the AF assistant light manually */
   1.810 +		EAFAssistantLightManualOn 		= 0x01,
   1.811 +		/** Put the AF assistant light in auto mode. It will be automatically decided when to switch on or off. */
   1.812 +		EAFAssistantLightAuto 			= 0x02
   1.813 +		};
   1.814 +	
   1.815 +	/**
   1.816 +	Specifies the different types of continuous zoom supported.
   1.817 +	The enumeration list may be extended in future.
   1.818 +	
   1.819 +	@publishedPartner
   1.820 +	@prototype
   1.821 +	*/
   1.822 +	enum TContinuousZoomType
   1.823 +		{
   1.824 +		/** Continuous zoom not supported */
   1.825 +		EContinuousZoomNotSupported		= 0x00,
   1.826 +		/** Continuous zoom 'Optical' only, No 'Digital' */
   1.827 +		EContinuousZoomOpticalOnly		= 0x01,
   1.828 +		/** Continuous zoom 'Optical' and 'Digital' */
   1.829 +		EContinuousZoomMixed			= 0x02,
   1.830 +		/** Continuous zoom 'Digital' only, No 'Optical' */
   1.831 +		EContinuousZoomDigitalOnly		= 0x04
   1.832 +		};
   1.833 +	
   1.834 +	/**
   1.835 +	Specifies the zoom direction for continuous zoom operation. 
   1.836 +	The enumeration list may be extended in future.
   1.837 +	
   1.838 +	@publishedPartner
   1.839 +	@prototype
   1.840 +	*/	
   1.841 +	enum TZoomDirection
   1.842 +		{
   1.843 +		/** Implies that feature not supported. */
   1.844 +		EZoomDirectionNone		=0x00,
   1.845 +		/** Implies zooming out. */
   1.846 +		EZoomDirectionWide		=0x01,
   1.847 +		/** Implies zooming in. */
   1.848 +		EZoomDirectionTele		=0x02
   1.849 +		};
   1.850 +	
   1.851 +	/**
   1.852 +	Different levels for performance vectors like speed, quality, low memory consumption and low power consumption.
   1.853 +	The enumeration list may be extended in future.
   1.854 +	
   1.855 +	@publishedPartner
   1.856 +	@prototype
   1.857 +	*/	
   1.858 +	enum TPerformanceLevel
   1.859 +		{
   1.860 +		/** High level preference. */
   1.861 +		ELevelHigh			= 1,
   1.862 +		/** Medium level preference. */
   1.863 +		ELevelMedium		= 2,
   1.864 +		/** Low level preference. */
   1.865 +		ELevelLow			= 3,
   1.866 +		/** Dont care (No preference). */
   1.867 +		ELevelDontCare		= 4
   1.868 +		};
   1.869 +	
   1.870 +	/**
   1.871 +	Specifies flicker removal options.
   1.872 +	The enumeration list may be extended in future. 
   1.873 +	
   1.874 +	@internalTechnology
   1.875 +	*/
   1.876 +	enum TFlickerRemoval
   1.877 +		{
   1.878 +		/** Not Supported. */
   1.879 +		EFlickerRemovalNone  		= 0x00,
   1.880 +		/** Flicker removal for Field frequency of 50Hz. */
   1.881 +		EFlickerRemoval50Hz 		= 0x01,
   1.882 +		/** Flicker removal for Field frequency of 60Hz. */
   1.883 +		EFlickerRemoval60Hz			= 0x02,
   1.884 +		/** Auto flicker removal. */
   1.885 +		EFlickerRemovalAuto 		= 0x04,
   1.886 +		/** Switch Off flicker removal. */
   1.887 +		EFlickerRemovalSwitchOff   	= 0x08
   1.888 +		};
   1.889 +	
   1.890 +	/**
   1.891 +	Specifes the type of neutral density filters available. 
   1.892 +	The enumeration list may be extended in future.
   1.893 +	
   1.894 +	@internalTechnology
   1.895 +	*/
   1.896 +	enum TNDFilter
   1.897 +		{
   1.898 +		/** Not Supported. */
   1.899 +		ENDFilterNone  			= 0x00,
   1.900 +		/** Auto ND Filter. */
   1.901 +		ENDFilterAuto	  		= 0x01,
   1.902 +		/** Switched off ND Filter. */
   1.903 +		ENDFilterSwitchedOff	= 0x02,
   1.904 +		/** High level ND Filter. */
   1.905 +		ENDFilterHigh	 		= 0x04,
   1.906 +		/** Medium level ND Filter. */
   1.907 +		ENDFilterMedium	   		= 0x08,
   1.908 +		/** Low level ND Filter. */
   1.909 +		ENDFilterLow			= 0x10,
   1.910 +		/** General ND Filter. */
   1.911 +		ENDFilterGeneral		= 0x20
   1.912 +		};
   1.913 +	
   1.914 +	/**
   1.915 +	Specifies the various events for which the LED effects could be used.
   1.916 +	The enumeration list may be extended in future.
   1.917 +	
   1.918 +	@internalTechnology
   1.919 +	*/
   1.920 +	enum TLEDEvent
   1.921 +		{
   1.922 +		/** Not supported. */
   1.923 +		ELEDEventNone 				= 0x00,
   1.924 +		/** LED effect needed for self timer. */
   1.925 +		ELEDEventSelfTimer 			= 0x01,
   1.926 +		/** LED effect needed for starting of viewfinder. */
   1.927 +		ELEDEventViewfinderStart 	= 0x02,
   1.928 +		/** LED effect needed for stoping of viewfinder. */
   1.929 +		ELEDEventViewfinderStop		= 0x04,
   1.930 +		/** LED effect needed for still image capture. */
   1.931 +		ELEDEventStillImageCapture	= 0x08,
   1.932 +		/** LED effect needed for video recording. */
   1.933 +		ELEDEventVideoRecording		= 0x10
   1.934 +		};
   1.935 +	
   1.936 +	/**
   1.937 +	Specifes the type of LED effects available. 
   1.938 +	The enumeration list may be extended in future.
   1.939 +	
   1.940 +	@internalTechnology
   1.941 +	*/
   1.942 +	enum TLEDEffect
   1.943 +		{
   1.944 +		/** Not supported. */
   1.945 +		ELEDEffectNone				=0x00,
   1.946 +		/** LED always on. */
   1.947 +		ELEDEffectHardwired			=0x01,
   1.948 +		/** LED auto. */
   1.949 +		ELEDEffectAuto				=0x02,
   1.950 +		/** LED Effect manually switched on. */
   1.951 +		ELEDEffectManualSwitchOn	=0x04,
   1.952 +		/** LED Effect switched off. */
   1.953 +		ELEDEffectSwitchOff			=0x08,
   1.954 +		/** LED Custom Effect. */
   1.955 +		ELEDEffectCustom			=0x10
   1.956 +		};
   1.957 +	
   1.958 +	/**
   1.959 +	Color channels on which manual gain can be selectively applied.
   1.960 +	The enumeration list may be extended in future.
   1.961 +	
   1.962 +	@internalTechnology
   1.963 +	*/	
   1.964 +	enum TColorChannel
   1.965 +		{
   1.966 +		/** Red Color Channel (RGB model). */
   1.967 +		EColorChannelRed,
   1.968 +		/** Green Color Channel (RGB model). */
   1.969 +		EColorChannelGreen,
   1.970 +		/** Blue Color Channel (RGB model). */
   1.971 +		EColorChannelBlue,
   1.972 +		/** Luminance Y component (YUV model). */ 
   1.973 +		EChannelLumaY,
   1.974 +		/** Chrominance U component (YUV model). */ 
   1.975 +		EChannelChromaU,
   1.976 +		/** Chrominance V component (YUV model). */ 
   1.977 +		EChannelChromaV
   1.978 +		};
   1.979 +	
   1.980 +	/**
   1.981 +	Class used to provide a particular custom LED effect.
   1.982 +	
   1.983 +	@internalTechnology
   1.984 +	*/
   1.985 +	class TECamLEDSpecialEffectStep
   1.986 +	{
   1.987 +	public:
   1.988 +		TECamLEDSpecialEffectStep();
   1.989 +		
   1.990 +		TUint Size() const;
   1.991 +		TUint Version() const;
   1.992 +		
   1.993 +	private:
   1.994 +		//for future expansion
   1.995 +		TUint iSize:24;
   1.996 +		TUint iVersion:8;
   1.997 +				
   1.998 +		// reserved for future expansion.
   1.999 +		TInt iReserved1;
  1.1000 +		TInt iReserved2;
  1.1001 +		TInt iReserved3;
  1.1002 +		
  1.1003 +	public:
  1.1004 +		/** Blinking frequency of LED in Hertz. */
  1.1005 +		TUint iBlinkingFrequency;
  1.1006 +		/** Represents the intensity of LED in millicandela. */
  1.1007 +		TUint iIntensity;
  1.1008 +		/** Frequency step with which the blinking frequency changes with time. May be positive as well as negative. */
  1.1009 +		TInt iFrequencyStep;
  1.1010 +		/** Time duration for which the particular LED special effect step would be valid. */
  1.1011 +		TTimeIntervalMicroSeconds32 iDuration;
  1.1012 +	};
  1.1013 +
  1.1014 +
  1.1015 +public:
  1.1016 +
  1.1017 +    IMPORT_C static CCameraAdvancedSettings* NewL(CCamera& aCamera);
  1.1018 +
  1.1019 +  	IMPORT_C TCameraType CameraType() const;
  1.1020 +  	
  1.1021 +	IMPORT_C TCameraType CameraType(TInt aCameraIndex);
  1.1022 +
  1.1023 +	IMPORT_C TBool IsCameraPresent() const;
  1.1024 +	
  1.1025 +   	IMPORT_C TBool IsCameraPresent(TInt aCameraIndex);
  1.1026 +
  1.1027 +  	IMPORT_C TInt CameraIndex() const;	
  1.1028 +  	
  1.1029 +    IMPORT_C TInt SupportedStabilizationModes() const;
  1.1030 +    
  1.1031 +    IMPORT_C TStabilizationMode StabilizationMode() const;
  1.1032 +    
  1.1033 +    IMPORT_C void SetStabilizationMode(TStabilizationMode aStabilizationMode);
  1.1034 +    
  1.1035 +    IMPORT_C TInt SupportedFocusModes() const;
  1.1036 +    
  1.1037 +    IMPORT_C TFocusMode FocusMode() const;
  1.1038 +    
  1.1039 +    IMPORT_C void SetFocusMode(TFocusMode aFocusMode);
  1.1040 +    
  1.1041 +    IMPORT_C TInt SupportedFocusRanges() const;
  1.1042 +    
  1.1043 +    IMPORT_C TFocusRange FocusRange() const;
  1.1044 +    
  1.1045 +    IMPORT_C void SetFocusRange(TFocusRange aFocusRange);
  1.1046 +    
  1.1047 +    IMPORT_C TInt SupportedAutoFocusTypes() const;
  1.1048 +    
  1.1049 +    IMPORT_C TAutoFocusType AutoFocusType() const;
  1.1050 +    
  1.1051 +    IMPORT_C void SetAutoFocusType(TAutoFocusType aAutoFocusType);
  1.1052 +
  1.1053 +    IMPORT_C TInt SupportedAutoFocusAreas() const;
  1.1054 +    
  1.1055 +    IMPORT_C TAutoFocusArea AutoFocusArea() const;
  1.1056 +    
  1.1057 +    IMPORT_C void SetAutoFocusArea(TAutoFocusArea aAutoFocusArea);
  1.1058 +
  1.1059 +	IMPORT_C TInt FocusDistance() const;
  1.1060 +	
  1.1061 +	IMPORT_C void SetFocusDistance(TInt aDistance);
  1.1062 +
  1.1063 +	IMPORT_C TInt GetMinFocalLength() const;
  1.1064 + 
  1.1065 +    IMPORT_C void GetSupportedIsoRatesL(RArray<TInt>& aSupportedIsoRates) const;
  1.1066 +    
  1.1067 +    IMPORT_C TInt IsoRate() const;
  1.1068 +    
  1.1069 +    IMPORT_C void SetIsoRate(TInt aRate);
  1.1070 +
  1.1071 +    IMPORT_C void GetAperturesL(RArray<TInt>& aFStops, TValueInfo& aInfo) const;
  1.1072 +    
  1.1073 +    IMPORT_C TInt Aperture() const; 
  1.1074 +    
  1.1075 +    IMPORT_C void SetAperture(TInt aFStop); 
  1.1076 +	
  1.1077 +	IMPORT_C void GetShutterSpeedsL(RArray<TInt>& aShutterSpeeds, TValueInfo& aInfo) const; 
  1.1078 +		
  1.1079 +    IMPORT_C TInt ShutterSpeed() const; 
  1.1080 +    
  1.1081 +    IMPORT_C void SetShutterSpeed(TInt aShutterSpeed); 
  1.1082 +    
  1.1083 +    IMPORT_C TInt SupportedMeteringModes() const;
  1.1084 +    
  1.1085 +    IMPORT_C TMeteringMode MeteringMode() const;
  1.1086 +    
  1.1087 +    IMPORT_C void SetMeteringMode(TMeteringMode aMeteringMode);
  1.1088 +    
  1.1089 +    IMPORT_C TInt SupportedDriveModes() const;
  1.1090 +    
  1.1091 +    IMPORT_C TDriveMode DriveMode() const;
  1.1092 +    
  1.1093 +    IMPORT_C void SetDriveMode(TDriveMode aDriveMode);
  1.1094 +
  1.1095 +    IMPORT_C TInt SupportedBracketModes() const;
  1.1096 +    
  1.1097 +    IMPORT_C TBracketMode BracketMode() const;
  1.1098 +    
  1.1099 +    IMPORT_C void SetBracketMode(TBracketMode aBracketMode);
  1.1100 +    
  1.1101 +    IMPORT_C TInt SupportedBracketParameters() const;
  1.1102 +    
  1.1103 +    IMPORT_C TBracketParameter BracketParameter() const;
  1.1104 +    
  1.1105 +    IMPORT_C void SetBracketParameter(TBracketParameter aBracketParameter);
  1.1106 +    
  1.1107 +    IMPORT_C TInt SupportedBracketSteps() const;
  1.1108 +    
  1.1109 +    IMPORT_C TBracketStep BracketStep() const;
  1.1110 +    
  1.1111 +    IMPORT_C void SetBracketStep(TBracketStep aBracketStep);
  1.1112 +    
  1.1113 +	IMPORT_C void GetBracketMerge(TInt& aStartIndex, TInt& aFrames) const;
  1.1114 +	
  1.1115 +	IMPORT_C void SetBracketMerge(TInt aStartIndex, TInt aFrames);
  1.1116 +    
  1.1117 +    IMPORT_C TInt SupportedFlashModes() const;
  1.1118 +    
  1.1119 +	IMPORT_C CCamera::TFlash FlashMode() const;
  1.1120 +
  1.1121 +	IMPORT_C void SetFlashMode(CCamera::TFlash aMode);
  1.1122 +
  1.1123 +    IMPORT_C TBool RedEyeReduceOn() const;
  1.1124 +    
  1.1125 +    IMPORT_C void SetRedEyeReduceOn(TBool aState);
  1.1126 +    
  1.1127 +	IMPORT_C void GetFlashCompensationStepsL(RArray<TInt>& aFlashCompensationSteps, TValueInfo& aInfo) const; 
  1.1128 +	
  1.1129 +	IMPORT_C TInt FlashCompensationStep() const;
  1.1130 +	
  1.1131 +	IMPORT_C TInt GetFlashCompensationStep(TInt& aFlashCompensationStep) const;	
  1.1132 +	
  1.1133 +	IMPORT_C void SetFlashCompensationStep(TInt aFlashCompensationStep);
  1.1134 +	
  1.1135 +	IMPORT_C void GetFlashCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
  1.1136 +
  1.1137 +	IMPORT_C TInt FlashCompensation() const;
  1.1138 +	
  1.1139 +	IMPORT_C TInt GetFlashCompensation(TInt& aFlashCompensation) const;
  1.1140 +	
  1.1141 +	IMPORT_C void SetFlashCompensation(TInt aFlashCompensationInSteps);
  1.1142 +	
  1.1143 +	IMPORT_C TBool IsExternalFlashPresent() const;
  1.1144 +	   
  1.1145 +    IMPORT_C void GetManualFlashPowerLevelsL(RArray<TInt>& aManualFlashPowerLevels, TValueInfo& aInfo) const;
  1.1146 +    
  1.1147 +    IMPORT_C TInt ManualFlashPowerLevel() const;
  1.1148 +
  1.1149 +    IMPORT_C void SetManualFlashPowerLevel(TInt aManualFlashPowerLevel);
  1.1150 +    
  1.1151 +	IMPORT_C TInt SupportedExposureModes() const;
  1.1152 +	
  1.1153 +	IMPORT_C CCamera::TExposure ExposureMode() const;
  1.1154 +
  1.1155 +	IMPORT_C void SetExposureMode(CCamera::TExposure aExposureMode);
  1.1156 +	
  1.1157 +	IMPORT_C void GetExposureCompensationStepsL(RArray<TInt>& aExposureCompensationSteps, TValueInfo& aInfo) const; 
  1.1158 +	
  1.1159 +	IMPORT_C TInt ExposureCompensationStep() const;
  1.1160 +	
  1.1161 +	IMPORT_C TInt GetExposureCompensationStep(TInt& aExposureCompensationStep) const;
  1.1162 +	
  1.1163 +	IMPORT_C void SetExposureCompensationStep(TInt aExposureCompensationStep);
  1.1164 +	
  1.1165 +	IMPORT_C void GetExposureCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const;
  1.1166 +
  1.1167 +	IMPORT_C TInt ExposureCompensation() const;
  1.1168 +	
  1.1169 +	IMPORT_C TInt GetExposureCompensation(TInt& aExposureCompensation) const;
  1.1170 +	
  1.1171 +	IMPORT_C void SetExposureCompensation(TInt aExposureCompensationInSteps);
  1.1172 +
  1.1173 +	IMPORT_C TInt SupportedWhiteBalanceModes() const;
  1.1174 +	
  1.1175 +	IMPORT_C CCamera::TWhiteBalance WhiteBalanceMode() const;
  1.1176 +	
  1.1177 +	IMPORT_C void SetWhiteBalanceMode(CCamera::TWhiteBalance aWhiteBalanceMode);
  1.1178 +
  1.1179 +	IMPORT_C TBool ApertureExposureLockOn() const;
  1.1180 +	
  1.1181 +	IMPORT_C void SetApertureExposureLockOn(TBool aAELock);
  1.1182 +
  1.1183 +	IMPORT_C TBool ShootClickOn() const;
  1.1184 +	
  1.1185 +	IMPORT_C void SetShootClickOn(TBool aShootClickOn);
  1.1186 +	
  1.1187 +	IMPORT_C void GetTimerIntervalsL(RArray<TInt>& aTimerIntervals, TValueInfo& aInfo) const;
  1.1188 +	
  1.1189 +    IMPORT_C TInt TimerInterval() const;  
  1.1190 +    
  1.1191 +    IMPORT_C void SetTimerInterval(TInt aTimerInterval); 
  1.1192 +
  1.1193 +	IMPORT_C void GetTimeLapsePeriodRange(TTime& aTimeLapseMin, TTime& aTimeLapseMax) const;
  1.1194 +	
  1.1195 +	IMPORT_C void GetTimeLapse(TTime& aStart, TTime& aEnd, TTime& aInterval) const;  
  1.1196 +    
  1.1197 +    IMPORT_C void SetTimeLapse(const TTime& aStart, const TTime& aEnd, const TTime& aInterval); 
  1.1198 +    
  1.1199 +    IMPORT_C TPictureOrientation PictureOrientation() const;
  1.1200 +    
  1.1201 +    IMPORT_C void SetPictureOrientation(TPictureOrientation aOrientation); 
  1.1202 +
  1.1203 +    IMPORT_C TInt SupportedPixelAspectRatios() const;
  1.1204 +
  1.1205 +    IMPORT_C TPixelAspectRatio PixelAspectRatio() const;
  1.1206 +    
  1.1207 +    IMPORT_C void SetPixelAspectRatio(TPixelAspectRatio aPixelAspectRatio); 
  1.1208 +
  1.1209 +    IMPORT_C TInt SupportedYuvRanges() const;
  1.1210 +    
  1.1211 +    IMPORT_C TYuvRange YuvRange() const;
  1.1212 +    
  1.1213 +    IMPORT_C void SetYuvRange(TYuvRange aYuvRange);
  1.1214 +	
  1.1215 +    IMPORT_C TInt BurstImages() const;
  1.1216 +    
  1.1217 +    IMPORT_C void SetBurstImages(TInt aImages);	
  1.1218 +
  1.1219 +	IMPORT_C void GetOpticalZoomStepsL(RArray<TInt>& aOpticalZoomSteps, TValueInfo& aInfo) const;
  1.1220 +	
  1.1221 +	IMPORT_C TInt OpticalZoom() const;
  1.1222 +	
  1.1223 +	IMPORT_C void SetOpticalZoom(TInt aOpticalZoom);
  1.1224 +
  1.1225 +	IMPORT_C void GetDigitalZoomStepsL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo) const;
  1.1226 +	
  1.1227 +	IMPORT_C TInt DigitalZoom() const;
  1.1228 +	
  1.1229 +	IMPORT_C void SetDigitalZoom(TInt aDigitalZoom);
  1.1230 +
  1.1231 +	IMPORT_C TBool ExposureLockOn() const;
  1.1232 +	
  1.1233 +	IMPORT_C void SetExposureLockOn(TBool aState);
  1.1234 +		
  1.1235 +	IMPORT_C TBool AutoFocusLockOn() const;
  1.1236 +	
  1.1237 +	IMPORT_C void SetAutoFocusLockOn(TBool aState);
  1.1238 +		
  1.1239 +    IMPORT_C void GetSupportedSettingsL(RArray<TUid>& aSettings) const;
  1.1240 +    
  1.1241 +    IMPORT_C void GetActiveSettingsL(RArray<TUid>& aActiveSettings) const;
  1.1242 +    
  1.1243 +    IMPORT_C void GetDisabledSettingsL(RArray<TUid>& aDisabledSettings) const;
  1.1244 +	
  1.1245 +	IMPORT_C TBool AutomaticSizeSelectionChangeOn() const;	
  1.1246 +
  1.1247 +	IMPORT_C void SetAutomaticSizeSelectionChangeOn(TBool aSetOn);		
  1.1248 +
  1.1249 +    IMPORT_C void GetSupportedContinuousAutoFocusTimeoutsL(RArray<TInt>& aTimeouts, TValueInfo& aInfo) const;
  1.1250 +    
  1.1251 +    IMPORT_C TInt ContinuousAutoFocusTimeout() const; 
  1.1252 +       
  1.1253 +    IMPORT_C void SetContinuousAutoFocusTimeout(TInt aTimeout);
  1.1254 +   
  1.1255 +	IMPORT_C TInt SupportedStabilizationEffects() const;
  1.1256 +	
  1.1257 +	IMPORT_C TStabilizationEffect StabilizationEffect() const;
  1.1258 +    
  1.1259 +    IMPORT_C void SetStabilizationEffect(TStabilizationEffect aEffect);
  1.1260 +
  1.1261 +	IMPORT_C TInt SupportedStabilizationComplexityValues() const;
  1.1262 +    
  1.1263 +	IMPORT_C TStabilizationAlgorithmComplexity StabilizationComplexity() const;
  1.1264 +    
  1.1265 +	IMPORT_C void SetStabilizationComplexity(TStabilizationAlgorithmComplexity aComplexity);
  1.1266 +
  1.1267 +    IMPORT_C TWBUnits SupportedWBUnits() const;
  1.1268 +    
  1.1269 +	IMPORT_C void GetWBRgbValue(TRgb& aValue) const;
  1.1270 +    
  1.1271 +    IMPORT_C void SetWBRgbValue(const TRgb& aValue);
  1.1272 +    
  1.1273 +	IMPORT_C void GetWBSupportedColorTemperaturesL(RArray<TInt>& aWBColorTemperatures, TValueInfo& aInfo) const;
  1.1274 +    
  1.1275 + 	IMPORT_C TInt WBColorTemperature() const;   
  1.1276 + 	
  1.1277 +	IMPORT_C void SetWBColorTemperature(TInt aWBColorTemperature);
  1.1278 +	
  1.1279 +	IMPORT_C ~CCameraAdvancedSettings();
  1.1280 +	
  1.1281 + 	IMPORT_C TInt IsFlashReady(TBool& aReady) const;
  1.1282 +	
  1.1283 +	IMPORT_C void GetCurrentFocusModeStepsL(RArray<TInt>& aFocusModeSteps, TValueInfo& aInfo) const;
  1.1284 +	
  1.1285 +	IMPORT_C void GetSupportedISORateTypeL(TInt& aSupportedISORateTypes) const;
  1.1286 +	
  1.1287 +	IMPORT_C void SetISORateL(TISORateType aISORateType, TInt aParam);
  1.1288 +	
  1.1289 +	IMPORT_C void GetISORateL(TISORateType& aISORateType, TInt& aParam, TInt& aISORate) const;
  1.1290 +	
  1.1291 +	IMPORT_C void SetReferenceScreenL(CWsScreenDevice& aScreenDevice);
  1.1292 +	
  1.1293 +	IMPORT_C void GetDigitalZoomStepsForStillL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aSizeIndex, 
  1.1294 +												CCamera::TFormat aFormat, TBool& aIsInfluencePossible) const;
  1.1295 +	
  1.1296 +	IMPORT_C void GetDigitalZoomStepsForVideoL(RArray<TInt>& aDigitalZoomSteps, TValueInfo& aInfo, TInt aFrameRateIndex, 
  1.1297 +			TInt aSizeIndex, CCamera::TFormat aFormat, TBool& aIsInfluencePossible, CCamera::TExposure aExposure) const;
  1.1298 +	
  1.1299 +	IMPORT_C void GetPreCaptureWarningSupportedL(TCameraMode aCameraMode, TInt& aPreCaptureWarningSupported) const;
  1.1300 +	
  1.1301 +	IMPORT_C void SubscribeToPreCaptureWarningL(TInt aPreCaptureWarning);
  1.1302 +	
  1.1303 +	IMPORT_C void UnSubscribePreCaptureWarningL();
  1.1304 +	
  1.1305 +	IMPORT_C void GetPreCaptureWarningL(TInt& aPreCaptureWarning) const;
  1.1306 +	
  1.1307 +	IMPORT_C void GetSupportedAFAssistantLightL(TInt& aSupportedAFAssistantLight) const;
  1.1308 +			 
  1.1309 +	IMPORT_C void GetAFAssistantLightL(TAFAssistantLight& aAFAssistantLight) const;
  1.1310 +	
  1.1311 +	IMPORT_C void SetAFAssistantLightL(TAFAssistantLight aAFAssistantLight); 
  1.1312 +	
  1.1313 +	IMPORT_C void GetSupportedContinuousZoomTypeL(TUint& aSupportedContinuousZoomType) const;
  1.1314 +
  1.1315 +	IMPORT_C void StartContinuousZoomL(TContinuousZoomType aContinuousZoomType, TZoomDirection aZoomDirection);
  1.1316 +
  1.1317 +	IMPORT_C void StopContinuousZoom();
  1.1318 +	
  1.1319 +	IMPORT_C void GetFocalLengthInfoL(TInt& aMinFocalLength, TInt& aCurrentFocalLength, TInt& aMaxFocalLength) const;
  1.1320 +	
  1.1321 +	IMPORT_C void GetNumOperationPreferenceL(TUint& aNumOperationPreferenceSupported) const;
  1.1322 +	
  1.1323 +	IMPORT_C void EnumerateOperationPreferenceL(TUint aOperationPreferenceIndex, TPerformanceLevel& aSpeedLevel, 
  1.1324 +											TPerformanceLevel& aQualityLevel, TPerformanceLevel& aLowMemoryConsumptionLevel, 
  1.1325 +											TPerformanceLevel& aLowPowerConsumptionLevel) const;
  1.1326 +											
  1.1327 +	IMPORT_C void SetOperationPreferenceL(TUint aOperationPreferenceIndex);
  1.1328 +	
  1.1329 +	IMPORT_C void GetOperationPreferenceL(TInt& aOperationPreferenceIndex) const;
  1.1330 +	
  1.1331 +	IMPORT_C void GetSupportedEventsL(RArray<TUid>& aSupportedEvents) const;
  1.1332 +	
  1.1333 +	IMPORT_C void GetIndirectFeatureChangesL(TUid aRequestedSetting, RArray<TUid>& aIndirectFeatureChanges) const;
  1.1334 +	
  1.1335 +private:
  1.1336 +	IMPORT_C CCameraAdvancedSettings(CCamera& aOwner);
  1.1337 +	IMPORT_C void ConstructL();
  1.1338 +	
  1.1339 +private:
  1.1340 +	void RegisterEventsL(TECAMEventFilterScheme aEventFilter, const RArray<TUid>& aEvents);
  1.1341 +	void GetRegisterEventsL(TECAMEventFilterScheme aEventFilter, RArray<TUid>& aEvents, TValueInfo& aInfo) const;
  1.1342 +	
  1.1343 +	void GetSupportedFlickerRemovalValueL(TUint& aSupportedFlickerRemovalValue) const;
  1.1344 +	void GetFlickerRemovalValueL(TFlickerRemoval& aFlickerRemovalValue) const;
  1.1345 +	void SetFlickerRemovalValueL(TFlickerRemoval aFlickerRemovalValue);
  1.1346 +	
  1.1347 +	void GetSupportedNDFilterL(TUint& aSupportedNDFilter) const;
  1.1348 +	void GetNDFilterL(TNDFilter& aNDFilter) const;
  1.1349 +	void SetNDFilterL(TNDFilter aNDFilter);
  1.1350 +	
  1.1351 +	void GetLEDEffectL(TLEDEvent aLEDEvent, TLEDEffect& aLEDEffect) const;
  1.1352 +	void SetLEDEffectL(TLEDEvent aLEDEvent, TLEDEffect aLEDEffect);
  1.1353 +	void SetLEDCustomEffectL(TLEDEvent aLEDEvent, const RArray<TECamLEDSpecialEffectStep>& aLEDSpecialEffectSteps);
  1.1354 +
  1.1355 +	void ReserveL(const TTimeIntervalMicroSeconds32& aMaxTimeToWait, TBool aKickOut);
  1.1356 +	void SetClientPriorityL(TInt aPriority);
  1.1357 +	void RestoreClientPriorityL();
  1.1358 +	
  1.1359 +	void GetSupportedManualGainL(RArray<TInt>& aSupportedManualGain, TColorChannel aColorChannel) const;
  1.1360 +	void GetManualGainL(TInt& aManualGain, TColorChannel aColorChannel) const;
  1.1361 +	void SetManualGainL(TInt aManualGain, TColorChannel aColorChannel);
  1.1362 +
  1.1363 +	void SetWhiteBalanceLockL(TBool aEnableLock);
  1.1364 +	void GetWhiteBalanceLockStateL(TBool& aIsLocked) const;
  1.1365 +	
  1.1366 +	void EnableStateSavingL(RWriteStream& aLatestCameraState);
  1.1367 +	void DisableStateSavingL();
  1.1368 +	void RestoreLatestStateL(RReadStream& aLatestCameraState);
  1.1369 +	void SaveCameraStateL(RWriteStream& aCustomCameraState);
  1.1370 +	void DisableCameraStateSavingL(RWriteStream& aCustomCameraState);
  1.1371 +	void RestoreCameraStateL(RReadStream& aCustomCameraState);
  1.1372 +
  1.1373 +private:	
  1.1374 +	CCamera&        			iOwner; 
  1.1375 +    MCameraAdvancedSettings* 	iImpl;   // not owned
  1.1376 +    MCameraAdvancedSettings2* 	iImpl2;  // not owned
  1.1377 +    
  1.1378 +    MCameraAdvancedSettings3* 	iImpl3;  // not owned
  1.1379 +    
  1.1380 +    MCameraAdvancedSettings4* 	iImpl4;  // not owned
  1.1381 +	};		
  1.1382 +
  1.1383 +/**
  1.1384 +Supported presets with the assumption for scope and outcome
  1.1385 +*/
  1.1386 +
  1.1387 +/** Default settings */
  1.1388 +static const TUid  KUidECamPresetFactoryDefault	= {KUidECamPresetFactoryDefaultUidValue};
  1.1389 +/** Daytime shot with normal exposure time, one shot autofocus, 
  1.1390 +medium ISO rating and no flash. */
  1.1391 +static const TUid  KUidECamPresetOutdoor		= {KUidECamPresetOutdoorUidValue};
  1.1392 +/** Daytime shot with short exposure time, continuous autofocus, 
  1.1393 +high Iso rating and no flash. */
  1.1394 +static const TUid  KUidECamPresetOutdoorSport	= {KUidECamPresetOutdoorSportUidValue};
  1.1395 +/** Daytime shot with very short exposure time, high shutter speed, 
  1.1396 +high Iso rating and no flash. */
  1.1397 +static const TUid  KUidECamPresetSnow 			= {KUidECamPresetSnowUidValue};
  1.1398 +/** Daytime shot with very short exposure time, high shutter speed, 
  1.1399 +high contrast, reflections and no flash. */
  1.1400 +static const TUid  KUidECamPresetBeach 			= {KUidECamPresetBeachUidValue};
  1.1401 +/** Night time shot with long central exposure time and high flash power. */
  1.1402 +static const TUid  KUidECamPresetNightPortrait 	= {KUidECamPresetNightPortraitUidValue};
  1.1403 +/** Night time shot with long exposure time and no flash. */
  1.1404 +static const TUid  KUidECamPresetNightFireworks = {KUidECamPresetNightFireworksUidValue};
  1.1405 +/** Daytime shot with medium exposure time, medium to high Iso rating, 
  1.1406 +overcast daylight, low contrast, fill-in flash. */
  1.1407 +static const TUid  KUidECamPresetFog 			= {KUidECamPresetFogUidValue};
  1.1408 +/** Fluorescent lightning with medium exposure time, 
  1.1409 +medium to low shutter speed with flash. */
  1.1410 +static const TUid  KUidECamPresetIndoor			= {KUidECamPresetIndoorUidValue};
  1.1411 +/** Fluorescent lightning with continuous autofocus, wide aperture, 
  1.1412 +high Iso rating with flash. */
  1.1413 +static const TUid  KUidECamPresetIndoorSport	= {KUidECamPresetIndoorSportUidValue};
  1.1414 +/** 
  1.1415 +Used in low light situations. Tries to capture all the photons from a low light scene. 
  1.1416 +The image may be processed longer to achieve this. This case may cause blurring, but that could be a 
  1.1417 +wanted effect. 
  1.1418 +
  1.1419 +This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1.1420 +CCamera::NewDuplicate2L().
  1.1421 +
  1.1422 +*/
  1.1423 +static const TUid  KUidECamPresetNightPartyIndoor	= {KUidECamPresetNightPartyIndoorUidValue};
  1.1424 +/** 
  1.1425 +Used to capture images of things which can't be seen by eye. 
  1.1426 +For example: snowflakes, underwater photography, small insect photos
  1.1427 +
  1.1428 +This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1.1429 +CCamera::NewDuplicate2L().
  1.1430 +
  1.1431 +*/
  1.1432 +static const TUid  KUidECamPresetNightCloseUp		= {KUidECamPresetNightCloseUpUidValue};
  1.1433 +/** 
  1.1434 +Used for revealing assumed details. For example: business card photos, small written text photos, 
  1.1435 +underwater photography, insect photos.
  1.1436 +
  1.1437 +This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1.1438 +CCamera::NewDuplicate2L().
  1.1439 +
  1.1440 +*/
  1.1441 +static const TUid  KUidECamPresetNightMacro			= {KUidECamPresetNightMacroUidValue};
  1.1442 +/** 
  1.1443 +Used for taking clear pictures of text or drawings. Also used to capture business cards or of a whiteboard. 
  1.1444 +Aim is to optimise text and drawing readability and user expectation of "white" paper. 
  1.1445 +Camera shake may reduce quality in case no flash available or not adequate(distance too much from subject).
  1.1446 +
  1.1447 +This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1.1448 +CCamera::NewDuplicate2L().
  1.1449 +
  1.1450 +*/
  1.1451 +static const TUid  KUidECamPresetTextDocument		= {KUidECamPresetTextDocumentUidValue};
  1.1452 +/** 
  1.1453 +Used for providing clear pictures of barcode. Aim is to convert barcode into some form which can be easily decoded. 
  1.1454 +Camera shake may reduce this barcode readability and hence, barcode conversion accuracy and reliability.
  1.1455 +
  1.1456 +This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1.1457 +CCamera::NewDuplicate2L().
  1.1458 +
  1.1459 +*/
  1.1460 +static const TUid  KUidECamPresetBarcode			= {KUidECamPresetBarcodeUidValue};
  1.1461 +/** 
  1.1462 +Used when factory default preset in certain cases may not be available or is too restrictive. 
  1.1463 +Automatic preset expects the hardware to use automatic detection for most of the features.
  1.1464 +
  1.1465 +This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1.1466 +CCamera::NewDuplicate2L().
  1.1467 +
  1.1468 +*/
  1.1469 +static const TUid  KUidECamPresetAuto	 			= {KUidECamPresetAutoUidValue};
  1.1470 +/** 
  1.1471 +Used for portraits of human subjects in good lighting conditions. Focuses on the people and captures natural 
  1.1472 +skin tones. Background details may not be softened.
  1.1473 +
  1.1474 +This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1.1475 +CCamera::NewDuplicate2L().
  1.1476 +
  1.1477 +*/
  1.1478 +static const TUid  KUidECamPresetPortrait 			= {KUidECamPresetPortraitUidValue};
  1.1479 +/** 
  1.1480 +Used for sharp landscape shots with clear outlines, colours and contrast, for example forest, sky. 
  1.1481 +The main aim is to get the details of the scene.
  1.1482 +
  1.1483 +This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1.1484 +CCamera::NewDuplicate2L().
  1.1485 +
  1.1486 +*/
  1.1487 +static const TUid  KUidECamPresetLandscape			= {KUidECamPresetLandscapeUidValue};
  1.1488 +/** 
  1.1489 +Used to retain the ambience/mood produced by, for example, warm lighting conditions like sunset, candlelight etc.
  1.1490 +
  1.1491 +This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1.1492 +CCamera::NewDuplicate2L().
  1.1493 +
  1.1494 +*/
  1.1495 +static const TUid  KUidECamPresetAmbienceMood		= {KUidECamPresetAmbienceMoodUidValue};
  1.1496 +/** 
  1.1497 +Used to for video telephony.
  1.1498 +
  1.1499 +This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1.1500 +CCamera::NewDuplicate2L().
  1.1501 +
  1.1502 +@publishedPartner
  1.1503 +@prototype
  1.1504 +*/
  1.1505 +static const TUid  KUidECamPresetVideoTelephony		= {KUidECamPresetVideoTelephonyUidValue};
  1.1506 +
  1.1507 +/** 
  1.1508 +Used to clarify that camera is not under any preset mode. Possible scenario: client sets camera in a particular preset 
  1.1509 +mode and then makes some setting changes on top of it. Then theoretically camera is out of that preset. Hence, 
  1.1510 +KUidECamPresetNone will be used in such cases.
  1.1511 +
  1.1512 +This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or 
  1.1513 +CCamera::NewDuplicate2L().
  1.1514 +
  1.1515 +@publishedPartner
  1.1516 +@prototype
  1.1517 +*/
  1.1518 +static const TUid  KUidECamPresetNone		= {KUidECamPresetNoneUidValue};
  1.1519 + 
  1.1520 +/** Notifications related to presets */
  1.1521 +/**
  1.1522 +Used to notify clients about possible range restrictions, when camera works under a particular preset mode.
  1.1523 +This is not a particular preset uid.
  1.1524 +
  1.1525 +@note   Call CCamera::CCameraPresets::GetRangeRestrictedSettingsL(RArray<TUid>& aRangeRestrictedSettings) to retrieve 
  1.1526 +		the list of settings whose range have been restricted.
  1.1527 +
  1.1528 +@publishedPartner
  1.1529 +@prototype
  1.1530 +*/
  1.1531 +static const TUid  KUidECamEventRangeRestricted  = {KUidECamEventRangeRestrictedUidValue};
  1.1532 +
  1.1533 +/**
  1.1534 +Used to notify clients about possible feature restrictions, when camera works under a particular preset mode.
  1.1535 +This is not a particular preset uid.
  1.1536 +
  1.1537 +@note   Call CCamera::CCameraPresets::GetFeatureRestrictedSettingsL(RArray<TUid>& aFeatureRestrictedSettings) to retrieve 
  1.1538 +		the list of settings which have been restricted.
  1.1539 +
  1.1540 +@publishedPartner
  1.1541 +@prototype
  1.1542 +*/
  1.1543 +static const TUid  KUidECamEventFeatureRestricted  = {KUidECamEventFeatureRestrictedUidValue};
  1.1544 +
  1.1545 +/**
  1.1546 +Used to notify clients that locking of the preset operation has completed, when camera works under a particular preset mode.
  1.1547 +This is not a particular preset uid.
  1.1548 +
  1.1549 +@publishedPartner
  1.1550 +@prototype
  1.1551 +*/
  1.1552 +static const TUid  KUidECamEventPresetLocked  = {KUidECamEventPresetLockedUidValue};
  1.1553 +
  1.1554 +/**
  1.1555 +Used to notify clients that unlocking of the preset operation has completed, when camera works under a particular preset mode.
  1.1556 +This is not a particular preset uid.
  1.1557 +
  1.1558 +@publishedPartner
  1.1559 +@prototype
  1.1560 +*/
  1.1561 +static const TUid  KUidECamEventPresetUnlocked  = {KUidECamEventPresetUnlockedUidValue};
  1.1562 + 
  1.1563 + 
  1.1564 +/**
  1.1565 +This API is used to simplify user - camera interaction by allowing simultaneous
  1.1566 +setting of various advanced camera hardware settings using a single parameter.
  1.1567 +
  1.1568 +Preset is identified by a single UID and relates to a known predefined outcome. 
  1.1569 +For example the 'Night' Preset will be used to set the camera into a night mode 
  1.1570 +so that the user can take night photos. 
  1.1571 +
  1.1572 +The particular set of settings associated with the specific preset and their specific values 
  1.1573 +and ranges are camera hardware specific and outside the scope of this API. 
  1.1574 +
  1.1575 +@note This class is not intended for sub-classing  and used to standardise existing
  1.1576 +      varieties of implementations.
  1.1577 +      
  1.1578 +@note   If the class methods leave, the output type parameter value is not guaranteed to be valid.
  1.1579 +
  1.1580 +@publishedAll
  1.1581 +@released
  1.1582 +*/
  1.1583 +class CCamera::CCameraPresets : public CBase 
  1.1584 +	{
  1.1585 +    /** allow access to private constructors. */
  1.1586 +	friend class CCamera;
  1.1587 +	
  1.1588 +public:
  1.1589 +
  1.1590 +    IMPORT_C static CCameraPresets* NewL(CCamera& aCamera);
  1.1591 +    
  1.1592 +    IMPORT_C void GetSupportedPresetsL(RArray<TUid>& aPresets) const;
  1.1593 +    
  1.1594 +    IMPORT_C void SetPreset(TUid aPreset);
  1.1595 +    
  1.1596 +    IMPORT_C TUid Preset() const;
  1.1597 +    
  1.1598 +    IMPORT_C void GetAffectedSettingsL(RArray<TUid>& aSettings) const;
  1.1599 +   
  1.1600 +    IMPORT_C void GetAssociatedSettingsL(TUid aPreset, RArray<TUid>& aSettings) const;
  1.1601 +    
  1.1602 +    IMPORT_C ~CCameraPresets();
  1.1603 +    
  1.1604 +    IMPORT_C void GetRangeRestrictedSettingsL(RArray<TUid>& aRangeRestrictedSettings) const;
  1.1605 +    
  1.1606 +    IMPORT_C void GetFeatureRestrictedSettingsL(RArray<TUid>& aFeatureRestrictedSettings) const;
  1.1607 +    
  1.1608 +    IMPORT_C void IsPresetUnlockSupportedL(TBool& aUnlockSupported) const;
  1.1609 +	
  1.1610 +	IMPORT_C void LockPresetL();
  1.1611 +	
  1.1612 +	IMPORT_C void UnlockPresetL();
  1.1613 +	    
  1.1614 +private:
  1.1615 +	IMPORT_C CCameraPresets(CCamera& aOwner);
  1.1616 +	IMPORT_C void ConstructL();
  1.1617 +	
  1.1618 +	void FilterUnrecognisedUids(RArray<TUid>& aUids, const TInt aBaselineUid) const;
  1.1619 +
  1.1620 +private:	
  1.1621 +	CCamera&        iOwner; 
  1.1622 +    MCameraPresets* iImpl;  // not owned
  1.1623 +    MCameraPresets2* iImpl2;  // not owned
  1.1624 +	};
  1.1625 +	
  1.1626 +#endif // ECAMADVSETTINGS_H