windowing/windowserver/tauto/TREDRSTR.H
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/tauto/TREDRSTR.H	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,363 @@
+// 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 __TREDRSTR_H__
+#define __TREDRSTR_H__
+
+#include <e32std.h>
+#include <w32std.h>
+#include "../../tlib/testbase.h"
+#include "AUTO.H"
+#include "TGraphicsHarness.h"
+#include "TScreenModeScaling.h"
+
+
+class CRedrawStoreWin;
+class CNoDrawWin;
+class CBitmapMaskedWin;
+class CResetRedrawStoreWin;
+
+
+class CTRedrawStoring : public CTWsGraphicsBase
+	{
+public:
+	CTRedrawStoring(CTestStep* aStep);
+	~CTRedrawStoring();
+	void ConstructL();
+
+	void CheckWindowsMatch();
+	void CheckWindowsMatchLossy();
+	void CheckWindowsNotMatch();
+	void HideRevealTest();
+	void MultipleHideReveal(TInt aX,TInt aY);
+	void RedrawWindows();
+	void DoDrawingL(CWindowGc* aWinGc);
+	void DoDrawingL(TInt aDraw,CBitmapContext* aGc,TBool aWinGc);
+	void ScrollTest();
+	void FadeWindowTest();
+	void FadeWindowTest2L();
+	void DoDrawTest();
+	void DoScrollTest();
+	void SetScrolling(TPoint aScrollSource, TRect aScrollTarget);
+	//Pure Virtual Function from CTestBase
+	void DoNothingInRedrawTest();
+	void DoDisableRedrawStoreTest();
+	void DoBitBltAndMaskedNegTestsL();
+	void DoResizeTest();
+	void DoTestDrawBitmapMaskedL(TBool aWsBitmap=EFalse);
+	void DrawBitmapAndCheckL(const TSize aSize,TDisplayMode aDisplayMode,CFbsBitmap* aSrceBitmap,CFbsBitmap* aMaskBitmap,TBool aInvertMask);
+	void DoFontCacheOverflowTestL();
+	void FontCacheOverflowDrawingTestL(TBool aDiffGc, RWindow& aWindow);
+	void DoInvisibleRedrawStoreTestL( TBool aUseTransparency );
+	void DoBrushDrawTestL();
+	void DoPartialDrawNowTestL( TBool aUseTransparency );
+	void DoBeginEndRedraw();
+	void DoRedrawStoreAlphaChannelTransTest();
+
+	void DoExposeTestL(TInt aIteration);
+	void DoExposeTest2L(TInt aIteration);
+	void DoEmptyDrawTestL(TInt aTestMode);
+	void DoPolygonRedrawTestSetL();
+	void DoPolygonRedrawTestL(TInt aWindowMode, TInt aTestMode);
+	void DoRedrawOOMTestL();
+	void RedrawStoreWithBadRectL();
+protected:
+	virtual void RunTestCaseL(TInt aCurTestCase);
+	void DoAutoResetRedrawStoreTestL(TBool aTwoWins, TBool aAnimateBothWins, TBool aKeepGcActive, TBool aUpdateInRedraw);
+	void AutoResetRedrawStoreTestsL();
+	void RedrawStoreWithSetExtentL();
+	void PartialRedrawWithEmptyRedrawStoreL();
+	void DoPartialRedrawWithEmptyRedrawStoreL(TInt aNumWins, TBool aDoWinOnTop, TBool aRedrawWindow, TBool aChildWindows);
+	CResetRedrawStoreWin* CreatePartialRedrawWinLC(const TPoint& aPos, const TSize& aSize, CTWin* aParent=NULL);
+	CNoDrawWin* CreateNoDrawWinLC(const TPoint &aPos, const TSize &aSize);
+	void GetTestWinSizeAndPos(TInt aWinIndex, TPoint &aPos, TSize &aSize) const;
+	void ScrollWinTest();
+public:
+	TInt iDrawOrder;
+	TBool iQueueTest;
+
+private:
+	enum TDrawingMode
+		{
+		EServerRedraw,
+		EClientRedrawsNormal,
+		EClientRedrawsScrolled,
+		};
+	TPoint ComputeTextPosition(TPoint aPoint);
+	CTBackedUpWin* iCheckWin;
+	CFbsBitmap* iCheckBitmap;
+	CFbsBitmapDevice* iCheckDevice;
+	CFbsBitGc* iCheckGc;
+	CRedrawStoreWin* iTestWin;
+	TSize iWinSize;
+	TPoint iWinPos;
+	TDrawingMode iDrawMode;
+	RBlankWindow iBlankWin;
+	RRegion iRegion;
+	RWindow iWinTestGc;
+	TBool iWindowsFaded;
+	TRect iScrollTarget;
+	TPoint iScrollSource;
+	TBool iDoScrollTest;
+	CNoDrawWin* iNoDrawWin;
+	TBool iClientDidDraw;
+	CWsBitmap* iAlphaBitmap[3];
+	TBool iAlphaSupported;
+	CBitmapMaskedWin* iBitmapMaskedWin;
+	CBitmap* iTestBitmap;
+	CBitMapWin* iTestBitmapWin;
+	TRect iWinRect;
+	TPoint iTestWinPoint;
+	TBool iXPlus;
+	TBool iYPlus;
+	TInt iState;
+	TInt iYPoz;
+	TDisplayMode iTestDisplayMode;
+	CFbsBitmap *iTestWinCopy;
+	CFbsBitmap *iCheckWinCopy;
+	};
+
+class CRedrawStoreWin : public CTWin
+	{
+public:
+	inline CRedrawStoreWin(CTRedrawStoring* aTest) : iDrawOrder(0), iTest(aTest){}
+	//Virtual Function from CTBaseWin
+	void Draw();
+public:
+	TInt iDrawOrder;
+private:
+	CTRedrawStoring *iTest;
+	};
+
+class CNoDrawWin : public CTWin
+	{
+public:
+	void Draw();
+	};
+
+class CBrushDrawWin : public CTWin
+	{
+public:
+	CBrushDrawWin();
+	void Draw();
+	void Redraw();
+
+private:
+	};
+
+class CBitmapMaskedWin : public CTWin
+	{
+public:
+	static CBitmapMaskedWin* NewL(CFbsBitmap* aFbsBitmap,CFbsBitmap* aFbsMaskBitmap,
+								  CWsBitmap* aWsBitmap,CWsBitmap* aWsMaskBitmap,
+								  TRgb aBackground,TRect aRect,TBool aInvertMask,TBool aWsFbs);
+	~CBitmapMaskedWin();
+	//Virtual Function from CTBaseWin
+	void Draw();
+	void SetDestRectSize(const TSize aSize);
+	inline void SetInvertMask(TBool aInvertMask){iInvertMask=aInvertMask;}
+private:
+	inline CBitmapMaskedWin(CFbsBitmap* aFbsBitmap,CFbsBitmap* aFbsMaskBitmap,CWsBitmap* aWsBitmap,CWsBitmap* aWsMaskBitmap,
+							TRect aRect,TBool aInvertMask,TBool aWsFbs):
+							iFbsBitmap(aFbsBitmap),iFbsMaskBitmap(aFbsMaskBitmap),
+							iWsBitmap(aWsBitmap),iWsMaskBitmap(aWsMaskBitmap),
+							iRect(aRect),iInvertMask(aInvertMask),iWsFbs(aWsFbs) {}
+private:
+	CFbsBitmap* iFbsBitmap;
+	CFbsBitmap* iFbsMaskBitmap;
+	CWsBitmap* iWsBitmap;
+	CWsBitmap* iWsMaskBitmap;
+	TRect iRect;
+	TBool iInvertMask;
+	TBool iWsFbs;
+	};
+
+class CPartialRedrawWin : public CTWin
+	{
+public:
+	void Init();
+	virtual void Draw();
+	void DrawToBmp(CGraphicsContext& aGc);
+	void DrawPartial(TPartialRedrawType aPartialRedrawType);
+	static void DrawRects(CGraphicsContext& aGc, TSize aSize, TPoint aPosition,
+		TBool aIsFullRedraw, TPartialRedrawType aPartialRedrawType);
+	void RedrawSubRectWithBitmapL(TRgb aBitmapColour);
+public:
+	TBool iClientDrawn;
+	TBool iClientCanDraw;
+private:
+	void DoDraw(CGraphicsContext& aGc);
+private:
+	};
+
+class CPartialRedrawBottomWin : public CTWin
+	{
+public:
+	void Init();
+	virtual void Draw();
+	void DrawPartial(TRect aRect);
+	void DrawFullWindowRect();
+private:
+	void DoDraw();
+	};
+	
+class CPartialRedrawTopWin : public CTWin
+	{
+public:
+	void Init();
+	virtual void Draw();
+	void DrawPartial(TRect aRect);
+	void DrawFullWindowRect();
+private:
+	void DoDraw();
+	};
+	
+class CPartialRedrawTiledWin : public CTWin
+	{
+public:
+	void Init(TRgb aColour,TBool aTransparent);
+	virtual void Draw();
+	void DrawPartial(TRect aRect);
+	void DrawFullWindowRect();
+private:
+	void DoDraw();
+private:
+	TRgb iColour;
+	};
+	
+class CInvisibleRedrawWin: public CTWin
+	{
+public:
+	CInvisibleRedrawWin();
+	TInt MakeTransparent();
+	void MakeVisible( TBool aVisible );
+	virtual void Redraw();
+	virtual void Redraw( const TRect &aRect );
+
+private:
+	void DrawIfVisible();
+
+private:
+	TBool iVisible;
+	TBool iTransparent;
+	};
+
+class CPartialDrawNowWin: public CTWin
+	{
+public:
+	CPartialDrawNowWin();
+	TInt MakeTransparent();
+	void SetLodger( const TRect &aLodger );
+	virtual void Redraw();
+	virtual void Redraw( const TRect &aRect );
+
+private:
+	void DrawWindowAndLodger();
+
+private:
+	TRect iLodger;
+	TBool iTransparent;
+	};
+
+class CPartialRedrawEmptyWin : public CTWin
+	{
+public:
+	void Init(TRgb aColor);
+	virtual void Draw();
+	void DrawPartial(TRect aRect);
+	void DrawFullWindowRect();
+	inline TInt ReturnCount();
+private:
+	void DoDraw();
+	TInt iCount;
+	};
+
+class CPartialRedrawPolygonWin : public CTWin
+	{
+public:
+	void Init(TInt aWindowMode, TRgb aColor);
+	virtual void Draw();
+	void DrawPartial();
+	void DrawFullWindowPolygonL();
+	inline TInt ReturnCount();
+private:
+	void DoDraw();
+	TInt iCount;
+	};
+
+class CRedrawRectWin : public CTWin
+	{
+public:
+	void Init();
+	void DrawNow();
+	void DrawFullWindowRect();
+	inline TInt RedrawCount();
+	void ResetWindow(TRgb aColour);
+	inline void SetLogging(CTWsGraphicsBase* aTest);
+	//Virtual function from CTBaseWin
+	void Draw();
+	//Virtual function from CTWin
+	void Redraw(const TRect& aRect);
+private:
+	void DoDraw();
+private:
+	TInt iRedrawCount;
+	TRgb iRectColour;
+	CTWsGraphicsBase* iLog;
+	};
+
+class CTRedrawStoringStep : public CTGraphicsStep
+	{
+public:
+	CTRedrawStoringStep();
+protected:
+	//from CTGraphicsStep
+	virtual CTGraphicsBase* CreateTestL();
+	};
+
+class CResetRedrawStoreWin : public CPartialRedrawWin
+	{
+public:
+	~CResetRedrawStoreWin();
+	void SetUpdateInRedraw(TBool aUpdateInRedraw);
+	void SetKeepGcActive(TBool aState);
+	void UpdateAnim(TInt aSteps);
+	void PreSetSize(const TSize &aSize);
+	TBool Failed() const;
+private:
+	virtual void Draw();
+	void DoDraw(CGraphicsContext& aGc) const;
+	void DoDrawAnim(CGraphicsContext& aGc) const;
+	TRect AnimRect() const;
+private:
+	TInt iAnimState;
+	TBool iKeepGcActive;
+	TBool iUpdateInRedraw;
+	TBool iFailed;
+	CWindowGc* iExtraGc;
+	};
+
+const TInt KEmptyLoopThreshold = 3;
+
+_LIT(KTRedrawStoringStep,"TRedrawStoring");
+
+
+#endif