diff -r 000000000000 -r ed9695c8bcbe vtengines/videoteleng/Src/Extensions/CVtEngCameraPreferences.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/vtengines/videoteleng/Src/Extensions/CVtEngCameraPreferences.cpp Mon Nov 23 14:47:47 2009 +0200 @@ -0,0 +1,437 @@ +/* +* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Videoteleng Camera Preferences extension +* +*/ + + +// INCLUDE FILES +#include "CVtEngCameraPreferences.h" +#include "VtEngPanic.h" +#include "CVtEngSettings.h" +#include "VtEngUtils.h" +#include "mvtengcamerapreferencesobserver.h" + +#include +#include + +// LOCAL CONSTANTS AND MACROS + +// ============================ MEMBER FUNCTIONS ============================== + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::CVtEngCameraPreferences +// C++ constructor can NOT contain any code, that +// might leave. +// ---------------------------------------------------------------------------- +// +CVtEngCameraPreferences::CVtEngCameraPreferences(): + CVtEngExtensionBase( + KVtEngExtensionCameraPreferences ) + { + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::ConstructL +// Symbian 2nd phase constructor can leave. +// ---------------------------------------------------------------------------- +// +void CVtEngCameraPreferences::ConstructL() + { + __VTPRINTENTER( "CVtEngCameraPreferences.ConstructL" ) + __VTPRINTEXIT( "CVtEngCameraPreferences.ConstructL" ) + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::NewL +// Two-phased constructor. +// ---------------------------------------------------------------------------- +// +CVtEngCameraPreferences* CVtEngCameraPreferences::NewL() + { + CVtEngCameraPreferences* self = new( ELeave ) CVtEngCameraPreferences; + CleanupStack::PushL( self ); + self->ConstructL(); + CleanupStack::Pop(); + return self; + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::~CVtEngCameraPreferences +// Destructor. Cannot leave. +// ---------------------------------------------------------------------------- +// +CVtEngCameraPreferences::~CVtEngCameraPreferences() + { + __VTPRINTENTER( "CameraPreferences.~" ) + if ( iObserver ) + { + iObserver->Detach( *this ); + } + __VTPRINTEXIT( "CameraPreferences.~" ) + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::GetInterface +// +// ---------------------------------------------------------------------------- +// +TAny* CVtEngCameraPreferences::GetInterface() + { + __VTPRINTENTER( "CameraPreferences.GetInterface") + // Cast first as API MVtEngCameraPreferences* class + // and after that to TAny* + __VTPRINTEXIT( "CameraPreferences.GetInterface" ) + return reinterpret_cast< TAny* >( ( MVtEngCameraPreferences* ) this ); + + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::HandleL +// +// ---------------------------------------------------------------------------- +// +TBool CVtEngCameraPreferences::HandleL( CVtEngOperation* aOp ) + { + __VTPRINTENTER( "CameraPreferences.HandleL" ) + const TVtEngCommandId id( aOp->Command() ); + __VTPRINT2( DEBUG_GEN, "CVtEngCameraPreferences.HandleL CMD ID[%d] ", id ) + + // Check provider + if ( iProvider == NULL ) + { + __VTPRINTEXITR( "CVtEngCameraPreferences.HandleL iProvider [%d]", + ( TInt )iProvider ) + User::Leave( KErrNotReady ); + } + // Check which command and call + // active provider with operation params + switch ( id ) + { + case KVtEngSetContrast: + { + TInt contrast = 0; + TVtEngOpParamUtil< TInt >::Set( contrast, *aOp ); + iProvider->SetContrastL( contrast ); + if ( iObserver ) + { + iObserver->ContrastUpdated( contrast ); + } + break; + } + case KVtEngSetBrightness: + { + TInt brightness = 0; + TVtEngOpParamUtil< TInt >::Set( brightness, *aOp ); + iProvider->SetBrightnessL( brightness ); + if ( iObserver ) + { + iObserver->BrightnessUpdated( brightness ); + } + break; + } + case KVtEngSetWhiteBalance: + { + CCamera::TWhiteBalance whitebalance = CCamera::EWBAuto; + TVtEngOpParamUtil< CCamera::TWhiteBalance >::Set( whitebalance, + *aOp ); + iProvider->SetWhiteBalanceL( whitebalance ); + if ( iObserver ) + { + iObserver->WhiteBalanceUpdated( TWhiteBalance( whitebalance ) ); + } + break; + } + case KVtEngSetColorTone: + { + CCamera::CCameraImageProcessing::TEffect colortone = + CCamera::CCameraImageProcessing::EEffectNone; + TVtEngOpParamUtil< CCamera::CCameraImageProcessing::TEffect >::Set( + colortone, *aOp ); + iProvider->SetColorToneL( colortone ); + if ( iObserver ) + { + iObserver->ColorToneUpdated( TColorTone( colortone ) ); + } + break; + } + //Not supported command + default: + __VTPRINTEXITR( + "CVtEngCameraPreferences.HandleL NOT SUPPORTED CMD[%d]", id ) + return EFalse; + } + __VTPRINTEXIT( "CameraPreferences.HandleL" ) + return ETrue; + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::ValidateCommand +// +// ---------------------------------------------------------------------------- + +TBool CVtEngCameraPreferences::ValidateCommand( + const TVtEngCommandId aCommandId ) + { + __VTPRINTENTER( "CameraPreferences.ValidateCommand" ) + // Check provider + if ( iProvider == NULL ) + { + __VTPRINTEXITR( + "CVtEngCameraPreferences.ValidateCommand iProvider [%d]", + ( TInt ) iProvider) + return EFalse; + } + // Take provider info is needed down below + TVSDataProviderInfo info; + iProvider->ProviderInfo( info ); + + // local or hw support + // set as False + TBool hworlocalsupport = EFalse; + + // Check which command and check if + // if provider and local variation supports + __VTPRINT2( DEBUG_GEN, + "CVtEngCameraPreferences.ValidateCommand CMD ID[%d] ", aCommandId ) + switch ( aCommandId ) + { + case KVtEngSetContrast: + { + if ( info.iOptionsSupported & TCameraInfo::EContrastSupported ) + { + hworlocalsupport = ETrue; + } + break; + } + case KVtEngSetBrightness: + { + if ( info.iOptionsSupported & TCameraInfo::EBrightnessSupported ) + { + hworlocalsupport = ETrue; + } + break; + } + case KVtEngSetWhiteBalance: + { + if ( info.iWhiteBalanceModesSupported != CCamera::EWBAuto ) + { + hworlocalsupport = ETrue; + } + break; + } + case KVtEngSetColorTone: + { + if ( info.iSupportedColorTones != + CCamera::CCameraImageProcessing::EEffectNone ) + { + hworlocalsupport = ETrue; + } + break; + } + // Not supported command + default: + { + __VTPRINT2( DEBUG_GEN, + "CVtEngCameraPreferences.ValidateCommand NOT SUPPORTED CMD[%d]", + aCommandId) + hworlocalsupport = EFalse; + } + } + __VTPRINTEXITR( "CVtEngCameraPreferences.ValidateCommand return value[%d]", + hworlocalsupport) + return hworlocalsupport; + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::GetColorTone +// +// ---------------------------------------------------------------------------- +// +TInt CVtEngCameraPreferences::GetColorTone( + MVtEngCameraPreferences::TColorTone& aColortone ) const + { + __VTPRINTENTER( "CameraPreferences.GetColorTone" ) + if ( iProvider == NULL ) + { + __VTPRINTEXITR( "CVtEngCameraPreferences.GetColorTone iProvider[%d]", + ( TInt )iProvider) + return KErrNotReady; + } + TInt error; + CCamera::CCameraImageProcessing::TEffect colortone; + error = iProvider->GetColorTone( colortone ); + aColortone = ( MVtEngCameraPreferences::TColorTone ) colortone; + __VTPRINTEXITR( "CameraPreferences.GetColorTone error [%d]",error ) + return error; + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::GetSupportedColorTones +// +// ---------------------------------------------------------------------------- +// +TInt CVtEngCameraPreferences::GetSupportedColorTones( + TUint32& aSupportedColorTones ) const + { + __VTPRINTENTER( "CameraPreferences.GetSupportedColorTones" ) + if ( iProvider == NULL ) + { + __VTPRINTEXITR( + "CVtEngCameraPreferences.GetSupportedColorTones iProvider[%d]", + ( TInt )iProvider) + return KErrNotReady; + } + + TVSDataProviderInfo info; + iProvider->ProviderInfo( info ); + aSupportedColorTones = info.iSupportedColorTones; + __VTPRINTEXITR( "CameraPreferences.GetSupportedColorTones [%b]", + info.iSupportedColorTones) + return KErrNone; + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::GetWhiteBalance +// +// ---------------------------------------------------------------------------- +// +TInt CVtEngCameraPreferences::GetWhiteBalance( + MVtEngCameraPreferences::TWhiteBalance& aWhiteBalance ) const + { + __VTPRINTENTER( "CameraPreferences.GetWhiteBalance" ) + if ( iProvider == NULL ) + { + __VTPRINTEXITR( + "CVtEngCameraPreferences.GetWhiteBalance iProvider [%d]", + ( TInt )iProvider ) + return KErrNotReady; + } + TInt error; + CCamera::TWhiteBalance whitebalance; + error = iProvider->GetWhiteBalance( whitebalance ); + aWhiteBalance = (MVtEngCameraPreferences::TWhiteBalance) whitebalance; + __VTPRINTEXITR( "CameraPreferences.GetWhiteBalance error [%d]",error ) + return error; + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::GetSupportedWhiteBalanceModes +// +// ---------------------------------------------------------------------------- +// +TInt CVtEngCameraPreferences::GetSupportedWhiteBalanceModes( + TUint32& aWhiteBalance ) const + { + __VTPRINTENTER( "CameraPreferences.GetSupportedWhiteBalanceModes" ) + if ( iProvider == NULL ) + { + __VTPRINTEXITR( + "CVtEngCameraPreferences.GetSupportedWhiteBalanceModes iProvider [%d]", + ( TInt )iProvider) + return KErrNotReady; + } + + TVSDataProviderInfo info; + iProvider->ProviderInfo( info ); + aWhiteBalance = info.iWhiteBalanceModesSupported; + __VTPRINTEXITR( "CameraPreferences.GetSupportedWhiteBalanceModes [%b]", + info.iWhiteBalanceModesSupported) + return KErrNone; + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::GetBrightness +// +// ---------------------------------------------------------------------------- +// +TInt CVtEngCameraPreferences::GetBrightness( TInt& aBrightness ) const + { + __VTPRINTENTER( "CameraPreferences.GetBrightness" ) + if ( iProvider == NULL ) + { + __VTPRINTEXITR( "CVtEngCameraPreferences.GetBrightness iProvider [%d]", + ( TInt )iProvider) + + return KErrNotReady; + } + TInt error; + error = iProvider->GetBrightness( aBrightness ); + __VTPRINTEXITR( "CameraPreferences.GetBrightness error [%d]",error ) + return error; + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::GetContrast +// +// ---------------------------------------------------------------------------- +// +TInt CVtEngCameraPreferences::GetContrast( TInt& aContrast ) const + { + __VTPRINTENTER( "CameraPreferences.GetContrast" ) + if ( iProvider == NULL ) + { + __VTPRINTEXITR( "CVtEngCameraPreferences.GetContrast iProvider [%d]", + ( TInt )iProvider) + return KErrNotReady; + } + TInt error; + error = iProvider->GetContrast( aContrast ); + __VTPRINTEXITR( "CameraPreferences.GetContrast error [%d]",error ) + + return error; + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::SetProvider +// +// ---------------------------------------------------------------------------- +// +void CVtEngCameraPreferences::SetProvider( CVSDataProvider* aProvider, + MVtEngCameraPreferencesObserver& aObserver ) + { + __VTPRINTENTER( "CameraPreferences.SetProvider" ) + if ( iObserver ) + { + iObserver->Detach( *this ); + iObserver = NULL; + } + iProvider = aProvider; + iObserver = &aObserver; + if ( iObserver ) + { + iObserver->Attach( *this ); + } + __VTPRINTEXIT( "CameraPreferences.SetProvider" ) + } + +// ---------------------------------------------------------------------------- +// CVtEngCameraPreferences::Detach +// +// ---------------------------------------------------------------------------- +// +void CVtEngCameraPreferences::Detach( MVtEngCameraPreferencesObserver& + aObserver ) + { + __VTPRINTENTER( "CameraPreferences.Detach" ) + if ( iObserver == &aObserver ) + { + iObserver = NULL; + } + __VTPRINTEXITR( "CameraPreferences.Detach $%x", TInt( iObserver ) ) + } + + + +// End of File