vtengines/videoteleng/Src/Extensions/CVtEngCameraPreferences.cpp
changeset 18 d9b6a8729acd
parent 4 6dc066157ed4
child 23 c378a0498b84
child 27 dcbddbbaf8fd
equal deleted inserted replaced
4:6dc066157ed4 18:d9b6a8729acd
     1 /*
       
     2 * Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  Videoteleng  Camera Preferences extension
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 // INCLUDE FILES
       
    20 #include    "CVtEngCameraPreferences.h"
       
    21 #include    "VtEngPanic.h"
       
    22 #include    "CVtEngSettings.h"
       
    23 #include    "VtEngUtils.h"
       
    24 #include    "mvtengcamerapreferencesobserver.h"
       
    25 
       
    26 #include    <capivideosource.h>
       
    27 #include    <cvtlogger.h>
       
    28 
       
    29 // LOCAL CONSTANTS AND MACROS
       
    30 
       
    31 // ============================ MEMBER FUNCTIONS ==============================
       
    32 
       
    33 // ----------------------------------------------------------------------------
       
    34 // CVtEngCameraPreferences::CVtEngCameraPreferences
       
    35 // C++ constructor can NOT contain any code, that
       
    36 // might leave.
       
    37 // ----------------------------------------------------------------------------
       
    38 //
       
    39 CVtEngCameraPreferences::CVtEngCameraPreferences():
       
    40                         CVtEngExtensionBase(
       
    41                         KVtEngExtensionCameraPreferences )
       
    42     {
       
    43     }
       
    44 
       
    45 // ----------------------------------------------------------------------------
       
    46 // CVtEngCameraPreferences::ConstructL
       
    47 // Symbian 2nd phase constructor can leave.
       
    48 // ----------------------------------------------------------------------------
       
    49 //
       
    50 void CVtEngCameraPreferences::ConstructL()
       
    51     {
       
    52     __VTPRINTENTER( "CVtEngCameraPreferences.ConstructL" )
       
    53     __VTPRINTEXIT( "CVtEngCameraPreferences.ConstructL" )
       
    54     }
       
    55 
       
    56 // ----------------------------------------------------------------------------
       
    57 // CVtEngCameraPreferences::NewL
       
    58 // Two-phased constructor.
       
    59 // ----------------------------------------------------------------------------
       
    60 //
       
    61 CVtEngCameraPreferences* CVtEngCameraPreferences::NewL()
       
    62     {
       
    63     CVtEngCameraPreferences* self = new( ELeave ) CVtEngCameraPreferences;
       
    64     CleanupStack::PushL( self );
       
    65     self->ConstructL();
       
    66     CleanupStack::Pop();
       
    67     return self;
       
    68     }
       
    69 
       
    70 // ----------------------------------------------------------------------------
       
    71 // CVtEngCameraPreferences::~CVtEngCameraPreferences
       
    72 // Destructor. Cannot leave.
       
    73 // ----------------------------------------------------------------------------
       
    74 //
       
    75 CVtEngCameraPreferences::~CVtEngCameraPreferences()
       
    76     {
       
    77     __VTPRINTENTER( "CameraPreferences.~" )
       
    78     if ( iObserver )
       
    79         {
       
    80         iObserver->Detach( *this );
       
    81         }
       
    82     __VTPRINTEXIT( "CameraPreferences.~" )
       
    83     }
       
    84 
       
    85 // ----------------------------------------------------------------------------
       
    86 // CVtEngCameraPreferences::GetInterface
       
    87 //
       
    88 // ----------------------------------------------------------------------------
       
    89 //
       
    90 TAny* CVtEngCameraPreferences::GetInterface()
       
    91     {
       
    92     __VTPRINTENTER( "CameraPreferences.GetInterface")
       
    93     // Cast first as API MVtEngCameraPreferences* class
       
    94     // and after that to TAny*
       
    95     __VTPRINTEXIT( "CameraPreferences.GetInterface" )
       
    96     return reinterpret_cast< TAny* >( ( MVtEngCameraPreferences* ) this );
       
    97 
       
    98     }
       
    99 
       
   100 // ----------------------------------------------------------------------------
       
   101 // CVtEngCameraPreferences::HandleL
       
   102 //
       
   103 // ----------------------------------------------------------------------------
       
   104 //
       
   105 TBool CVtEngCameraPreferences::HandleL( CVtEngOperation* aOp )
       
   106     {
       
   107     __VTPRINTENTER( "CameraPreferences.HandleL" )
       
   108     const TVtEngCommandId id( aOp->Command() );
       
   109     __VTPRINT2( DEBUG_GEN, "CVtEngCameraPreferences.HandleL CMD ID[%d] ", id )
       
   110 
       
   111     // Check provider
       
   112     if ( iProvider == NULL )
       
   113         {
       
   114         __VTPRINTEXITR( "CVtEngCameraPreferences.HandleL iProvider [%d]",
       
   115                 	( TInt )iProvider )
       
   116         User::Leave( KErrNotReady );
       
   117         }
       
   118     // Check which command and call
       
   119     // active provider with operation params
       
   120     switch ( id )
       
   121         {
       
   122         case KVtEngSetContrast:
       
   123         	{
       
   124         	TInt contrast = 0;
       
   125         	TVtEngOpParamUtil< TInt >::Set( contrast, *aOp );
       
   126             iProvider->SetContrastL( contrast );
       
   127             if ( iObserver )
       
   128                 {
       
   129                 iObserver->ContrastUpdated( contrast );
       
   130                 }
       
   131             break;
       
   132         	}
       
   133         case KVtEngSetBrightness:
       
   134             {
       
   135      		TInt brightness = 0;
       
   136         	TVtEngOpParamUtil< TInt >::Set( brightness, *aOp );
       
   137             iProvider->SetBrightnessL( brightness );
       
   138             if ( iObserver )
       
   139                 {
       
   140                 iObserver->BrightnessUpdated( brightness );
       
   141                 }
       
   142             break;
       
   143             }
       
   144         case KVtEngSetWhiteBalance:
       
   145             {
       
   146             CCamera::TWhiteBalance whitebalance = CCamera::EWBAuto;
       
   147         	TVtEngOpParamUtil< CCamera::TWhiteBalance >::Set( whitebalance,
       
   148         		*aOp );
       
   149             iProvider->SetWhiteBalanceL( whitebalance );
       
   150             if ( iObserver )
       
   151                 {
       
   152                 iObserver->WhiteBalanceUpdated( TWhiteBalance( whitebalance ) );
       
   153                 }
       
   154             break;
       
   155             }
       
   156         case KVtEngSetColorTone:
       
   157             {
       
   158             CCamera::CCameraImageProcessing::TEffect colortone =
       
   159             	CCamera::CCameraImageProcessing::EEffectNone;
       
   160         	TVtEngOpParamUtil< CCamera::CCameraImageProcessing::TEffect >::Set(
       
   161         		colortone, *aOp );
       
   162             iProvider->SetColorToneL( colortone );
       
   163             if ( iObserver )
       
   164                 {
       
   165                 iObserver->ColorToneUpdated( TColorTone( colortone ) );
       
   166                 }
       
   167             break;
       
   168             }
       
   169         //Not supported command
       
   170         default:
       
   171             __VTPRINTEXITR(
       
   172             "CVtEngCameraPreferences.HandleL NOT SUPPORTED CMD[%d]", id )
       
   173             return EFalse;
       
   174         }
       
   175     __VTPRINTEXIT( "CameraPreferences.HandleL" )
       
   176     return ETrue;
       
   177     }
       
   178 
       
   179 // ----------------------------------------------------------------------------
       
   180 // CVtEngCameraPreferences::ValidateCommand
       
   181 //
       
   182 // ----------------------------------------------------------------------------
       
   183 
       
   184 TBool CVtEngCameraPreferences::ValidateCommand(
       
   185 	const TVtEngCommandId aCommandId )
       
   186     {
       
   187     __VTPRINTENTER( "CameraPreferences.ValidateCommand" )
       
   188     // Check provider
       
   189     if ( iProvider == NULL )
       
   190         {
       
   191         __VTPRINTEXITR(
       
   192         	"CVtEngCameraPreferences.ValidateCommand iProvider [%d]",
       
   193         	( TInt ) iProvider)
       
   194         return EFalse;
       
   195         }
       
   196     // Take provider info is needed down below
       
   197     TVSDataProviderInfo info;
       
   198     iProvider->ProviderInfo( info );
       
   199 
       
   200     // local or hw support
       
   201     // set as False
       
   202     TBool hworlocalsupport = EFalse;
       
   203 
       
   204     // Check which command and check if
       
   205     // if provider and local variation supports
       
   206      __VTPRINT2( DEBUG_GEN,
       
   207      	"CVtEngCameraPreferences.ValidateCommand CMD ID[%d] ", aCommandId )
       
   208     switch ( aCommandId )
       
   209         {
       
   210         case KVtEngSetContrast:
       
   211 	        {
       
   212             if ( info.iOptionsSupported & TCameraInfo::EContrastSupported  )
       
   213                 {
       
   214                 hworlocalsupport = ETrue;
       
   215                 }
       
   216             break;
       
   217 	        }
       
   218         case KVtEngSetBrightness:
       
   219             {
       
   220             if ( info.iOptionsSupported & TCameraInfo::EBrightnessSupported )
       
   221                 {
       
   222                 hworlocalsupport = ETrue;
       
   223                 }
       
   224             break;
       
   225             }
       
   226         case KVtEngSetWhiteBalance:
       
   227             {
       
   228             if ( info.iWhiteBalanceModesSupported != CCamera::EWBAuto )
       
   229                 {
       
   230                 hworlocalsupport = ETrue;
       
   231                 }
       
   232             break;
       
   233             }
       
   234         case KVtEngSetColorTone:
       
   235             {
       
   236             if ( info.iSupportedColorTones !=
       
   237             	CCamera::CCameraImageProcessing::EEffectNone )
       
   238                 {
       
   239                 hworlocalsupport = ETrue;
       
   240                 }
       
   241             break;
       
   242             }
       
   243         // Not supported command
       
   244         default:
       
   245         	{
       
   246             __VTPRINT2( DEBUG_GEN,
       
   247             	"CVtEngCameraPreferences.ValidateCommand NOT SUPPORTED CMD[%d]",
       
   248             	 aCommandId)
       
   249             hworlocalsupport = EFalse;
       
   250         	}
       
   251         }
       
   252     __VTPRINTEXITR( "CVtEngCameraPreferences.ValidateCommand return value[%d]",
       
   253     	hworlocalsupport)
       
   254     return hworlocalsupport;
       
   255     }
       
   256 
       
   257 // ----------------------------------------------------------------------------
       
   258 // CVtEngCameraPreferences::GetColorTone
       
   259 //
       
   260 // ----------------------------------------------------------------------------
       
   261 //
       
   262 TInt CVtEngCameraPreferences::GetColorTone(
       
   263 	MVtEngCameraPreferences::TColorTone& aColortone ) const
       
   264     {
       
   265     __VTPRINTENTER( "CameraPreferences.GetColorTone" )
       
   266     if ( iProvider == NULL )
       
   267         {
       
   268         __VTPRINTEXITR( "CVtEngCameraPreferences.GetColorTone iProvider[%d]",
       
   269         	 ( TInt )iProvider)
       
   270         return KErrNotReady;
       
   271         }
       
   272     TInt error;
       
   273     CCamera::CCameraImageProcessing::TEffect colortone;
       
   274     error = iProvider->GetColorTone( colortone );
       
   275     aColortone = ( MVtEngCameraPreferences::TColorTone ) colortone;
       
   276     __VTPRINTEXITR( "CameraPreferences.GetColorTone error [%d]",error )
       
   277     return error;
       
   278     }
       
   279 
       
   280 // ----------------------------------------------------------------------------
       
   281 // CVtEngCameraPreferences::GetSupportedColorTones
       
   282 //
       
   283 // ----------------------------------------------------------------------------
       
   284 //
       
   285 TInt CVtEngCameraPreferences::GetSupportedColorTones(
       
   286 	TUint32& aSupportedColorTones ) const
       
   287     {
       
   288     __VTPRINTENTER( "CameraPreferences.GetSupportedColorTones" )
       
   289     if ( iProvider == NULL )
       
   290         {
       
   291         __VTPRINTEXITR(
       
   292         	"CVtEngCameraPreferences.GetSupportedColorTones iProvider[%d]",
       
   293         	( TInt )iProvider)
       
   294         return KErrNotReady;
       
   295         }
       
   296 
       
   297     TVSDataProviderInfo info;
       
   298     iProvider->ProviderInfo( info );
       
   299     aSupportedColorTones = info.iSupportedColorTones;
       
   300     __VTPRINTEXITR( "CameraPreferences.GetSupportedColorTones [%b]",
       
   301     	info.iSupportedColorTones)
       
   302     return KErrNone;
       
   303     }
       
   304 
       
   305 // ----------------------------------------------------------------------------
       
   306 // CVtEngCameraPreferences::GetWhiteBalance
       
   307 //
       
   308 // ----------------------------------------------------------------------------
       
   309 //
       
   310 TInt CVtEngCameraPreferences::GetWhiteBalance(
       
   311 	MVtEngCameraPreferences::TWhiteBalance& aWhiteBalance ) const
       
   312     {
       
   313     __VTPRINTENTER( "CameraPreferences.GetWhiteBalance" )
       
   314     if ( iProvider == NULL )
       
   315         {
       
   316         __VTPRINTEXITR(
       
   317         	"CVtEngCameraPreferences.GetWhiteBalance iProvider [%d]",
       
   318         	( TInt )iProvider )
       
   319         return KErrNotReady;
       
   320         }
       
   321     TInt error;
       
   322     CCamera::TWhiteBalance whitebalance;
       
   323     error = iProvider->GetWhiteBalance( whitebalance );
       
   324     aWhiteBalance = (MVtEngCameraPreferences::TWhiteBalance) whitebalance;
       
   325 	__VTPRINTEXITR( "CameraPreferences.GetWhiteBalance error [%d]",error )
       
   326     return error;
       
   327     }
       
   328 
       
   329 // ----------------------------------------------------------------------------
       
   330 // CVtEngCameraPreferences::GetSupportedWhiteBalanceModes
       
   331 //
       
   332 // ----------------------------------------------------------------------------
       
   333 //
       
   334 TInt CVtEngCameraPreferences::GetSupportedWhiteBalanceModes(
       
   335 	TUint32& aWhiteBalance  ) const
       
   336     {
       
   337     __VTPRINTENTER( "CameraPreferences.GetSupportedWhiteBalanceModes" )
       
   338     if ( iProvider == NULL )
       
   339         {
       
   340         __VTPRINTEXITR(
       
   341         	"CVtEngCameraPreferences.GetSupportedWhiteBalanceModes iProvider [%d]",
       
   342         	( TInt )iProvider)
       
   343         return KErrNotReady;
       
   344         }
       
   345 
       
   346     TVSDataProviderInfo info;
       
   347     iProvider->ProviderInfo( info );
       
   348     aWhiteBalance = info.iWhiteBalanceModesSupported;
       
   349     __VTPRINTEXITR( "CameraPreferences.GetSupportedWhiteBalanceModes [%b]",
       
   350     	info.iWhiteBalanceModesSupported)
       
   351     return KErrNone;
       
   352     }
       
   353 
       
   354 // ----------------------------------------------------------------------------
       
   355 // CVtEngCameraPreferences::GetBrightness
       
   356 //
       
   357 // ----------------------------------------------------------------------------
       
   358 //
       
   359 TInt CVtEngCameraPreferences::GetBrightness( TInt& aBrightness  ) const
       
   360     {
       
   361     __VTPRINTENTER( "CameraPreferences.GetBrightness" )
       
   362     if ( iProvider == NULL )
       
   363         {
       
   364         __VTPRINTEXITR( "CVtEngCameraPreferences.GetBrightness iProvider [%d]",
       
   365         	( TInt )iProvider)
       
   366 
       
   367         return KErrNotReady;
       
   368         }
       
   369     TInt error;
       
   370     error = iProvider->GetBrightness( aBrightness );
       
   371 	__VTPRINTEXITR( "CameraPreferences.GetBrightness error [%d]",error )
       
   372     return error;
       
   373     }
       
   374 
       
   375 // ----------------------------------------------------------------------------
       
   376 // CVtEngCameraPreferences::GetContrast
       
   377 //
       
   378 // ----------------------------------------------------------------------------
       
   379 //
       
   380 TInt CVtEngCameraPreferences::GetContrast( TInt& aContrast  ) const
       
   381     {
       
   382     __VTPRINTENTER( "CameraPreferences.GetContrast" )
       
   383     if ( iProvider == NULL )
       
   384         {
       
   385         __VTPRINTEXITR( "CVtEngCameraPreferences.GetContrast iProvider [%d]",
       
   386         	( TInt )iProvider)
       
   387        	return KErrNotReady;
       
   388         }
       
   389     TInt error;
       
   390     error = iProvider->GetContrast( aContrast );
       
   391 	__VTPRINTEXITR( "CameraPreferences.GetContrast error [%d]",error )
       
   392 
       
   393     return error;
       
   394     }
       
   395 
       
   396 // ----------------------------------------------------------------------------
       
   397 // CVtEngCameraPreferences::SetProvider
       
   398 //
       
   399 // ----------------------------------------------------------------------------
       
   400 //
       
   401 void CVtEngCameraPreferences::SetProvider( CVSDataProvider* aProvider,
       
   402     MVtEngCameraPreferencesObserver& aObserver )
       
   403     {
       
   404     __VTPRINTENTER( "CameraPreferences.SetProvider" )
       
   405     if ( iObserver )
       
   406         {
       
   407         iObserver->Detach( *this );
       
   408         iObserver = NULL;
       
   409         }
       
   410     iProvider = aProvider;
       
   411     iObserver = &aObserver;
       
   412     if ( iObserver )
       
   413         {
       
   414         iObserver->Attach( *this );
       
   415         }
       
   416     __VTPRINTEXIT( "CameraPreferences.SetProvider" )
       
   417     }
       
   418 
       
   419 // ----------------------------------------------------------------------------
       
   420 // CVtEngCameraPreferences::Detach
       
   421 //
       
   422 // ----------------------------------------------------------------------------
       
   423 //
       
   424 void CVtEngCameraPreferences::Detach( MVtEngCameraPreferencesObserver&
       
   425     aObserver )
       
   426     {
       
   427     __VTPRINTENTER( "CameraPreferences.Detach" )
       
   428     if ( iObserver == &aObserver )
       
   429         {
       
   430         iObserver = NULL;
       
   431         }
       
   432     __VTPRINTEXITR( "CameraPreferences.Detach $%x", TInt( iObserver ) )
       
   433     }
       
   434 
       
   435 
       
   436 
       
   437 //  End of File