--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicsapitest/graphicssvs/bitgdi/src/T_DataFbsScreenDevice.cpp Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,502 @@
+/*
+* 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 "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:
+*
+*/
+
+/**
+@test
+@internalComponent
+
+This contains CT_DataFbsScreenDevice
+*/
+
+// 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<CFbsScreenDevice*> (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<EColorLast; testMode=TDisplayMode(testMode+1) )
+ {
+ if ( hasLibName ) // if lib name is given
+ {
+ if ( useRgb )
+ {
+ TRAP(err, iFbsScreenDevice=CFbsScreenDevice::NewL(libName, testMode, TRgb(red, green, blue)));
+ }
+ else
+ {
+ TRAP(err, iFbsScreenDevice=CFbsScreenDevice::NewL(libName, testMode));
+ }
+ }
+ else // if lib name is not given
+ {
+ TRAP(err, iFbsScreenDevice=CFbsScreenDevice::NewL(screenNumber, testMode));
+ }
+
+ // Test if Mode OK
+ if ( err==KErrNone )
+ {
+ displayMode=testMode;
+ hasDisplayMode=ETrue;
+ delete iFbsScreenDevice;
+ iFbsScreenDevice=NULL;
+ INFO_PRINTF2(_L("Mode %d supported"), testMode);
+ }
+ }
+ }
+
+ if ( hasDisplayMode )
+ {
+ if ( hasLibName ) // if lib name is given
+ {
+ if ( useRgb )
+ {
+ TRAP(err, iFbsScreenDevice=CFbsScreenDevice::NewL(libName, displayMode, TRgb(red, green, blue)));
+ }
+ else
+ {
+ TRAP(err, iFbsScreenDevice=CFbsScreenDevice::NewL(libName, displayMode));
+ }
+ }
+ else // if lib name is not given
+ {
+ TRAP(err, iFbsScreenDevice=CFbsScreenDevice::NewL(screenNumber, displayMode));
+ }
+
+ if ( err!=KErrNone )
+ {
+ ERR_PRINTF2(_L("NewL failed with error %d"), err);
+ SetError(err);
+ }
+ }
+ else
+ {
+ ERR_PRINTF1(_L("No Display Mode"));
+ SetBlockResult(EFail);
+ }
+ }
+
+void CT_DataFbsScreenDevice::DoCmdDestructor()
+ {
+ DestroyData();
+ }
+
+void CT_DataFbsScreenDevice::DoCmdChangeScreenDeviceL(const TDesC& aSection)
+ {
+ TPtrC FbsScreenDevNameOld;
+ CFbsScreenDevice* FbsScreenDevOld = NULL;
+
+ if (GetStringFromConfig(aSection, KFbsScreenDevice, FbsScreenDevNameOld))
+ {
+ FbsScreenDevOld = static_cast<CFbsScreenDevice*>(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)
+ {
+ 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)!"));
+ TSpriteBase* spritebase = iFbsScreenDevice->HideSprite(datRect, &datRegion);
+ }
+ else
+ {
+ ERR_PRINTF2(KLogMissingParameter, &KFldRegion);
+ SetBlockResult(EFail);
+ }
+ }
+ else
+ {
+ INFO_PRINTF1(_L("execute HideSprite(void)!"));
+ TSpriteBase* 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<TSpriteBase*>(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);
+ }