windowing/windowserver/tdynamicres/inc/wsdynamicresbasic.h
author William Roberts <williamr@symbian.org>
Thu, 03 Jun 2010 17:39:46 +0100
branchNewGraphicsArchitecture
changeset 87 0709f76d91e5
parent 0 5d03bc08d59c
permissions -rw-r--r--
Add MMP files to build libOpenVG_sw.lib which uses LINKAS to redirect to libOpenVG.dll (and the same for libEGL_sw.lib and libOpenVGU_sw.lib). Only the libEGL_sw.lib redirection isn't activated - this can't happen until there is a merged libEGL.dll which supports the OpenWF synchronisation and also implements the graphical support functions. The overall aim is to eliminate the *_sw.dll implementations, at least as a compile-time way of choosing a software-only implementation.The correct way to choose is to put the right set of libraries into a ROM with suitable renaming, and in the emulator to use the "switching DLL" technique to pick the right set. As the Symbian Foundation doesn't have any alternative implementations, we don't need the switching DLLs and we can build directly to the correct name.

// 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
*/

#ifndef __WSDYNAMICRESBASIC_H__
#define __WSDYNAMICRESBASIC_H__

#include "wsdynamicresbase.h"
#include <graphics/displayconfiguration.h>
#include <graphics/displaycontrol.h>
#include <graphics/displaymapping.h>
#include <e32math.h>
/**
 *
 **/

static TBool cSCLogged =EFalse;


class CWsDynamicResBasic : public CWsDynamicResBase
{
	typedef CWsDynamicResBase MyBase;
private:
	struct TBitmapRegionPair
		{
		CFbsBitmap* bitmap;
		RRegion* region;
		TRect drawRect;
		};

public:
	CWsDynamicResBasic();
	virtual ~CWsDynamicResBasic();
	virtual void SetupL();
	virtual void TearDownL();
	virtual void TearDownFromDeleteL();
	
	static CTestSuite* CreateSuiteL( const TDesC& aName );
	
	void ResetScreens();
	
protected:
//tests
	
	//BASIC
	void	GRAPHICS_WSERV_DYNAMICRES_0001L();
	void	GRAPHICS_WSERV_DYNAMICRES_0002L();
	void	GRAPHICS_WSERV_DYNAMICRES_0003L();
	void	GRAPHICS_WSERV_DYNAMICRES_0004L();
	void	GRAPHICS_WSERV_DYNAMICRES_0005L();
	void	GRAPHICS_WSERV_DYNAMICRES_0006L();
	void	GRAPHICS_WSERV_DYNAMICRES_0007L();
	void	GRAPHICS_WSERV_DYNAMICRES_0008L();
	void	GRAPHICS_WSERV_DYNAMICRES_0009L();
	void	GRAPHICS_WSERV_DYNAMICRES_0010L();
	void	GRAPHICS_WSERV_DYNAMICRES_0011L();
	void	GRAPHICS_WSERV_DYNAMICRES_0012L();
	void	GRAPHICS_WSERV_DYNAMICRES_0013L();
	void	GRAPHICS_WSERV_DYNAMICRES_0014L();
	void	GRAPHICS_WSERV_DYNAMICRES_0015L();
	void	GRAPHICS_WSERV_DYNAMICRES_0016L();
	void	GRAPHICS_WSERV_DYNAMICRES_0017L();
	void	GRAPHICS_WSERV_DYNAMICRES_0018L();

	//NEGATIVE
	void	GRAPHICS_WSERV_DYNAMICRES_0021L(TBool aScaleMode);
	
	//OOM
	void	GRAPHICS_WSERV_DYNAMICRES_0031L();
	void	GRAPHICS_WSERV_DYNAMICRES_0032L();
	void	GRAPHICS_WSERV_DYNAMICRES_0033L();
	void	GRAPHICS_WSERV_DYNAMICRES_0034L();
	
	//SCREEN CAPTURE
	void	GRAPHICS_WSERV_DYNAMICRES_0041L(TBool aIsSurface);
	void	GRAPHICS_WSERV_DYNAMICRES_0042L(TBool aIsSurface);
	
	//DYNAMIC SCREEN MODE
	void	GRAPHICS_WSERV_DYNAMICRES_0051L();
	void	GRAPHICS_WSERV_DYNAMICRES_0052L();
	void	GRAPHICS_WSERV_DYNAMICRES_0053L();

	//DEFECT
	void	GRAPHICS_WSERV_DYNAMICRES_0101L();
	void	GRAPHICS_WSERV_DYNAMICRES_0102L();
	
	
	void SetRotation (TDisplayConfiguration& aConfig, const MDisplayControl::TResolution& aResolution);
	TBool Compare(const CFbsBitmap& aBitmap, const TRect& aRect1,
			const TRect& aRect2, RArray<TBitmapRegionPair>& aRegionArray, TBool aIsSurface);
	TRgb GreatestColor(TRgb& aColor) const;

//data members:
private:
	CActiveScheduler	iScheduler;
};

class CWsDisplayEvent : public CActive
	{
	
public:
	CWsDisplayEvent(RWsSession *aWs);
	~CWsDisplayEvent();
	void Request();
	TInt ConfigSpinner()	{return iConfigSpinner;}
	TInt ResListSpinner()	{return iResListSpinner;}
	TInt ReceivedEventCount()	{return iReceivedEventCount;}
	TInt ReceivedDeviceEventCount()	{return iReceivedDeviceEventCount;}
	TInt ReceivedPointerEventCount() {return iReceivedPointerEventCount;}
	void SetExpectedPointPos(const TPoint& aPos) {iPointerPos = aPos;}
	TBool PointerTestPassed() {return iPointerPosTestPass;}
protected:
	void DoCancel();
	void RunL();
	
private:
	RWsSession *iWs;
	TInt iConfigSpinner;
	TInt iResListSpinner;
	TInt iReceivedEventCount;
	TInt iReceivedDeviceEventCount;
	TInt iReceivedPointerEventCount;	
	TPoint iPointerPos;
	TBool iPointerPosTestPass;
	};

class CEventTimer : public CActive
	{
public:
	static CEventTimer* NewL();
	~CEventTimer();
	void Wait(TInt aDelay);
	// From CActive:
	void RunL();
	void DoCancel();
	
protected:
	CEventTimer();
	void ConstructL();
	protected:
RTimer iTimer;
};



class CDSATestDrawing: public CTimer, public MDirectScreenAccess
	{
public:

	void Draw();

	
	
	static CDSATestDrawing* NewL();
	void ConstructL();
	//from MDirectScreenAccess
	void Restart(RDirectScreenAccess::TTerminationReasons aReason);
	void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
	~CDSATestDrawing();
	void SetDSA(CDirectScreenAccess *aDSA){iDSA = aDSA;}
	void SetWindow(RWindow &aWindow){iWin = &aWindow;}
	void StartDrawingL(CDirectScreenAccess *aDSA);
	void RunL();
	
private:
	CDSATestDrawing();
	TRect iRect;
	RWindow* iWin;
	CDirectScreenAccess *iDSA;
	};

#endif	/*__WSDYNAMICRESBASIC_H__*/