windowing/windowserver/tauto/TFLICKERFREE.CPP
author Faisal Memon <faisal.memon@nokia.com>
Thu, 06 May 2010 11:31:11 +0100
branchNewGraphicsArchitecture
changeset 47 48b924ae7197
parent 0 5d03bc08d59c
permissions -rw-r--r--
Applied patch 1, to provide a syborg specific minigui oby file. Need to compare this with the "stripped" version currently in the tree. This supplied version applies for Nokia builds, but need to repeat the test for SF builds to see if pruning is needed, or if the file needs to be device-specific.

// Copyright (c) 2006-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:
// TMULSCREENS.CPP
// Tests the newly API function added to RWindow which enables/disables
// the usage of Off-Screen Bitmap (OSB).
// The test will draw squares with random colours on screen filling the
// whole drawable area. The drawing will start first with flickering screen
// and will switch to flicker free in 4 seconds.
// 
//

/**
 @file
 @test
 @internalComponent - Internal Symbian test code
*/

#include "TFLICKERFREE.H"

//===================================================
// CBGWin Declaration
//===================================================

CBGWin::CBGWin(): CTWin()
	{
	}

CBGWin::~CBGWin()
	{
	}

void CBGWin::ConstructWin(TPoint aPos, TSize aSize, TBool aVisible)
	{
	iSize = aSize;
	SetUpL(aPos,iSize,TheClient->iGroup,*TheClient->iGc, aVisible);
	BaseWin()->SetRequiredDisplayMode(EColor256);
	}

void CBGWin::Draw()
	{
	iGc->Clear();
	iGc->SetBrushStyle(CGraphicsContext::ESolidBrush);

	TUint propW = iSize.iWidth/32;
	TUint propH = iSize.iHeight/12;

	for(TInt i = 0; i < iSize.iWidth ; i+=propW)
		{
		for(TInt j = 0; j < iSize.iHeight; j+=propH)
			{
			iGc->SetBrushColor(TRgb( (TInt)(Math::Random()%255), (TInt)(Math::Random()%255), (TInt)(Math::Random()%255) ));
			iGc->DrawRect(TRect(i, j, i+propW-1, j+propH-1));
			}
		}
	}

void CBGWin::EnableOSBd(TBool aState)
	{
	iWin.EnableOSB(aState);
	}

//===================================================
// CFlickerTest Declaration
//===================================================

/* This function will be called periodically to draw the rects
   on screen.*/
void CTFlickerFree::TestFlickering()
	{
	for( int i = 0; i < 40; ++i)
		{
		// for the first 3 seconds draw with flicker
		if(i < 20 )
			iBgWin->EnableOSBd(EFalse);
		// for the next 3 seconds draw with flicker free
		else if(i >=20 )
			iBgWin->EnableOSBd(ETrue);

		iBgWin->DrawNow();

		// this draws 20 frames per second for 4 seconds
		User::After(50000);
		}
	}

CTFlickerFree::CTFlickerFree(CTestStep* aStep):
	CTWsGraphicsBase(aStep)
	{
	}

CTFlickerFree::~CTFlickerFree()
	{
	delete iBgWin;
	}

void CTFlickerFree::ConstructL()
	{
	// get the size of the current client to assign it to the background window
	TSize scrSize = TSize(TheClient->iScreen->SizeInPixels());

	// construct the window in the background
	iBgWin = new (ELeave) CBGWin();
	iBgWin->ConstructWin(TPoint(0,0), scrSize, ETrue);
	}

/* Sets the windowing environment, constructs the CPeriod object and
	starts the CPeriod object.*/
void CTFlickerFree::RunTestCaseL(TInt aCurTestCase)
	{
	((CTFlickerFreeStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
	switch(aCurTestCase)
		{
		case 1:
/**
@SYMTestCaseID		GRAPHICS-WSERV-0567
*/
			((CTFlickerFreeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0567"));
			TestFlickering();
			break;
		default:
			((CTFlickerFreeStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
			((CTFlickerFreeStep*)iStep)->CloseTMSGraphicsStep();
			TestComplete();
		}
	((CTFlickerFreeStep*)iStep)->RecordTestResultL();
	}

__WS_CONSTRUCT_STEP__(FlickerFree)