windowing/windowserver/tauto/TGDI.H
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/tauto/TGDI.H	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,355 @@
+// Copyright (c) 1996-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
+*/
+
+#ifndef __TGDI_H__
+#define __TGDI_H__
+
+#include <e32std.h>
+#include <w32std.h>
+#include "../tlib/testbase.h"
+#include <bitstd.h>
+#include "AUTO.H"
+#include "TGraphicsHarness.h"
+
+class CGdiTestLowLevel;
+
+CGdiTestLowLevel *SetOriginTest();
+CGdiTestLowLevel *PolyLineTest();
+CGdiTestLowLevel *PolygonTest();
+CGdiTestLowLevel *BlitMaskedTest();
+CGdiTestLowLevel *DrawArcTest();
+CGdiTestLowLevel *DrawPieTest();
+CGdiTestLowLevel *DrawRoundRectTest();
+CGdiTestLowLevel *BoxTextTest();
+CGdiTestLowLevel *VertTextTest();
+CGdiTestLowLevel *JustifiedTextTest();
+CGdiTestLowLevel *VertBoxTextTest();
+CGdiTestLowLevel *WideLineTest();
+CGdiTestLowLevel *DrawTextTest();
+CGdiTestLowLevel *DrawRectTest();
+
+class CTGdi;
+class CGdiTestLowLevel : public CBase
+//
+// BaseTest uses code that is assumed to be good to draw to one window
+// TheTest uses the code beng tested to draw a matching pattern
+//
+	{
+public:
+	void AssignGdi(CWindowGc *aGc);
+	void SetGdiTest(CTGdi *aGdiTest);
+	virtual void PreTestSetupL(const TRect &aRect, TInt aCount);
+	virtual void BaseTest(const TRect &aRect, TInt aCount)=0;
+	virtual void TheTest(const TRect &aRect, TInt aCount)=0;
+	virtual void ConstructL(TInt aNumOfRects);
+	virtual TInt Count(TBool aMainTests)=0;
+protected:
+	CWindowGc *iGdi;
+	CTGdi *iGdiTest;
+	};
+
+class CGdiRect : public CGdiTestLowLevel
+	{
+public:
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+protected:
+	TRgb iBrushCol;
+	TRgb iPenCol;
+	};
+
+
+class CGdiDrawRect : public CGdiRect
+	{
+public:
+	TInt Count(TBool aMainTests);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	};
+
+class CGdiDrawRoundRect : public CGdiRect
+	{
+public:
+	TInt Count(TBool aMainTests);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	};
+
+class CGdiDrawACP : public CGdiTestLowLevel
+	{
+public:
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+protected:
+	TRgb iBrushCol;
+	TRgb iPenCol;
+	};
+
+class CGdiDrawArc : public CGdiDrawACP
+	{
+public:
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	};
+
+class CGdiDrawPie : public CGdiDrawACP
+	{
+public:
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	};
+
+class CGdiPolyLine : public CGdiTestLowLevel
+	{
+public:
+	CGdiPolyLine();
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+private:
+	CArrayFixSeg<TPoint> iPnts;
+	};
+
+class CGdiPolygon : public CGdiTestLowLevel
+	{
+private:
+	enum {KMaxPolygonPoints=100};
+	enum {KPolygonStep=4};
+public:
+	CGdiPolygon();
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+private:
+	CArrayFixSeg<TPoint> iPnts;
+	};
+
+class CGdiWideLine : public CGdiTestLowLevel
+	{
+private:
+	enum TMaxWidths {
+		EMainNumWidths=16,
+		EMinorNumWidths=4};
+public:
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+private:
+	TInt iWidth;
+	};
+
+class CGdiSetOrigin : public CGdiTestLowLevel
+	{
+public:
+	~CGdiSetOrigin();
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void DrawIt(const TPoint &aOffset);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+private:
+	CFbsFont *iFont;
+	CArrayFixFlat<TPoint> *iPolylineArray;
+	CArrayFixFlat<TPoint> *iPolygonArray;
+	};
+
+class CGdiDrawText : public CGdiTestLowLevel
+	{
+public:
+	~CGdiDrawText();
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+private:
+	TInt iWidth;
+	CFbsFont *iFont;
+	TBuf<0x400> iBigBuffer;
+	};
+
+class CGdiDrawVertText : public CGdiTestLowLevel
+	{
+public:
+	~CGdiDrawVertText();
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+private:
+	TInt iWidth;
+	CFbsFont *iFont;
+	TBuf<0x400> iBigBuffer;
+	};
+
+//class CGdiDrawJustifiedText : public CGdiTestLowLevel
+//DEF107985 The test for JustifiedText has been removed as it was a bad/useless test
+
+class CGdiBoxText : public CGdiTestLowLevel
+	{
+public:
+	~CGdiBoxText();
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+private:
+	TInt iWidth;
+	TInt iBbLen;
+	CFbsFont *iFont;
+	TBuf<0x400> iBigBuffer;
+	};
+
+class CGdiVertBoxText : public CGdiTestLowLevel
+	{
+public:
+	~CGdiVertBoxText();
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+private:
+	TInt iWidth;
+	TInt iBbLen;
+	CFbsFont *iFont;
+	TBuf<0x400> iBigBuffer;
+	};
+/*
+class CGdiDottedLine : public CGdiTestLowLevel
+	{
+	enum TMaxPatterns {
+		EMainMaxPatterns=5,
+		EMinorMaxPatterns=3};
+public:
+	void SetGridRegion(TRegion &grid,const TRect &aRect);
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+private:
+	TUint iPattern;
+	TInt iPattLen;
+	static TUint iPatterns[EMainMaxPatterns];
+	static TInt iPattLens[EMainMaxPatterns];
+	};
+TUint CGdiDottedLine::iPatterns[]={
+		0x55FF0033,
+		0xFF00,
+		0x1,
+		0xFFFF,
+		0xF0F0F0};
+TInt CGdiDottedLine::iPattLens[]={
+		32,
+		16,
+		2,
+		32,
+		24};
+*/
+class CTestWindow : public CBlankWindow
+	{
+public:
+	CTestWindow(TRgb aCol);
+	~CTestWindow();
+	void ConstructL(TPoint aPos,TSize aSize,CTWinBase* aParent, CWindowGc& aGc );
+	};
+
+class CGdiBlitMasked: public CGdiTestLowLevel
+	{
+	enum TNumMasks {ENumMasks=2};
+public:
+	~CGdiBlitMasked();
+	void PreTestSetupL(const TRect &aRect, TInt aCount);
+	void BaseTest(const TRect &aRect, TInt aCount);
+	void TheTest(const TRect &aRect, TInt aCount);
+	void ConstructL(TInt aNumOfRects);
+	TInt Count(TBool aMainTests);
+private:
+	void doCreateTestBitmapL(CFbsBitmap *aBitmap, CFbsBitGc *&aGc, CFbsBitmapDevice *&aDevice, const TSize &aSize);
+	void createTestBitmapL(CFbsBitmap *&aBitmap, const TSize &aSize);
+private:
+	CFbsBitmap *iMask[ENumMasks];
+	CFbsBitmap *iBitmap;
+//
+	CFbsBitmap *iScratch;
+	CFbsBitmapDevice *iScratchDevice;
+	CFbsBitGc *iScratchGc;
+//
+	CFbsBitmap *iScratchMask;
+	CFbsBitmapDevice *iScratchMaskDevice;
+	CFbsBitGc *iScratchMaskGc;
+//
+	TBool iInvertMask;
+	CFbsBitmap *iCurrMask;
+	CGraphicsContext::TDrawMode iDrawMode;
+	};
+
+class CTGdi : public CTWsGraphicsBase
+	{
+public:
+	CTGdi(CTestStep* aStep);
+	void ConstructL();
+	TSize WinSize();
+	void GdiTestL(CGdiTestLowLevel *aTest);
+	void TestDefetct_DEF045746L();
+	void DrawTextOnWindow(const TDesC& aText,CTWin* aWin);
+protected:
+//from 	CTGraphicsStep
+	virtual void RunTestCaseL(TInt aCurTestCase);
+private:
+	void DoGdiTestL(const TRect &aRect, TInt aNum);
+	void NonDrawing();
+private:
+	TSize iWinSize;
+	TInt iSubState;
+	CGdiTestLowLevel *iGdiTest;
+	CTestWindow* iWin;
+	CFont* iFont;
+	TInt iTextOffsetX;
+	TInt iTextOffsetY;
+	TBool iTestPassing;
+	};
+	
+class CTGdiStep : public CTGraphicsStep
+	{
+public:
+	CTGdiStep();
+protected:	
+	//from CTGraphicsStep
+	virtual CTGraphicsBase* CreateTestL();
+	};
+
+_LIT(KTGdiStep,"TGdi");
+
+
+#endif