diff -r e8c1ea2c6496 -r 8758140453c0 graphics/bitgdi/src/T_DataFbsScreenDevice.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphics/bitgdi/src/T_DataFbsScreenDevice.cpp Thu Jan 21 12:53:44 2010 +0000 @@ -0,0 +1,495 @@ +// +// Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies). +// All rights reserved. +// This component and the accompanying materials are made available +// under the terms of the License "Symbian Foundation License v1.0" +// which accompanies this distribution, and is available +// at the URL "http://www.symbianfoundation.org/legal/sfl-v10.html". +// +// Initial Contributors: +// Nokia Corporation - initial contribution. +// +// Contributors: +// +// Description: +// + +// User includes +#include "T_DataFbsScreenDevice.h" +#include "T_GraphicsUtil.h" + +/*@{*/ +//Commands +_LIT(KCmdNewL, "NewL"); +_LIT(KCmdDestructor, "~"); + +_LIT(KCmdChangeScreenDevice, "ChangeScreenDevice"); +_LIT(KCmdDrawSpriteBegin, "DrawSpriteBegin"); +_LIT(KCmdDrawSpriteEnd, "DrawSpriteEnd"); +_LIT(KCmdHardwareBitmap, "HardwareBitmap"); +_LIT(KCmdScreenNo, "ScreenNo"); +_LIT(KCmdSetAutoUpdate, "SetAutoUpdate"); +_LIT(KCmdUpdate, "Update"); +_LIT(KCmdCancelSprite, "CancelSprite"); +_LIT(KCmdHideSprite, "HideSprite"); +_LIT(KCmdShowSprite, "ShowSprite"); + +_LIT(KCmdDisown, "disown"); + +//Fields +_LIT(KFldExpected, "expected"); +_LIT(KLibName, "libname"); +_LIT(KScreenNumber, "screen_number"); +_LIT(KRgbColorRed, "rgb_red"); +_LIT(KRgbColorGreen, "rgb_green"); +_LIT(KRgbColorBlue, "rgb_blue"); +_LIT(KDisplayMode, "displaymode"); +_LIT(KAutoUpdate, "autoupdate"); +_LIT(KRegion, "region"); +_LIT(KFbsScreenDevice, "FbsScrDevName"); +_LIT(KFldRect, "rect"); +_LIT(KFldRegion, "region"); +_LIT(KSpriteBase, "spritebase"); + +//Logging +_LIT(KLogMissingParameter, "Missing parameter '%S'"); + +/*@}*/ +/** +* Two phase constructor +*/ +CT_DataFbsScreenDevice* CT_DataFbsScreenDevice::NewL() + { + CT_DataFbsScreenDevice* ret = new (ELeave) CT_DataFbsScreenDevice(); + CleanupStack::PushL(ret); + ret->ConstructL(); + CleanupStack::Pop(ret); + return ret; + } + +/** +* Protected constructor. First phase construction +*/ +CT_DataFbsScreenDevice::CT_DataFbsScreenDevice() +: CT_DataFbsDevice() +, iFbsScreenDevice(NULL) + { + } + +/** +* Protected second phase construction +*/ +void CT_DataFbsScreenDevice::ConstructL() + { + } + +/** + * Set the object that the data wraps + * + * @param aObject object that the wrapper is testing + * + */ +void CT_DataFbsScreenDevice::SetObjectL(TAny* aAny) + { + DestroyData(); + iFbsScreenDevice = static_cast (aAny); + } + +void CT_DataFbsScreenDevice::DisownObjectL() + { + iFbsScreenDevice = NULL; + } + +/** +* Destructor. +*/ +CT_DataFbsScreenDevice::~CT_DataFbsScreenDevice() + { + DestroyData(); + } + +void CT_DataFbsScreenDevice::DestroyData() + { + delete iFbsScreenDevice; + iFbsScreenDevice=NULL; + } + +MGraphicsDeviceMap* CT_DataFbsScreenDevice::GetGraphicsDeviceMap() const + { + return iFbsScreenDevice; + } + +CGraphicsDevice* CT_DataFbsScreenDevice::GetGraphicsDevice() const + { + return iFbsScreenDevice; + } + +CBitmapDevice* CT_DataFbsScreenDevice::GetBitmapDevice() const + { + return iFbsScreenDevice; + } + +CFbsDevice* CT_DataFbsScreenDevice::GetFbsDevice() const + { + return iFbsScreenDevice; + } + +/** +* Return a pointer to the object that the data wraps +* +* @return pointer to the object that the data wraps +*/ +TAny* CT_DataFbsScreenDevice::GetObject() + { + return iFbsScreenDevice; + } + +/** +* Process a command read from the ini file +* +* @param aDataWrapper test step requiring command to be processed +* @param aCommand the command to process +* @param aSection the entry in the ini file requiring the command to be processed +* +* @return ETrue if the command is processed +*/ +TBool CT_DataFbsScreenDevice::DoCommandL(const TTEFFunction& aCommand, const TTEFSectionName& aSection, const TInt aAsyncErrorIndex) + { + /* Another work package will complete the implement of this */ + TBool retVal = ETrue; + + if ( aCommand == KCmdNewL ) + { + DoCmdNew(aSection); + } + else if (aCommand == KCmdDestructor) + { + DoCmdDestructor(); + } + else if (aCommand == KCmdChangeScreenDevice) + { + DoCmdChangeScreenDeviceL(aSection); + } + else if (aCommand == KCmdDrawSpriteBegin) + { + DoCmdDrawSpriteBegin(); + } + else if (aCommand == KCmdDrawSpriteEnd) + { + DoCmdDrawSpriteEnd(); + } + else if (aCommand == KCmdHardwareBitmap) + { + DoCmdHardwareBitmap(); + } + else if (aCommand == KCmdScreenNo) + { + DoCmdScreenNo(aSection); + } + else if (aCommand == KCmdSetAutoUpdate) + { + DoCmdSetAutoUpdate(aSection); + } + else if (aCommand == KCmdUpdate) + { + DoCmdUpdateL(aSection); + } + else if (aCommand == KCmdCancelSprite) + { + DoCmdCancelSprite(); + } + else if (aCommand == KCmdHideSprite) + { + DoCmdHideSpriteL(aSection); + } + else if (aCommand == KCmdShowSprite) + { + DoCmdShowSpriteL(aSection); + } + else if (aCommand == KCmdDisown) + { + DisownObjectL(); + } + else + { + retVal = CT_DataFbsDevice::DoCommandL(aCommand, aSection, aAsyncErrorIndex); + } + + return retVal; + } + +void CT_DataFbsScreenDevice::DoCmdNew(const TDesC& aSection) + { + DestroyData(); + + // get display mode from parameters + TDisplayMode displayMode=ENone; + TBool hasDisplayMode=CT_GraphicsUtil::ReadDisplayMode(*this, aSection, KDisplayMode(), displayMode); + + // get lib name from parameters + + TPtrC libName; + TBool hasLibName=GetStringFromConfig(aSection, KLibName(), libName); + + TBool useRgb = EFalse; + + TInt red = 0; + if(GetIntFromConfig(aSection, KRgbColorRed(), red)) + { + useRgb=ETrue; + } + + TInt green = 0; + if(GetIntFromConfig(aSection, KRgbColorGreen(), green)) + { + useRgb=ETrue; + } + + TInt blue = 0; + if(GetIntFromConfig(aSection, KRgbColorBlue(), blue)) + { + useRgb = ETrue; + } + + // get screen number from parameters + TInt screenNumber = 0; + GetIntFromConfig(aSection, KScreenNumber(), screenNumber); + + TInt err=KErrNone; + if ( !hasDisplayMode ) + { + // Find the best display mode + for ( TDisplayMode testMode=TDisplayMode(ENone+1); testMode(GetDataObjectL(FbsScreenDevNameOld)); + INFO_PRINTF1(_L("FbsScreenDevice::ChangeScreenDevice(CFbsScreenDevice *aOldDevice) is called!")); + iFbsScreenDevice->ChangeScreenDevice(FbsScreenDevOld); + } + else + { + INFO_PRINTF2(KLogMissingParameter, &KFbsScreenDevice); + SetBlockResult(EFail); + } + } + +void CT_DataFbsScreenDevice::DoCmdDrawSpriteBegin() + { + INFO_PRINTF1(_L("FbsScreenDevice::DrawSpriteBegin() is called!")); + iFbsScreenDevice->DrawSpriteBegin(); + } + +void CT_DataFbsScreenDevice::DoCmdDrawSpriteEnd() + { + INFO_PRINTF1(_L("FbsScreenDevice::DrawSpriteEnd() is called!")); + iFbsScreenDevice->DrawSpriteEnd(); + } + +void CT_DataFbsScreenDevice::DoCmdHardwareBitmap() + { + INFO_PRINTF1(_L("FbsScreenDevice::HardwareBitmap() is called!")); + RHardwareBitmap handle = iFbsScreenDevice->HardwareBitmap(); + INFO_PRINTF2(_L("The actual handle from HardwareBitmap() is %d"), handle.iHandle); + } + +void CT_DataFbsScreenDevice::DoCmdScreenNo(const TDesC& aSection) + { + // Execute command and log parameters + INFO_PRINTF1(_L("FbsScreenDevice::ScreenNo() is called!")); + TInt actual = iFbsScreenDevice->ScreenNo(); + INFO_PRINTF2(_L("The actual result of ScreenNo() is %d"), actual); + + // Diaplay command return value, check if it matches the expected value + TInt expected; + if (!GetIntFromConfig(aSection, KFldExpected, expected)) + { + ERR_PRINTF2(KLogMissingParameter, &KFldExpected); + SetBlockResult(EFail); + } + else + { + if (actual!=expected) + { + ERR_PRINTF3(_L("The expected result %d is not equal to the actual result %d!"), expected, actual); + SetBlockResult(EFail); + } + } + } + +void CT_DataFbsScreenDevice::DoCmdSetAutoUpdate(const TDesC& aSection) + { + TBool autoupdate; + if (!GetBoolFromConfig(aSection, KAutoUpdate, autoupdate)) + { + ERR_PRINTF2(KLogMissingParameter, &KAutoUpdate); + SetBlockResult(EFail); + } + else + { + iFbsScreenDevice->SetAutoUpdate(autoupdate); + INFO_PRINTF2(_L("FbsScreenDevice::SetAutoUpdate(%d) has been called."), autoupdate); + } + } + +void CT_DataFbsScreenDevice::DoCmdUpdateL(const TDesC& aSection) + { + RRegion region(1); + CleanupClosePushL(region); + + if (GetRegionFromConfig(aSection, KRegion(), region)) + { + INFO_PRINTF1(_L("FbsScreenDevice::Update(const TRegion &aRegion) has been called.")); + iFbsScreenDevice->Update(region); + } + else + { + INFO_PRINTF1(_L("FbsScreenDevice::Update() has been called.")); + iFbsScreenDevice->Update(); + } + CleanupStack::PopAndDestroy(®ion); + } + +void CT_DataFbsScreenDevice::DoCmdCancelSprite() + { + INFO_PRINTF1(_L("execute CancelSprite()!")); + iFbsScreenDevice->CancelSprite(); + } + +void CT_DataFbsScreenDevice::DoCmdHideSpriteL(const TDesC& aSection) + { + TSpriteBase* spritebase = NULL; + TRect datRect; + RRegion datRegion(1); + CleanupClosePushL(datRegion); + + if (GetRectFromConfig(aSection, KFldRect, datRect)) + { + if (GetRegionFromConfig(aSection, KFldRegion, datRegion)) + { + INFO_PRINTF1(_L("execute HideSprite(const TRect &aRect, const TRegion *aClippingRegion)!")); + spritebase = iFbsScreenDevice->HideSprite(datRect, &datRegion); + } + else + { + ERR_PRINTF2(KLogMissingParameter, &KFldRegion); + SetBlockResult(EFail); + } + } + else + { + INFO_PRINTF1(_L("execute HideSprite(void)!")); + spritebase = iFbsScreenDevice->HideSprite(); + } + + CleanupStack::PopAndDestroy(&datRegion); + } + + +void CT_DataFbsScreenDevice::DoCmdShowSpriteL(const TDesC& aSection) + { + TSpriteBase* spritebase = NULL; + TPtrC SpriteBase; + TRect datRect; + RRegion datRegion(1); + CleanupClosePushL(datRegion); + + if (GetStringFromConfig(aSection, KSpriteBase, SpriteBase)) + { + spritebase = static_cast(GetDataObjectL(SpriteBase)); + } + else + { + ERR_PRINTF2(KLogMissingParameter, &KSpriteBase); + SetBlockResult(EFail); + } + + if (GetRectFromConfig(aSection, KFldRect, datRect)) + { + if (GetRegionFromConfig(aSection, KFldRegion, datRegion)) + { + INFO_PRINTF1(_L("execute ShowSprite(TSpriteBase*, const TRect&, const TRegion*)!")); + iFbsScreenDevice->ShowSprite(spritebase, datRect, &datRegion); + } + else + { + ERR_PRINTF2(KLogMissingParameter, &KFldRegion); + SetBlockResult(EFail); + } + } + else + { + INFO_PRINTF1(_L("execute ShowSprite(TSpriteBase*)!")); + iFbsScreenDevice->ShowSprite(spritebase); + } + CleanupStack::PopAndDestroy(&datRegion); + }