uigraphics/AknIcon/src/AknSourceBitmapIconManager.cpp
changeset 0 05e9090e2422
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/src/AknSourceBitmapIconManager.cpp	Thu Dec 17 09:14:12 2009 +0200
@@ -0,0 +1,105 @@
+/*
+* Copyright (c) 2002 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 class CAknSourceBitmapIconManager.
+*
+*/
+
+
+
+
+// INCLUDE FILES
+#include "AknSourceBitmapIconManager.h"
+#include "AknBitmap.h"
+#include "AknIconSrvUtils.h"
+#include "AknIconSrvTlsData.h"
+#include "akniconconfig.h"
+// ============================ MEMBER FUNCTIONS ===============================
+
+// Constructor
+CAknSourceBitmapIconManager::CAknSourceBitmapIconManager( CAknIcon* aSourceIcon ) :
+    iSourceBitmap( aSourceIcon->Bitmap() ),
+    iSourceMask( aSourceIcon->Mask() )
+    {
+    aSourceIcon->SetBitmap( NULL );
+    aSourceIcon->SetMask( NULL );
+    delete aSourceIcon;
+    }
+
+// Destructor
+CAknSourceBitmapIconManager::~CAknSourceBitmapIconManager()
+    {
+    delete iSourceBitmap;
+    delete iSourceMask;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknSourceBitmapIconManager::LoadBitmapIconL
+// -----------------------------------------------------------------------------
+//
+void CAknSourceBitmapIconManager::LoadBitmapIconL()
+    {
+    User::LeaveIfError( iBitmap->Duplicate( iSourceBitmap->Handle() ) );
+    if ( iMask )
+        {
+        User::LeaveIfError( iMask->Duplicate( iSourceMask->Handle() ) );
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CAknSourceBitmapIconManager::DoInitializeIconL
+// -----------------------------------------------------------------------------
+//
+void CAknSourceBitmapIconManager::DoInitializeIconL(
+    const TSize& aSize,
+    TScaleMode aMode,
+    TInt aAngle )
+    {
+    if ( iInitializedMode == aMode && iInitializedSize == aSize && 
+    	 iInitializedAngle == aAngle )
+    	{
+    	return;
+    	}
+       
+    iBitmap->Reset();
+    if ( iMask )
+        {
+        iMask->Reset();
+        }
+    
+    AknIconSrvUtils::ScaleBitmapIconL(
+        aSize,
+        aMode,
+        aAngle,
+        iColor,
+        iSourceBitmap,
+        iSourceMask,
+        iBitmap,
+        iMask );
+    if ( IsAppIcon() )
+    	{
+    	AknIconSrvUtils::EnsureValidSizeL(iBitmap, iMask);	
+   	 	}
+    
+    if (!IsCompressionDisabled())
+        {
+        AknIconConfig::CompressIfPreferred(iBitmap, iMask);    
+        }    
+    iInitializedMode = aMode;
+    iInitializedSize = aSize;
+    iInitializedAngle = aAngle;
+       
+        
+    }
+
+//  End of File