--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/camerauis/activepalette/Src/CActivePalettePluginBase.cpp Thu Jan 07 16:18:56 2010 +0200
@@ -0,0 +1,335 @@
+/*
+* Copyright (c) 2007 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: Active Palette Base plugin class*
+*/
+
+
+/**
+ * @file CActivePalettePluginBase.cpp
+ * Active Palette Base plugin class
+ */
+
+// INCLUDE FILES
+
+#include "CActivePalettePluginBase.h"
+#include "ActivePalette2Logger.h"
+
+#include "ActivePalette2Utils.h"
+
+#include <fbs.h>
+#include <bitstd.h>
+
+#include "ActivePalette2Cfg.h"
+
+
+// CONSTANTS
+
+const TInt KAnimPhase1 = 0;
+const TInt KAnimPhase2 = 1;
+const TInt KAnimPhaseMax = KAnimPhase2;
+const TInt KAnimNofPhases = 2;
+
+const TInt KAnimDeviatinFactorMul = 1;
+const TInt KAnimDeviatinFactorDiv = 5;
+
+
+// ================= MEMBER FUNCTIONS =======================
+
+// -----------------------------------------------------------------------------
+// CAnimationHelper::CAnimationHelper()
+// C++ constructor
+// -----------------------------------------------------------------------------
+//
+CAnimationHelper::CAnimationHelper()
+ {
+ // empty
+ }
+
+// -----------------------------------------------------------------------------
+// CAnimationHelper::ConstructL()
+// 2nd phase construction
+// -----------------------------------------------------------------------------
+//
+void CAnimationHelper::ConstructL(const TSize aSize, const TBool aMaskNeeded)
+ {
+ ActivePalette2Utils::CreateDrawingObjectsL(aSize,&iFrame,&iFrameDevice,&iFrameGc);
+ if (aMaskNeeded)
+ {
+ ActivePalette2Utils::CreateDrawingObjectsL(EGray256,
+ aSize,&iFrameMask,&iFrameMaskDevice,&iFrameMaskGc);
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CAnimationHelper::~CAnimationHelper()
+// Destructor
+// -----------------------------------------------------------------------------
+//
+CAnimationHelper::~CAnimationHelper()
+ {
+ // DeleteDrawingObjects checks passed pointers to ensure they are not null
+ ActivePalette2Utils::DeleteDrawingObjects(&iFrame,&iFrameDevice,&iFrameGc);
+ ActivePalette2Utils::DeleteDrawingObjects(&iFrameMask,&iFrameMaskDevice,&iFrameMaskGc);
+ }
+
+// -----------------------------------------------------------------------------
+// CAnimationHelper::NewL()
+// Symbian 2 phase construction
+// -----------------------------------------------------------------------------
+//
+CAnimationHelper * CAnimationHelper::NewL(const TSize aSize, const TBool aMaskNeeded)
+ {
+ CAnimationHelper * self = new (ELeave) CAnimationHelper();
+
+ CleanupStack::PushL(self);
+ self->ConstructL(aSize, aMaskNeeded);
+ CleanupStack::Pop(self);
+
+ return self;
+ }
+
+// -----------------------------------------------------------------------------
+// NActivePalettePluginFactory::TPluginCreationParams::PluginObserver()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C MActivePalettePluginObserver& NActivePalettePluginFactory::TPluginCreationParams::PluginObserver(void) const
+ {
+ return iObserver;
+ }
+
+// -----------------------------------------------------------------------------
+// NActivePalettePluginFactory::TPluginCreationParams::Dimensions(void)
+// -----------------------------------------------------------------------------
+//
+EXPORT_C TSize NActivePalettePluginFactory::TPluginCreationParams::Dimensions(void) const
+ {
+ return iDimensions;
+ }
+
+// -----------------------------------------------------------------------------
+// NActivePalettePluginFactory::TPluginCreationParams::TPluginCreationParams()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C NActivePalettePluginFactory::TPluginCreationParams::TPluginCreationParams(MActivePalettePluginObserver & aObserver,
+ const TSize& aDimensions)
+: iObserver(aObserver),
+ iDimensions(aDimensions)
+ {
+ }
+
+// -----------------------------------------------------------------------------
+// CActivePalettePluginBase::CActivePalettePluginBase()
+// C++ constructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CActivePalettePluginBase::CActivePalettePluginBase(const NActivePalettePluginFactory::TPluginCreationParams & aCreationParams)
+: iPluginObserver(aCreationParams.PluginObserver())
+ {
+ LOGTEXT( _L( "CActivePalettePluginBase::CActivePalettePluginBase" ) );
+ PluginObserver().NotifyPluginCreated(this);
+ }
+
+// -----------------------------------------------------------------------------
+// CActivePalettePluginBase::~CActivePalettePluginBase()
+// Destructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C CActivePalettePluginBase::~CActivePalettePluginBase(void)
+ {
+ LOGTEXT( _L( "CActivePalettePluginBase::~CActivePalettePluginBase" ) );
+ CBase::Delete(iAnimationHelper);
+ iAnimationHelper = NULL;
+ PluginObserver().NotifyPluginDestroyed(this);
+ }
+
+// -----------------------------------------------------------------------------
+// CActivePalettePluginBase::ConstructL()
+// 2nd phase constructor
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CActivePalettePluginBase::ConstructL(const NActivePalettePluginFactory::TPluginCreationParams& /*aCreationParams*/,
+ const TDesC8 & /*aCustomDataDes*/,
+ const TInt /*aCustomDataInt*/)
+ {
+ LOGTEXT( _L( "CActivePalettePluginBase::ConstructL" ) );
+ // empty
+ }
+
+// -----------------------------------------------------------------------------
+// CActivePalettePluginBase::Shutdown()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CActivePalettePluginBase::Shutdown(void)
+ {
+ LOGTEXT( _L( "CActivePalettePluginBase::Shutdown" ) );
+ // empty
+ }
+
+// -----------------------------------------------------------------------------
+// CActivePalettePluginBase::HandleMessageL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CActivePalettePluginBase::HandleMessageL(const TInt aMessageID,
+ const TDesC8& /*aDataDes*/,
+ const TInt /*aDataInt*/)
+ {
+ LOGTEXT1( _L( "CActivePalettePluginBase::HandleMessageL, message ID: %d" ), aMessageID );
+ // empty
+ if (aMessageID)
+ {
+ // no compiler warning
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CActivePalettePluginBase::PrepareAniFramesL()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CActivePalettePluginBase::PrepareAniFramesL(const TInt aAniType,
+ TPluginAnimationInfo& aAniInfo,
+ const TPluginAnimationInfo& aDefaultAniInfo,
+ const CFbsBitmap& aItemIcon,
+ const CFbsBitmap* aItemIconMask)
+ {
+ LOGTEXT1( _L( "CActivePalettePluginBase::PrepareAniFramesL, AniType ID: %d" ), aAniType);
+
+ // use default animation info
+ aAniInfo = aDefaultAniInfo;
+
+ // create data for icon and mask frames
+ iAnimationHelper = CAnimationHelper::NewL(aDefaultAniInfo.iFrameSize,
+ (NULL != aItemIconMask));
+
+ if (aAniType)
+ {
+ // no compiler warning
+ }
+ if (aItemIcon.Handle())
+ {
+ // no compiler warning
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CActivePalettePluginBase::ReleaseAniFrames()
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CActivePalettePluginBase::ReleaseAniFrames(const TInt aAniType)
+ {
+ LOGTEXT1( _L( "CActivePalettePluginBase::ReleaseAniFrames, AniType ID: %d" ), aAniType);
+
+ CBase::Delete(iAnimationHelper);
+ iAnimationHelper = NULL;
+
+ if (aAniType)
+ {
+ // no compiler warning
+ }
+ }
+
+// -----------------------------------------------------------------------------
+// CActivePalettePluginBase::ProduceAniFrame(
+// -----------------------------------------------------------------------------
+//
+EXPORT_C void CActivePalettePluginBase::ProduceAniFrame(
+ TInt aAniType,
+ TInt aFrameNo,
+ const TPluginAnimationInfo& aAniInfo,
+ const CFbsBitmap& aItemIcon,
+ const CFbsBitmap* aItemIconMask,
+ CFbsBitmap** aFrame,
+ CFbsBitmap** aFrameMask,
+ TBool& aOwnershipTransferForFrame,
+ TBool& aOwnershipTransferForMask)
+ {
+ LOGTEXT2(
+ _L( "CActivePalettePluginBase::ProduceAniFrame, AniType ID: %d, frame no : %d" ),
+ aAniType,
+ aFrameNo);
+
+ CAnimationHelper* ani = static_cast<CAnimationHelper*>(iAnimationHelper);
+
+ aOwnershipTransferForFrame = EFalse;
+ aOwnershipTransferForMask = EFalse;
+
+ *aFrame = ani->iFrame;
+ *aFrameMask = ani->iFrameMask;
+
+ // empty mask, transparent
+ if (NULL != ani->iFrameMaskGc)
+ {
+ ani->iFrameMaskGc->Reset();
+ ani->iFrameMaskGc->SetBrushColor(KRgbBlack);
+ ani->iFrameMaskGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
+ ani->iFrameMaskGc->Clear();
+ }
+
+ // empty frame
+ ani->iFrameGc->Reset();
+ ani->iFrameGc->SetBrushColor(KRgbWhite);
+ ani->iFrameGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
+ ani->iFrameGc->Clear();
+
+ // ani frame
+ TInt phase = Min(KAnimPhaseMax,
+ KAnimNofPhases * aFrameNo / aAniInfo.iNofFrames);
+
+ TInt inPhaseMax = aAniInfo.iNofFrames / KAnimNofPhases;
+
+ TInt inPhaseOfs = Min(inPhaseMax, aFrameNo - (phase * KAnimPhaseMax));
+
+ TInt lenX = aAniInfo.iFrameSize.iWidth;
+ TInt lenY = aAniInfo.iFrameSize.iHeight;
+
+ TInt devX = lenX * KAnimDeviatinFactorMul / KAnimDeviatinFactorDiv;
+ TInt devY = lenY * KAnimDeviatinFactorMul / KAnimDeviatinFactorDiv;
+
+ TInt szx(0);
+ TInt szy(0);
+
+ TInt addX = devX * inPhaseOfs / inPhaseMax;
+ TInt addY = devY * inPhaseOfs / inPhaseMax;
+
+ switch (phase)
+ {
+ case KAnimPhase1:
+ szx = lenX - addX;
+ szy = lenY - addY;
+ break;
+
+ case KAnimPhase2:
+ default:
+ szx = lenX - devX + addX;
+ szy = lenY - devY + addY;
+ break;
+ }
+
+ TRect frameRect(TPoint( (lenX - szx) / 2, (lenY - szy) / 2),
+ TSize(szx, szy));
+ TRect iconRect(TPoint(0,0), aItemIcon.SizeInPixels());
+
+ if (NULL != aItemIconMask && NULL != ani->iFrameMaskGc)
+ {
+ ani->iFrameMaskGc->DrawBitmap(frameRect,aItemIconMask,iconRect);
+ }
+
+ ani->iFrameGc->DrawBitmap(frameRect,&aItemIcon,iconRect);
+
+ if (aAniType)
+ {
+ // no compiler warning
+ }
+ }
+
+// End of File