windowing/windowserver/tauto/TREDRSTR.H
changeset 110 7f25ef56562d
parent 98 bf7481649c98
child 111 29ddb8a72f0e
equal deleted inserted replaced
98:bf7481649c98 110:7f25ef56562d
     1 // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 /**
       
    17  @file
       
    18  @test
       
    19  @internalComponent - Internal Symbian test code
       
    20 */
       
    21 
       
    22 #ifndef __TREDRSTR_H__
       
    23 #define __TREDRSTR_H__
       
    24 
       
    25 #include <e32std.h>
       
    26 #include <w32std.h>
       
    27 #include "../../tlib/testbase.h"
       
    28 #include "AUTO.H"
       
    29 #include "TGraphicsHarness.h"
       
    30 #include "TScreenModeScaling.h"
       
    31 
       
    32 
       
    33 class CRedrawStoreWin;
       
    34 class CNoDrawWin;
       
    35 class CBitmapMaskedWin;
       
    36 class CResetRedrawStoreWin;
       
    37 
       
    38 
       
    39 class CTRedrawStoring : public CTWsGraphicsBase
       
    40 	{
       
    41 public:
       
    42 	CTRedrawStoring(CTestStep* aStep);
       
    43 	~CTRedrawStoring();
       
    44 	void ConstructL();
       
    45 
       
    46 	void CheckWindowsMatch();
       
    47 	void CheckWindowsMatchLossy();
       
    48 	void CheckWindowsNotMatch();
       
    49 	void HideRevealTest();
       
    50 	void MultipleHideReveal(TInt aX,TInt aY);
       
    51 	void RedrawWindows();
       
    52 	void DoDrawingL(CWindowGc* aWinGc);
       
    53 	void DoDrawingL(TInt aDraw,CBitmapContext* aGc,TBool aWinGc);
       
    54 	void ScrollTest();
       
    55 	void FadeWindowTest();
       
    56 	void FadeWindowTest2L();
       
    57 	void DoDrawTest();
       
    58 	void DoScrollTest();
       
    59 	void SetScrolling(TPoint aScrollSource, TRect aScrollTarget);
       
    60 	//Pure Virtual Function from CTestBase
       
    61 	void DoNothingInRedrawTest();
       
    62 	void DoDisableRedrawStoreTest();
       
    63 	void DoBitBltAndMaskedNegTestsL();
       
    64 	void DoResizeTest();
       
    65 	void DoTestDrawBitmapMaskedL(TBool aWsBitmap=EFalse);
       
    66 	void DrawBitmapAndCheckL(const TSize aSize,TDisplayMode aDisplayMode,CFbsBitmap* aSrceBitmap,CFbsBitmap* aMaskBitmap,TBool aInvertMask);
       
    67 	void DoFontCacheOverflowTestL();
       
    68 	void FontCacheOverflowDrawingTestL(TBool aDiffGc, RWindow& aWindow);
       
    69 	void DoInvisibleRedrawStoreTestL( TBool aUseTransparency );
       
    70 	void DoBrushDrawTestL();
       
    71 	void DoPartialDrawNowTestL( TBool aUseTransparency );
       
    72 	void DoBeginEndRedraw();
       
    73 	void DoRedrawStoreAlphaChannelTransTest();
       
    74 
       
    75 	void DoExposeTestL(TInt aIteration);
       
    76 	void DoExposeTest2L(TInt aIteration);
       
    77 	void DoEmptyDrawTestL(TInt aTestMode);
       
    78 	void DoPolygonRedrawTestSetL();
       
    79 	void DoPolygonRedrawTestL(TInt aWindowMode, TInt aTestMode);
       
    80 	void DoRedrawOOMTestL();
       
    81 	void RedrawStoreWithBadRectL();
       
    82 protected:
       
    83 	virtual void RunTestCaseL(TInt aCurTestCase);
       
    84 	void DoAutoResetRedrawStoreTestL(TBool aTwoWins, TBool aAnimateBothWins, TBool aKeepGcActive, TBool aUpdateInRedraw);
       
    85 	void AutoResetRedrawStoreTestsL();
       
    86 	void RedrawStoreWithSetExtentL();
       
    87 	void PartialRedrawWithEmptyRedrawStoreL();
       
    88 	void DoPartialRedrawWithEmptyRedrawStoreL(TInt aNumWins, TBool aDoWinOnTop, TBool aRedrawWindow, TBool aChildWindows);
       
    89 	CResetRedrawStoreWin* CreatePartialRedrawWinLC(const TPoint& aPos, const TSize& aSize, CTWin* aParent=NULL);
       
    90 	CNoDrawWin* CreateNoDrawWinLC(const TPoint &aPos, const TSize &aSize);
       
    91 	void GetTestWinSizeAndPos(TInt aWinIndex, TPoint &aPos, TSize &aSize) const;
       
    92 	void ScrollWinTest();
       
    93 public:
       
    94 	TInt iDrawOrder;
       
    95 	TBool iQueueTest;
       
    96 
       
    97 private:
       
    98 	enum TDrawingMode
       
    99 		{
       
   100 		EServerRedraw,
       
   101 		EClientRedrawsNormal,
       
   102 		EClientRedrawsScrolled,
       
   103 		};
       
   104 	TPoint ComputeTextPosition(TPoint aPoint);
       
   105 	CTBackedUpWin* iCheckWin;
       
   106 	CFbsBitmap* iCheckBitmap;
       
   107 	CFbsBitmapDevice* iCheckDevice;
       
   108 	CFbsBitGc* iCheckGc;
       
   109 	CRedrawStoreWin* iTestWin;
       
   110 	TSize iWinSize;
       
   111 	TPoint iWinPos;
       
   112 	TDrawingMode iDrawMode;
       
   113 	RBlankWindow iBlankWin;
       
   114 	RRegion iRegion;
       
   115 	RWindow iWinTestGc;
       
   116 	TBool iWindowsFaded;
       
   117 	TRect iScrollTarget;
       
   118 	TPoint iScrollSource;
       
   119 	TBool iDoScrollTest;
       
   120 	CNoDrawWin* iNoDrawWin;
       
   121 	TBool iClientDidDraw;
       
   122 	CWsBitmap* iAlphaBitmap[3];
       
   123 	TBool iAlphaSupported;
       
   124 	CBitmapMaskedWin* iBitmapMaskedWin;
       
   125 	CBitmap* iTestBitmap;
       
   126 	CBitMapWin* iTestBitmapWin;
       
   127 	TRect iWinRect;
       
   128 	TPoint iTestWinPoint;
       
   129 	TBool iXPlus;
       
   130 	TBool iYPlus;
       
   131 	TInt iState;
       
   132 	TInt iYPoz;
       
   133 	TDisplayMode iTestDisplayMode;
       
   134 	CFbsBitmap *iTestWinCopy;
       
   135 	CFbsBitmap *iCheckWinCopy;
       
   136 	};
       
   137 
       
   138 class CRedrawStoreWin : public CTWin
       
   139 	{
       
   140 public:
       
   141 	inline CRedrawStoreWin(CTRedrawStoring* aTest) : iDrawOrder(0), iTest(aTest){}
       
   142 	//Virtual Function from CTBaseWin
       
   143 	void Draw();
       
   144 public:
       
   145 	TInt iDrawOrder;
       
   146 private:
       
   147 	CTRedrawStoring *iTest;
       
   148 	};
       
   149 
       
   150 class CNoDrawWin : public CTWin
       
   151 	{
       
   152 public:
       
   153 	void Draw();
       
   154 	};
       
   155 
       
   156 class CBrushDrawWin : public CTWin
       
   157 	{
       
   158 public:
       
   159 	CBrushDrawWin();
       
   160 	void Draw();
       
   161 	void Redraw();
       
   162 
       
   163 private:
       
   164 	};
       
   165 
       
   166 class CBitmapMaskedWin : public CTWin
       
   167 	{
       
   168 public:
       
   169 	static CBitmapMaskedWin* NewL(CFbsBitmap* aFbsBitmap,CFbsBitmap* aFbsMaskBitmap,
       
   170 								  CWsBitmap* aWsBitmap,CWsBitmap* aWsMaskBitmap,
       
   171 								  TRgb aBackground,TRect aRect,TBool aInvertMask,TBool aWsFbs);
       
   172 	~CBitmapMaskedWin();
       
   173 	//Virtual Function from CTBaseWin
       
   174 	void Draw();
       
   175 	void SetDestRectSize(const TSize aSize);
       
   176 	inline void SetInvertMask(TBool aInvertMask){iInvertMask=aInvertMask;}
       
   177 private:
       
   178 	inline CBitmapMaskedWin(CFbsBitmap* aFbsBitmap,CFbsBitmap* aFbsMaskBitmap,CWsBitmap* aWsBitmap,CWsBitmap* aWsMaskBitmap,
       
   179 							TRect aRect,TBool aInvertMask,TBool aWsFbs):
       
   180 							iFbsBitmap(aFbsBitmap),iFbsMaskBitmap(aFbsMaskBitmap),
       
   181 							iWsBitmap(aWsBitmap),iWsMaskBitmap(aWsMaskBitmap),
       
   182 							iRect(aRect),iInvertMask(aInvertMask),iWsFbs(aWsFbs) {}
       
   183 private:
       
   184 	CFbsBitmap* iFbsBitmap;
       
   185 	CFbsBitmap* iFbsMaskBitmap;
       
   186 	CWsBitmap* iWsBitmap;
       
   187 	CWsBitmap* iWsMaskBitmap;
       
   188 	TRect iRect;
       
   189 	TBool iInvertMask;
       
   190 	TBool iWsFbs;
       
   191 	};
       
   192 
       
   193 class CPartialRedrawWin : public CTWin
       
   194 	{
       
   195 public:
       
   196 	void Init();
       
   197 	virtual void Draw();
       
   198 	void DrawToBmp(CGraphicsContext& aGc);
       
   199 	void DrawPartial(TPartialRedrawType aPartialRedrawType);
       
   200 	static void DrawRects(CGraphicsContext& aGc, TSize aSize, TPoint aPosition,
       
   201 		TBool aIsFullRedraw, TPartialRedrawType aPartialRedrawType);
       
   202 	void RedrawSubRectWithBitmapL(TRgb aBitmapColour);
       
   203 public:
       
   204 	TBool iClientDrawn;
       
   205 	TBool iClientCanDraw;
       
   206 private:
       
   207 	void DoDraw(CGraphicsContext& aGc);
       
   208 private:
       
   209 	};
       
   210 
       
   211 class CPartialRedrawBottomWin : public CTWin
       
   212 	{
       
   213 public:
       
   214 	void Init();
       
   215 	virtual void Draw();
       
   216 	void DrawPartial(TRect aRect);
       
   217 	void DrawFullWindowRect();
       
   218 private:
       
   219 	void DoDraw();
       
   220 	};
       
   221 	
       
   222 class CPartialRedrawTopWin : public CTWin
       
   223 	{
       
   224 public:
       
   225 	void Init();
       
   226 	virtual void Draw();
       
   227 	void DrawPartial(TRect aRect);
       
   228 	void DrawFullWindowRect();
       
   229 private:
       
   230 	void DoDraw();
       
   231 	};
       
   232 	
       
   233 class CPartialRedrawTiledWin : public CTWin
       
   234 	{
       
   235 public:
       
   236 	void Init(TRgb aColour,TBool aTransparent);
       
   237 	virtual void Draw();
       
   238 	void DrawPartial(TRect aRect);
       
   239 	void DrawFullWindowRect();
       
   240 private:
       
   241 	void DoDraw();
       
   242 private:
       
   243 	TRgb iColour;
       
   244 	};
       
   245 	
       
   246 class CInvisibleRedrawWin: public CTWin
       
   247 	{
       
   248 public:
       
   249 	CInvisibleRedrawWin();
       
   250 	TInt MakeTransparent();
       
   251 	void MakeVisible( TBool aVisible );
       
   252 	virtual void Redraw();
       
   253 	virtual void Redraw( const TRect &aRect );
       
   254 
       
   255 private:
       
   256 	void DrawIfVisible();
       
   257 
       
   258 private:
       
   259 	TBool iVisible;
       
   260 	TBool iTransparent;
       
   261 	};
       
   262 
       
   263 class CPartialDrawNowWin: public CTWin
       
   264 	{
       
   265 public:
       
   266 	CPartialDrawNowWin();
       
   267 	TInt MakeTransparent();
       
   268 	void SetLodger( const TRect &aLodger );
       
   269 	virtual void Redraw();
       
   270 	virtual void Redraw( const TRect &aRect );
       
   271 
       
   272 private:
       
   273 	void DrawWindowAndLodger();
       
   274 
       
   275 private:
       
   276 	TRect iLodger;
       
   277 	TBool iTransparent;
       
   278 	};
       
   279 
       
   280 class CPartialRedrawEmptyWin : public CTWin
       
   281 	{
       
   282 public:
       
   283 	void Init(TRgb aColor);
       
   284 	virtual void Draw();
       
   285 	void DrawPartial(TRect aRect);
       
   286 	void DrawFullWindowRect();
       
   287 	inline TInt ReturnCount();
       
   288 private:
       
   289 	void DoDraw();
       
   290 	TInt iCount;
       
   291 	};
       
   292 
       
   293 class CPartialRedrawPolygonWin : public CTWin
       
   294 	{
       
   295 public:
       
   296 	void Init(TInt aWindowMode, TRgb aColor);
       
   297 	virtual void Draw();
       
   298 	void DrawPartial();
       
   299 	void DrawFullWindowPolygonL();
       
   300 	inline TInt ReturnCount();
       
   301 private:
       
   302 	void DoDraw();
       
   303 	TInt iCount;
       
   304 	};
       
   305 
       
   306 class CRedrawRectWin : public CTWin
       
   307 	{
       
   308 public:
       
   309 	void Init();
       
   310 	void DrawNow();
       
   311 	void DrawFullWindowRect();
       
   312 	inline TInt RedrawCount();
       
   313 	void ResetWindow(TRgb aColour);
       
   314 	inline void SetLogging(CTWsGraphicsBase* aTest);
       
   315 	//Virtual function from CTBaseWin
       
   316 	void Draw();
       
   317 	//Virtual function from CTWin
       
   318 	void Redraw(const TRect& aRect);
       
   319 private:
       
   320 	void DoDraw();
       
   321 private:
       
   322 	TInt iRedrawCount;
       
   323 	TRgb iRectColour;
       
   324 	CTWsGraphicsBase* iLog;
       
   325 	};
       
   326 
       
   327 class CTRedrawStoringStep : public CTGraphicsStep
       
   328 	{
       
   329 public:
       
   330 	CTRedrawStoringStep();
       
   331 protected:
       
   332 	//from CTGraphicsStep
       
   333 	virtual CTGraphicsBase* CreateTestL();
       
   334 	};
       
   335 
       
   336 class CResetRedrawStoreWin : public CPartialRedrawWin
       
   337 	{
       
   338 public:
       
   339 	~CResetRedrawStoreWin();
       
   340 	void SetUpdateInRedraw(TBool aUpdateInRedraw);
       
   341 	void SetKeepGcActive(TBool aState);
       
   342 	void UpdateAnim(TInt aSteps);
       
   343 	void PreSetSize(const TSize &aSize);
       
   344 	TBool Failed() const;
       
   345 private:
       
   346 	virtual void Draw();
       
   347 	void DoDraw(CGraphicsContext& aGc) const;
       
   348 	void DoDrawAnim(CGraphicsContext& aGc) const;
       
   349 	TRect AnimRect() const;
       
   350 private:
       
   351 	TInt iAnimState;
       
   352 	TBool iKeepGcActive;
       
   353 	TBool iUpdateInRedraw;
       
   354 	TBool iFailed;
       
   355 	CWindowGc* iExtraGc;
       
   356 	};
       
   357 
       
   358 const TInt KEmptyLoopThreshold = 3;
       
   359 
       
   360 _LIT(KTRedrawStoringStep,"TRedrawStoring");
       
   361 
       
   362 
       
   363 #endif