diff -r bf7481649c98 -r 7f25ef56562d windowing/windowserver/test/tauto/TREDRAW.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/windowing/windowserver/test/tauto/TREDRAW.H Wed Jun 23 19:41:15 2010 +0300 @@ -0,0 +1,239 @@ +// 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 __TREDRAW_H__ +#define __TREDRAW_H__ + +#include +#include +#include "../tlib/testbase.h" +#include "AUTO.H" +#include "TScreenModeScaling.h" +#include "TGraphicsHarness.h" + +class CTRedrawTest; + +/** + * Abstract base class to draw a pattern into a window. + * + * This provides a default Draw() implementation which + * DOES NOT set the clipping region before drawing. + */ +class CRedrawWindow : public CTWin + { + friend class CTRedrawTest; +public: + enum TDrawPattern + { + EDrawGraphPaperlHatched = 0, + EDrawSlantingHatched, + EDrawCenteredRectangle + }; +public: + CRedrawWindow(CTRedrawTest* aTest); + ~CRedrawWindow(); +public: + /* + * Draw the window, counting the number of calls. + * @post DrawRequests() returns a value increased by 1. + */ + virtual void Reset(); + virtual void PrepareInvalidation(const TRect& aRect) = 0; + virtual void PerformInvalidation() = 0; + //Virtual function from CTBaseWin + void Draw(); +public: + void ActivateAndDraw(TInt aPattern); + void DrawPattern(TInt aPattern); + void VisibleRegion(RRegion& aRegion); + void ValidateAndClear(); + void ActivateAndDraw(TInt aPattern,TRegion* aRegion); + TInt DrawRequests() const; +protected: + void ReceivedDrawRequest(); + TPoint iOffset; + RRegion iInvalid; + CTRedrawTest *iTest; +private: + TInt iDrawRequests; + }; + +/** + * Concrete class to draw a pattern into a window. + * + */ +class CReferenceComparisonRedrawWindow : public CRedrawWindow + { +public: + CReferenceComparisonRedrawWindow(CTRedrawTest* aTest); +public: + // from CRedrawWindow + void PrepareInvalidation(const TRect& aRect); + void PerformInvalidation(); + }; + +class CRedrawWindow2 : public CRedrawWindow + { +public: + CRedrawWindow2(CTRedrawTest* aTest); +public: + //Virtual function from CTBaseWin overridden in CRedrawWindow + void Draw(); + //Virtual function from CRedrawWindow + void Reset(); + // from CRedrawWindow + void PrepareInvalidation(const TRect& aRect); + void PerformInvalidation(); +private: + TBool iClipped; + }; + +class CRedrawWindow3 : public CRedrawWindow + { +public: + CRedrawWindow3(CTRedrawTest* aTest); +public: + //Virtual function from CTBaseWin overridden in CRedrawWindow + void Draw(); + // from CRedrawWindow + void PrepareInvalidation(const TRect& aRect); + void PerformInvalidation(); +public: + void SetUp1L(TPoint pos,TSize size,CTWinBase* parent,CWindowGc& aGc); + void Activate(); + void Redraw(const TRect& aRect); +protected: + TBool isActive; + }; + +class CTRedrawOrderWindow : public CTWin + { +public: + CTRedrawOrderWindow(TInt aOrder, CTRedrawTest *aTest); + static CTRedrawOrderWindow* NewLC(TInt aOrder,CTWinBase* aParent,const TPoint& aPos,const TSize& aSize,CTRedrawTest* aTest); + inline static TInt RedrawNumber() {return iRedrawNumber;} + static void ResetRedrawNumber(); + void Redraw(const TRect& aRect); + void Draw(); +private: + CTRedrawTest* iTest; + TInt iOrder; + static TInt iRedrawNumber; + }; + +class CTCheckDefectWin : public CBasicWin + { +public: + static CTCheckDefectWin *NewL(TPoint aPos,TSize aWinSize); +private: + CTCheckDefectWin(){} + }; + +class CInvalidRegionChecker : public CBase + { +public: + CInvalidRegionChecker(const CTRedrawTest& aGraphicsTest); + ~CInvalidRegionChecker(); + + TInt CheckInvalidRegions(const CTWindowGroup* aGroup); + TBool ExcludedWindow(const CTWinBase* aTWinBase) const; + TInt AddExcludedWindow(const CTWinBase* aExcludedWindow); + void RemoveExcludedWindow(const CTWinBase* aExcludedWindow); +private: + void ProcessWindowGroup(const CTWinBase* aTWinBase); + void ProcessChildWindow(const CTWinBase* aTWinBase); + void ProcessWindow(const CTWinBase* aTWinBase); +private: + TInt iInvalidRegionCount; + RPointerArray iExcludedWindowArray; + const CTRedrawTest& iGraphicsTest; + }; + +class CTRedrawTest : public CTWsGraphicsBase + { +public: + CTRedrawTest(CTestStep* aStep); + ~CTRedrawTest(); + void doDestruct(); + void ConstructL(); + void CheckRedrawWindows(); + void ProcessBaseInvalidate(); + void SetBackground(const TRgb& aRgb); + void DumpRegion(const TRegion& aRegion); + inline TInt WinContent(); + void InvalidateTestWins(const TRect& aRect); + void MoveInvalidAreaL(); + void TestGetInvalidRegionL(const CArrayFixFlat* aRectList); + void GetInvalidRegionTestsL(); + void CompareRegionsL(const TRegion& aRegion1,const TRegion& aRegion2); + void Failed(TInt aOrder); + void CheckOrderL(); + void TestRect(); + void CheckDefectINC049554L(); + void CheckDefectPDEF099892L(); + void CheckOrdinalPositionDefectL(); + void CheckDefectPDEF117784L(); + void CheckMMSDefectL(TBool aMoveBlankWindow); + void ConstructAndSetBlankWinLC(RBlankWindow& aWindow, TSize aSize, TPoint aPoint=TPoint(), + TRgb aBackgroundColor=TRgb(0,0,0)); + void ConstructWindowLC(RWindow& aWindow, TSize aSize, TPoint aPoint=TPoint(), + TRgb aBackgroundColor=TRgb(255,255,255), TBool aTransparencyByAlpha=EFalse, + TDisplayMode aDisplayMode=EColor64K); + void ActivateAndSetGc(CWindowGc& aGc, RWindow& aWindow, CGraphicsContext::TBrushStyle aBrushStyle=CGraphicsContext::ESolidBrush, TRgb aBrushColor=TRgb(0,0,0), + CGraphicsContext::TPenStyle aPenStyle=CGraphicsContext::ENullPen, TRgb aPenColor=TRgb(0,0,0)); + void DrawWin(CWindowGc& aGc, RWindow& aWin, TSize winSize, TRgb aRectColor1, TRgb aRectColor2, TInt aNewOrdinalPos=0, RWindow* aWinToMove=NULL, TBool aDrawAllPixels=EFalse); + enum TRedrawCheckType + { + ECheckRedrawActiveObjectOnly, + ECheckRedrawActiveObjectAndInvalidRegions + }; + TInt WaitForRedrawsToFinish(TRedrawCheckType aRedrawCheckType); +protected: +//from CTGraphicsStep + virtual void RunTestCaseL(TInt aCurTestCase); +private: + void ValidateAndClear(TestWindow *aWin); +private: + TSize iWinSize; + TBool iDoCheck; + TInt iRedrawNo; + CReferenceComparisonRedrawWindow *iBaseRedrawWin; + CRedrawWindow2 *iTestRedrawWin; + CBlankWindow *iBaseChildWin; + CBlankWindow *iTestChildWin; + TInt iDrawRequestsFromTestWindow; + TInt iWinContent; + CInvalidRegionChecker *iInvalidRegionChecker; + }; + +class CTRedrawTestStep : public CTGraphicsStep + { +public: + CTRedrawTestStep(); +protected: + //from CTGraphicsStep + virtual CTGraphicsBase* CreateTestL(); + }; + +_LIT(KTRedrawTestStep,"TRedrawTest"); + + +#endif