windowing/windowserver/tauto/tdrawresource.cpp
changeset 116 171fae344dd4
parent 103 2717213c588a
--- a/windowing/windowserver/tauto/tdrawresource.cpp	Tue Jun 22 15:21:29 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1144 +0,0 @@
-// Copyright (c) 2008-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:
-//
-
-/**
- @file
- @test
- @internalComponent - Internal Symbian test code
-*/
-
-#include "tdrawresource.h"
-#include <graphics/sgimage.h>
-#include <graphics/sgutils.h>
-#include <graphics/directgdidrawablesource.h>
-#include <graphics/sgresourceinternal.h>
-#include <graphics/wsdrawresource.h>
-
-
-__WS_CONSTRUCT_STEP__(DrawResource);
-
-
-#if defined(__X86GCC__)
-extern "C" TInt atexit(void (*function)(void))
-	{
-	return KErrNone;
-	}
-#endif
-
-//
-// class CTestWsGraphicsContext
-//
-CTestWsGraphicsContext* CTestWsGraphicsContext::NewL(RDirectGdiImageTarget& aTarget)
-	{
-	CTestWsGraphicsContext* self = new(ELeave) CTestWsGraphicsContext;
-	CleanupStack::PushL(self);
-	self->ConstructL(aTarget);
-	CleanupStack::Pop(self);
-	return self;
-	}
-
-void CTestWsGraphicsContext::ConstructL(RDirectGdiImageTarget& aTarget)
-	{
-	CDirectGdiDriver* driver = CDirectGdiDriver::Static();
-	User::LeaveIfNull(driver);
-	iContext = CDirectGdiContext::NewL(*driver);
-	TInt err = iContext->Activate(aTarget);
-	User::LeaveIfError(err);
-	}
-
-CTestWsGraphicsContext::~CTestWsGraphicsContext()
-	{
-	delete iContext;
-	}
-
-TAny* CTestWsGraphicsContext::ResolveObjectInterface(TUint aTypeId)
-	{
-	switch(aTypeId)
-		{
-	case MWsDrawableSourceProvider::EWsObjectInterfaceId:
-		return static_cast<MWsDrawableSourceProvider*>(this);
-		}
-	return NULL;
-
-	}
-	
-TInt CTestWsGraphicsContext::CreateDrawableSource(const TSgDrawableId& aDrawableId, TAny*& aSource)
-	{
-	TRAPD(err, DoCreateDrawableSourceL(aDrawableId, aSource));
-	return err;
-	}
-
-void CTestWsGraphicsContext::DoCreateDrawableSourceL(const TSgDrawableId& aDrawableId, TAny*& aSource)
-	{
-	CDirectGdiDriver* driver = CDirectGdiDriver::Static();
-	if (!driver)
-		{
-		User::Leave(KErrNotReady);
-		}
-	RDirectGdiDrawableSource* drawableSource = new(ELeave) RDirectGdiDrawableSource(*driver);
-	CleanupStack::PushL(drawableSource);
-	RSgDrawable drawable;
-	User::LeaveIfError(drawable.Open(aDrawableId, ESgDoNotRestrictUsage));
-	CleanupClosePushL(drawable);
-	User::LeaveIfError(drawableSource->Create(drawable));
-	CleanupStack::PopAndDestroy();
-	CleanupStack::Pop(drawableSource);
-	aSource = drawableSource;
-	}
-
-void CTestWsGraphicsContext::CloseDrawableSource(TAny* aSource)
-	{
-	RDirectGdiDrawableSource* drawableSource = static_cast<RDirectGdiDrawableSource*>(aSource);
-	drawableSource->Close();
-	delete drawableSource;
-	}
-
-void CTestWsGraphicsContext::DrawResource(const TAny* aSource, const TPoint& aPos, CWindowGc::TGraphicsRotation aRotation)
-	{
-	const RDirectGdiDrawableSource* drawableSource = static_cast<const RDirectGdiDrawableSource*>(aSource);
-	iContext->DrawResource(aPos, *drawableSource, (DirectGdi::TGraphicsRotation)aRotation);
-	iPos = aPos;
-	iRotation = (DirectGdi::TGraphicsRotation)aRotation;
-	}
-
-void CTestWsGraphicsContext::DrawResource(const TAny* aSource, const TRect& aRect, CWindowGc::TGraphicsRotation aRotation)
-	{
-	const RDirectGdiDrawableSource* drawableSource = static_cast<const RDirectGdiDrawableSource*>(aSource);
-	iContext->DrawResource(aRect, *drawableSource, (DirectGdi::TGraphicsRotation)aRotation);
-	iDestRect = aRect;
-	iRotation = (DirectGdi::TGraphicsRotation)aRotation;
-	}
-
-void CTestWsGraphicsContext::DrawResource(const TAny* aSource, const TRect& aRectDest, const TRect& aRectSrc, CWindowGc::TGraphicsRotation aRotation)
-	{
-	const RDirectGdiDrawableSource* drawableSource = static_cast<const RDirectGdiDrawableSource*>(aSource);
-	iContext->DrawResource(aRectDest, *drawableSource, aRectSrc, (DirectGdi::TGraphicsRotation)aRotation);
-	iDestRect = aRectDest;
-	iSrcRect = aRectSrc;
-	iRotation = (DirectGdi::TGraphicsRotation)aRotation;
-	}
-
-void CTestWsGraphicsContext::DrawResource(const TAny* aSource, const TRect& aRect, const TDesC8& aParam)
-	{
-	const RDirectGdiDrawableSource* drawableSource = static_cast<const RDirectGdiDrawableSource*>(aSource);
-	iContext->DrawResource(aRect, *drawableSource, aParam);
-	iDestRect = aRect;
-	}
-
-
-void CTestWsGraphicsContext::Clear()
-	{
-	iContext->Clear();
-	}
-
-//
-// class CTDrawResource
-//
-
-CTDrawResource::CTDrawResource(CTestStep* aStep)
-	: CTWsGraphicsBase(aStep)
-	{
-	}
-
-CTDrawResource::~CTDrawResource()
-	{
-	iWindow.Close();
-	delete iRefBitmap;
-	delete iRotatedRefBitmap;
-	delete iScaledBitmap;
-	delete iScaledCroppedBitmap;
-	delete iCopyBitmap;
-	delete iBitmapWrongScreenNumber;
-
-	delete iWsGrapicResolver;
-	delete iGraphicsCon;
-
-	iWsDrawableSource.Close();
-	iImage.Close();
-	iImageTarget.Close();
-	iImageCollection.Close();
-
-	CDirectGdiDriver* dGdiDriver = CDirectGdiDriver::Static();
-	if(dGdiDriver)
-		{
-		dGdiDriver->Close();
-		}
-	SgDriver::Close();
-	}
-
-void CTDrawResource::ConstructL()
-	{
-	//Constrcut and setup window to be drawn to
-	iWindow = RWindow(TheClient->iWs);
-    User::LeaveIfError(iWindow.Construct(*TheClient->iGroup->GroupWin(),ENullWsHandle));
-    TSize iWinSize=TSize(TheClient->iScreen->SizeInPixels());
-    iWindow.SetExtent(TPoint(0,0),iWinSize);
-	iWindow.Activate();
-	iWindow.BeginRedraw();
-	iWindow.EndRedraw();
-	
-	//Creates all reference and copy bitmaps required for all tests
-	CreateReferenceAndCopyBitmapsL();
-
-	TInt err = CDirectGdiDriver::Open();
-	User::LeaveIfError(err);
-	err = SgDriver::Open();
-	User::LeaveIfError(err);
-	
-	//create image target
-	CDirectGdiDriver* theDGdiDriver = CDirectGdiDriver::Static();
-	if(!theDGdiDriver)
-		{
-		User::Leave(KErrNotReady);
-		}
-	TSgImageInfo info;
-	info.iUsage = ESgUsageDirectGdiTarget | ESgUsageDirectGdiSource | ESgUsageCompositionSource;
-	info.iPixelFormat = EUidPixelFormatRGB_565;
-	info.iSizeInPixels = TSize(200, 200);
-	info.iShareable = ETrue;
-	const TInt KImageCount = 1;
-	err = iImageCollection.Create(info, KImageCount);
-	User::LeaveIfError(err);
-	
-	err = iImageCollection.OpenImage(0, iImage);
-	User::LeaveIfError(err);
-	iImageTarget = RDirectGdiImageTarget(*theDGdiDriver);
-	err = iImageTarget.Create(iImage);
-	User::LeaveIfError(err);
-	
-	// construction of image source
-	RSgImage sgImage;
-	CreateSgImageFromBitmapL(sgImage);
-	CleanupClosePushL(sgImage);
-	iWsDrawableSource = RWsDrawableSource(TheClient->iWs);
-	User::LeaveIfError(iWsDrawableSource.Create(sgImage, TheClient->iScreen->GetScreenNumber()));
-	
-    //Create dummy MWsGraphicResolver - required RemoteGc testing
-	iWsGrapicResolver = new (ELeave) CWSGraphicsRes();
-	
-	//Create dummy MWsGraphicsContext - required RemoteGc testing
-	iGraphicsCon =  CTestWsGraphicsContext::NewL(iImageTarget);
-	
-	CleanupStack::PopAndDestroy(&sgImage);
-	}
-
-void CTDrawResource::RunTestCaseL(TInt aCurTestCase)
-	{	
-	((CTDrawResourceStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
-	switch(aCurTestCase)
-		{
-	case 1:		
-		((CTDrawResourceStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-DRAWRESOURCE-0001"));
-		INFO_PRINTF1(_L("DrawResourcePos Test"));		
-		TestDrawResourcePos();
-		break;
-	case 2:
-		((CTDrawResourceStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-DRAWRESOURCE-0002"));
-		INFO_PRINTF1(_L("DrawResourceRect Test"));	
-		TestDrawResourceRect();
-		break;
-	case 3:
-		((CTDrawResourceStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-DRAWRESOURCE-0003"));
-		INFO_PRINTF1(_L("DrawResourceScale Test"));		
-		TestDrawResourceScale();
-		break;
-	case 4:
-		((CTDrawResourceStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-DRAWRESOURCE-0004"));
-		INFO_PRINTF1(_L("RWsDrawableSource Reference Counting Test"));		
-		TestRWsDrawableSourceReferenceCountingL();
-		break;	
-	case 5:
-		((CTDrawResourceStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-DRAWRESOURCE-0005"));
-		INFO_PRINTF1(_L("RemoteGcDrawResourcePos Test"));	
-		TestRemoteGcDrawResourcePosL();
-		break;
-	case 6:
-		((CTDrawResourceStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-DRAWRESOURCE-0006"));
-		INFO_PRINTF1(_L("RemoteGcDrawResourceRect Test"));	
-		TestRemoteGcDrawResourceRectL();
-		break;
-	case 7:
-		((CTDrawResourceStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-DRAWRESOURCE-0007"));
-		INFO_PRINTF1(_L("RemoteGcDrawResourceScale Test"));	
-		TestRemoteGcDrawResourceScaleL();
-		break;
-	case 8:
-		((CTDrawResourceStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-DRAWRESOURCE-0008"));
-		INFO_PRINTF1(_L("DrawResourceScreens Test"));	
-		TestDrawResourceScreensL();
-		break;
-	case 9:
-		((CTDrawResourceStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-TestCopyScreenToBitmapWithDifferentDisplayModes-0001"));
-		INFO_PRINTF1(_L("CopyScreenToBitmapWithDifferentDisplayModes Test\n"));
-		TestCopyScreenToBitmapWithDifferentDisplayModesL();
-		break;
-	case 10:
-		((CTDrawResourceStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
-		((CTDrawResourceStep*)iStep)->CloseTMSGraphicsStep();
-		INFO_PRINTF1(_L("Test complete\n"));
-		TestComplete();
-		break;
-		}
-	((CTDrawResourceStep*)iStep)->RecordTestResultL();
-	}
-
-/**
-@SYMTestCaseID           GRAPHICS-WSERV-DRAWRESOURCE-0001
-@SYMPREQ                 PREQ2095
-@SYMTestPriority         High
-@SYMTestCaseDesc         Draw RSgImage using DrawResource(const TPoint&, const RWsDrawableSource&, TGraphicsRotation)
-@SYMTestActions          Draw to position (0,0) with default rotation (none)
-						 Draw to position (10,10) with 90 degrees rotation 
-@SYMTestExpectedResults  Drawn images should match reference CFbsBitmap
-*/
-void CTDrawResource::TestDrawResourcePos()
-	{
-	// Draw to TPoint(0,0) with EGraphicsRotationNone
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	MWsDrawResource* dr = static_cast<MWsDrawResource*>(TheGc->Interface(KMWsDrawResourceInterfaceUid));
-	TEST(dr != NULL);
-	dr->DrawResource(KDestPoint, iWsDrawableSource, CWindowGc::EGraphicsRotationNone);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();  
-	TheClient->WaitForRedrawsToFinish();
-
-	//Copy the screen to the copy bitmap
-	TheClient->iScreen->CopyScreenToBitmap(iCopyBitmap, KCopyTestRect);
-
-	//Compare the bitmaps
-	INFO_PRINTF1(_L("Draw to TPoint(0,0) with EGraphicsRotationNone"));
-	TBool compRes = CompareBitmapsByPixel(iCopyBitmap, iRefBitmap);
-	TEST(compRes);
-
-	/*** Draw to position (10,10) with 90 degrees rotation ***/
-	TPoint const KDestPoint2(10,10);
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-    TheGc->Clear();
-	dr->DrawResource(KDestPoint2, iWsDrawableSource, KTestRotation);
-    TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish(); 
-	TheClient->WaitForRedrawsToFinish();
-
-	//Copy the screen to the copy bitmap
-	TheClient->iScreen->CopyScreenToBitmap(iCopyBitmap, TRect(KDestPoint2, KSourceSize));
-
-	//Compare the bitmaps
-	INFO_PRINTF1(_L("Draw to position (10,10) with 90 degrees rotation"));
-	compRes = CompareBitmapsByPixel(iCopyBitmap, iRotatedRefBitmap);
-	TEST(compRes);
-	}
-
-/**
-@SYMTestCaseID           GRAPHICS-WSERV-DRAWRESOURCE-0002
-@SYMPREQ                 PREQ2095
-@SYMTestPriority         High
-@SYMTestCaseDesc         Draw RSgImage using DrawResource(const TRect& , const RWsDrawableSource&, TGraphicsRotation aRotation)
-@SYMTestActions          Draw to rect pos (10,10), rect size (60,60) with 90 degrees rotation
-@SYMTestExpectedResults  Drawn images should match the reference CFbsBitmap
-*/
-void CTDrawResource::TestDrawResourceRect()
-	{
-	//Use DrawResource
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	MWsDrawResource* dr = static_cast<MWsDrawResource*>(TheGc->Interface(KMWsDrawResourceInterfaceUid));
-	TEST(dr != NULL);
-	dr->DrawResource(KDestRect, iWsDrawableSource, KTestRotation);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();  
-	TheClient->WaitForRedrawsToFinish();
-
-	//Copy the screen to the copy bitmap
-	TheClient->iScreen->CopyScreenToBitmap(iCopyBitmap, KCopyTestRect);
-
-	//Compare the bitmaps
-	INFO_PRINTF1(_L("Draw to rect pos (10,10), rect size (60,60) with 90 degrees rotation"));
-	TInt compRes = CompareBitmapsByPixel(iCopyBitmap, iScaledBitmap);
-	TEST(compRes);
-	}
-
-/**
-@SYMTestCaseID           GRAPHICS-WSERV-DRAWRESOURCE-0003
-@SYMPREQ                 PREQ2095
-@SYMTestPriority         High
-@SYMTestCaseDesc         Draw RSgImage using DrawResource(const TRect& , const RWsDrawableSource&, const TRect&, TGraphicsRotation aRotation)
-@SYMTestActions          Draw the part of the source image (rect Pos (0,0), rect size(50,50))
-						 to rect pos(10,10), rect size(60,60) and and 90 degrees rotation
-@SYMTestExpectedResults  Drawn images should match the reference CFbsBitmap
-*/
-void CTDrawResource::TestDrawResourceScale()
-	{
-	//Use DrawResource
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	MWsDrawResource* dr = static_cast<MWsDrawResource*>(TheGc->Interface(KMWsDrawResourceInterfaceUid));
-	TEST(dr != NULL);
-	dr->DrawResource(KDestRect, iWsDrawableSource, KSourceRect, KTestRotation);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();  
-	TheClient->WaitForRedrawsToFinish();
-
-	//Copy the screen to the copy bitmap
-	TheClient->iScreen->CopyScreenToBitmap(iCopyBitmap, KCopyTestRect);
-
-	//Compare the bitmaps
-	INFO_PRINTF1(_L("Draw the part of the source image to rect pos(10,10), rect size(60,60) and and 90 degrees rotation"));
-	TInt compRes = CompareBitmapsByPixel(iCopyBitmap, iScaledCroppedBitmap);
-	TEST(compRes);
-	}
-
-/**
-@SYMTestCaseID           GRAPHICS-WSERV-DRAWRESOURCE-0004
-@SYMPREQ                 PREQ2095
-@SYMTestPriority         High
-@SYMTestCaseDesc         Draw RSgImage using DrawResource(const TPoint&, const RWsDrawableSource&, TGraphicsRotation) after closing the image source
-@SYMTestActions          Draw to position (0,0) with default rotation (none) after closing the image source
-@SYMTestExpectedResults  Drawn image should match reference CFbsBitmap
-*/
-void CTDrawResource::TestRWsDrawableSourceReferenceCountingL()
-	{	
-	// construction of image source
-	RSgImage sgImage;
-	CreateSgImageFromBitmapL(sgImage);
-	CleanupClosePushL(sgImage);
-	RWsDrawableSource drawableSource(TheClient->iWs);
-	CleanupClosePushL(drawableSource);
-	User::LeaveIfError(drawableSource.Create(sgImage, TheClient->iScreen->GetScreenNumber())); 
-
-	//Draw using DrawResource
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	MWsDrawResource* dr = static_cast<MWsDrawResource*>(TheGc->Interface(KMWsDrawResourceInterfaceUid));
-	TEST(dr != NULL);
-	dr->DrawResource(KDestPoint, drawableSource, CWindowGc::EGraphicsRotationNone);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-
-	//Close the image source but this should not stop the source from being drawn 
-	drawableSource.Close();
-	TheClient->iWs.Finish();
-	TheClient->WaitForRedrawsToFinish();
-
-	//Copy the screen to the copy bitmap
-	TheClient->iScreen->CopyScreenToBitmap(iCopyBitmap, KCopyTestRect);
-
-	//Compare the bitmaps
-	INFO_PRINTF1(_L("Draw to TPoint(0,0) with EGraphicsRotationNone"));
-	TBool compRes = CompareBitmapsByPixel(iCopyBitmap, iRefBitmap);
-	TEST(compRes);
-
-	CleanupStack::PopAndDestroy(2, &sgImage);
-	}
-
-/**
-@SYMTestCaseID           GRAPHICS-WSERV-DRAWRESOURCE-0005
-@SYMPREQ                 PREQ2095
-@SYMTestPriority         High
-@SYMTestCaseDesc         Draw RSgImage using RemotGc->DrawResource(const TPoint&, const RWsDrawableSource&, TGraphicsRotation)
-@SYMTestActions          Record the draw resource commands using CRemoteGc and play the recorded commands on a window using
- 						 Play(const TPoint&, const TRect&, RWsSession&, CWindowGc&) and then play the recorded commands using . 
-						 Play(const TPoint&, const TRect&, const MWsGraphicResolver&, MWsGraphicsContext&).
-@SYMTestExpectedResults  Drawn images should match reference CFbsBitmap and also values received by MWsGraphicsContext should 
- 						 match what was originally sent to DrawResource.
-*/
-void CTDrawResource::TestRemoteGcDrawResourcePosL()
-	{
-	const TRect KRemotGcSourceRect(0, 0, iWindow.Size().iWidth, iWindow.Size().iHeight);
-	const TRegionFix<1> KClippingRegion(KRemotGcSourceRect);
-	CWindowGc::TGraphicsRotation testRotation= CWindowGc::EGraphicsRotationNone;
-	
-	//Create remote gc - required RemoteGc testing
-	CRemoteGc* remoteGc = CRemoteGc::NewL(TheClient->iScreen);
-	CleanupStack::PushL(remoteGc);
-
-	//Record draw messages
-	remoteGc->ResetCommandBuffer();
-	remoteGc->BeginDraw(KRemotGcSourceRect);
-	MWsDrawResource* dr = static_cast<MWsDrawResource*>(remoteGc->Interface(KMWsDrawResourceInterfaceUid));
-	TEST(dr != NULL);
-	dr->DrawResource(KDestPoint, iWsDrawableSource, CWindowGc::EGraphicsRotationNone);
-	remoteGc->EndDraw();
-	
-	RWsGraphicMsgBuf msgBuf;
-	CleanupClosePushL(msgBuf);
-	//Externalize the captured commands from remote gc in to a buffer
-	remoteGc->ExternalizeL(msgBuf, ETrue);
-	//Create command buffer - required RemoteGc testing
-	CCommandBuffer* cmdBuffer = CCommandBuffer::NewL();
-	CleanupStack::PushL(cmdBuffer);
-	//Internalize the buffer with captured commands (from CRemoteGC) in to CCommandBuffer
-	cmdBuffer->InternalizeL(msgBuf.Pckg());
-
-	// Play stored commands using Play(const TPoint&, const TRect&, RWsSession&, CWindowGc&) 
-	remoteGc->ResetCommandBuffer();
-	iWindow.Invalidate();
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	cmdBuffer->Play(KPlayOffset, &KClippingRegion, KRemotGcSourceRect, TheClient->iWs, *TheGc);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();
-	TheClient->WaitForRedrawsToFinish();
-
-	//Copy the screen to the copy bitmap
-	TheClient->iScreen->CopyScreenToBitmap(iCopyBitmap, KCopyTestRect);
-
-	//Compare the bitmaps
-	INFO_PRINTF1(_L("Using Play(const TPoint&, const TRect&, RWsSession&, CWindowGc&)"));
-	TBool compRes = CompareBitmapsByPixel(iCopyBitmap, iRefBitmap);
-	TEST(compRes);
-
-	// Play stored commands using Play(const TPoint&, const TRect&, const MWsGraphicResolver&, MWsGraphicsContext&) 
-	remoteGc->ResetCommandBuffer();
-	iWindow.Invalidate();
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	cmdBuffer->Play(KPlayOffset,&KClippingRegion,KRemotGcSourceRect,*iWsGrapicResolver,*iGraphicsCon);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();
-
-	//Compare the values received by CTestWsGraphicsContext and the values sent to it
-	INFO_PRINTF1(_L("Using Play(const TPoint&, const TRect&, const MWsGraphicResolver&, MWsGraphicsContext&)"));
-	TBool valuesSame = EFalse;
-	CFbsBitmap* bmp;
-	BitmapLC(bmp);
-	compRes = CompareBitmapsByPixel(bmp, iRefBitmap);
-	CleanupStack::PopAndDestroy(bmp);
-
-	if((iGraphicsCon->iPos == KDestPoint) && (compRes)
-									&& (reinterpret_cast<TInt&>(iGraphicsCon->iRotation)==reinterpret_cast<TInt&>(testRotation)))
-		valuesSame = ETrue;
-	TEST(valuesSame);
-	CleanupStack::PopAndDestroy(3, remoteGc);
-	}
-
-/**
-@SYMTestCaseID           GRAPHICS-WSERV-DRAWRESOURCE-0006
-@SYMPREQ                 PREQ2095
-@SYMTestPriority         High
-@SYMTestCaseDesc         Draw RSgImage using RemotGc->DrawResource(const TRect&, const RWsDrawableSource&, TGraphicsRotation)
-@SYMTestActions          Record the draw resource commands using CRemoteGc and play the recorded commands on a window using
- 						 Play(const TPoint&, const TRect&, RWsSession&, CWindowGc&) and then play the recorded commands using . 
-						 Play(const TPoint&, const TRect&, const MWsGraphicResolver&, MWsGraphicsContext&).
-@SYMTestExpectedResults  Drawn images should match reference CFbsBitmap and also values received by MWsGraphicsContext should 
- 						 match what was originally sent to DrawResource.
-*/
-void CTDrawResource::TestRemoteGcDrawResourceRectL()
-	{
-	const TRect KRemotGcSourceRect(0, 0, iWindow.Size().iWidth, iWindow.Size().iHeight);
-	const TRegionFix<1> KClippingRegion(KRemotGcSourceRect);
-	
-	//Create remote gc - required RemoteGc testing
-	CRemoteGc* remoteGc = CRemoteGc::NewL(TheClient->iScreen);
-	CleanupStack::PushL(remoteGc);
-
-	//Record draw messages
-	remoteGc->BeginDraw(KRemotGcSourceRect);
-	MWsDrawResource* dr = static_cast<MWsDrawResource*>(remoteGc->Interface(KMWsDrawResourceInterfaceUid));
-	TEST(dr != NULL);
-	dr->DrawResource(KDestRect, iWsDrawableSource, KTestRotation);
-	remoteGc->EndDraw();
-	
-	RWsGraphicMsgBuf msgBuf;
-	CleanupClosePushL(msgBuf);
-	//Externalize the captured commands from remote gc in to a buffer
-	remoteGc->ExternalizeL(msgBuf, ETrue);
-
-	//Create command buffer - required RemoteGc testing
-	CCommandBuffer* cmdBuffer = CCommandBuffer::NewL();
-	CleanupStack::PushL(cmdBuffer);
-	//Internalize the buffer with captured commands (from CRemoteGC) in to CCommandBuffer
-	cmdBuffer->InternalizeL(msgBuf.Pckg());
-
-	// Play stored commands using Play(const TRect&, const TRect&, RWsSession&, CWindowGc&)
-	iWindow.Invalidate();
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	cmdBuffer->Play(KPlayOffset, &KClippingRegion, KRemotGcSourceRect, TheClient->iWs, *TheGc);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();
-	TheClient->WaitForRedrawsToFinish();
-
-	//Copy the screen to the copy bitmap
-	TheClient->iScreen->CopyScreenToBitmap(iCopyBitmap, KCopyTestRect);
-
-	//Compare the bitmaps
-	INFO_PRINTF1(_L("Using Play(const TPoint&, const TRect&, RWsSession&, CWindowGc&)"));
-	TBool compRes = CompareBitmapsByPixel(iCopyBitmap, iScaledBitmap);
-	TEST(compRes);
-
-	// Play stored commands using Play(const TPoint&, const TRect&, const MWsGraphicResolver&, MWsGraphicsContext&) 
-	iWindow.Invalidate();
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	iGraphicsCon->Clear();
-	cmdBuffer->Play(KPlayOffset,&KClippingRegion,KRemotGcSourceRect,*iWsGrapicResolver,*iGraphicsCon);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();
-	TheClient->WaitForRedrawsToFinish();
-
-	//Compare the values received by CTestWsGraphicsContext and the values sent to it
-	INFO_PRINTF1(_L("Using Play(const TPoint&, const TRect&, const MWsGraphicResolver&, MWsGraphicsContext&)"));
-	TBool valuesSame = EFalse;
-
-	CFbsBitmap* bmp;
-	BitmapLC(bmp);
-	compRes = CompareBitmapsByPixel(bmp, iScaledBitmap);
-	CleanupStack::PopAndDestroy(bmp);
-
-	if((iGraphicsCon->iDestRect == KDestRect) && (compRes)
-								&& (reinterpret_cast<TInt&>(iGraphicsCon->iRotation)==reinterpret_cast<const TInt&>(KTestRotation)))
-		valuesSame = ETrue;
-	TEST(valuesSame);
-	CleanupStack::PopAndDestroy(3, remoteGc);
-	}
-
-/**
-@SYMTestCaseID           GRAPHICS-WSERV-DRAWRESOURCE-0007
-@SYMPREQ                 PREQ2095
-@SYMTestPriority         High
-@SYMTestCaseDesc         Draw RSgImage using RemotGc->DrawResource(const TRect&, const RWsDrawableSource&, const TRect&, TGraphicsRotation)
-@SYMTestActions          Record the draw resource commands using CRemoteGc and play the recorded commands on a window using
- 						 Play(const TPoint&, const TRect&, RWsSession&, CWindowGc&) and then play the recorded commands using . 
-						 Play(const TPoint&, const TRect&, const MWsGraphicResolver&, MWsGraphicsContext&).
-@SYMTestExpectedResults  Drawn images should match reference CFbsBitmap and also values received by MWsGraphicsContext should 
- 						 match what was originally sent to DrawResource.
-*/
-void CTDrawResource::TestRemoteGcDrawResourceScaleL()
-	{
-	const TRect KRemotGcSourceRect(0, 0, iWindow.Size().iWidth, iWindow.Size().iHeight);
-	const TRegionFix<1> KClippingRegion(KRemotGcSourceRect);
-	
-	//Create remote gc - required RemoteGc testing
-	CRemoteGc* remoteGc = CRemoteGc::NewL(TheClient->iScreen);
-	CleanupStack::PushL(remoteGc);
-
-	//Record draw messages
-	remoteGc->BeginDraw(KRemotGcSourceRect);
-	MWsDrawResource* dr = static_cast<MWsDrawResource*>(remoteGc->Interface(KMWsDrawResourceInterfaceUid));
-	TEST(dr != NULL);
-	dr->DrawResource(KDestRect, iWsDrawableSource, KSourceRect, KTestRotation);
-	remoteGc->EndDraw();
-	
-	RWsGraphicMsgBuf msgBuf;
-	CleanupClosePushL(msgBuf);
-	//Externalize the captured commands from remote gc in to a buffer
-	remoteGc->ExternalizeL(msgBuf, ETrue);
-
-	//Create command buffer - required RemoteGc testing
-	CCommandBuffer* cmdBuffer = CCommandBuffer::NewL();
-	CleanupStack::PushL(cmdBuffer);
-	//Internalize the buffer with captured commands (from CRemoteGC) in to CCommandBuffer
-	cmdBuffer->InternalizeL(msgBuf.Pckg());
-
-	// Play the stored commands using Play(const TRect&, const TRect&, RWsSession&, CWindowGc&)
-	remoteGc->ResetCommandBuffer();
-	iWindow.Invalidate();
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	cmdBuffer->Play(KPlayOffset, &KClippingRegion, KRemotGcSourceRect, TheClient->iWs, *TheGc);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();
-	TheClient->WaitForRedrawsToFinish();
-	//Copy the screen to the copy bitmap
-	TheClient->iScreen->CopyScreenToBitmap(iCopyBitmap, KCopyTestRect);
-
-	//Compare the bitmaps
-	INFO_PRINTF1(_L("Using Play(const TPoint&, const TRect&, RWsSession&, CWindowGc&)"));
-	TBool compRes = CompareBitmapsByPixel(iCopyBitmap, iScaledCroppedBitmap);
-	TEST(compRes);
-
-	// Play the stored commands using Play(const TPoint&, const TRect&, const MWsGraphicResolver&, MWsGraphicsContext&) 	
-	iWindow.Invalidate();
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	iGraphicsCon->Clear();
-	cmdBuffer->Play(KPlayOffset,&KClippingRegion,KRemotGcSourceRect,*iWsGrapicResolver,*iGraphicsCon);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();
-	TheClient->WaitForRedrawsToFinish();
-
-	//Compare the values received by CTestWsGraphicsContext and the values sent to it
-	INFO_PRINTF1(_L("Using Play(const TPoint&, const TRect&, const MWsGraphicResolver&, MWsGraphicsContext&)"));
-	TBool valuesSame = EFalse;
-
-	CFbsBitmap* bmp;
-	BitmapLC(bmp);
-	compRes = CompareBitmapsByPixel(bmp, iScaledCroppedBitmap);
-	CleanupStack::PopAndDestroy(bmp);
-
-	if((iGraphicsCon->iDestRect == KDestRect) && (compRes) && (iGraphicsCon->iSrcRect == KSourceRect)
-								&& (reinterpret_cast<TInt&>(iGraphicsCon->iRotation)==reinterpret_cast<const TInt&>(KTestRotation)))
-		valuesSame = ETrue;
-	TEST(valuesSame);
-	CleanupStack::PopAndDestroy(3, remoteGc);
-	}
-
-/**
-@SYMTestCaseID          GRAPHICS-WSERV-DRAWRESOURCE-0008
-@SYMPREQ                PREQ2095
-@SYMTestPriority        High
-@SYMTestCaseDesc        Negative testing. Draw graphics recourses which associated with different screens.
-@SYMTestActions         Open RWsDrawableSource associated with the screen which doesn’ exist.  
-						Open RWsDrawableSource associated with the screen which exists but differes from drawing target.
-						Draw Rectangle and Resource to the screen via CWindowGc
-						Draw Rectangle and Resource to the screen via CRemoteGc
-@SYMTestExpectedResults  Opening drawable resource on the screen which doesn’t exist must fail with error code KErrArgument 
-						Drawing primitives will result only rectangles be drawn as drawable recourses get associated with different screen
-*/
-void CTDrawResource::TestDrawResourceScreensL()
-	{
-	TInt numOfScreens = TheClient->iWs.NumberOfScreens();
-	if(numOfScreens < 2)
-		{
-		INFO_PRINTF2(_L("This test case will be running if the number of available screens more than 1, current number is %d"), numOfScreens);
-		return;
-		}
-	TInt screenNumber = TheClient->iScreen->GetScreenNumber();
-	TInt differentScreen = (screenNumber == 0) ? 1 : 0;
-
-	RSgImage sgImage;
-	CreateSgImageFromBitmapL(sgImage);
-	CleanupClosePushL(sgImage);
-
-	RWsDrawableSource drawableSource(TheClient->iWs);
-	TInt res = drawableSource.Create(sgImage, differentScreen + 200); //wrong screen number
-	TEST(res == KErrArgument);
-
-	res = drawableSource.Create(iImage, differentScreen);
-	TEST(res == KErrNotSupported); //in order to succeed the image must be created with flag usage ESgUsageWindowGcSource
-	
-	TSgImageInfo info; 
-	User::LeaveIfError(sgImage.GetInfo(info));
-
-	res = drawableSource.Create(sgImage, differentScreen);
-	if(res == KErrNotSupported)
-		{
-		INFO_PRINTF1(_L("The second screen is not supports drawable source. This test case terminates now."));
-		CleanupStack::PopAndDestroy(&sgImage);
-		return;
-		}
-	TEST(res == KErrNone);
-	User::LeaveIfError(res);
-	CleanupClosePushL(drawableSource);
-	
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	TheGc->SetBrushStyle(CFbsBitGc::ESolidBrush);
-	TheGc->SetPenStyle(CFbsBitGc::ENullPen);
-	TheGc->SetBrushColor(KRgbGreen);
-	TheGc->DrawRect(TRect(KDestPoint, info.iSizeInPixels));
-	// Draw to TPoint(0,0) with EGraphicsRotationNone but to the different screen
-	MWsDrawResource* winDr = static_cast<MWsDrawResource*>(TheGc->Interface(KMWsDrawResourceInterfaceUid));
-	TEST(winDr != NULL);
-	winDr->DrawResource(KDestPoint, drawableSource, CWindowGc::EGraphicsRotationNone);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();  
-	TheClient->WaitForRedrawsToFinish();
-
-	//Copy the screen to the copy bitmap
-	TheClient->iScreen->CopyScreenToBitmap(iCopyBitmap, KCopyTestRect);
-
-	//Compare the bitmaps
-	INFO_PRINTF1(_L("Draw to TPoint(0,0) with EGraphicsRotationNone but to different screen"));
-	TBool compRes = CompareBitmapsByPixel(iCopyBitmap, iBitmapWrongScreenNumber);
-	TEST(compRes);
-
-	//--------------------------- remoteGc 
-	const TRect KRemotGcSourceRect(0, 0, iWindow.Size().iWidth, iWindow.Size().iHeight);
-	const TRegionFix<1> KClippingRegion(KRemotGcSourceRect);
-	
-	//Create remote gc - required RemoteGc testing
-	CRemoteGc* remoteGc = CRemoteGc::NewL(TheClient->iScreen);
-	CleanupStack::PushL(remoteGc);
-
-	//Record draw messages
-	remoteGc->BeginDraw(KRemotGcSourceRect);
-	remoteGc->SetBrushStyle(CFbsBitGc::ESolidBrush);
-	remoteGc->SetPenStyle(CFbsBitGc::ENullPen);
-	remoteGc->SetBrushColor(KRgbGreen);
-	remoteGc->DrawRect(TRect(KDestPoint, info.iSizeInPixels));
-	MWsDrawResource* remDr = static_cast<MWsDrawResource*>(remoteGc->Interface(KMWsDrawResourceInterfaceUid));
-	TEST(remDr != NULL);
-	remDr->DrawResource(KDestRect, drawableSource, CWindowGc::EGraphicsRotationNone);
-	remoteGc->EndDraw();
-	
-	RWsGraphicMsgBuf msgBuf;
-	CleanupClosePushL(msgBuf);
-	//Externalize the captured commands from remote gc in to a buffer
-	remoteGc->ExternalizeL(msgBuf, ETrue);
-
-	//Create command buffer - required RemoteGc testing
-	CCommandBuffer* cmdBuffer = CCommandBuffer::NewL();
-	CleanupStack::PushL(cmdBuffer);
-	//Internalize the buffer with captured commands (from CRemoteGC) in to CCommandBuffer
-	cmdBuffer->InternalizeL(msgBuf.Pckg());
-	
-	// Play stored commands using Play(const TRect&, const TRect&, RWsSession&, CWindowGc&)
-	iWindow.Invalidate();
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->Clear();
-	cmdBuffer->Play(KPlayOffset, &KClippingRegion, KRemotGcSourceRect, TheClient->iWs, *TheGc);
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();
-	TheClient->WaitForRedrawsToFinish();
-
-	//Copy the screen to the copy bitmap
-	TheClient->iScreen->CopyScreenToBitmap(iCopyBitmap, KCopyTestRect);
-
-	INFO_PRINTF1(_L("Draw to TPoint(0,0) with EGraphicsRotationNone but to different screen"));
-	TBool compRes1 = CompareBitmapsByPixel(iCopyBitmap, iBitmapWrongScreenNumber);
-	TEST(compRes1);
-
-	CleanupStack::PopAndDestroy(5, &sgImage);
-	}
-
-/**
-@SYMTestCaseID          GRAPHICS-WSERV-TestCopyScreenToBitmapWithDifferentDisplayModes-0001
-@SYMPREQ                PREQ2095
-@SYMTestPriority        High
-@SYMTestCaseDesc        Get bitmap and scanline from the screen.  
-@SYMTestActions         Draw bitmap in various display modes to the screen. 
-						Retrieve scan line and bitmap from the screen using standard WSERV API.  
-
-@SYMTestExpectedResults Checks that obtained bitmap matches with the reference bitmap.
-*/
-void CTDrawResource::TestCopyScreenToBitmapWithDifferentDisplayModesL()
-	{
-	TDisplayMode mode = TheClient->iScreen->DisplayMode();
-    INFO_PRINTF2(_L("Screen display mode %d"), mode);
-	CFbsBitmap* bitmap = NULL;
-	
-	TSize bitmapSize(163, 120);
-	CreateBitmapLC(bitmap, bitmapSize, mode);
-	
-	iWindow.BeginRedraw();
-	TheGc->Activate(iWindow);
-	TheGc->SetBrushStyle(CWindowGc::ESolidBrush);
-	TheGc->SetBrushColor(KRgbYellow);
-	TheGc->Clear();
-	const TPoint ptOffset(10, 15);
-	TheGc->BitBlt(KDestPoint + ptOffset, bitmap);
-
-	TheGc->Deactivate();
-	iWindow.EndRedraw();
-	TheClient->iWs.Finish();
-	TheClient->WaitForRedrawsToFinish();
-
-	const TInt length = bitmapSize.iWidth;
-	const TInt height = bitmapSize.iHeight;
-	const TInt buffersSize = length * 4;
-	TUint8 *screenData = (TUint8*) User::AllocL(buffersSize);
-	CleanupStack::PushL(screenData);
-	TUint8 *bitmapData = (TUint8*) User::AllocL(buffersSize);
-	CleanupStack::PushL(bitmapData);
-	TPtr8 ptrScreen (screenData, buffersSize, buffersSize);
-	TPtr8 ptrBitmap (bitmapData, buffersSize, buffersSize);
-	
-	//EGray mode uses dithering in BitGdi, wserv doesnt support this, thus skipping the first mode 
-	for(TInt ii =2; ; ii++)
-		{
-		TDisplayMode dispMode = (TDisplayMode)ii; 
-		if(dispMode >= EColorLast)
-			break;
-		if(dispMode == ERgb)
-			continue;
-
-	    INFO_PRINTF2(_L("Copy Screen to bitmap, destination mode %d"), dispMode);
-		
-		CFbsBitmap *bmp = new (ELeave) CFbsBitmap;
-		CleanupStack::PushL(bmp);
-		User::LeaveIfError(bmp->Create(bitmapSize, dispMode));
-		TUidPixelFormat pixelFormat = SgUtils::DisplayModeToPixelFormat(dispMode);
-    	const TInt minStride = SgUtils::MinDataStride(length, pixelFormat);
-    	const TInt bitmapStride = bmp->DataStride();
-    	TEST(minStride <= bitmapStride);
-	
-	//Copy the screen to the copy bitmap
-		TRect rc = bitmapSize;
-		rc.Move(ptOffset);
-		TheClient->iScreen->CopyScreenToBitmap(bmp, rc);
-		CFbsBitmap *bmpRef = NULL;
-		CreateReferenceBitmapLC(bmpRef, bitmap, dispMode);
-		TEST(bmpRef->DisplayMode() == dispMode);
-		
-		//Compare the bitmaps
-	    TBool compRes = CompareBitmapsByPixel(bmp, bmpRef);
-	    TEST(compRes);
-	    
-	    for(TInt jj = 0; jj < height; jj++)
-	    	{
-	    	TPoint pt(0, jj);
-	    	TPoint ptScreen = pt + ptOffset;
-	    	
-	    	Mem::Fill(screenData, bitmapStride, 0xff);
-	    	Mem::Fill(bitmapData, bitmapStride, 0xff);
-	    	
-	    	TheClient->iScreen->GetScanLine(ptrScreen, ptScreen, length, dispMode);
-	    	bitmap->GetScanLine(ptrBitmap, pt, length, dispMode);
-	    	TInt length1 = ptrScreen.Length();
-	    	
-	    	TInt res = Mem::Compare(screenData, length1, bitmapData, length1);
-	    	TEST(res == 0);
-	    	}
-	    CleanupStack::PopAndDestroy(2, bmp);
-		}//screen modes;
-		
-	CleanupStack::PopAndDestroy(3, bitmap);
-	}
-
-//Helper function: Creates reference bitmap with specified display mode
-void CTDrawResource::CreateReferenceBitmapLC(CFbsBitmap*& aBmpTarget, CFbsBitmap* aBmpSrc, TDisplayMode aDestMode) 
-	{
-	TSize size = aBmpSrc->SizeInPixels();
-	aBmpTarget = new (ELeave) CFbsBitmap;
-	CleanupStack::PushL(aBmpTarget);
-	User::LeaveIfError(aBmpTarget->Create(size, aDestMode));
-    CFbsBitmapDevice *refBitmapDev = CFbsBitmapDevice::NewL(aBmpTarget);
-    CleanupStack::PushL(refBitmapDev);
-    CFbsBitGc *originalBitGc;
-	User::LeaveIfError(refBitmapDev->CreateContext(originalBitGc));
-	CleanupStack::PushL(originalBitGc);
-	originalBitGc->BitBlt(TPoint(0,0), aBmpSrc);
-	CleanupStack::PopAndDestroy(2, refBitmapDev);
-	}
-
-//Helper function: Creates reference bitmap with specified display mode
-void CTDrawResource::CreateBitmapLC(CFbsBitmap*& aBmpTarget, const TSize& aSize, TDisplayMode aDispMode) const
-	{
-	aBmpTarget = new (ELeave) CFbsBitmap;
-	CleanupStack::PushL(aBmpTarget);
-	User::LeaveIfError(aBmpTarget->Create(aSize, aDispMode));
-    CFbsBitmapDevice *refBitmapDev = CFbsBitmapDevice::NewL(aBmpTarget);
-    CleanupStack::PushL(refBitmapDev);
-    CFbsBitGc *originalBitGc;
-	User::LeaveIfError(refBitmapDev->CreateContext(originalBitGc));
-	CleanupStack::PushL(originalBitGc);
-	
-	TRect rect = TRect(aSize); 
-	rect.Shrink(21, 15);
-	
-	originalBitGc->SetBrushStyle(CFbsBitGc::ESolidBrush);
-	originalBitGc->SetBrushColor(TRgb(0,150,150));
-	originalBitGc->DrawRect(TRect(TPoint(0,0), TSize(aSize.iWidth, aSize.iHeight / 2)));
-	originalBitGc->SetBrushColor(TRgb(150,100,150));
-	originalBitGc->DrawRect(TRect(TPoint(0,aSize.iHeight / 2), TSize(aSize.iWidth, aSize.iHeight)));
-
-	originalBitGc->SetBrushColor(TRgb(0,0,128));
-	originalBitGc->DrawRect(rect);
-	
-	
-	CleanupStack::PopAndDestroy(2, refBitmapDev);
-	}
-
-//Helper function: Creates a RSgImage from a bitmap
-void CTDrawResource::CreateSgImageFromBitmapL(RSgImage& aSgImage)
-	{
-	TUint32* data = iRefBitmap->DataAddress();
-	TInt stride = iRefBitmap->DataStride();
-	TSize size = iRefBitmap->SizeInPixels();
-
-	TSgImageInfo info;
-	info.iSizeInPixels = size;
-	info.iScreenId = TheClient->iScreen->CurrentScreenMode();
-	info.iShareable = ETrue; //must be shareable since wserv is in other process
-	info.iUsage = ESgUsageWindowGcSource;
-	info.iPixelFormat = SgUtils::DisplayModeToPixelFormat(iRefBitmap->DisplayMode());
-
-	User::LeaveIfError(aSgImage.Create(info, data, stride));
-	}
-
-//Helper function: Creates all reference bitmaps required for all tests
-void CTDrawResource::CreateReferenceAndCopyBitmapsL()
-	{
-	//Create reference bitmap
-	iRefBitmap = new (ELeave) CFbsBitmap();
-	User::LeaveIfError(iRefBitmap->Create(TSize(160,120),EColor64K));
-	
-	//Setup to draw to original reference bitmap
-    CFbsBitmapDevice *refBitmapDev = CFbsBitmapDevice::NewL(iRefBitmap);
-    CleanupStack::PushL(refBitmapDev);
-    CFbsBitGc *originalBitGc;
-	User::LeaveIfError(refBitmapDev->CreateContext(originalBitGc));
-	CleanupStack::PushL(originalBitGc);
-	
-	//Draw to reference bitmap
-	originalBitGc->SetBrushStyle(CFbsBitGc::ESolidBrush);
-	originalBitGc->SetBrushColor(TRgb(0,150,150));
-	originalBitGc->DrawRect(TRect(TPoint(0,0), TSize(160,60)));
-	originalBitGc->SetBrushColor(TRgb(150,100,150));
-	originalBitGc->DrawRect(TRect(TPoint(0,60), TSize(160,60)));
-	
-	//create a rotated version of the reference bitmap
-	iRotatedRefBitmap = new (ELeave) CFbsBitmap();
-	User::LeaveIfError(iRotatedRefBitmap->Create(TSize(120,160),EColor64K));
-	
-	//Setup to draw to rotated reference bitmap
-    CFbsBitmapDevice *rotRefBitmapDev = CFbsBitmapDevice::NewL(iRotatedRefBitmap);
-    CleanupStack::PushL(rotRefBitmapDev);
-    CFbsBitGc *rotatedBitGc;
-	User::LeaveIfError(rotRefBitmapDev->CreateContext(rotatedBitGc));
-	CleanupStack::PushL(rotatedBitGc);
-	
-	//Draw to rotated reference bitmap
-	rotatedBitGc->SetBrushStyle(CFbsBitGc::ESolidBrush);
-	rotatedBitGc->SetBrushColor(TRgb(0,150,150));
-	rotatedBitGc->DrawRect(TRect(TPoint(60,0), TSize(60,160)));
-	rotatedBitGc->SetBrushColor(TRgb(150,100,150));
-	rotatedBitGc->DrawRect(TRect(TPoint(0,0), TSize(60,160)));
-	
-	//Prepare a scaled version of the rotated reference bitmap to later compare against
-    iScaledBitmap = new (ELeave) CFbsBitmap();
-    User::LeaveIfError(iScaledBitmap->Create(TSize(160,120),EColor64K));
-	//Setup to draw to bitmap
-    CFbsBitmapDevice *scaledBitDev = CFbsBitmapDevice::NewL(iScaledBitmap);
-    CleanupStack::PushL(scaledBitDev);
-    CFbsBitGc *scaledBitGc;
-	User::LeaveIfError(scaledBitDev->CreateContext(scaledBitGc));
-	CleanupStack::PushL(scaledBitGc);
-	//Draw the rotated reference bitmap scaled
-	scaledBitGc->DrawBitmap(KDestRect, iRotatedRefBitmap); 
-	
-	//Prepare a scaled version of the rotated reference bitmap to later compare against
-	iScaledCroppedBitmap = new (ELeave) CFbsBitmap();
-	User::LeaveIfError(iScaledCroppedBitmap->Create(TSize(160,120),EColor64K));
-    
-	//Setup to draw to bitmap
-    CFbsBitmapDevice *scaledCroppedBitDev = CFbsBitmapDevice::NewL(iScaledCroppedBitmap);
-    CleanupStack::PushL(scaledCroppedBitDev);
-    CFbsBitGc *scaledCroppedBitGc;
-	User::LeaveIfError(scaledCroppedBitDev->CreateContext(scaledCroppedBitGc));
-	CleanupStack::PushL(scaledCroppedBitGc);
-	
-	//Draw the rotated reference bitmap scaled
-	TInt width = iRotatedRefBitmap->SizeInPixels().iWidth;
-	TInt height = iRotatedRefBitmap->SizeInPixels().iHeight; 
-	
-	TRect rectSrc;
-	rectSrc.iTl.iX= width - KSourceRect.Height();
-	rectSrc.iTl.iY= 0;
-	rectSrc.iBr.iX= width;
-	rectSrc.iBr.iY= KSourceRect.Width();
-
-	scaledCroppedBitGc->DrawBitmap(KDestRect, iRotatedRefBitmap, rectSrc); 
-	
-	//Prepare bitmap for testing drawable which opened with different screen number
-	iBitmapWrongScreenNumber = new (ELeave) CFbsBitmap();
-    User::LeaveIfError(iBitmapWrongScreenNumber->Create(TSize(160,120),EColor64K));
-	//Setup to draw to bitmap
-    CFbsBitmapDevice *wrongScreenNumberBitDev = CFbsBitmapDevice::NewL(iBitmapWrongScreenNumber);
-    CleanupStack::PushL(wrongScreenNumberBitDev);
-    CFbsBitGc *wrongScreenNumberBitGc;
-	User::LeaveIfError(wrongScreenNumberBitDev->CreateContext(wrongScreenNumberBitGc));
-	CleanupStack::PushL(wrongScreenNumberBitGc);
-	//Draw the rotated reference bitmap scaled
-	wrongScreenNumberBitGc->SetBrushColor(KRgbGreen);
-	wrongScreenNumberBitGc->SetBrushStyle(CFbsBitGc::ESolidBrush);
-	wrongScreenNumberBitGc->SetPenStyle(CFbsBitGc::ENullPen);
-	wrongScreenNumberBitGc->DrawRect(TRect(0, 0, 160, 120)); //
-	
-	//Create a bitmap  to copy to with the same display mode as the reference bitmap
-	iCopyBitmap = new (ELeave) CFbsBitmap();
-	User::LeaveIfError(iCopyBitmap->Create(TSize(640,240),EColor64K));
-	
-	CleanupStack::PopAndDestroy(10, refBitmapDev);
-	}
-
-//Helper function: This function compares two bitmaps on a pixel by pixel basis */
-TBool CTDrawResource::CompareBitmapsByPixel(CFbsBitmap* aCandidateBitmap, CFbsBitmap* aReferenceBitmap)
-	{
-	TBool result = ETrue;
-
-	TSize candidateSize = aCandidateBitmap->SizeInPixels();
-	TSize referenceSize = aReferenceBitmap->SizeInPixels();
-
-	TInt mismatchedPixels = 0;
-	
-	TRgb nativePixel;
-	TRgb referencePixel;
-	for (TInt x = 0; x < referenceSize.iWidth; x++)
-		{
-		for (TInt y = 0; y < referenceSize.iHeight; y++)
-			{
-			TPoint point(x,y);
-			nativePixel = TRgb(0,0,0,0);
-			referencePixel = TRgb(0,0,0,0);
-			aCandidateBitmap->GetPixel(nativePixel, point);
-			aReferenceBitmap->GetPixel(referencePixel, point);
-
-			if (nativePixel != referencePixel)
-				{
-				mismatchedPixels++;
-				result = EFalse;
-				}
-			}
-		}
-	
-	INFO_PRINTF2(_L("Number of different pixels: %i"), mismatchedPixels);
-	return result;
-	}
-//Helper function: This function extracts content of the image associated with the image target and copies it into bitmap
-void CTDrawResource::BitmapLC(CFbsBitmap*& aBmp)
-	{
-	aBmp = new(ELeave) CFbsBitmap;
-    CleanupStack::PushL(aBmp);
-	
-	TSgImageInfo info;
-	TInt res = iImage.GetInfo(info);
-	User::LeaveIfError(res);
-	
-	res = aBmp ->Create(info.iSizeInPixels, SgUtils::PixelFormatToDisplayMode(info.iPixelFormat));
-	User::LeaveIfError(res);
-	TUint32* dataAddressDest = aBmp->DataAddress();
-	
-	RSgImage image;
-	info.iUsage = ESgUsageNone;
-	info.iCpuAccess = ESgCpuAccessReadOnly;
-	res = image.Create(info, iImage);
-	User::LeaveIfError(res);
-	CleanupClosePushL(image);
-	const TAny* dataAddress = NULL; 
-	TInt dataStride;
-	res = image.MapReadOnly(dataAddress, dataStride);
-	User::LeaveIfError(res);
-	Mem::Copy(dataAddressDest, dataAddress, dataStride * info.iSizeInPixels.iHeight);
-	image.Unmap();
-	CleanupStack::PopAndDestroy(&image);
-	}