vtuis/videotelui/src/CVtUiBitmapManager.cpp
branchRCL_3
changeset 24 f15ac8e65a02
parent 23 890b5dd735f8
child 25 779871d1e4f4
--- a/vtuis/videotelui/src/CVtUiBitmapManager.cpp	Thu Aug 19 09:57:36 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,662 +0,0 @@
-/*
-* Copyright (c) 2004 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:  Implementation of the CVtUiBitmapManager class.
-*
-*/
-
-
-
-// INCLUDE FILES
-#include    "CVtUiBitmapManager.h"
-#include    "VtUiLayout.h"
-#include    "VtUiPanic.h"
-
-#include    <AknsUtils.h>
-#include    <AknIconUtils.h>
-#include    <fbs.h>
-
-// CONSTANTS
-
-// Granularity of bitmap manager array.
-const TInt KVtUiBitmapManagerGranularity = 16;
-
-// MODULE DATA STRUCTURES
-
-/**
-* CBitmapInfo instances hold information of a bitmap and its mask.
-* @since Series 60 2.8
-*/
-class CVtUiBitmapManager::CBitmapInfo 
-    : public CBase
-    {
-    public: // Constructors and destructor
-
-        /**
-        * Constructor.
-        */
-        inline CBitmapInfo(
-            TVtUiBitmapPoolId aId );
-
-        /**
-        * Destructor.
-        */
-        ~CBitmapInfo();
-
-        /**
-        * Sets bitmap identifiers.
-        * @param aBitmapId bitmap identifier.
-        * @param aBitmapMaskId bitmap mask identifier.
-        */
-        inline void SetBitmaps( 
-            TVtUiBitmapId aBitmapId, 
-            TVtUiBitmapId aBitmapMaskId );
-
-        /**
-        * Sets bitmap identifier.
-        * @param aBitmapId bitmap identifier.
-        */
-        inline void SetBitmap( 
-            TVtUiBitmapId aBitmapId );
-
-        /**
-        * Sets size.
-        * @param aSize size of the bitmaps.
-        */
-        inline void SetSize( const TSize& aSize );
-
-        /**
-        * Sets aspect ratio preservation.
-        * @param aPreserve ETrue if aspect ratio preserved.
-        */
-        inline void SetAspectRatio( TBool aPreserve );
-
-        /**
-        * Sets default color required / not required for this bitmap.
-        * By default, default color is not required.
-        * @param aRequireDefaultColor ETrue if default color is required, 
-        *        EFalse otherwise.
-        */
-        inline void SetDefaultColorRequired( 
-            TBool aRequireDefaultColor );
-
-        /**
-        * Sets default color.
-        * @param aDefaultColor default color.
-        */
-        inline void SetDefaultColor( const TRgb& aDefaultColor );
-
-        /**
-        * Returns bitmap pool identifier.
-        * @return bitmap pool identifier.
-        */
-        inline TVtUiBitmapPoolId BitmapPoolId() const;
-
-        /**
-        * Gets a bitmap and its mask.
-        * @param aBitmap bitmap.
-        * @param aBitmapMask bitmap mask.
-        */
-        inline void GetBitmap(
-            CFbsBitmap*& aBitmap,
-            CFbsBitmap*& aBitmapMask );
-
-        /**
-        * Resets bitmap information.
-        */
-        void Reset();
-
-        /**
-        * Constructs bitmap as far as possible.
-        * @param aTmpFileName temporary file name,
-        */
-        void Require( TFileName& aTmpFileName );
-
-    private:
-
-        /**
-        * Creates bitmaps using AVKON methods.
-        * @param aTmpFileName temporary file name,
-        */
-        void DoCreateBitmapsL( TFileName& aTmpFileName  );
-
-        /**
-        * Sets size to the bitmap using AVKON method.
-        */
-        void DoSetSize();
-
-    private:
-
-        // Bitmap pool identifier.
-        TVtUiBitmapPoolId iBitmapPoolId;
-
-        // Size has been defined.
-        TBool iHasSize;
-
-        // Size of the bitmap has been changed.
-        TBool iSizeChanged;
-
-        // Size of the bitmaps.
-        TSize iSize;
-        
-        // ETrue if default color required.
-        TBool iRequireDefaultColor;
-
-        // Default color has been defined.
-        TBool iHasDefaultColor;
-        
-        // Default color.
-        TRgb iDefaultColor;
-
-        // Bitmap identifier.
-        TVtUiBitmapId iBitmapId;
-
-        // Owned bitmap instance.
-        CFbsBitmap* iBitmap;
-
-        // Bitmap mask identifier.
-        TVtUiBitmapId iBitmapMaskId;
-
-        // Owned bitmap mask instance.
-        CFbsBitmap* iBitmapMask;
-
-        // ETrue if bitmaps have been created.
-        TBool iDoCreateBitmaps;
-
-        // ETrue if size has been set.
-        TBool iDoSetSize;
-
-        // ETrue if aspect ratio preservation has been updated.
-        TBool iHasAspectRatioPreserve;
-
-        // ETrue if aspect ratio should be preserved.
-        TBool iAspectRatioPreserve;
-
-    };
-
-// ============================ MEMBER FUNCTIONS ===============================
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CVtUiBitmapManager
-// -----------------------------------------------------------------------------
-//
-CVtUiBitmapManager::CVtUiBitmapManager()
-    : iBitmapArray( KVtUiBitmapManagerGranularity )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::~CVtUiBitmapManager
-// -----------------------------------------------------------------------------
-//
-CVtUiBitmapManager::~CVtUiBitmapManager()
-    {
-    iBitmapArray.ResetAndDestroy();
-    iBitmapArray.Close();
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::AddBitmapsL
-// -----------------------------------------------------------------------------
-//
-TVtUiBitmapPoolId CVtUiBitmapManager::AddBitmapsL(
-        TVtUiBitmapId aBitmapId, 
-        TVtUiBitmapId aBitmapMaskId,
-        TBool aExpectDefaultColor )
-    {
-    iBitmapId++;
-    CBitmapInfo* bitmapInfo = new ( ELeave ) CBitmapInfo( iBitmapId );
-    CleanupStack::PushL( bitmapInfo );
-    bitmapInfo->SetBitmaps( aBitmapId, aBitmapMaskId );
-    bitmapInfo->SetDefaultColorRequired( aExpectDefaultColor );
-    bitmapInfo->Require( iTmpFileName );
-
-    User::LeaveIfError( iBitmapArray.Append( bitmapInfo ) );
-    CleanupStack::Pop( bitmapInfo );
-    return iBitmapId;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::AddBitmapL
-// -----------------------------------------------------------------------------
-//
-TVtUiBitmapPoolId CVtUiBitmapManager::AddBitmapL(
-        TVtUiBitmapId aBitmapId,
-        TBool aExpectDefaultColor )
-    {
-    iBitmapId++;
-    CBitmapInfo* bitmapInfo = new ( ELeave ) CBitmapInfo( iBitmapId );
-    CleanupStack::PushL( bitmapInfo );
-    bitmapInfo->SetBitmap( aBitmapId );
-    bitmapInfo->SetDefaultColorRequired( aExpectDefaultColor );
-    bitmapInfo->Require( iTmpFileName );
-
-    User::LeaveIfError( iBitmapArray.Append( bitmapInfo ) );
-    CleanupStack::Pop( bitmapInfo );
-    return iBitmapId;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::RemoveBitmap
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::RemoveBitmap( 
-        TVtUiBitmapPoolId aId )
-    {
-    const TInt pos = Find( aId );
-    if ( pos != KErrNotFound )
-        {
-        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
-        iBitmapArray.Remove( pos );
-        delete bitmapInfo;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::SetSize
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::SetSize( 
-        TVtUiBitmapPoolId aId, 
-        const TSize& aSize )
-    {
-    const TInt pos = Find( aId );
-    if ( pos != KErrNotFound )
-        {
-        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
-        bitmapInfo->SetSize( aSize );
-        bitmapInfo->Require( iTmpFileName );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::SetAspectRatio
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::SetAspectRatio( 
-        TVtUiBitmapPoolId aId,
-        TBool aPreserve )
-    {
-    const TInt pos = Find( aId );
-    if ( pos != KErrNotFound )
-        {
-        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
-        bitmapInfo->SetAspectRatio( aPreserve );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::SetSizeAndColor
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::SetSizeAndColor( 
-        TVtUiBitmapPoolId aId, 
-        const TSize& aSize, 
-        const TRgb& aDefaultColor )
-    {
-    const TInt pos = Find( aId );
-    if ( pos != KErrNotFound )
-        {
-        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
-        bitmapInfo->SetSize( aSize );
-        bitmapInfo->SetDefaultColor( aDefaultColor );
-        bitmapInfo->Require( iTmpFileName );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::RequireBitmap
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::RequireBitmap( TVtUiBitmapPoolId aId )
-    {
-    const TInt pos = Find( aId );
-    if ( pos != KErrNotFound )
-        {
-        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
-        bitmapInfo->Require( iTmpFileName );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::GetBitmaps
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::GetBitmaps(
-        TVtUiBitmapPoolId aId,
-        CFbsBitmap*& aBitmap,
-        CFbsBitmap*& aBitmapMask )
-    {
-    aBitmap = NULL;
-    aBitmapMask = NULL;
-
-    const TInt pos = Find( aId );
-    if ( pos != KErrNotFound )
-        {
-        CBitmapInfo* bitmapInfo = iBitmapArray[ pos ];
-        bitmapInfo->GetBitmap( aBitmap, aBitmapMask );
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::GetBitmap
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::GetBitmap(
-        TVtUiBitmapPoolId aId,
-        CFbsBitmap*& aBitmap )
-    {
-    CFbsBitmap* dummy = NULL;
-    GetBitmaps( aId, aBitmap, dummy );
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::InvalidateBitmaps
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::InvalidateBitmaps()
-    {
-    const TInt count = iBitmapArray.Count();
-    for ( TInt index = 0; index < count; index++ )
-        {
-        CBitmapInfo* bitmapInfo = iBitmapArray[ index ];
-        bitmapInfo->Reset();
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::Find
-// -----------------------------------------------------------------------------
-//
-TInt CVtUiBitmapManager::Find( TVtUiBitmapPoolId aId ) const
-    {
-    TInt result = KErrNotFound;
-    const TInt count = iBitmapArray.Count();
-    for ( TInt index = 0; index < count; index++ )
-        {
-        CBitmapInfo* bitmapInfo = iBitmapArray[ index ];
-        if ( bitmapInfo->BitmapPoolId() == aId )
-            {
-            result = index;
-            index = count; // out of the loop
-            }
-        }
-
-    return result;
-    }
-
-// Implementation of CBitmapInfo:
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::CBitmapInfo
-// -----------------------------------------------------------------------------
-//
-inline CVtUiBitmapManager::CBitmapInfo::CBitmapInfo(
-        TVtUiBitmapPoolId aId )
-    : iBitmapPoolId( aId ), 
-      iBitmapId( EVtUiBitmapNone ), 
-      iBitmapMaskId( EVtUiBitmapNone )
-    {
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::~CBitmapInfo
-// -----------------------------------------------------------------------------
-//
-CVtUiBitmapManager::CBitmapInfo::~CBitmapInfo()
-    {
-    delete iBitmap;
-    delete iBitmapMask;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::SetBitmaps
-// -----------------------------------------------------------------------------
-//
-inline void CVtUiBitmapManager::CBitmapInfo::SetBitmaps( 
-        TVtUiBitmapId aBitmapId, 
-        TVtUiBitmapId aBitmapMaskId )
-    {
-    iBitmapId = aBitmapId;
-    iBitmapMaskId = aBitmapMaskId;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::SetBitmap
-// -----------------------------------------------------------------------------
-//
-inline void CVtUiBitmapManager::CBitmapInfo::SetBitmap( 
-        TVtUiBitmapId aBitmapId )
-    {
-    iBitmapId = aBitmapId;
-    iBitmapMaskId = EVtUiBitmapNone;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::SetSize
-// -----------------------------------------------------------------------------
-//
-inline void CVtUiBitmapManager::CBitmapInfo::SetSize( 
-        const TSize& aSize )
-    {
-    if ( iHasSize )
-        {
-        iSizeChanged = ( iSize != aSize );
-        }
-
-    iHasSize = ETrue;
-    iSize = aSize;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::SetAspectRatio
-// -----------------------------------------------------------------------------
-//
-inline void CVtUiBitmapManager::CBitmapInfo::SetAspectRatio( TBool aPreserve )
-    {
-    iHasAspectRatioPreserve = ETrue;
-    iAspectRatioPreserve = aPreserve;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::SetDefaultColorRequired
-// -----------------------------------------------------------------------------
-//
-inline void CVtUiBitmapManager::CBitmapInfo::SetDefaultColorRequired( 
-        TBool aRequireDefaultColor )
-    {
-    iRequireDefaultColor = aRequireDefaultColor;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::SetDefaultColor
-// -----------------------------------------------------------------------------
-//
-inline void CVtUiBitmapManager::CBitmapInfo::SetDefaultColor( 
-        const TRgb& aDefaultColor )
-    {
-    __ASSERT_DEBUG( iRequireDefaultColor, 
-        VtUiPanic::Panic( EVtUiPanicDefaultColorRequireMismatch ) );
-    iHasDefaultColor = ETrue;
-    iDefaultColor = aDefaultColor;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::BitmapPoolId
-// -----------------------------------------------------------------------------
-//
-inline TVtUiBitmapPoolId CVtUiBitmapManager::CBitmapInfo::BitmapPoolId() const
-    {
-    return iBitmapPoolId;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::GetBitmap
-// -----------------------------------------------------------------------------
-//
-inline void CVtUiBitmapManager::CBitmapInfo::GetBitmap(
-        CFbsBitmap*& aBitmap,
-        CFbsBitmap*& aBitmapMask )
-    {
-    if ( iDoCreateBitmaps && iDoSetSize )
-        {
-        aBitmap = iBitmap;
-        aBitmapMask = iBitmapMask;
-        }
-    else
-        {
-        aBitmap = NULL;
-        aBitmapMask = NULL;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::Reset
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::CBitmapInfo::Reset()
-    {
-    delete iBitmap;
-    iBitmap = NULL;
-
-    delete iBitmapMask;
-    iBitmapMask = NULL;
-
-    iSize = TSize();
-    iHasSize = EFalse;
-    iSizeChanged = EFalse;
-    iHasDefaultColor = EFalse;
-    iDefaultColor = TRgb();
-    iDoCreateBitmaps = EFalse;
-    iDoSetSize = EFalse;
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::Require
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::CBitmapInfo::Require( TFileName& aTmpFileName )
-    {
-    // Bitmap can be created when the following has been satisfied
-    // a) It has not been created yet and default color is not required,
-    // b) It has not been created yet and default color is required and 
-    //    default color is available.
-    if ( !iDoCreateBitmaps && !( iRequireDefaultColor && !iHasDefaultColor ) )
-        {
-        TRAP_IGNORE( DoCreateBitmapsL( aTmpFileName ) );
-        }
-
-    DoSetSize();
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::DoCreateBitmapsL
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::CBitmapInfo::DoCreateBitmapsL( 
-        TFileName& aTmpFileName )
-    {
-    if ( !iDoCreateBitmaps )
-        {
-        TInt bitmapIndex = KErrNotFound;
-
-        VtUiLayout::Resolve( iBitmapId, aTmpFileName, bitmapIndex );
-
-        MAknsSkinInstance* skin = AknsUtils::SkinInstance();
-        TAknsItemID skinId = VtUiLayout::MapBitmapToSkinId( iBitmapId );
-        
-        TAknsItemID colorId = KAknsIIDNone;
-        TInt colorIndex = KErrNotFound;
-        TBool colorAvailable = EFalse;
-        if ( iHasDefaultColor )
-            {
-            colorAvailable = 
-                VtUiLayout::MapBitmapToColorId( 
-                    iBitmapId, colorId, colorIndex );
-            }
-
-        if ( iBitmapMaskId != EVtUiBitmapNone )
-            {
-            TInt bitmapMaskIndex = KErrNotFound;
-#ifdef _DEBUG
-            TFileName fileName;
-            VtUiLayout::Resolve( iBitmapMaskId, fileName, bitmapMaskIndex );
-            __ASSERT_ALWAYS( aTmpFileName == fileName, 
-                VtUiPanic::Panic( EVtUiPanicMismatchInBitmapFileNames ) );
-#else
-            VtUiLayout::Resolve( iBitmapMaskId, aTmpFileName, bitmapMaskIndex );
-#endif
-            if ( colorAvailable )
-                {
-                AknsUtils::CreateColorIconL( 
-                    skin, skinId,
-                    colorId, colorIndex,
-                    iBitmap, iBitmapMask,
-                    aTmpFileName,
-                    bitmapIndex,
-                    bitmapMaskIndex,
-                    iDefaultColor );
-                }
-            else
-                {
-                AknsUtils::CreateIconL(
-                    skin, skinId,
-                    iBitmap, iBitmapMask,
-                    aTmpFileName,
-                    bitmapIndex, 
-                    bitmapMaskIndex );
-                }
-            }
-        else
-            {
-            // Only normal skinning for these.
-            AknsUtils::CreateIconL(
-                skin,
-                skinId,
-                iBitmap,
-                aTmpFileName,
-                bitmapIndex );
-            }
-
-        iDoCreateBitmaps = ETrue;
-        }
-    }
-
-// -----------------------------------------------------------------------------
-// CVtUiBitmapManager::CBitmapInfo::DoSetSize
-// -----------------------------------------------------------------------------
-//
-void CVtUiBitmapManager::CBitmapInfo::DoSetSize()
-    {
-    if ( iDoCreateBitmaps && iHasSize && ( !iDoSetSize || iSizeChanged ) )
-        {
-        iSizeChanged = EFalse;
-        TInt retBitmap = KErrNone;
-        if ( !iHasAspectRatioPreserve )
-            {
-            retBitmap = AknIconUtils::SetSize( iBitmap, iSize );
-            }
-        else
-            {
-            TScaleMode scaleMode = 
-                iAspectRatioPreserve ? 
-                    EAspectRatioPreserved : 
-                    EAspectRatioNotPreserved;
-            retBitmap = AknIconUtils::SetSize( iBitmap, iSize, scaleMode );
-            }
-
-        iDoSetSize = ( retBitmap == KErrNone );
-        }
-    }
-
-//  End of File