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