vtengines/videoteleng/Src/Extensions/CVtEngCameraPreferences.cpp
changeset 0 ed9695c8bcbe
--- /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    <capivideosource.h>
+#include    <cvtlogger.h>
+
+// 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