uigraphics/AknIcon/src/AknNvgFormatHandler.cpp
changeset 0 05e9090e2422
child 33 e2effe28d8cc
child 93 b705c392b9a4
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/uigraphics/AknIcon/src/AknNvgFormatHandler.cpp	Thu Dec 17 09:14:12 2009 +0200
@@ -0,0 +1,298 @@
+/*
+* 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: 
+*
+*/
+
+
+
+// INCLUDE FILES
+#include <e32math.h>
+#include <fbs.h>
+#include <mifconvdefs.h> // For definition of EIconFormatNVG
+
+#include "AknNvgFormatHandler.h"
+#include "AknIconObserver.h"
+#include "AknIconSrvPanic.h"
+#include "AknIconTraces.h"
+#include <flogger.h>
+#include "AknIconManager.h"
+#include "AknIconHeader.h"
+
+// CONSTANTS
+
+
+// ============================ MEMBER FUNCTIONS ===============================
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::CAknNvgFormatHandler
+// C++ default constructor can NOT contain any code, that
+// might leave.
+// -----------------------------------------------------------------------------
+//
+CAknNvgFormatHandler::CAknNvgFormatHandler():iMode(EAspectRatioPreserved),iAngle(0)
+	{
+	iData = 0x00;
+	}
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::ConstructL
+// Symbian 2nd phase constructor can leave.
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::ConstructL()
+    {
+#ifdef __AKNICON_TRACES
+    RDebug::Print( _L("AknIcon: %x Calling ConstructL - iSvgEngine: %x"), this, iSvgEngine);
+#endif            
+    }
+
+CAknNvgFormatHandler* CAknNvgFormatHandler::NewL()
+    {
+    CAknNvgFormatHandler* self = new( ELeave ) CAknNvgFormatHandler();
+    CleanupStack::PushL( self );
+    self->ConstructL();
+    CleanupStack::Pop();
+    return self;
+    }
+
+// Destructor
+CAknNvgFormatHandler::~CAknNvgFormatHandler()
+    {
+	iIconData.Close();
+	delete iData;
+    delete iDummyBitmap;
+    delete iNvgEngine;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::SetScaleMode
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::SetScaleMode( TScaleMode aMode )
+    {
+    iMode = aMode;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::SetRotation
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::SetRotation( TInt aAngle )
+    {
+    iAngle = aAngle;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::GetContentDimensionsL
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::GetContentDimensionsL(
+        TAknContentDimensions& aContentDimensions)
+    {
+    if ( iNvgEngine && iData)
+        {
+        TSize lSize = iNvgEngine->ContentDimensions(iData->Des().MidTPtr(KIconHeaderLength) );
+        aContentDimensions.SetDimensions( lSize );
+        }    
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::InitializeEngineL
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::InitializeEngineL()
+    {
+    if ( !iNvgEngine)
+        {
+        iNvgEngine = CNvgEngine::NewL( );
+        }
+	
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::PrepareIconL
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::PrepareIconL( const TDesC8& aIconData, TInt& aHandle )
+    {
+    InitializeEngineL();
+
+    TInt handle = 1;
+
+
+    if (iData)
+        {
+        delete iData;
+        iData = NULL;
+        }
+    
+    iData = HBufC8::NewL(aIconData.Size()+KIconHeaderLength);
+
+    TPtr8 lPtr(iData->Des() );
+    TUint8 header[KIconHeaderLength]=
+        {
+        0
+        };
+
+    lPtr.Append(header, KIconHeaderLength);
+
+    lPtr.Append(aIconData);
+
+    aHandle = handle;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::UsePreparedIconL
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::UsePreparedIconL(TInt /*aHandle */)
+    {
+  
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::RenderPreparedIconL
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::RenderPreparedIconL(CFbsBitmap* aBitmap,
+        CFbsBitmap* aMask, TSize Bitmapsize, TDisplayMode Bitmapdepth,
+        TDisplayMode Maskdepth, TRgb aColor, TBool aMarginFlag)
+    {
+    FormCommonHeader(aBitmap, EFalse, aColor, aMarginFlag);
+    aBitmap->CreateExtendedBitmap(Bitmapsize, Bitmapdepth,
+            KUidNvgProprietaryFormat, iData->Ptr(), iData->Length());
+
+    if (aMask)
+        {
+        FormCommonHeader(0, ETrue, 0, 0);
+        aMask->CreateExtendedBitmap(Bitmapsize, Maskdepth,
+                KUidNvgProprietaryFormat, iData->Ptr(), iData->Length());
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::UnprepareIcon
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::UnprepareIcon( TInt /*aHandle*/ )
+    {
+    delete iData;
+    iData = NULL;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::SetAnimated
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::SetAnimated( TBool aAnimated )
+    {
+    iAnimated = aAnimated;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::IconFormatType
+// -----------------------------------------------------------------------------
+//
+TInt CAknNvgFormatHandler::IconFormatType()
+    {
+    return EIconFormatNVG;
+    }    
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::SetObserver
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::SetObserver( MAknIconChangeObserver* aObserver )
+    {
+	
+    iObserver = aObserver;
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::CheckHandleActivatedL
+// -----------------------------------------------------------------------------
+//
+
+void CAknNvgFormatHandler::CheckHandleActivatedL( CFbsBitmap* /*aBitmap*/, CFbsBitmap * /*aMask*/ )
+    {      
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::SupportedDisplayMode
+// -----------------------------------------------------------------------------
+//
+void CAknNvgFormatHandler::SupportedDisplayMode(
+    TDisplayMode& aMode, TDisplayMode aPreferredMode )
+    {
+    // Modes currently supported by SVG engine are:
+    // EGray2, EColor4K, EColor64K, EColor16M
+    if ( aMode != EGray2 )
+        {
+        aMode = aPreferredMode;
+        }
+    }
+
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::SetEngineScaleMode
+// -----------------------------------------------------------------------------
+//
+
+void CAknNvgFormatHandler::SetEngineScaleMode()
+    {
+   
+    }
+    
+// -----------------------------------------------------------------------------
+// CAknNvgFormatHandler::CleanupNullMaskPointer
+// -----------------------------------------------------------------------------
+//    
+//
+void CAknNvgFormatHandler::CleanupNullMaskPointer(TAny* aParam)
+    {
+    static_cast<CAknNvgFormatHandler*>( aParam )->iMask = NULL;
+    }
+
+void CAknNvgFormatHandler::FormCommonHeader(const CFbsBitmap *aBitmap,
+        TBool isMask, TRgb aColor, TBool aMarginFlag)
+    {
+
+    TPtr8 tmpBufPtr(iData->Des());
+   
+    TAknIconHeader iconheader(tmpBufPtr);
+    
+    if(isMask)
+             {
+             iconheader.SetIsMask(ETrue);
+             return;
+             }
+    
+    iconheader.Initialize();
+    
+    iconheader.SetRotation(iAngle);
+
+    iconheader.SetIconColor(aColor.Value());
+
+    iconheader.SetScaleMode(iMode);
+    
+    if(aMarginFlag)
+    iconheader.SetMarginCorrection(ETrue);
+
+    iconheader.SetIsMask(EFalse);
+
+    iconheader.SetBitmapId(aBitmap->Handle());
+    }
+
+
+//  End of File