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