diff -r 61bc0f252b2b -r bac7acad7cb3 camerauis/activepalette/Src/CActivePalettePluginBase.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/camerauis/activepalette/Src/CActivePalettePluginBase.cpp Wed Sep 01 12:30:54 2010 +0100 @@ -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 +#include + +#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(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