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