sl@0: // Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: #ifndef ECAMADVSETTINGS_H sl@0: #define ECAMADVSETTINGS_H sl@0: sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #include sl@0: #ifndef SYMBIAN_ENABLE_SPLIT_HEADERS sl@0: #include sl@0: #include sl@0: #endif sl@0: sl@0: class MCameraPresets; sl@0: class MCameraAdvancedSettings; sl@0: class MCameraAdvancedSettings2; sl@0: class MCameraAdvancedSettings3; sl@0: class MCameraAdvancedSettings4; sl@0: class MCameraPresets2; sl@0: class MCameraContinuousZoom; sl@0: sl@0: /* General purpose constants */ sl@0: sl@0: sl@0: /** sl@0: UID used to identify the CCamera Advanced Settings API. sl@0: This API is used to control specific individual advanced settings of camera hardware. sl@0: These settings directly relate to the image acquisition phase. sl@0: sl@0: @see CCamera::CCameraAdvancedSettings sl@0: */ sl@0: static const TUid KECamAdvancedSettingUid = {KECamAdvancedSettingUidValue}; sl@0: sl@0: /** sl@0: UID used to identify the CCamera Presets API. sl@0: This API is used to simplify user - camera interaction by allowing simultaneous sl@0: setting of various advanced camera hardware settings using a single predefined parameter. sl@0: @see CCamera::CCameraPresets sl@0: */ sl@0: static const TUid KECamPresetsUid = {KECamPresetsUidValue}; sl@0: sl@0: /** All clients receive these events, irrespective of camera index. */ sl@0: /** Camera slots in for 8 cameras. */ sl@0: /** Camera with index 0 Plugged-in */ sl@0: static const TUid KUidECamEventGlobalCamera00PluggedIn = {KUidECamEventGlobalCamera00PluggedInUidValue}; sl@0: /** Camera with index 1 Plugged-in */ sl@0: static const TUid KUidECamEventGlobalCamera01PluggedIn = {KUidECamEventGlobalCamera01PluggedInUidValue}; sl@0: /** Camera with index 2 Plugged-in */ sl@0: static const TUid KUidECamEventGlobalCamera02PluggedIn = {KUidECamEventGlobalCamera02PluggedInUidValue}; sl@0: /** Camera with index 3 Plugged-in */ sl@0: static const TUid KUidECamEventGlobalCamera03PluggedIn = {KUidECamEventGlobalCamera03PluggedInUidValue}; sl@0: /** Camera with index 4 Plugged-in */ sl@0: static const TUid KUidECamEventGlobalCamera04PluggedIn = {KUidECamEventGlobalCamera04PluggedInUidValue}; sl@0: /** Camera with index 5 Plugged-in */ sl@0: static const TUid KUidECamEventGlobalCamera05PluggedIn = {KUidECamEventGlobalCamera05PluggedInUidValue}; sl@0: /** Camera with index 6 Plugged-in */ sl@0: static const TUid KUidECamEventGlobalCamera06PluggedIn = {KUidECamEventGlobalCamera06PluggedInUidValue}; sl@0: /** Camera with index 7 Plugged-in */ sl@0: static const TUid KUidECamEventGlobalCamera07PluggedIn = {KUidECamEventGlobalCamera07PluggedInUidValue}; sl@0: sl@0: /** Camera slots plugged out for 8 cameras. */ sl@0: /** Camera with index 0 Plugged-out */ sl@0: static const TUid KUidECamEventGlobalCamera00PluggedOut = {KUidECamEventGlobalCamera00PluggedOutUidValue}; sl@0: /** Camera with index 1 Plugged-out */ sl@0: static const TUid KUidECamEventGlobalCamera01PluggedOut = {KUidECamEventGlobalCamera01PluggedOutUidValue}; sl@0: /** Camera with index 2 Plugged-out */ sl@0: static const TUid KUidECamEventGlobalCamera02PluggedOut = {KUidECamEventGlobalCamera02PluggedOutUidValue}; sl@0: /** Camera with index 3 Plugged-out */ sl@0: static const TUid KUidECamEventGlobalCamera03PluggedOut = {KUidECamEventGlobalCamera03PluggedOutUidValue}; sl@0: /** Camera with index 4 Plugged-out */ sl@0: static const TUid KUidECamEventGlobalCamera04PluggedOut = {KUidECamEventGlobalCamera04PluggedOutUidValue}; sl@0: /** Camera with index 5 Plugged-out */ sl@0: static const TUid KUidECamEventGlobalCamera05PluggedOut = {KUidECamEventGlobalCamera05PluggedOutUidValue}; sl@0: /** Camera with index 6 Plugged-out */ sl@0: static const TUid KUidECamEventGlobalCamera06PluggedOut = {KUidECamEventGlobalCamera06PluggedOutUidValue}; sl@0: /** Camera with index 7 Plugged-out */ sl@0: static const TUid KUidECamEventGlobalCamera07PluggedOut = {KUidECamEventGlobalCamera07PluggedOutUidValue}; sl@0: sl@0: /** Camera slots available for 8 cameras. */ sl@0: /** Signals a camera previously has been reserved and then released again. sl@0: In this way available clients may attempt to reserve the camera */ sl@0: /** Camera with index 0 Available. */ sl@0: static const TUid KUidECamEventGlobalCamera00Available = {KUidECamEventGlobalCamera00AvailableUidValue}; sl@0: /** Camera with index 1 Available. */ sl@0: static const TUid KUidECamEventGlobalCamera01Available = {KUidECamEventGlobalCamera01AvailableUidValue}; sl@0: /** Camera with index 2 Available. */ sl@0: static const TUid KUidECamEventGlobalCamera02Available = {KUidECamEventGlobalCamera02AvailableUidValue}; sl@0: /** Camera with index 3 Available. */ sl@0: static const TUid KUidECamEventGlobalCamera03Available = {KUidECamEventGlobalCamera03AvailableUidValue}; sl@0: /** Camera with index 4 Available. */ sl@0: static const TUid KUidECamEventGlobalCamera04Available = {KUidECamEventGlobalCamera04AvailableUidValue}; sl@0: /** Camera with index 5 Available. */ sl@0: static const TUid KUidECamEventGlobalCamera05Available = {KUidECamEventGlobalCamera05AvailableUidValue}; sl@0: /** Camera with index 6 Available. */ sl@0: static const TUid KUidECamEventGlobalCamera06Available = {KUidECamEventGlobalCamera06AvailableUidValue}; sl@0: /** Camera with index 7 Available. */ sl@0: static const TUid KUidECamEventGlobalCamera07Available = {KUidECamEventGlobalCamera07AvailableUidValue}; sl@0: sl@0: /** Individual camera events. These are used by the camera to signal its observers. */ sl@0: /** Lens changed. */ sl@0: static const TUid KUidECamEventLensChanged = {KUidECamEventLensChangedUidValue}; sl@0: /** Flash source added. */ sl@0: static const TUid KUidECamEventFlashSourceAdded = {KUidECamEventFlashSourceAddedUidValue}; sl@0: /** Flash source removed. */ sl@0: static const TUid KUidECamEventFlashSourceRemoved = {KUidECamEventFlashSourceRemovedUidValue}; sl@0: /** Image resolution changed. */ sl@0: static const TUid KUidECamEventCameraSettingImageSize = {KUidECamEventCameraSettingImageSizeUidValue}; sl@0: /** Image Format changed. */ sl@0: static const TUid KUidECamEventCameraSettingImageFormat = {KUidECamEventCameraSettingImageFormatUidValue}; sl@0: /** Camera orientation changed. */ sl@0: static const TUid KUidECamEventCameraSettingCameraOrientation = {KUidECamEventCameraSettingCameraOrientationUidValue}; sl@0: /** Optimal focus */ sl@0: static const TUid KUidECamEventCameraSettingsOptimalFocus = {KUidECamEventCameraSettingsOptimalFocusUidValue}; sl@0: sl@0: /** Advanced settings. */ sl@0: /** Stabilization mode. */ sl@0: static const TUid KUidECamEventCameraSettingStabilizationMode = {KUidECamEventCameraSettingStabilizationModeUidValue}; sl@0: /** Focus mode. */ sl@0: static const TUid KUidECamEventCameraSettingFocusMode = {KUidECamEventCameraSettingFocusModeUidValue}; sl@0: /** Focus range. sl@0: @deprecated sl@0: sl@0: Replaced by KUidECamEventCameraSettingFocusRange2 sl@0: sl@0: In the first release of this event, KUidECamEventCameraSettingFocusRange was incorrectly given an already existing uid. sl@0: In order to preserve compatibility this event is marked as deprecated and has been replaced by KUidECamEventCameraSettingFocusRange2. sl@0: Camera servers predating this API change will continue to send the original event which is indistinguishable by value. sl@0: Caching the old value and comparing it with the current value, will allow the client to determine that the value has changed. sl@0: Camera servers which have been updated should send both KUidECamEventCameraSettingFocusRange and KUidECamEventCameraSettingFocusRange2 on a focus range change. sl@0: Camera clients should therefore process both events(old and new). sl@0: sl@0: @see KUidECamEventCameraSettingFocusRange2 sl@0: */ sl@0: static const TUid KUidECamEventCameraSettingFocusRange = {KUidECamEventCameraSettingFocusRangeUidValue}; sl@0: /** Autofocus type. sl@0: @deprecated sl@0: sl@0: Replaced by KUidECamEventCameraSettingAutoFocusType2 sl@0: sl@0: In the first release of this event, KUidECamEventCameraSettingAutoFocusType was incorrectly given an already existing uid. sl@0: In order to preserve compatibility this event is marked as deprecated and has been replaced by KUidECamEventCameraSettingAutoFocusType2. sl@0: Camera servers predating this API change will continue to send the original event which is indistinguishable by value. sl@0: Caching the old value and comparing it with the current value, will allow the client to determine that the value has changed. sl@0: Camera servers which have been updated should send both KUidECamEventCameraSettingAutoFocusType and KUidECamEventCameraSettingAutoFocusType2 on a focus range change. sl@0: Camera clients should therefore process both events(old and new). sl@0: sl@0: @see KUidECamEventCameraSettingAutoFocusType2*/ sl@0: static const TUid KUidECamEventCameraSettingAutoFocusType = {KUidECamEventCameraSettingAutoFocusTypeUidValue}; sl@0: /** Autofocus area. */ sl@0: static const TUid KUidECamEventCameraSettingAutoFocusArea = {KUidECamEventCameraSettingAutoFocusAreaUidValue}; sl@0: /** Autofocus lock state. */ sl@0: static const TUid KUidECamEventCameraSettingAutoFocusLock = {KUidECamEventCameraSettingAutoFocusLockUidValue}; sl@0: /** Focus distance */ sl@0: static const TUid KUidECamEventCameraSettingFocusDistance = {KUidECamEventCameraSettingFocusDistanceUidValue}; sl@0: /** Sensitivity - ISO rate. */ sl@0: static const TUid KUidECamEventCameraSettingIsoRate = {KUidECamEventCameraSettingIsoRateUidValue}; sl@0: /** Aperture. */ sl@0: static const TUid KUidECamEventCameraSettingAperture = {KUidECamEventCameraSettingApertureUidValue}; sl@0: /** Aperture range. */ sl@0: static const TUid KUidECamEventCameraSettingApertureRange = {KUidECamEventCameraSettingApertureRangeUidValue}; sl@0: /** Shutter speed. */ sl@0: static const TUid KUidECamEventCameraSettingShutterSpeed = {KUidECamEventCameraSettingShutterSpeedUidValue}; sl@0: /** Shutter speed range. */ sl@0: static const TUid KUidECamEventCameraSettingShutterSpeedRange = {KUidECamEventCameraSettingShutterSpeedRangeUidValue}; sl@0: /** Metering mode. */ sl@0: static const TUid KUidECamEventCameraSettingMeteringMode = {KUidECamEventCameraSettingMeteringModeUidValue}; sl@0: /** Drive mode. */ sl@0: static const TUid KUidECamEventCameraSettingDriveMode = {KUidECamEventCameraSettingDriveModeUidValue}; sl@0: /** Braket mode. */ sl@0: static const TUid KUidECamEventCameraSettingBracketMode = {KUidECamEventCameraSettingBracketModeUidValue}; sl@0: /** Bracket step. */ sl@0: static const TUid KUidECamEventCameraSettingBracketStep = {KUidECamEventCameraSettingBracketStepUidValue}; sl@0: /** Bracket parameter. */ sl@0: static const TUid KUidECamEventCameraSettingBracketParameter = {KUidECamEventCameraSettingBracketParameterUidValue}; sl@0: /** Bracket merge. */ sl@0: static const TUid KUidECamEventBracketMerge = {KUidECamEventBracketMergeUidValue}; sl@0: /** Picture orientation. */ sl@0: static const TUid KUidECamEventCameraSettingPictureOrientation = {KUidECamEventCameraSettingPictureOrientationUidValue}; sl@0: /** Automatic size selection option */ sl@0: static const TUid KUidECamEventCameraSettingAutomaticSizeSelection = {KUidECamEventCameraSettingAutomaticSizeSelectionUidValue}; sl@0: /** Flash setting. */ sl@0: static const TUid KUidECamEventCameraSettingFlashMode = {KUidECamEventCameraSettingFlashModeUidValue}; sl@0: /** Flash compensation step. */ sl@0: static const TUid KUidECamEventCameraSettingFlashCompensationStep = {KUidECamEventCameraSettingFlashCompensationStepUidValue}; sl@0: /** Flash compensation. */ sl@0: static const TUid KUidECamEventCameraSettingFlashCompensation = {KUidECamEventCameraSettingFlashCompensationUidValue}; sl@0: /** Manual flash power. */ sl@0: static const TUid KUidECamEventCameraSettingFlashManualPower = {KUidECamEventCameraSettingFlashManualPowerUidValue}; sl@0: /** Red eye reduce mode. */ sl@0: static const TUid KUidECamEventCameraSettingFlashRedEyeReduce = {KUidECamEventCameraSettingFlashRedEyeReduceUidValue}; sl@0: /** Exposure mode setting. */ sl@0: static const TUid KUidECamEventCameraSettingExposureMode = {KUidECamEventCameraSettingExposureModeUidValue}; sl@0: /** Exposure compensation step. */ sl@0: static const TUid KUidECamEventCameraSettingExposureCompensationStep = {KUidECamEventCameraSettingExposureCompensationStepUidValue}; sl@0: /** Exposure compensation. */ sl@0: static const TUid KUidECamEventCameraSettingExposureCompensation = {KUidECamEventCameraSettingExposureCompensationUidValue}; sl@0: /** Exposure lock state. */ sl@0: static const TUid KUidECamEventCameraSettingExposureLock = {KUidECamEventCameraSettingExposureLockUidValue}; sl@0: /** AE lock option. */ sl@0: static const TUid KUidECamEventAELock = {KUidECamEventAELockUidValue}; sl@0: /** White balance. */ sl@0: static const TUid KUidECamEventCameraSettingWhiteBalanceMode = {KUidECamEventCameraSettingWhiteBalanceModeUidValue}; sl@0: /** Timer changed. */ sl@0: static const TUid KUidECamEventCameraSettingTimerInterval = {KUidECamEventCameraSettingTimerIntervalUidValue}; sl@0: /** Timer lapse period. */ sl@0: static const TUid KUidECamEventCameraSettingTimeLapse = {KUidECamEventCameraSettingTimeLapseUidValue}; sl@0: /** Optical zoom. */ sl@0: static const TUid KUidECamEventCameraSettingOpticalZoom = {KUidECamEventCameraSettingOpticalZoomUidValue}; sl@0: /** Optical zoom range. */ sl@0: static const TUid KUidECamEventCameraSettingOpticalZoomRange = {KUidECamEventCameraSettingOpticalZoomRangeUidValue}; sl@0: /** Digital zoom. */ sl@0: static const TUid KUidECamEventCameraSettingDigitalZoom = {KUidECamEventCameraSettingDigitalZoomUidValue}; sl@0: /** Digital zoom range. */ sl@0: static const TUid KUidECamEventCameraSettingDigitalZoomRange = {KUidECamEventCameraSettingDigitalZoomRangeUidValue}; sl@0: /** Clicking sound state. */ sl@0: static const TUid KUidECamEventSoundClick = {KUidECamEventSoundClickUidValue}; sl@0: /** Pixel aspect ratio. */ sl@0: static const TUid KUidECamEventPixelAspectRatio = {KUidECamEventPixelAspectRatioUidValue}; sl@0: /** Yuv range. */ sl@0: static const TUid KUidECamEventYuvRange = {KUidECamEventYuvRangeUidValue}; sl@0: /** Burst images. */ sl@0: static const TUid KUidECamEventBurstImages = {KUidECamEventBurstImagesUidValue}; sl@0: /** Stabilization effect - magnitude of stabilization */ sl@0: static const TUid KUidECamEventCameraSettingsStabilizationEffect = {KUidECamEventCameraSettingsStabilizationEffectUidValue}; sl@0: /** Stabilization algorithm */ sl@0: static const TUid KUidECamEventSettingsStabilizationAlgorithmComplexity = {KUidECamEventSettingsStabilizationAlgorithmComplexityUidValue}; sl@0: /** Continuous Autofocus timeout */ sl@0: static const TUid KUidECamEventCameraSettingsContinuousAutoFocusTimeout = {KUidECamEventCameraSettingsContinuousAutoFocusTimeoutUidValue}; sl@0: /** White Balance manual setting */ sl@0: static const TUid KUidECamEventCameraSettingsWBValue = {KUidECamEventCameraSettingsWBValueUidValue}; sl@0: /** Flash ready */ sl@0: static const TUid KUidECamEventFlashReady = {KUidECamEventFlashReadyUidValue}; sl@0: /** Flash not ready */ sl@0: static const TUid KUidECamEventFlashNotReady = {KUidECamEventFlashNotReadyUidValue}; sl@0: /** Focus range. sl@0: This is the new UID value to notify change on focus range and takes immediate effect as previous UID KUidECamEventCameraSettingFocusRange has been deprecated. sl@0: @see KUidECamEventCameraSettingFocusRange */ sl@0: static const TUid KUidECamEventCameraSettingFocusRange2 = {KUidECamEventCameraSettingFocusRange2UidValue}; sl@0: /** Autofocus type. sl@0: This is the new UID value to notify change on autofocus type and takes immediate effect as previous UID KUidECamEventCameraSettingAutoFocusType has been deprecated. sl@0: @see KUidECamEventCameraSettingAutoFocusType */ sl@0: static const TUid KUidECamEventCameraSettingAutoFocusType2 = {KUidECamEventCameraSettingAutoFocusType2UidValue}; sl@0: sl@0: /** sl@0: ISO Rate type. sl@0: sl@0: This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(): sl@0: void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray& aSettings) const; sl@0: void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray& aActiveSettings) const; sl@0: void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray& aDisabledSettings) const; sl@0: sl@0: */ sl@0: static const TUid KUidECamEventCameraSettingIsoRateType = {KUidECamEventCameraSettingIsoRateTypeUidValue}; sl@0: sl@0: /** sl@0: Reference Screen setting. sl@0: sl@0: This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(): sl@0: void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray& aSettings) const; sl@0: void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray& aActiveSettings) const; sl@0: void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray& aDisabledSettings) const; sl@0: sl@0: */ sl@0: static const TUid KUidECamEventCameraSettingReferenceScreen = {KUidECamEventCameraSettingReferenceScreenUidValue}; sl@0: sl@0: /** sl@0: Pre Capture Warning indication. sl@0: sl@0: This TUid is available from the following methods only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L(): sl@0: void CCamera::CCameraAdvancedSettings::GetSupportedSettingsL(RArray& aSettings) const; sl@0: void CCamera::CCameraAdvancedSettings::GetActiveSettingsL(RArray& aActiveSettings) const; sl@0: void CCamera::CCameraAdvancedSettings::GetDisabledSettingsL(RArray& aDisabledSettings) const; sl@0: sl@0: */ sl@0: static const TUid KUidECamEventCameraSettingAFAssistantLight = {KUidECamEventCameraSettingAFAssistantLightUidValue}; sl@0: sl@0: sl@0: sl@0: class CCameraContinuousZoom; sl@0: /** sl@0: A mixin class to be implemented by the client in order to use the Continuous Zoom API. The callbacks are invoked by the implementation sl@0: whenever the continuous zoom operations are ready to be notified. sl@0: sl@0: @see CCameraContinuousZoom sl@0: sl@0: @internalTechnology sl@0: @prototype sl@0: */ sl@0: class MContinuousZoomObserver sl@0: { sl@0: public: sl@0: sl@0: /** sl@0: This callback is sent when a new zoom factor is achieved. Client may not receive a callback for every new zoom factor as it is up sl@0: to the implementation to choose the zoom factors for which it will issue this callback. Should an error occur, this implies that the sl@0: continuous zoom operation has been stopped. sl@0: sl@0: @param aContinuousZoomHandle sl@0: Reference to CCameraContinuousZoom class object which was used to start the continuous zoom operation. sl@0: sl@0: @param aZoomFactor sl@0: The new zoom factor value, multiplied by KECamFineResolutionFactor, which has been achieved. sl@0: sl@0: @param aError sl@0: Appropriate error code. sl@0: */ sl@0: virtual void ContinuousZoomProgress(CCamera::CCameraContinuousZoom& aContinuousZoomHandle, TInt aZoomFactor, TInt aError)=0; sl@0: sl@0: /** sl@0: Implementation sends this callback when the Continuous Zoom operation has been completed. This callback will be sent when sl@0: target zoom factor is achieved. This zoom factor may in some cases be less than the target zoom factor due to the complexity sl@0: of the continuous zoom operation. Once this callback is received, client need not issue StopContinuousZoom() and can call sl@0: StartContinuousZoom() again. sl@0: sl@0: @param aContinuousZoomHandle sl@0: Reference to CCameraContinuousZoom class object which was used to start the continuous zoom operation. sl@0: sl@0: @param aFinalZoomFactor sl@0: The final zoom factor value once the continuous zoom operation has completed. This zoom factor may in some cases be sl@0: less than the target zoom factor due to the complexity of the continuous zoom operation. sl@0: sl@0: @param aErrorCode sl@0: Appropriate error code. sl@0: */ sl@0: virtual void ContinuousZoomCompleted(CCamera::CCameraContinuousZoom& aContinuousZoomHandle, TInt aFinalZoomFactor, TInt aError)=0; sl@0: sl@0: /** sl@0: Gets a custom interface for future callbacks. This method will be called by the implementation to get a new interface sl@0: which would support future callbacks. sl@0: sl@0: @param aInterface sl@0: The Uid of the particular interface function required for callbacks. sl@0: sl@0: @param aPtrInterface sl@0: The implementation has to type-cast the retrieved custom interface pointer to the appropriate type. sl@0: sl@0: @return The error code. sl@0: */ sl@0: virtual TInt CustomInterface(TUid aInterface, TAny*& aPtrInterface)=0; sl@0: }; sl@0: sl@0: sl@0: /** sl@0: CCamera advanced settings class exposes an API for controlling individually sl@0: digital camera advanced settings. These settings directly relate to the sl@0: image acquisition phase both for still images and video. sl@0: sl@0: @note This class is not intended for sub-classing and used to standardise existing sl@0: varieties of implementations. sl@0: sl@0: @note If the class methods leave, the output type parameter value is not guaranteed to be valid. sl@0: sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: class CCamera::CCameraAdvancedSettings : public CBase sl@0: { sl@0: /* so can use internal factory functions etc. */ sl@0: friend class CCamera; sl@0: sl@0: public: sl@0: sl@0: /** Specifies camera type. */ sl@0: enum TCameraType sl@0: { sl@0: /** Unable to identify. */ sl@0: ECameraUnknown = 0x00, sl@0: /** Camera is non-detachable from device. Camera is always present. */ sl@0: ECameraOnBoard = 0x01, sl@0: /** Camera is detachable from device. Camera is not always present. */ sl@0: ECameraPluggable = 0x02 sl@0: }; sl@0: sl@0: /** Specifies stabilization mode of the camera. */ sl@0: enum TStabilizationMode sl@0: { sl@0: /** Not present or switched off, default */ sl@0: EStabilizationModeOff = 0x00, sl@0: /** Stabilization only in horizontal direction. */ sl@0: EStabilizationModeHorizontal = 0x01, sl@0: /** Stabilization only in vertical direction. */ sl@0: EStabilizationModeVertical = 0x02, sl@0: /** Rotational stabilization. */ sl@0: EStabilizationModeRotation = 0x04, sl@0: /** Automatic stabilization. */ sl@0: EStabilizationModeAuto = 0x08, sl@0: /** Manual stabilization. */ sl@0: EStabilizationModeManual = 0x10 sl@0: }; sl@0: sl@0: /** Supported magnitudes of stabilization effect when in manual mode. */ sl@0: enum TStabilizationEffect sl@0: { sl@0: /** Stabilization effect is off. */ sl@0: EStabilizationOff = 0x00, sl@0: /** Stabilization effect is automatic, default. */ sl@0: EStabilizationAuto = 0x01, sl@0: /** Stabilization effect is very small in magnitude. */ sl@0: EStabilizationFine = 0x02, sl@0: /** Stabilization effect is average in magnitude. */ sl@0: EStabilizationMedium = 0x04, sl@0: /** Stabilization effect is large in magnitude. */ sl@0: EStabilizationStrong = 0x08 sl@0: }; sl@0: sl@0: /** Supported stabilization algorithms, graded on complexity. */ sl@0: enum TStabilizationAlgorithmComplexity sl@0: { sl@0: /** Stabilization algorithm selection is automatic, default. */ sl@0: EStabilizationComplexityAuto = 0x00, sl@0: /** Stabilization algorithm is simple - less precise but fast. */ sl@0: EStabilizationComplexityLow = 0x01, sl@0: /** Stabilization algorithm is of medium complexity. */ sl@0: EStabilizationComplexityMedium = 0x02, sl@0: /** Stabilization algorithm is of high complexity. */ sl@0: EStabilizationComplexityHigh = 0x04 sl@0: }; sl@0: sl@0: /** Supported focus modes. */ sl@0: enum TFocusMode sl@0: { sl@0: /** Focus mode is unknown. */ sl@0: EFocusModeUnknown = 0x00, sl@0: /** Focus is automatic, default. */ sl@0: EFocusModeAuto = 0x01, sl@0: /** Focus is fixed. */ sl@0: EFocusModeFixed = 0x02, sl@0: /** Focus is manually set. */ sl@0: EFocusModeManual = 0x04 sl@0: }; sl@0: sl@0: /** Supported focus ranges. */ sl@0: enum TFocusRange sl@0: { sl@0: /** Auto. Default */ sl@0: EFocusRangeAuto = 0x00, sl@0: /** Focus operates in close range (macro). */ sl@0: EFocusRangeMacro = 0x01, sl@0: /** Normal operation. */ sl@0: EFocusRangeNormal = 0x02, sl@0: /** Extended (tele) operation. */ sl@0: EFocusRangeTele = 0x04, sl@0: /** Focus at larger areas at short to medium distance. */ sl@0: EFocusRangePortrait = 0x08, sl@0: /** Optimised macro operation, sl@0: where depth of field is very shallow and observation area changes quickly. */ sl@0: EFocusRangeSuperMacro = 0x10, sl@0: /** sl@0: All objects at distances from half of the hyperfocal distance out to infinity will be in focus. sl@0: This gives gives maximum depth of field. sl@0: sl@0: This enum value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or sl@0: CCamera::NewDuplicate2L(). sl@0: sl@0: */ sl@0: EFocusRangeHyperfocal = 0x20, sl@0: /** sl@0: When there is a near obstacle or better focus wanted for far away objects. sl@0: sl@0: This enum value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or sl@0: CCamera::NewDuplicate2L(). sl@0: sl@0: */ sl@0: EFocusRangeInfinite = 0x40 sl@0: }; sl@0: sl@0: /** Specifies the supported autofocus types. */ sl@0: enum TAutoFocusType sl@0: { sl@0: /** Autofocus is switched off. */ sl@0: EAutoFocusTypeOff = 0x00, sl@0: /** Operates on a single shot, consumes less power. */ sl@0: EAutoFocusTypeSingle = 0x01, sl@0: /** Continious autofocus, more precise but consumes more power. sl@0: also known as AF Servo. */ sl@0: EAutoFocusTypeContinuous = 0x02 sl@0: }; sl@0: sl@0: /** Specifies the autofocus area. */ sl@0: enum TAutoFocusArea sl@0: { sl@0: /** Automatic. Default value */ sl@0: EAutoFocusTypeAuto = 0x00, sl@0: /** Single area, suitable for relatively flat surfaces and portrait. */ sl@0: EAutoFocusTypeSingleArea = 0x01, sl@0: /** Multiple points of an object, more weighting for centre points. */ sl@0: EAutoFocusTypeMultiAreaCentered = 0x02 sl@0: }; sl@0: sl@0: /** Specifies the Metering mode for the camera. sl@0: EMeteringModeAuto is the default value. */ sl@0: enum TMeteringMode sl@0: { sl@0: /** Automatic mode, default. */ sl@0: EMeteringModeAuto = 0x0000, sl@0: /** Metering in which the center is given a weighted priority. */ sl@0: EMeteringModeCenterWeighted = 0x0001, sl@0: /** Metering of a central area/spot only, also known as partial. */ sl@0: EMeteringModeSpot = 0x0002, sl@0: /** Metering is evaluated over a matrix(several spots) and calculated sl@0: as a function of that. Usually best but with increased sl@0: power consumption. Alternative name multi-metering mode. */ sl@0: EMeteringModeEvaluative = 0x0004 sl@0: }; sl@0: sl@0: /** Specifies the drive mode for the camera. This determines how and in what sucession are images sl@0: shot. EDriveModeSingleShot is the default.*/ sl@0: enum TDriveMode sl@0: { sl@0: /** Automatic. Default */ sl@0: EDriveModeAuto = 0x0000, sl@0: /** Camera takes a single image/shot. */ sl@0: EDriveModeSingleShot = 0x0001, sl@0: /** Camera continuously captures images (as fast as it can) until stopped or out of storage medium. */ sl@0: EDriveModeContinuous = 0x0002, sl@0: /** Camera is in bracketing mode, producing individual frames. @see TBracketMode */ sl@0: EDriveModeBracket = 0x0004, sl@0: /** Camera is in bracketing mode, but producing a single image. @see TBracketMode */ sl@0: EDriveModeBracketMerge = 0x0008, sl@0: /** camera captures a single shot after specified time period. @see Timer() */ sl@0: EDriveModeTimed = 0x0010, sl@0: /** Camera captures a set of images with an uniform interval between them. @see TimeLapse() */ sl@0: EDriveModeTimeLapse = 0x0020, sl@0: /** Camera captures a set of images as fast as it can, but in batches(bursts). */ sl@0: EDriveModeBurst = 0x0040, sl@0: /** Camera captures a set of images before and after camera capture key press event. Client can specify sl@0: the amount of pre-capture and post-capture images to be saved via TDriveModeDependentAttributes. sl@0: The total amount of images to be saved will be pre-capture images + 1 + post-capture images. sl@0: sl@0: @note This drive mode is only available to clients using the CCamera::New2L() or CCamera::NewDuplicate2L() sl@0: in addition to the new image capture APIs ie. CCameraPreImageCaptureControl, CCameraImageCapture and sl@0: CCameraPostImageCaptureControl. sl@0: sl@0: @publishedPartner sl@0: @prototype sl@0: */ sl@0: EDriveModeTimeNudgeCapture = 0x0080 sl@0: }; sl@0: sl@0: /** Specifies Bracket mode. */ sl@0: enum TBracketMode sl@0: { sl@0: /** Bracket mode is switched off. Default value. */ sl@0: EBracketModeOff = 0x0000, sl@0: /** Bracket mode on. Three consecutive pictures are taken in order sl@0: under (-1), on (0), over (+1), where correction magnitude sl@0: is defined by bracket step size and by TBracketParameter sl@0: @see TBracketStep sl@0: @see TBracketParameter */ sl@0: EBracketMode3Image = 0x0001, sl@0: /** Bracket mode on. Five consecutive pictures are taken in order sl@0: under (-2),under (-1), on (0), over (+1), over (+2), where correction magnitude sl@0: is defined by bracket step size and by TBracketParameter sl@0: @see TBracketStep sl@0: @see TBracketParameter */ sl@0: EBracketMode5Image = 0x0002 sl@0: }; sl@0: sl@0: /** Supported parameters used for bracketing. sl@0: @note Bracket mode parameter value changes by sl@0: a selected uniform step between successive image shots. sl@0: @see TBracketStep sl@0: @see TBracketMode. */ sl@0: enum TBracketParameter sl@0: { sl@0: /** None. */ sl@0: EBracketParameterNone = 0x0000, sl@0: /** Exposure settings change. */ sl@0: EBracketParameterExposure = 0x0001, sl@0: /** Flash power change. */ sl@0: EBracketParameterFlashPower = 0x0002, sl@0: /** Colour balance settings change. */ sl@0: EBracketParameterColourBalance = 0x0004, sl@0: /** Aperture settings change. */ sl@0: BracketParameterAperture = 0x0008, sl@0: /** Autofocus settings change. */ sl@0: BracketParameterAutoFocus = 0x0010 sl@0: }; sl@0: sl@0: /** Specifies the magnitude of bracketing step. sl@0: The actual value and availability is parameter dependent. sl@0: @see TBracketParameter sl@0: */ sl@0: enum TBracketStep sl@0: { sl@0: /** Not supported. */ sl@0: EBracketStepNonConfig = 0x00, sl@0: /** Small value. */ sl@0: EBracketStepSmall = 0x01, sl@0: /** Medium value. */ sl@0: EBracketStepMedium = 0x02, sl@0: /** Large value. */ sl@0: EBracketStepLarge = 0x04 sl@0: }; sl@0: sl@0: /** Specifies the orientation of the picture. */ sl@0: enum TPictureOrientation sl@0: { sl@0: /** No information about picture orientation. */ sl@0: EPictureOrientationUnknown = 0x00, sl@0: /** Portrait - height larger than width. */ sl@0: EPictureOrientationPortrait = 0x01, sl@0: /** Landscape width larger than height. */ sl@0: EPictureOrientationLandscape = 0x02, sl@0: /** Square width equals the height. */ sl@0: EPictureOrientationSquare = 0x04 sl@0: }; sl@0: sl@0: /** Specifies the pixel aspect ratio sl@0: @note It is specified as a fraction of sl@0: (x) horizontal pixel size divided by vertical (y) pixel size. sl@0: The pixel aspect ratio for square pixels is 1/1. sl@0: */ sl@0: enum TPixelAspectRatio sl@0: { sl@0: /** Pixel ratio undetermined */ sl@0: EPixelAspectUnknown = 0x00, sl@0: /** Pixel Ratio 1:1. */ sl@0: EPixelAspect1To1 = 0x01, sl@0: /** Pixel Ratio 12:11 */ sl@0: EPixelAspect12To11 = 0x02, sl@0: /** Pixel Ratio 11:10. */ sl@0: EEPixelAspect11To10 = 0x04, sl@0: /** Pixel Ratio 59:54. */ sl@0: EEPixelAspect59To54 = 0x08, sl@0: /** Pixel Ratio 16:11. sl@0: @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L() sl@0: */ sl@0: EEPixelAspect16To11 = 0x10, sl@0: /** Pixel Ratio 10:11. sl@0: @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L() sl@0: */ sl@0: EEPixelAspect10To11 = 0x20, sl@0: /** Pixel Ratio 40:33. sl@0: @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L() sl@0: */ sl@0: EEPixelAspect40To33 = 0x40 sl@0: }; sl@0: sl@0: /** Specifies YUV colour space dynamic range. sl@0: @note video compressors often use narrower than the default range. sl@0: The nominal Y range is [16:235] and the U and V ranges [16:240]. sl@0: */ sl@0: enum TYuvRange sl@0: { sl@0: /** Yuv range undetermined */ sl@0: EYuvRangeUnknown = 0x00, sl@0: /** Yuv Full Range. The nominal Y,U and V colours range is [0:255]. */ sl@0: EYuvRangeFull = 0x01, sl@0: /** Yuv Cropped Range. The nominal Y range is [16:235] and the U and V ranges [16:240]. */ sl@0: EYuvRangeVideoCropped = 0x02 sl@0: }; sl@0: sl@0: /** Specifies the units supported by the camera for manual white balance setting. sl@0: */ sl@0: enum TWBUnits sl@0: { sl@0: /** The units type is undetermined or not supported. */ sl@0: EWBUnknown, sl@0: /** The white balance is represented as temperature degrees in Kelvin. */ sl@0: EWBColorTemperature, sl@0: /** The white balance is represented as RGB triples. */ sl@0: EWBRgb sl@0: }; sl@0: sl@0: /** sl@0: Specifies the ISO type supported by the camera. ISO refers to the sensivity of the sl@0: image sensor and is one of the factors influencing the exposure. sl@0: sl@0: */ sl@0: enum TISORateType sl@0: { sl@0: /** ISO Not supported. Camera uses a fixed ISO rate internally and never reveals this information. */ sl@0: EISONone = 0x00, sl@0: /** Camera gives a list of manual ISO rates to the user to set. Recommendation is to start camera in the manual ISO mode, by default. */ sl@0: EISOManual = 0x01, sl@0: /** Camera chooses the ISO on its own without prioritising any particular exposure parameters. */ sl@0: EISOAutoUnPrioritised = 0x02, sl@0: /** Camera chooses the ISO on its own by prioritising ISO. */ sl@0: EISOAutoISOPrioritised = 0x04, sl@0: /** Camera chooses the ISO on its own after prioritising shutter speed. */ sl@0: EISOAutoShutterSpeedPrioritised = 0x08, sl@0: /** Camera chooses the ISO on its own after prioritising aperture opening. */ sl@0: EISOAutoAperturePrioritised = 0x10 sl@0: }; sl@0: sl@0: /** sl@0: Specifies the unfavourable circumstances as pre capture warnings which may be issued before image/video capture. sl@0: sl@0: */ sl@0: enum TPreCaptureWarning sl@0: { sl@0: /** No warnings */ sl@0: EPCWNone = 0x0000, sl@0: /** warning to indicate that camera sensor is over exposed */ sl@0: EPCWOverExposure = 0x0001, sl@0: /** warning to indicate that camera sensor is under exposed */ sl@0: EPCWUnderExposure = 0x0002, sl@0: /** warning to indicate that camera operates under insufficient lightning conditions */ sl@0: EPCWLowLight = 0x0004, sl@0: /** warning to indicate that focussing is not optimum. This is valid for manual/fixed focus only */ sl@0: EPCWBadFocus = 0x0008, sl@0: /** warning to indicate that camera might not be firmly gripped (Tripod required). This is same as long exposure */ sl@0: EPCWHandShakePossible = 0x0010, sl@0: /** warning to indicate that camera has not enough power to survive the flash operations (battery discharged) */ sl@0: EPCWNotEnoughPowerForFlash = 0x0020, sl@0: /** warning to indicate that the current white balance is not the desired one */ sl@0: EPCWWrongWhiteBalanceValue = 0x0040, sl@0: /** warning to indicate that the current flash value is not the desired one */ sl@0: EPCWWrongFlashValue = 0x0080, sl@0: /** warning to indicate that the current digital zoom value is not the desired one */ sl@0: EPCWWrongDigiZoomValue = 0x0100, sl@0: /** warning to indicate that the desired digital zoom affects the quality of image */ sl@0: EPCWDigiZoomBadQuality = 0x0200, sl@0: /** warning to indicate that flash is not ready. Recommendation: user may subscribe for this warning or issue sl@0: IsFlashReady() also. Using both options is not encouraged */ sl@0: EPCWFlashNotReady = 0x0400, sl@0: /** unknown reason */ sl@0: EPCWGeneralWarning = 0x0800, sl@0: /** warning to indicate that flash has been overheated. sl@0: sl@0: @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L() sl@0: sl@0: @publishedPartner sl@0: @prototype sl@0: */ sl@0: EPCWFlashOverheated = 0x1000, sl@0: /** warning to indicate that flash will not be fired because of enough ambient light. sl@0: sl@0: @note This value is available only to the API clients using CCamera::New2L() or CCamera::NewDuplicate2L() sl@0: sl@0: @publishedPartner sl@0: @prototype sl@0: */ sl@0: EPCWFlashNotNeeded = 0x2000 sl@0: }; sl@0: sl@0: /** sl@0: Describes the camera mode. sl@0: sl@0: */ sl@0: enum TCameraMode sl@0: { sl@0: /** Camera is Idle */ sl@0: EModeIdle = 0x00, sl@0: /** DSA based Viewfinder runs */ sl@0: EModeDSAViewFinder = 0x01, sl@0: /** Client based Viewfinder runs */ sl@0: EModeClientViewFinder = 0x02 sl@0: }; sl@0: sl@0: /** sl@0: Specifies the different types of auto focus assistant light sl@0: */ sl@0: enum TAFAssistantLight sl@0: { sl@0: /** switch off the AF assistant light from either of 'manual on' or 'auto' mode */ sl@0: EAFAssistantLightOff = 0x00, sl@0: /** switch on the AF assistant light manually */ sl@0: EAFAssistantLightManualOn = 0x01, sl@0: /** Put the AF assistant light in auto mode. It will be automatically decided when to switch on or off. */ sl@0: EAFAssistantLightAuto = 0x02 sl@0: }; sl@0: sl@0: /** sl@0: Specifies the different types of continuous zoom supported. sl@0: The enumeration list may be extended in future. sl@0: sl@0: @publishedPartner sl@0: @prototype sl@0: */ sl@0: enum TContinuousZoomType sl@0: { sl@0: /** Continuous zoom not supported */ sl@0: EContinuousZoomNotSupported = 0x00, sl@0: /** Continuous zoom 'Optical' only, No 'Digital' */ sl@0: EContinuousZoomOpticalOnly = 0x01, sl@0: /** Continuous zoom 'Optical' and 'Digital' */ sl@0: EContinuousZoomMixed = 0x02, sl@0: /** Continuous zoom 'Digital' only, No 'Optical' */ sl@0: EContinuousZoomDigitalOnly = 0x04 sl@0: }; sl@0: sl@0: /** sl@0: Specifies the zoom direction for continuous zoom operation. sl@0: The enumeration list may be extended in future. sl@0: sl@0: @publishedPartner sl@0: @prototype sl@0: */ sl@0: enum TZoomDirection sl@0: { sl@0: /** Implies that feature not supported. */ sl@0: EZoomDirectionNone =0x00, sl@0: /** Implies zooming out. */ sl@0: EZoomDirectionWide =0x01, sl@0: /** Implies zooming in. */ sl@0: EZoomDirectionTele =0x02 sl@0: }; sl@0: sl@0: /** sl@0: Different levels for performance vectors like speed, quality, low memory consumption and low power consumption. sl@0: The enumeration list may be extended in future. sl@0: sl@0: @publishedPartner sl@0: @prototype sl@0: */ sl@0: enum TPerformanceLevel sl@0: { sl@0: /** High level preference. */ sl@0: ELevelHigh = 1, sl@0: /** Medium level preference. */ sl@0: ELevelMedium = 2, sl@0: /** Low level preference. */ sl@0: ELevelLow = 3, sl@0: /** Dont care (No preference). */ sl@0: ELevelDontCare = 4 sl@0: }; sl@0: sl@0: /** sl@0: Specifies flicker removal options. sl@0: The enumeration list may be extended in future. sl@0: sl@0: @internalTechnology sl@0: */ sl@0: enum TFlickerRemoval sl@0: { sl@0: /** Not Supported. */ sl@0: EFlickerRemovalNone = 0x00, sl@0: /** Flicker removal for Field frequency of 50Hz. */ sl@0: EFlickerRemoval50Hz = 0x01, sl@0: /** Flicker removal for Field frequency of 60Hz. */ sl@0: EFlickerRemoval60Hz = 0x02, sl@0: /** Auto flicker removal. */ sl@0: EFlickerRemovalAuto = 0x04, sl@0: /** Switch Off flicker removal. */ sl@0: EFlickerRemovalSwitchOff = 0x08 sl@0: }; sl@0: sl@0: /** sl@0: Specifes the type of neutral density filters available. sl@0: The enumeration list may be extended in future. sl@0: sl@0: @internalTechnology sl@0: */ sl@0: enum TNDFilter sl@0: { sl@0: /** Not Supported. */ sl@0: ENDFilterNone = 0x00, sl@0: /** Auto ND Filter. */ sl@0: ENDFilterAuto = 0x01, sl@0: /** Switched off ND Filter. */ sl@0: ENDFilterSwitchedOff = 0x02, sl@0: /** High level ND Filter. */ sl@0: ENDFilterHigh = 0x04, sl@0: /** Medium level ND Filter. */ sl@0: ENDFilterMedium = 0x08, sl@0: /** Low level ND Filter. */ sl@0: ENDFilterLow = 0x10, sl@0: /** General ND Filter. */ sl@0: ENDFilterGeneral = 0x20 sl@0: }; sl@0: sl@0: /** sl@0: Specifies the various events for which the LED effects could be used. sl@0: The enumeration list may be extended in future. sl@0: sl@0: @internalTechnology sl@0: */ sl@0: enum TLEDEvent sl@0: { sl@0: /** Not supported. */ sl@0: ELEDEventNone = 0x00, sl@0: /** LED effect needed for self timer. */ sl@0: ELEDEventSelfTimer = 0x01, sl@0: /** LED effect needed for starting of viewfinder. */ sl@0: ELEDEventViewfinderStart = 0x02, sl@0: /** LED effect needed for stoping of viewfinder. */ sl@0: ELEDEventViewfinderStop = 0x04, sl@0: /** LED effect needed for still image capture. */ sl@0: ELEDEventStillImageCapture = 0x08, sl@0: /** LED effect needed for video recording. */ sl@0: ELEDEventVideoRecording = 0x10 sl@0: }; sl@0: sl@0: /** sl@0: Specifes the type of LED effects available. sl@0: The enumeration list may be extended in future. sl@0: sl@0: @internalTechnology sl@0: */ sl@0: enum TLEDEffect sl@0: { sl@0: /** Not supported. */ sl@0: ELEDEffectNone =0x00, sl@0: /** LED always on. */ sl@0: ELEDEffectHardwired =0x01, sl@0: /** LED auto. */ sl@0: ELEDEffectAuto =0x02, sl@0: /** LED Effect manually switched on. */ sl@0: ELEDEffectManualSwitchOn =0x04, sl@0: /** LED Effect switched off. */ sl@0: ELEDEffectSwitchOff =0x08, sl@0: /** LED Custom Effect. */ sl@0: ELEDEffectCustom =0x10 sl@0: }; sl@0: sl@0: /** sl@0: Color channels on which manual gain can be selectively applied. sl@0: The enumeration list may be extended in future. sl@0: sl@0: @internalTechnology sl@0: */ sl@0: enum TColorChannel sl@0: { sl@0: /** Red Color Channel (RGB model). */ sl@0: EColorChannelRed, sl@0: /** Green Color Channel (RGB model). */ sl@0: EColorChannelGreen, sl@0: /** Blue Color Channel (RGB model). */ sl@0: EColorChannelBlue, sl@0: /** Luminance Y component (YUV model). */ sl@0: EChannelLumaY, sl@0: /** Chrominance U component (YUV model). */ sl@0: EChannelChromaU, sl@0: /** Chrominance V component (YUV model). */ sl@0: EChannelChromaV sl@0: }; sl@0: sl@0: /** sl@0: Class used to provide a particular custom LED effect. sl@0: sl@0: @internalTechnology sl@0: */ sl@0: class TECamLEDSpecialEffectStep sl@0: { sl@0: public: sl@0: TECamLEDSpecialEffectStep(); sl@0: sl@0: TUint Size() const; sl@0: TUint Version() const; sl@0: sl@0: private: sl@0: //for future expansion sl@0: TUint iSize:24; sl@0: TUint iVersion:8; sl@0: sl@0: // reserved for future expansion. sl@0: TInt iReserved1; sl@0: TInt iReserved2; sl@0: TInt iReserved3; sl@0: sl@0: public: sl@0: /** Blinking frequency of LED in Hertz. */ sl@0: TUint iBlinkingFrequency; sl@0: /** Represents the intensity of LED in millicandela. */ sl@0: TUint iIntensity; sl@0: /** Frequency step with which the blinking frequency changes with time. May be positive as well as negative. */ sl@0: TInt iFrequencyStep; sl@0: /** Time duration for which the particular LED special effect step would be valid. */ sl@0: TTimeIntervalMicroSeconds32 iDuration; sl@0: }; sl@0: sl@0: /** sl@0: Class used to provide supported continuous zoom information. sl@0: sl@0: @internalTechnology sl@0: @prototype sl@0: */ sl@0: class TContinuousZoomSupportInfo sl@0: { sl@0: public: sl@0: IMPORT_C TContinuousZoomSupportInfo(); sl@0: sl@0: IMPORT_C TUint Size() const; sl@0: IMPORT_C TUint Version() const; sl@0: sl@0: private: sl@0: //for future expansion sl@0: TUint iSize:24; sl@0: TUint iVersion:8; sl@0: sl@0: // reserved for future expansion sl@0: TInt iReserved1; sl@0: TInt iReserved2; sl@0: TInt iReserved3; sl@0: sl@0: public: sl@0: /** Maximum continuous zoom speed supported. Minimum speed is 0. */ sl@0: TInt iMaxSpeedSupported; sl@0: /** Minimum continuous zoom acceleration supported. A negative value signifies deceleration. */ sl@0: TInt iMinAccelerationSupported; sl@0: /** Maximum continuous zoom acceleration supported. */ sl@0: TInt iMaxAccelerationSupported; sl@0: /** Minimum continuous zoom value. For digital zoom, this could be 0 unless viewfinder frames are not cropped and scaled up by default. sl@0: Represented as a concrete value multiplied by KECamFineResolutionFactor. */ sl@0: TInt iContinuousZoomMinLimit; sl@0: /** Maximum continuous zoom value. Represented as a concrete value multiplied by KECamFineResolutionFactor. */ sl@0: TInt iContinuousZoomMaxLimit; sl@0: }; sl@0: sl@0: /** sl@0: Class used to provide essential parameters for continuous zoom operation. sl@0: sl@0: @internalTechnology sl@0: @prototype sl@0: */ sl@0: class TContinuousZoomParameters sl@0: { sl@0: public: sl@0: IMPORT_C TContinuousZoomParameters(); sl@0: sl@0: IMPORT_C TUint Size() const; sl@0: IMPORT_C TUint Version() const; sl@0: sl@0: private: sl@0: //for future expansion sl@0: TUint iSize:24; sl@0: TUint iVersion:8; sl@0: sl@0: // reserved for future expansion sl@0: TInt iReserved1; sl@0: TInt iReserved2; sl@0: TInt iReserved3; sl@0: sl@0: public: sl@0: /** Type of continuous zoom to be used. */ sl@0: TContinuousZoomType iContinuousZoomType; sl@0: /** Zoom direction to be used. */ sl@0: TZoomDirection iZoomDirection; sl@0: /** Continuous zoom speed to be used. Represented as a concrete value multiplied by KECamFineResolutionFactor. */ sl@0: TInt iContinuousZoomSpeed; sl@0: /** Continuous zoom acceleration to be used. Represented as a concrete value multiplied by KECamFineResolutionFactor. */ sl@0: TInt iContinuousZoomAcceleration; sl@0: /** Limit of continuous zoom range. Represented as a concrete value multiplied by KECamFineResolutionFactor. */ sl@0: TInt iContinuousZoomLimit; sl@0: }; sl@0: sl@0: public: sl@0: sl@0: IMPORT_C static CCameraAdvancedSettings* NewL(CCamera& aCamera); sl@0: sl@0: IMPORT_C TCameraType CameraType() const; sl@0: sl@0: IMPORT_C TCameraType CameraType(TInt aCameraIndex); sl@0: sl@0: IMPORT_C TBool IsCameraPresent() const; sl@0: sl@0: IMPORT_C TBool IsCameraPresent(TInt aCameraIndex); sl@0: sl@0: IMPORT_C TInt CameraIndex() const; sl@0: sl@0: IMPORT_C TInt SupportedStabilizationModes() const; sl@0: sl@0: IMPORT_C TStabilizationMode StabilizationMode() const; sl@0: sl@0: IMPORT_C void SetStabilizationMode(TStabilizationMode aStabilizationMode); sl@0: sl@0: IMPORT_C TInt SupportedFocusModes() const; sl@0: sl@0: IMPORT_C TFocusMode FocusMode() const; sl@0: sl@0: IMPORT_C void SetFocusMode(TFocusMode aFocusMode); sl@0: sl@0: IMPORT_C TInt SupportedFocusRanges() const; sl@0: sl@0: IMPORT_C TFocusRange FocusRange() const; sl@0: sl@0: IMPORT_C void SetFocusRange(TFocusRange aFocusRange); sl@0: sl@0: IMPORT_C TInt SupportedAutoFocusTypes() const; sl@0: sl@0: IMPORT_C TAutoFocusType AutoFocusType() const; sl@0: sl@0: IMPORT_C void SetAutoFocusType(TAutoFocusType aAutoFocusType); sl@0: sl@0: IMPORT_C TInt SupportedAutoFocusAreas() const; sl@0: sl@0: IMPORT_C TAutoFocusArea AutoFocusArea() const; sl@0: sl@0: IMPORT_C void SetAutoFocusArea(TAutoFocusArea aAutoFocusArea); sl@0: sl@0: IMPORT_C TInt FocusDistance() const; sl@0: sl@0: IMPORT_C void SetFocusDistance(TInt aDistance); sl@0: sl@0: IMPORT_C TInt GetMinFocalLength() const; sl@0: sl@0: IMPORT_C void GetSupportedIsoRatesL(RArray& aSupportedIsoRates) const; sl@0: sl@0: IMPORT_C TInt IsoRate() const; sl@0: sl@0: IMPORT_C void SetIsoRate(TInt aRate); sl@0: sl@0: IMPORT_C void GetAperturesL(RArray& aFStops, TValueInfo& aInfo) const; sl@0: sl@0: IMPORT_C TInt Aperture() const; sl@0: sl@0: IMPORT_C void SetAperture(TInt aFStop); sl@0: sl@0: IMPORT_C void GetShutterSpeedsL(RArray& aShutterSpeeds, TValueInfo& aInfo) const; sl@0: sl@0: IMPORT_C TInt ShutterSpeed() const; sl@0: sl@0: IMPORT_C void SetShutterSpeed(TInt aShutterSpeed); sl@0: sl@0: IMPORT_C TInt SupportedMeteringModes() const; sl@0: sl@0: IMPORT_C TMeteringMode MeteringMode() const; sl@0: sl@0: IMPORT_C void SetMeteringMode(TMeteringMode aMeteringMode); sl@0: sl@0: IMPORT_C TInt SupportedDriveModes() const; sl@0: sl@0: IMPORT_C TDriveMode DriveMode() const; sl@0: sl@0: IMPORT_C void SetDriveMode(TDriveMode aDriveMode); sl@0: sl@0: IMPORT_C TInt SupportedBracketModes() const; sl@0: sl@0: IMPORT_C TBracketMode BracketMode() const; sl@0: sl@0: IMPORT_C void SetBracketMode(TBracketMode aBracketMode); sl@0: sl@0: IMPORT_C TInt SupportedBracketParameters() const; sl@0: sl@0: IMPORT_C TBracketParameter BracketParameter() const; sl@0: sl@0: IMPORT_C void SetBracketParameter(TBracketParameter aBracketParameter); sl@0: sl@0: IMPORT_C TInt SupportedBracketSteps() const; sl@0: sl@0: IMPORT_C TBracketStep BracketStep() const; sl@0: sl@0: IMPORT_C void SetBracketStep(TBracketStep aBracketStep); sl@0: sl@0: IMPORT_C void GetBracketMerge(TInt& aStartIndex, TInt& aFrames) const; sl@0: sl@0: IMPORT_C void SetBracketMerge(TInt aStartIndex, TInt aFrames); sl@0: sl@0: IMPORT_C TInt SupportedFlashModes() const; sl@0: sl@0: IMPORT_C CCamera::TFlash FlashMode() const; sl@0: sl@0: IMPORT_C void SetFlashMode(CCamera::TFlash aMode); sl@0: sl@0: IMPORT_C TBool RedEyeReduceOn() const; sl@0: sl@0: IMPORT_C void SetRedEyeReduceOn(TBool aState); sl@0: sl@0: IMPORT_C void GetFlashCompensationStepsL(RArray& aFlashCompensationSteps, TValueInfo& aInfo) const; sl@0: sl@0: IMPORT_C TInt FlashCompensationStep() const; sl@0: sl@0: IMPORT_C TInt GetFlashCompensationStep(TInt& aFlashCompensationStep) const; sl@0: sl@0: IMPORT_C void SetFlashCompensationStep(TInt aFlashCompensationStep); sl@0: sl@0: IMPORT_C void GetFlashCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const; sl@0: sl@0: IMPORT_C TInt FlashCompensation() const; sl@0: sl@0: IMPORT_C TInt GetFlashCompensation(TInt& aFlashCompensation) const; sl@0: sl@0: IMPORT_C void SetFlashCompensation(TInt aFlashCompensationInSteps); sl@0: sl@0: IMPORT_C TBool IsExternalFlashPresent() const; sl@0: sl@0: IMPORT_C void GetManualFlashPowerLevelsL(RArray& aManualFlashPowerLevels, TValueInfo& aInfo) const; sl@0: sl@0: IMPORT_C TInt ManualFlashPowerLevel() const; sl@0: sl@0: IMPORT_C void SetManualFlashPowerLevel(TInt aManualFlashPowerLevel); sl@0: sl@0: IMPORT_C TInt SupportedExposureModes() const; sl@0: sl@0: IMPORT_C CCamera::TExposure ExposureMode() const; sl@0: sl@0: IMPORT_C void SetExposureMode(CCamera::TExposure aExposureMode); sl@0: sl@0: IMPORT_C void GetExposureCompensationStepsL(RArray& aExposureCompensationSteps, TValueInfo& aInfo) const; sl@0: sl@0: IMPORT_C TInt ExposureCompensationStep() const; sl@0: sl@0: IMPORT_C TInt GetExposureCompensationStep(TInt& aExposureCompensationStep) const; sl@0: sl@0: IMPORT_C void SetExposureCompensationStep(TInt aExposureCompensationStep); sl@0: sl@0: IMPORT_C void GetExposureCompensationRangeInSteps(TInt& aNegativeCompensation, TInt& aPositiveCompensation) const; sl@0: sl@0: IMPORT_C TInt ExposureCompensation() const; sl@0: sl@0: IMPORT_C TInt GetExposureCompensation(TInt& aExposureCompensation) const; sl@0: sl@0: IMPORT_C void SetExposureCompensation(TInt aExposureCompensationInSteps); sl@0: sl@0: IMPORT_C TInt SupportedWhiteBalanceModes() const; sl@0: sl@0: IMPORT_C CCamera::TWhiteBalance WhiteBalanceMode() const; sl@0: sl@0: IMPORT_C void SetWhiteBalanceMode(CCamera::TWhiteBalance aWhiteBalanceMode); sl@0: sl@0: IMPORT_C TBool ApertureExposureLockOn() const; sl@0: sl@0: IMPORT_C void SetApertureExposureLockOn(TBool aAELock); sl@0: sl@0: IMPORT_C TBool ShootClickOn() const; sl@0: sl@0: IMPORT_C void SetShootClickOn(TBool aShootClickOn); sl@0: sl@0: IMPORT_C void GetTimerIntervalsL(RArray& aTimerIntervals, TValueInfo& aInfo) const; sl@0: sl@0: IMPORT_C TInt TimerInterval() const; sl@0: sl@0: IMPORT_C void SetTimerInterval(TInt aTimerInterval); sl@0: sl@0: IMPORT_C void GetTimeLapsePeriodRange(TTime& aTimeLapseMin, TTime& aTimeLapseMax) const; sl@0: sl@0: IMPORT_C void GetTimeLapse(TTime& aStart, TTime& aEnd, TTime& aInterval) const; sl@0: sl@0: IMPORT_C void SetTimeLapse(const TTime& aStart, const TTime& aEnd, const TTime& aInterval); sl@0: sl@0: IMPORT_C TPictureOrientation PictureOrientation() const; sl@0: sl@0: IMPORT_C void SetPictureOrientation(TPictureOrientation aOrientation); sl@0: sl@0: IMPORT_C TInt SupportedPixelAspectRatios() const; sl@0: sl@0: IMPORT_C TPixelAspectRatio PixelAspectRatio() const; sl@0: sl@0: IMPORT_C void SetPixelAspectRatio(TPixelAspectRatio aPixelAspectRatio); sl@0: sl@0: IMPORT_C TInt SupportedYuvRanges() const; sl@0: sl@0: IMPORT_C TYuvRange YuvRange() const; sl@0: sl@0: IMPORT_C void SetYuvRange(TYuvRange aYuvRange); sl@0: sl@0: IMPORT_C TInt BurstImages() const; sl@0: sl@0: IMPORT_C void SetBurstImages(TInt aImages); sl@0: sl@0: IMPORT_C void GetOpticalZoomStepsL(RArray& aOpticalZoomSteps, TValueInfo& aInfo) const; sl@0: sl@0: IMPORT_C TInt OpticalZoom() const; sl@0: sl@0: IMPORT_C void SetOpticalZoom(TInt aOpticalZoom); sl@0: sl@0: IMPORT_C void GetDigitalZoomStepsL(RArray& aDigitalZoomSteps, TValueInfo& aInfo) const; sl@0: sl@0: IMPORT_C TInt DigitalZoom() const; sl@0: sl@0: IMPORT_C void SetDigitalZoom(TInt aDigitalZoom); sl@0: sl@0: IMPORT_C TBool ExposureLockOn() const; sl@0: sl@0: IMPORT_C void SetExposureLockOn(TBool aState); sl@0: sl@0: IMPORT_C TBool AutoFocusLockOn() const; sl@0: sl@0: IMPORT_C void SetAutoFocusLockOn(TBool aState); sl@0: sl@0: IMPORT_C void GetSupportedSettingsL(RArray& aSettings) const; sl@0: sl@0: IMPORT_C void GetActiveSettingsL(RArray& aActiveSettings) const; sl@0: sl@0: IMPORT_C void GetDisabledSettingsL(RArray& aDisabledSettings) const; sl@0: sl@0: IMPORT_C TBool AutomaticSizeSelectionChangeOn() const; sl@0: sl@0: IMPORT_C void SetAutomaticSizeSelectionChangeOn(TBool aSetOn); sl@0: sl@0: IMPORT_C void GetSupportedContinuousAutoFocusTimeoutsL(RArray& aTimeouts, TValueInfo& aInfo) const; sl@0: sl@0: IMPORT_C TInt ContinuousAutoFocusTimeout() const; sl@0: sl@0: IMPORT_C void SetContinuousAutoFocusTimeout(TInt aTimeout); sl@0: sl@0: IMPORT_C TInt SupportedStabilizationEffects() const; sl@0: sl@0: IMPORT_C TStabilizationEffect StabilizationEffect() const; sl@0: sl@0: IMPORT_C void SetStabilizationEffect(TStabilizationEffect aEffect); sl@0: sl@0: IMPORT_C TInt SupportedStabilizationComplexityValues() const; sl@0: sl@0: IMPORT_C TStabilizationAlgorithmComplexity StabilizationComplexity() const; sl@0: sl@0: IMPORT_C void SetStabilizationComplexity(TStabilizationAlgorithmComplexity aComplexity); sl@0: sl@0: IMPORT_C TWBUnits SupportedWBUnits() const; sl@0: sl@0: IMPORT_C void GetWBRgbValue(TRgb& aValue) const; sl@0: sl@0: IMPORT_C void SetWBRgbValue(const TRgb& aValue); sl@0: sl@0: IMPORT_C void GetWBSupportedColorTemperaturesL(RArray& aWBColorTemperatures, TValueInfo& aInfo) const; sl@0: sl@0: IMPORT_C TInt WBColorTemperature() const; sl@0: sl@0: IMPORT_C void SetWBColorTemperature(TInt aWBColorTemperature); sl@0: sl@0: IMPORT_C ~CCameraAdvancedSettings(); sl@0: sl@0: IMPORT_C TInt IsFlashReady(TBool& aReady) const; sl@0: sl@0: IMPORT_C void GetCurrentFocusModeStepsL(RArray& aFocusModeSteps, TValueInfo& aInfo) const; sl@0: sl@0: IMPORT_C void GetSupportedISORateTypeL(TInt& aSupportedISORateTypes) const; sl@0: sl@0: IMPORT_C void SetISORateL(TISORateType aISORateType, TInt aParam); sl@0: sl@0: IMPORT_C void GetISORateL(TISORateType& aISORateType, TInt& aParam, TInt& aISORate) const; sl@0: sl@0: IMPORT_C void SetReferenceScreenL(CWsScreenDevice& aScreenDevice); sl@0: sl@0: IMPORT_C void GetDigitalZoomStepsForStillL(RArray& aDigitalZoomSteps, TValueInfo& aInfo, TInt aSizeIndex, sl@0: CCamera::TFormat aFormat, TBool& aIsInfluencePossible) const; sl@0: sl@0: IMPORT_C void GetDigitalZoomStepsForVideoL(RArray& aDigitalZoomSteps, TValueInfo& aInfo, TInt aFrameRateIndex, sl@0: TInt aSizeIndex, CCamera::TFormat aFormat, TBool& aIsInfluencePossible, CCamera::TExposure aExposure) const; sl@0: sl@0: IMPORT_C void GetPreCaptureWarningSupportedL(TCameraMode aCameraMode, TInt& aPreCaptureWarningSupported) const; sl@0: sl@0: IMPORT_C void SubscribeToPreCaptureWarningL(TInt aPreCaptureWarning); sl@0: sl@0: IMPORT_C void UnSubscribePreCaptureWarningL(); sl@0: sl@0: IMPORT_C void GetPreCaptureWarningL(TInt& aPreCaptureWarning) const; sl@0: sl@0: IMPORT_C void GetSupportedAFAssistantLightL(TInt& aSupportedAFAssistantLight) const; sl@0: sl@0: IMPORT_C void GetAFAssistantLightL(TAFAssistantLight& aAFAssistantLight) const; sl@0: sl@0: IMPORT_C void SetAFAssistantLightL(TAFAssistantLight aAFAssistantLight); sl@0: sl@0: IMPORT_C void GetSupportedContinuousZoomTypeL(TUint& aSupportedContinuousZoomType) const; sl@0: sl@0: IMPORT_C void GetFocalLengthInfoL(TInt& aMinFocalLength, TInt& aCurrentFocalLength, TInt& aMaxFocalLength) const; sl@0: sl@0: IMPORT_C void GetNumOperationPreferenceL(TUint& aNumOperationPreferenceSupported) const; sl@0: sl@0: IMPORT_C void EnumerateOperationPreferenceL(TUint aOperationPreferenceIndex, TPerformanceLevel& aSpeedLevel, sl@0: TPerformanceLevel& aQualityLevel, TPerformanceLevel& aLowMemoryConsumptionLevel, sl@0: TPerformanceLevel& aLowPowerConsumptionLevel) const; sl@0: sl@0: IMPORT_C void SetOperationPreferenceL(TUint aOperationPreferenceIndex); sl@0: sl@0: IMPORT_C void GetOperationPreferenceL(TInt& aOperationPreferenceIndex) const; sl@0: sl@0: IMPORT_C void GetSupportedEventsL(RArray& aSupportedEvents) const; sl@0: sl@0: IMPORT_C void GetIndirectFeatureChangesL(TUid aRequestedSetting, RArray& aIndirectFeatureChanges) const; sl@0: sl@0: IMPORT_C void CreateContinuousZoomL(MContinuousZoomObserver& aObserver, TContinuousZoomType aContinuousZoomType, CCameraContinuousZoom*& aContinuousZoom); sl@0: sl@0: private: sl@0: IMPORT_C CCameraAdvancedSettings(CCamera& aOwner); sl@0: IMPORT_C void ConstructL(); sl@0: sl@0: private: sl@0: enum TECAMEventFilterScheme sl@0: { sl@0: /** Black listing will mean not to receive specific events */ sl@0: EECAMEventFilterSchemeBlackList, sl@0: /** White listing will mean to receive only specific events */ sl@0: EECAMEventFilterSchemeWhiteList sl@0: }; sl@0: sl@0: void RegisterEventsL(TECAMEventFilterScheme aEventFilter, const RArray& aEvents); sl@0: void GetRegisterEventsL(TECAMEventFilterScheme aEventFilter, RArray& aEvents, TValueInfo& aInfo) const; sl@0: sl@0: void GetSupportedFlickerRemovalValueL(TUint& aSupportedFlickerRemovalValue) const; sl@0: void GetFlickerRemovalValueL(TFlickerRemoval& aFlickerRemovalValue) const; sl@0: void SetFlickerRemovalValueL(TFlickerRemoval aFlickerRemovalValue); sl@0: sl@0: void GetSupportedNDFilterL(TUint& aSupportedNDFilter) const; sl@0: void GetNDFilterL(TNDFilter& aNDFilter) const; sl@0: void SetNDFilterL(TNDFilter aNDFilter); sl@0: sl@0: void GetLEDEffectL(TLEDEvent aLEDEvent, TLEDEffect& aLEDEffect) const; sl@0: void SetLEDEffectL(TLEDEvent aLEDEvent, TLEDEffect aLEDEffect); sl@0: void SetLEDCustomEffectL(TLEDEvent aLEDEvent, const RArray& aLEDSpecialEffectSteps); sl@0: sl@0: void ReserveL(const TTimeIntervalMicroSeconds32& aMaxTimeToWait, TBool aKickOut); sl@0: void SetClientPriorityL(TInt aPriority); sl@0: void RestoreClientPriorityL(); sl@0: sl@0: void GetSupportedManualGainL(RArray& aSupportedManualGain, TColorChannel aColorChannel) const; sl@0: void GetManualGainL(TInt& aManualGain, TColorChannel aColorChannel) const; sl@0: void SetManualGainL(TInt aManualGain, TColorChannel aColorChannel); sl@0: sl@0: void SetWhiteBalanceLockL(TBool aEnableLock); sl@0: void GetWhiteBalanceLockStateL(TBool& aIsLocked) const; sl@0: sl@0: void EnableStateSavingL(RWriteStream& aLatestCameraState); sl@0: void DisableStateSavingL(); sl@0: void RestoreLatestStateL(RReadStream& aLatestCameraState); sl@0: void SaveCameraStateL(RWriteStream& aCustomCameraState); sl@0: void DisableCameraStateSavingL(RWriteStream& aCustomCameraState); sl@0: void RestoreCameraStateL(RReadStream& aCustomCameraState); sl@0: sl@0: private: sl@0: CCamera& iOwner; sl@0: MCameraAdvancedSettings* iImpl; // not owned sl@0: MCameraAdvancedSettings2* iImpl2; // not owned sl@0: sl@0: MCameraAdvancedSettings3* iImpl3; // not owned sl@0: sl@0: MCameraAdvancedSettings4* iImpl4; // not owned sl@0: }; sl@0: sl@0: /** sl@0: Supported presets with the assumption for scope and outcome sl@0: */ sl@0: sl@0: /** Default settings */ sl@0: static const TUid KUidECamPresetFactoryDefault = {KUidECamPresetFactoryDefaultUidValue}; sl@0: /** Daytime shot with normal exposure time, one shot autofocus, sl@0: medium ISO rating and no flash. */ sl@0: static const TUid KUidECamPresetOutdoor = {KUidECamPresetOutdoorUidValue}; sl@0: /** Daytime shot with short exposure time, continuous autofocus, sl@0: high Iso rating and no flash. */ sl@0: static const TUid KUidECamPresetOutdoorSport = {KUidECamPresetOutdoorSportUidValue}; sl@0: /** Daytime shot with very short exposure time, high shutter speed, sl@0: high Iso rating and no flash. */ sl@0: static const TUid KUidECamPresetSnow = {KUidECamPresetSnowUidValue}; sl@0: /** Daytime shot with very short exposure time, high shutter speed, sl@0: high contrast, reflections and no flash. */ sl@0: static const TUid KUidECamPresetBeach = {KUidECamPresetBeachUidValue}; sl@0: /** Night time shot with long central exposure time and high flash power. */ sl@0: static const TUid KUidECamPresetNightPortrait = {KUidECamPresetNightPortraitUidValue}; sl@0: /** Night time shot with long exposure time and no flash. */ sl@0: static const TUid KUidECamPresetNightFireworks = {KUidECamPresetNightFireworksUidValue}; sl@0: /** Daytime shot with medium exposure time, medium to high Iso rating, sl@0: overcast daylight, low contrast, fill-in flash. */ sl@0: static const TUid KUidECamPresetFog = {KUidECamPresetFogUidValue}; sl@0: /** Fluorescent lightning with medium exposure time, sl@0: medium to low shutter speed with flash. */ sl@0: static const TUid KUidECamPresetIndoor = {KUidECamPresetIndoorUidValue}; sl@0: /** Fluorescent lightning with continuous autofocus, wide aperture, sl@0: high Iso rating with flash. */ sl@0: static const TUid KUidECamPresetIndoorSport = {KUidECamPresetIndoorSportUidValue}; sl@0: /** sl@0: Used in low light situations. Tries to capture all the photons from a low light scene. sl@0: The image may be processed longer to achieve this. This case may cause blurring, but that could be a sl@0: wanted effect. sl@0: sl@0: This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or sl@0: CCamera::NewDuplicate2L(). sl@0: sl@0: */ sl@0: static const TUid KUidECamPresetNightPartyIndoor = {KUidECamPresetNightPartyIndoorUidValue}; sl@0: /** sl@0: Used to capture images of things which can't be seen by eye. sl@0: For example: snowflakes, underwater photography, small insect photos sl@0: sl@0: This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or sl@0: CCamera::NewDuplicate2L(). sl@0: sl@0: */ sl@0: static const TUid KUidECamPresetNightCloseUp = {KUidECamPresetNightCloseUpUidValue}; sl@0: /** sl@0: Used for revealing assumed details. For example: business card photos, small written text photos, sl@0: underwater photography, insect photos. sl@0: sl@0: This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or sl@0: CCamera::NewDuplicate2L(). sl@0: sl@0: */ sl@0: static const TUid KUidECamPresetNightMacro = {KUidECamPresetNightMacroUidValue}; sl@0: /** sl@0: Used for taking clear pictures of text or drawings. Also used to capture business cards or of a whiteboard. sl@0: Aim is to optimise text and drawing readability and user expectation of "white" paper. sl@0: Camera shake may reduce quality in case no flash available or not adequate(distance too much from subject). sl@0: sl@0: This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or sl@0: CCamera::NewDuplicate2L(). sl@0: sl@0: */ sl@0: static const TUid KUidECamPresetTextDocument = {KUidECamPresetTextDocumentUidValue}; sl@0: /** sl@0: Used for providing clear pictures of barcode. Aim is to convert barcode into some form which can be easily decoded. sl@0: Camera shake may reduce this barcode readability and hence, barcode conversion accuracy and reliability. sl@0: sl@0: This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or sl@0: CCamera::NewDuplicate2L(). sl@0: sl@0: */ sl@0: static const TUid KUidECamPresetBarcode = {KUidECamPresetBarcodeUidValue}; sl@0: /** sl@0: Used when factory default preset in certain cases may not be available or is too restrictive. sl@0: Automatic preset expects the hardware to use automatic detection for most of the features. sl@0: sl@0: This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or sl@0: CCamera::NewDuplicate2L(). sl@0: sl@0: */ sl@0: static const TUid KUidECamPresetAuto = {KUidECamPresetAutoUidValue}; sl@0: /** sl@0: Used for portraits of human subjects in good lighting conditions. Focuses on the people and captures natural sl@0: skin tones. Background details may not be softened. sl@0: sl@0: This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or sl@0: CCamera::NewDuplicate2L(). sl@0: sl@0: */ sl@0: static const TUid KUidECamPresetPortrait = {KUidECamPresetPortraitUidValue}; sl@0: /** sl@0: Used for sharp landscape shots with clear outlines, colours and contrast, for example forest, sky. sl@0: The main aim is to get the details of the scene. sl@0: sl@0: This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or sl@0: CCamera::NewDuplicate2L(). sl@0: sl@0: */ sl@0: static const TUid KUidECamPresetLandscape = {KUidECamPresetLandscapeUidValue}; sl@0: /** sl@0: Used to retain the ambience/mood produced by, for example, warm lighting conditions like sunset, candlelight etc. sl@0: sl@0: This uid value is available from the 'supported' or 'getter' methods only to the API clients using CCamera::New2L() or sl@0: CCamera::NewDuplicate2L(). sl@0: sl@0: */ sl@0: static const TUid KUidECamPresetAmbienceMood = {KUidECamPresetAmbienceMoodUidValue}; sl@0: sl@0: /** sl@0: This API is used to simplify user - camera interaction by allowing simultaneous sl@0: setting of various advanced camera hardware settings using a single parameter. sl@0: sl@0: Preset is identified by a single UID and relates to a known predefined outcome. sl@0: For example the 'Night' Preset will be used to set the camera into a night mode sl@0: so that the user can take night photos. sl@0: sl@0: The particular set of settings associated with the specific preset and their specific values sl@0: and ranges are camera hardware specific and outside the scope of this API. sl@0: sl@0: @note This class is not intended for sub-classing and used to standardise existing sl@0: varieties of implementations. sl@0: sl@0: @note If the class methods leave, the output type parameter value is not guaranteed to be valid. sl@0: sl@0: @publishedAll sl@0: @released sl@0: */ sl@0: class CCamera::CCameraPresets : public CBase sl@0: { sl@0: /** allow access to private constructors. */ sl@0: friend class CCamera; sl@0: sl@0: public: sl@0: sl@0: IMPORT_C static CCameraPresets* NewL(CCamera& aCamera); sl@0: sl@0: IMPORT_C void GetSupportedPresetsL(RArray& aPresets) const; sl@0: sl@0: IMPORT_C void SetPreset(TUid aPreset); sl@0: sl@0: IMPORT_C TUid Preset() const; sl@0: sl@0: IMPORT_C void GetAffectedSettingsL(RArray& aSettings) const; sl@0: sl@0: IMPORT_C void GetAssociatedSettingsL(TUid aPreset, RArray& aSettings) const; sl@0: sl@0: IMPORT_C ~CCameraPresets(); sl@0: sl@0: IMPORT_C void GetRangeRestrictedSettingsL(RArray& aRangeRestrictedSettings) const; sl@0: sl@0: IMPORT_C void GetFeatureRestrictedSettingsL(RArray& aFeatureRestrictedSettings) const; sl@0: sl@0: IMPORT_C void IsPresetUnlockSupportedL(TBool& aUnlockSupported) const; sl@0: sl@0: IMPORT_C void LockPresetL(); sl@0: sl@0: IMPORT_C void UnlockPresetL(); sl@0: sl@0: private: sl@0: IMPORT_C CCameraPresets(CCamera& aOwner); sl@0: IMPORT_C void ConstructL(); sl@0: sl@0: void FilterUnrecognisedUids(RArray& aUids, const TInt aBaselineUid) const; sl@0: sl@0: private: sl@0: CCamera& iOwner; sl@0: MCameraPresets* iImpl; // not owned sl@0: MCameraPresets2* iImpl2; // not owned sl@0: }; sl@0: sl@0: sl@0: /** sl@0: This API is used to provide advanced continuous zoom support to the user. sl@0: sl@0: This class is not directly created by the client but instead created via sl@0: CCameraAdvancedSettings::CreateContinuousZoomL(). Ownership of the object sl@0: is passed back to the client. sl@0: sl@0: @note This class is not intended for sub-classing and used to standardise existing sl@0: varieties of implementations. sl@0: sl@0: @note If the class methods leave, the output type parameter value is not guaranteed to be valid. sl@0: sl@0: @internalTechnology sl@0: @prototype sl@0: */ sl@0: class CCamera::CCameraContinuousZoom : public CBase sl@0: { sl@0: friend void CCamera::CCameraAdvancedSettings::CreateContinuousZoomL(MContinuousZoomObserver& aObserver, TContinuousZoomType aContinuousZoomType, CCameraContinuousZoom*& aContinuousZoom); sl@0: sl@0: public: sl@0: IMPORT_C void StartContinuousZoomL(CCamera::CCameraAdvancedSettings::TContinuousZoomParameters aContinuousZoomParameters); sl@0: sl@0: IMPORT_C void StopContinuousZoom(); sl@0: sl@0: IMPORT_C void GetContinuousZoomSupportInfoL(CCamera::CCameraAdvancedSettings::TContinuousZoomSupportInfo& aContinuousZoomInfo) const; sl@0: sl@0: IMPORT_C void GetContinuousZoomId(TInt& aZoomId) const; sl@0: sl@0: IMPORT_C ~CCameraContinuousZoom(); sl@0: sl@0: private: sl@0: static CCameraContinuousZoom* CreateL(MContinuousZoomObserver& aObserver, CCamera::CCameraAdvancedSettings::TContinuousZoomType aContinuousZoomType, const MImplementationFactory& aImplFactory); sl@0: sl@0: CCameraContinuousZoom(); sl@0: void ConstructL(MContinuousZoomObserver& aObserver, CCamera::CCameraAdvancedSettings::TContinuousZoomType aContinuousZoomType, const MImplementationFactory& aImplFactory); sl@0: sl@0: private: sl@0: MCameraContinuousZoom* iImpl; sl@0: }; sl@0: sl@0: #endif // ECAMADVSETTINGS_H sl@0: sl@0: sl@0: