os/graphics/windowing/windowserver/test/tauto/TRegion.cpp
author sl@SLION-WIN7.fritz.box
Fri, 15 Jun 2012 03:10:57 +0200
changeset 0 bde4ae8d615e
permissions -rw-r--r--
First public contribution.
sl@0
     1
// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
sl@0
     2
// All rights reserved.
sl@0
     3
// This component and the accompanying materials are made available
sl@0
     4
// under the terms of "Eclipse Public License v1.0"
sl@0
     5
// which accompanies this distribution, and is available
sl@0
     6
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
sl@0
     7
//
sl@0
     8
// Initial Contributors:
sl@0
     9
// Nokia Corporation - initial contribution.
sl@0
    10
//
sl@0
    11
// Contributors:
sl@0
    12
//
sl@0
    13
// Description:
sl@0
    14
// Code for testing CWindowGc::SetCurrentRegion
sl@0
    15
// 
sl@0
    16
//
sl@0
    17
sl@0
    18
/**
sl@0
    19
 @file
sl@0
    20
 @test
sl@0
    21
 @internalComponent - Internal Symbian test code
sl@0
    22
*/
sl@0
    23
sl@0
    24
#include "TRegion.H"
sl@0
    25
sl@0
    26
TBool RegionCanFade;
sl@0
    27
TBool RegionCanFadeSet;
sl@0
    28
sl@0
    29
LOCAL_D TBuf<0x10> text=_L("SOME TEXT");
sl@0
    30
LOCAL_D TPoint textRefPos(210, 80);
sl@0
    31
sl@0
    32
LOCAL_D TRect regionRectList[]={
sl@0
    33
					TRect(0,0,0,0),	TRect(30,10,70,40),TRect(60,30,80,70),TRect(10,110,70,170),
sl@0
    34
					TRect(190,0,240,60),TRect(62,63,67,115),TRect(0,180,240,200),TRect(40,50,210,130),
sl@0
    35
					TRect(160,130,190,160),TRect(100,140,140,170),TRect(140,170,100,140),TRect(90,120,230,200)};
sl@0
    36
LOCAL_D TRect clippingRectList[]={
sl@0
    37
					TRect(0,0,200,400),	TRect(30,10,500,600),TRect(-60,0,80,70),TRect(20,0,170,500),
sl@0
    38
					TRect(0,0,2000,6000),TRect(-1000,-2000,123,195),TRect(10,10,230,190),TRect(0,0,510,730),
sl@0
    39
					TRect(110,30,190,150),TRect(1,1,500,11170),TRect(0,0,800,940),TRect(-10,-20,240,210)};
sl@0
    40
LOCAL_D TPoint originList[]={
sl@0
    41
					TPoint(0,0),TPoint(10,0),TPoint(0,10),TPoint(-5,-20),
sl@0
    42
					TPoint(1,1),TPoint(0,0),TPoint(0,0),TPoint(100,0),
sl@0
    43
					TPoint(0,111),TPoint(90,40),TPoint(0,0),TPoint(-1,0)};
sl@0
    44
sl@0
    45
CTRegion::CTRegion(CTestStep* aStep) : CTWsGraphicsBase(aStep)
sl@0
    46
	{
sl@0
    47
	}
sl@0
    48
sl@0
    49
void CTRegion::ConstructL()
sl@0
    50
	{
sl@0
    51
	iDrawableSize=TestWin->Size();
sl@0
    52
//
sl@0
    53
	User::LeaveIfError(TheClient->iScreen->GetNearestFontToDesignHeightInTwips((CFont *&)iFont,TFontSpec(_L("Arial"),200)));
sl@0
    54
  	User::LeaveIfError(iPicture.Load(TEST_BITMAP_NAME,0));
sl@0
    55
  
sl@0
    56
	iBitmap = new (ELeave) CWsBitmap(TheClient->iWs);
sl@0
    57
	User::LeaveIfError(iBitmap->Create(TSize(iDrawableSize.iWidth+1,iDrawableSize.iHeight),EGray16));
sl@0
    58
	iBitmap->SetSizeInTwips(TheClient->iScreen);
sl@0
    59
	iBitmapDevice=CFbsBitmapDevice::NewL(iBitmap);
sl@0
    60
	User::LeaveIfError(iBitmapDevice->CreateContext(iBitGc));
sl@0
    61
	User::LeaveIfError(iBitmapDevice->GetNearestFontToDesignHeightInTwips((CFont *&)iBitFont,TFontSpec(_L("Arial"),200)));
sl@0
    62
	}
sl@0
    63
sl@0
    64
CTRegion::~CTRegion()
sl@0
    65
	{
sl@0
    66
	delete iBitGc;
sl@0
    67
	TheClient->iScreen->ReleaseFont(iFont);
sl@0
    68
	if (iBitmapDevice)
sl@0
    69
		iBitmapDevice->ReleaseFont(iBitFont);
sl@0
    70
	delete iBitmapDevice;
sl@0
    71
	DeleteChildWindows();
sl@0
    72
	delete iBitmap;
sl@0
    73
	}
sl@0
    74
sl@0
    75
void CTRegion::CreateChildWindowsL()
sl@0
    76
	{
sl@0
    77
	TSize screenSize=TheClient->iGroup->Size();
sl@0
    78
	TInt winWidth=(screenSize.iWidth/3)-10;
sl@0
    79
	TInt winHeight=screenSize.iHeight-10;
sl@0
    80
	iBaseChildWin=new(ELeave) CBlankWindow();
sl@0
    81
	iBaseChildWin->SetUpL(BaseWin->Win()->InquireOffset(*TheClient->iGroup->GroupWin())+TPoint(winWidth>>2,winHeight>>2),TSize(winWidth>>2,winHeight>>1),TheClient->iGroup,*TheClient->iGc);
sl@0
    82
	iBaseChildWin->Win()->SetShadowHeight(2);
sl@0
    83
	iTestChildWin=new(ELeave) CBlankWindow();
sl@0
    84
	iTestChildWin->SetUpL(TestWin->Win()->InquireOffset(*TheClient->iGroup->GroupWin())+TPoint(winWidth>>2,winHeight>>2),TSize(winWidth>>2,winHeight>>1),TheClient->iGroup,*TheClient->iGc);
sl@0
    85
	}
sl@0
    86
sl@0
    87
void CTRegion::DeleteChildWindows()
sl@0
    88
	{
sl@0
    89
	delete iBaseChildWin;
sl@0
    90
	iBaseChildWin=NULL;
sl@0
    91
	delete iTestChildWin;
sl@0
    92
	iTestChildWin=NULL;
sl@0
    93
	}
sl@0
    94
sl@0
    95
void CTRegion::DrawNonClippedSample1(CBitmapContext &aGc)
sl@0
    96
	{
sl@0
    97
	aGc.SetPenColor(TRgb::Gray4(0));
sl@0
    98
	aGc.SetBrushColor(TRgb::Gray4(2));
sl@0
    99
	aGc.SetBrushStyle(CGraphicsContext::ESolidBrush);
sl@0
   100
	aGc.DrawRect(TRect(TPoint(30,100), TPoint(120,200)));
sl@0
   101
	TheClient->iWs.Flush();
sl@0
   102
	}
sl@0
   103
sl@0
   104
void CTRegion::DrawClippedSample1(CBitmapContext &aGc)
sl@0
   105
	{
sl@0
   106
	aGc.SetPenColor(TRgb::Gray4(0));
sl@0
   107
	aGc.SetBrushColor(TRgb::Gray4(1));
sl@0
   108
	aGc.SetBrushStyle(CGraphicsContext::ESolidBrush);
sl@0
   109
	aGc.DrawRect(TRect(TSize(100,200)));
sl@0
   110
sl@0
   111
//	aGc.BitBlt(TPoint(55,65), iPicture);
sl@0
   112
sl@0
   113
	aGc.SetPenStyle(CGraphicsContext::ENullPen);
sl@0
   114
	aGc.SetBrushStyle(CGraphicsContext::ESolidBrush);
sl@0
   115
	aGc.SetBrushColor(TRgb::Gray4(2));
sl@0
   116
	aGc.DrawEllipse(TRect(TPoint(20,35), TPoint(90,79)));
sl@0
   117
sl@0
   118
	aGc.SetBrushColor(TRgb::Gray4(0));
sl@0
   119
	aGc.DrawEllipse(TRect(TPoint(110,110), TPoint(175,200)));
sl@0
   120
sl@0
   121
	aGc.SetBrushColor(TRgb::Gray4(1));
sl@0
   122
	aGc.DrawEllipse(TRect(TPoint(170,30), TPoint(220,150)));
sl@0
   123
sl@0
   124
	aGc.SetBrushColor(TRgb::Gray4(3));
sl@0
   125
	aGc.DrawEllipse(TRect(TPoint(0,150), TPoint(240,190)));
sl@0
   126
sl@0
   127
	aGc.SetPenStyle(CGraphicsContext::ESolidPen);
sl@0
   128
	aGc.SetBrushStyle(CGraphicsContext::ENullBrush);
sl@0
   129
sl@0
   130
	TheClient->iWs.Flush();
sl@0
   131
	}
sl@0
   132
sl@0
   133
void CTRegion::DrawNonClippedSample2(CBitmapContext &aGc, CFont *aFont)
sl@0
   134
	{
sl@0
   135
	aGc.SetPenColor(TRgb::Gray4(0));
sl@0
   136
	aGc.SetPenColor(TRgb::Gray4(0));
sl@0
   137
	aGc.UseFont(aFont);
sl@0
   138
	TPoint textPos=textRefPos-TPoint(iFont->TextWidthInPixels(text)*3/4, 0);
sl@0
   139
	aGc.DrawText(text, textPos);
sl@0
   140
	aGc.DiscardFont();
sl@0
   141
sl@0
   142
	TheClient->iWs.Flush();
sl@0
   143
	}
sl@0
   144
sl@0
   145
void CTRegion::DrawClippedSample2(CBitmapContext &aGc, CFont *aFont)
sl@0
   146
	{
sl@0
   147
	aGc.SetPenColor(TRgb::Gray4(0));
sl@0
   148
	aGc.SetPenColor(TRgb::Gray4(2));
sl@0
   149
	aGc.UseFont(aFont);
sl@0
   150
	TPoint textPos=textRefPos-TPoint(iFont->TextWidthInPixels(text)*3/4, -20);
sl@0
   151
	aGc.DrawText(text, textPos);
sl@0
   152
	aGc.DiscardFont();
sl@0
   153
	aGc.SetBrushColor(TRgb::Gray4(3));
sl@0
   154
	aGc.SetBrushStyle(CGraphicsContext::ESolidBrush);
sl@0
   155
	aGc.DrawRect(TRect(TPoint(10,100), TPoint(210,120)));
sl@0
   156
	TheClient->iWs.Flush();
sl@0
   157
	}
sl@0
   158
sl@0
   159
void CTRegion::DrawClippedSample3(CBitmapContext &aGc)
sl@0
   160
	{
sl@0
   161
	aGc.SetPenColor(TRgb::Gray4(0));
sl@0
   162
	aGc.SetPenColor(TRgb::Gray4(2));
sl@0
   163
	aGc.DrawRect(TRect(TPoint(10,200), TPoint(20,210)));
sl@0
   164
	}
sl@0
   165
sl@0
   166
void CTRegion::DrawNonClippedSample1(CTWin *aWindow, const TPoint &aOrigin)
sl@0
   167
	{
sl@0
   168
	TheGc->Activate(*aWindow->Win());
sl@0
   169
	TheGc->SetOrigin(aOrigin);
sl@0
   170
	DrawNonClippedSample1(*TheGc);
sl@0
   171
	TheGc->Deactivate();
sl@0
   172
	}
sl@0
   173
sl@0
   174
void CTRegion::DrawNonClippedSample1(CTWin *aWindow, const TRegion &aRegion, const TPoint &aOrigin)
sl@0
   175
	{
sl@0
   176
	TheGc->Activate(*aWindow->Win());
sl@0
   177
	TheGc->SetOrigin(aOrigin);
sl@0
   178
	TheGc->SetClippingRegion(aRegion);
sl@0
   179
	DrawNonClippedSample1(*TheGc);
sl@0
   180
	TheGc->Deactivate();
sl@0
   181
	}
sl@0
   182
sl@0
   183
void CTRegion::DrawClippedSample1(TestWindow *aWindow, const TRegion &aRegion, const TRect &aClippingRect, const TPoint &aOrigin)
sl@0
   184
	{
sl@0
   185
	TheGc->Activate(*aWindow->Win());
sl@0
   186
	TheGc->SetOrigin(aOrigin);
sl@0
   187
	TheGc->SetClippingRegion(aRegion);
sl@0
   188
	TheGc->SetClippingRect(aClippingRect);
sl@0
   189
	DrawClippedSample1(*TheGc);
sl@0
   190
	TheGc->Deactivate();
sl@0
   191
	}
sl@0
   192
sl@0
   193
void CTRegion::DrawNonClippedSample2(CTWin *aWindow, const TPoint &aOrigin)
sl@0
   194
	{
sl@0
   195
	TheGc->Activate(*aWindow->Win());
sl@0
   196
	TheGc->SetOrigin(aOrigin);
sl@0
   197
	DrawNonClippedSample2(*TheGc,iFont);
sl@0
   198
	TheGc->Deactivate();
sl@0
   199
	}
sl@0
   200
sl@0
   201
void CTRegion::DrawNonClippedSample2(CTWin *aWindow, const TRegion &aRegion, const TPoint &aOrigin)
sl@0
   202
	{
sl@0
   203
	TheGc->Activate(*aWindow->Win());
sl@0
   204
	TheGc->SetOrigin(aOrigin);
sl@0
   205
	TheGc->SetClippingRegion(aRegion);
sl@0
   206
	DrawNonClippedSample2(*TheGc,iFont);
sl@0
   207
	TheGc->Deactivate();
sl@0
   208
	}
sl@0
   209
sl@0
   210
void CTRegion::DrawClippedSample2(TestWindow *aWindow, const TRegion &aRegion, const TRect &aClippingRect, const TPoint &aOrigin)
sl@0
   211
	{
sl@0
   212
	TheGc->Activate(*aWindow->Win());
sl@0
   213
	TheGc->SetClippingRegion(TRegionFix<1>());
sl@0
   214
	DrawClippedSample3(*TheGc);	// needed to trigger region update in wserv
sl@0
   215
	TheGc->SetOrigin(aOrigin);
sl@0
   216
	TheGc->SetClippingRect(aClippingRect);
sl@0
   217
	TheGc->SetClippingRegion(aRegion);
sl@0
   218
	DrawClippedSample2(*TheGc,iFont);
sl@0
   219
	TheGc->CancelClippingRegion();
sl@0
   220
	TheGc->Deactivate();
sl@0
   221
	}
sl@0
   222
sl@0
   223
void CTRegion::ClearBitmapAndWindows()
sl@0
   224
	{
sl@0
   225
	TestWin->Win()->Invalidate();
sl@0
   226
	TestWin->Win()->BeginRedraw();
sl@0
   227
	TheGc->Activate(*TestWin->Win());
sl@0
   228
	TheGc->SetBrushColor(TRgb::Gray4(3));
sl@0
   229
	TheGc->Clear();
sl@0
   230
	TheGc->Deactivate();
sl@0
   231
	TestWin->Win()->EndRedraw();
sl@0
   232
//
sl@0
   233
	BaseWin->Win()->Invalidate();
sl@0
   234
	BaseWin->Win()->BeginRedraw();
sl@0
   235
	TheGc->Activate(*BaseWin->Win());
sl@0
   236
	TheGc->SetBrushColor(TRgb::Gray4(3));
sl@0
   237
	TheGc->Clear();
sl@0
   238
	TheGc->Deactivate();
sl@0
   239
	BaseWin->Win()->EndRedraw();
sl@0
   240
//
sl@0
   241
	iBitGc->SetBrushColor(TRgb::Gray4(3));
sl@0
   242
	iBitGc->Clear();
sl@0
   243
	TheClient->iWs.Flush();
sl@0
   244
	}
sl@0
   245
sl@0
   246
void CTRegion::TestRegionL(const TRegion &aClippingRegion, const TRect &aClippingRect, const TPoint &aOrigin)
sl@0
   247
	{
sl@0
   248
	if (aClippingRegion.CheckError())
sl@0
   249
		User::Leave(KErrGeneral);
sl@0
   250
	ClearBitmapAndWindows();
sl@0
   251
sl@0
   252
	// draw to iWindow1 (clipping intermittently) and iBitmap (not clipping)
sl@0
   253
	DrawNonClippedSample1(TestWin,aOrigin);
sl@0
   254
	DrawNonClippedSample1(*iBitGc);
sl@0
   255
sl@0
   256
	DrawNonClippedSample2(TestWin,aOrigin);
sl@0
   257
	DrawNonClippedSample2(*iBitGc, iBitFont);
sl@0
   258
sl@0
   259
	DrawClippedSample1(TestWin,aClippingRegion,aClippingRect,aOrigin);
sl@0
   260
	DrawClippedSample1(*iBitGc);
sl@0
   261
sl@0
   262
	DrawClippedSample2(TestWin,aClippingRegion,aClippingRect,aOrigin);
sl@0
   263
	DrawClippedSample2(*iBitGc, iBitFont);
sl@0
   264
sl@0
   265
	// copy each rectangle of the clipping region from iBitmap to iWindow2
sl@0
   266
	TheGc->Activate(*BaseWin->Win());
sl@0
   267
	for (TUint i=0; i<(TUint)aClippingRegion.Count(); i++)
sl@0
   268
		{
sl@0
   269
		TRect rect=aClippingRegion.RectangleList()[i];
sl@0
   270
		rect.Intersection(aClippingRect);
sl@0
   271
		TheGc->SetOrigin(aOrigin);
sl@0
   272
		TheGc->BitBlt(rect.iTl, iBitmap, rect);
sl@0
   273
		TheClient->Flush();
sl@0
   274
		}
sl@0
   275
	TheGc->Deactivate();
sl@0
   276
sl@0
   277
	// draw the non-clipped samples to everywhere in iWindow2 *except* the clipping region
sl@0
   278
	RRegion inverseClippingRegion(TRect(-aOrigin,iDrawableSize));
sl@0
   279
	RRegion clip;
sl@0
   280
	clip.Copy(aClippingRegion);
sl@0
   281
	clip.ClipRect(aClippingRect);
sl@0
   282
	inverseClippingRegion.SubRegion(clip);
sl@0
   283
	clip.Close();
sl@0
   284
	DrawNonClippedSample1(BaseWin,inverseClippingRegion,aOrigin);
sl@0
   285
	DrawNonClippedSample2(BaseWin,inverseClippingRegion,aOrigin);
sl@0
   286
	inverseClippingRegion.Close();
sl@0
   287
	CompareWindows(_L("CTRegion::TestRegionL"));
sl@0
   288
	}
sl@0
   289
sl@0
   290
void CTRegion::CompareRectsL(TPoint aTl1,TPoint aTl2,TSize aSize)
sl@0
   291
	{
sl@0
   292
	_LIT(KError,"Pixels Differ: (%d,%d),(%d,%d)");
sl@0
   293
	CFbsScreenDevice* device;
sl@0
   294
	device=CFbsScreenDevice::NewL(KNullDesC,iBaseChildWin->BaseWin()->DisplayMode());
sl@0
   295
	TPoint br=aTl1+aSize;
sl@0
   296
	TInt startX1=aTl1.iX;
sl@0
   297
	TInt startX2=aTl2.iX;
sl@0
   298
	TSize pixelSize(1,1);
sl@0
   299
	TPoint zero;
sl@0
   300
	while(aTl1.iY<br.iY+1)
sl@0
   301
		{
sl@0
   302
		while (aTl1.iX<br.iX+1)
sl@0
   303
			{
sl@0
   304
			if (!device->RectCompare(TRect(aTl1,pixelSize),*device,TRect(aTl2,pixelSize)))
sl@0
   305
				{
sl@0
   306
				RDebug::Print(KError,aTl1.iX,aTl1.iY,aTl2.iX,aTl2.iY);
sl@0
   307
				iTest->LogColors(*device,zero,aTl1,aTl1);
sl@0
   308
				iTest->LogColors(*device,zero,aTl2,aTl2);
sl@0
   309
				}
sl@0
   310
			++aTl1.iX;
sl@0
   311
			++aTl2.iX;
sl@0
   312
			}
sl@0
   313
		aTl1.iX=startX1;
sl@0
   314
		aTl2.iX=startX2;
sl@0
   315
		++aTl1.iY;
sl@0
   316
		++aTl2.iY;
sl@0
   317
		}
sl@0
   318
	}
sl@0
   319
sl@0
   320
void CTRegion::ScrollBugL()
sl@0
   321
	{
sl@0
   322
	CBlankWindow* testWin;
sl@0
   323
	RBlankWindow win(TheClient->iWs);
sl@0
   324
	CleanupClosePushL(win);
sl@0
   325
	TSize screenSize=TheClient->iGroup->Size();
sl@0
   326
	testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0));
sl@0
   327
	CleanupStack::PushL(testWin);
sl@0
   328
	//testWin->ConstructL(*TheClient->iGroup);
sl@0
   329
	testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight),TheClient->iGroup,*TheGc);
sl@0
   330
	//testWin->Win()->SetBackgroundColor(TRgb::Gray2(1));
sl@0
   331
	testWin->Win()->EnableRedrawStore(EFalse);
sl@0
   332
	testWin->SetColor(TRgb::Gray4(1));
sl@0
   333
	testWin->RealDraw(ETrue);
sl@0
   334
	win.Construct(*TheClient->iGroup->WinTreeNode(),3456);
sl@0
   335
	win.SetColor(TRgb::Gray4(2));
sl@0
   336
	win.SetExtent(TPoint(screenSize.iWidth/3+30,20),TSize(screenSize.iWidth/3-62,25));
sl@0
   337
	win.Activate();
sl@0
   338
	TheClient->iWs.Flush();
sl@0
   339
	TheClient->WaitForRedrawsToFinish();
sl@0
   340
	win.SetVisible(EFalse);
sl@0
   341
	TheClient->iWs.Flush();
sl@0
   342
	testWin->Win()->BeginRedraw();
sl@0
   343
	testWin->DrawNow();
sl@0
   344
	testWin->SetColor(TRgb::Gray4(2));
sl@0
   345
	testWin->Win()->Scroll(TPoint(0,-50));
sl@0
   346
	testWin->DrawNow();
sl@0
   347
	testWin->Win()->EndRedraw();
sl@0
   348
	TheClient->iWs.Flush();
sl@0
   349
	TBool retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight/2-30))
sl@0
   350
							,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2-30),TSize(screenSize.iWidth/3,screenSize.iHeight/2-30)));
sl@0
   351
	TEST(retVal);
sl@0
   352
	if (!retVal)
sl@0
   353
		INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value  - Expected: %d, Actual: %d"), ETrue, retVal);		
sl@0
   354
															
sl@0
   355
	retVal = !TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight-60),TSize(10,10))
sl@0
   356
							,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight-50),TSize(10,10)));
sl@0
   357
	TEST(retVal);
sl@0
   358
	if (!retVal)
sl@0
   359
		INFO_PRINTF3(_L("!TheClient->iScreen->RectCompare() return value  - Expected: %d, Actual: %d"), ETrue, retVal);		
sl@0
   360
sl@0
   361
	TheClient->WaitForRedrawsToFinish();
sl@0
   362
	win.SetVisible(ETrue);
sl@0
   363
	win.SetVisible(EFalse);
sl@0
   364
	testWin->Win()->BeginRedraw();
sl@0
   365
	testWin->Win()->Scroll(TPoint(0,-50));
sl@0
   366
	testWin->SetColor(TRgb::Gray4(1));
sl@0
   367
	testWin->DrawNow();
sl@0
   368
	testWin->Win()->EndRedraw();
sl@0
   369
	TheClient->iWs.Flush();	
sl@0
   370
	retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3+35,0),TSize(screenSize.iWidth/6-35,100))
sl@0
   371
							,TRect(TPoint(screenSize.iWidth/2,0),TSize(screenSize.iWidth/6-35,100)));
sl@0
   372
	TEST(retVal);
sl@0
   373
	if (!retVal)
sl@0
   374
		INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value  - Expected: %d, Actual: %d"), ETrue, retVal);		
sl@0
   375
																			
sl@0
   376
	retVal = !TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3+30,20),TSize(10,10))
sl@0
   377
							,TRect(TPoint(screenSize.iWidth/3+30,50),TSize(10,10)));
sl@0
   378
	TEST(retVal);
sl@0
   379
	if (!retVal)
sl@0
   380
		INFO_PRINTF3(_L("!TheClient->iScreen->RectCompare() return value  - Expected: %d, Actual: %d"), ETrue, retVal);		
sl@0
   381
sl@0
   382
	TheClient->WaitForRedrawsToFinish();
sl@0
   383
	testWin->Win()->BeginRedraw();
sl@0
   384
	testWin->DrawNow();
sl@0
   385
	testWin->Win()->EndRedraw();
sl@0
   386
	CleanupStack::PopAndDestroy(2,&win);
sl@0
   387
	}
sl@0
   388
sl@0
   389
void CTRegion::ExposeTestL()
sl@0
   390
	{
sl@0
   391
	CBlankWindow* testWin;
sl@0
   392
	TSize screenSize=TheClient->iGroup->Size();
sl@0
   393
	TRect topHalf(0,0,screenSize.iWidth/3,screenSize.iHeight/2);
sl@0
   394
	TRect leftHalf(0,0,screenSize.iWidth/6,screenSize.iHeight);
sl@0
   395
	testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0));
sl@0
   396
	CleanupStack::PushL(testWin);
sl@0
   397
	testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight),TheClient->iGroup,*TheGc);
sl@0
   398
	testWin->Win()->EnableRedrawStore(EFalse);
sl@0
   399
	testWin->SetColor(TRgb::Gray4(2));
sl@0
   400
	testWin->RealDraw(ETrue);
sl@0
   401
	TheClient->iWs.Flush();
sl@0
   402
	TheClient->WaitForRedrawsToFinish();
sl@0
   403
	testWin->Win()->BeginRedraw();
sl@0
   404
	testWin->DrawNow();
sl@0
   405
	testWin->Win()->Invalidate(topHalf);
sl@0
   406
	testWin->SetColor(TRgb::Gray4(1));
sl@0
   407
	testWin->DrawNow();
sl@0
   408
	testWin->Win()->EndRedraw();
sl@0
   409
	TheClient->iWs.Flush();
sl@0
   410
	CheckRectNoMatch(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(10,10),_L("CTRegion::ExposeTestL() A"));
sl@0
   411
sl@0
   412
	TheClient->WaitForRedrawsToFinish();
sl@0
   413
	CheckRect(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(screenSize.iWidth/3,screenSize.iHeight/2),_L("CTRegion::ExposeTestL() B"));
sl@0
   414
sl@0
   415
	testWin->Win()->Invalidate(topHalf);
sl@0
   416
	testWin->SetColor(TRgb::Gray4(2));
sl@0
   417
	testWin->Win()->BeginRedraw();
sl@0
   418
	testWin->Win()->Invalidate(leftHalf);
sl@0
   419
	testWin->DrawNow();
sl@0
   420
	testWin->Win()->EndRedraw();
sl@0
   421
	TheClient->iWs.Flush();
sl@0
   422
	CheckRect(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(screenSize.iWidth/6-10,screenSize.iHeight/2),_L("CTRegion::ExposeTestL() C"));
sl@0
   423
	CheckRectNoMatch(TPoint(screenSize.iWidth/2,0),TPoint(screenSize.iWidth/2,screenSize.iHeight/2),TSize(10,10),_L("CTRegion::ExposeTestL() D"));
sl@0
   424
	CheckRectNoMatch(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/2,0),TSize(10,10),_L("CTRegion::ExposeTestL() E"));
sl@0
   425
	CheckRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TPoint(screenSize.iWidth/2,screenSize.iHeight/2),TSize(((screenSize.iWidth/6-5)/4*4),screenSize.iHeight/2),_L("CTRegion::ExposeTestL() F"));
sl@0
   426
	testWin->Win()->BeginRedraw();
sl@0
   427
	testWin->DrawNow();
sl@0
   428
	testWin->Win()->EndRedraw();
sl@0
   429
	TheClient->iWs.Flush();
sl@0
   430
	
sl@0
   431
	CheckRect(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(screenSize.iWidth/6-10,screenSize.iHeight/2),_L("CTRegion::ExposeTestL() G"));
sl@0
   432
	CheckRectNoMatch(TPoint(screenSize.iWidth/2,0),TPoint(screenSize.iWidth/2,screenSize.iHeight/2),TSize(10,10),_L("CTRegion::ExposeTestL() H"));
sl@0
   433
	CheckRect(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/2,0),TSize(((screenSize.iWidth/6-5)/4*4),screenSize.iHeight/2),_L("CTRegion::ExposeTestL() I"));
sl@0
   434
	CheckRectNoMatch(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TPoint(screenSize.iWidth/2,screenSize.iHeight/2),TSize(10,10),_L("CTRegion::ExposeTestL() J"));
sl@0
   435
sl@0
   436
	CleanupStack::PopAndDestroy(testWin);
sl@0
   437
	}
sl@0
   438
sl@0
   439
#if defined(__MARM_ARM4__)
sl@0
   440
	#define FADING ETrue
sl@0
   441
#elif defined(__MARM__)
sl@0
   442
	#define FADING EFalse
sl@0
   443
#else
sl@0
   444
	#define FADING ETrue
sl@0
   445
#endif
sl@0
   446
void CTRegion::ExposeTest2L()
sl@0
   447
	{
sl@0
   448
	TBool canFade=FADING;
sl@0
   449
#if defined(__MARM_THUMB__)
sl@0
   450
	if (!RegionCanFadeSet)
sl@0
   451
		return;
sl@0
   452
	canFade=RegionCanFade;
sl@0
   453
#endif
sl@0
   454
	INFO_PRINTF1(_L("AUTO REGN ExpostTest2 "));
sl@0
   455
	CBlankWindow* testWin;
sl@0
   456
	RBlankWindow win(TheClient->iWs);
sl@0
   457
	CleanupClosePushL(win);
sl@0
   458
	TSize screenSize=TheClient->iGroup->Size();
sl@0
   459
	TRect topHalf(0,0,screenSize.iWidth/3,screenSize.iHeight/2);
sl@0
   460
	testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0));
sl@0
   461
	CleanupStack::PushL(testWin);
sl@0
   462
	testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight),TheClient->iGroup,*TheGc);
sl@0
   463
	testWin->Win()->EnableRedrawStore(EFalse);
sl@0
   464
	testWin->Win()->SetRequiredDisplayMode(EGray16);
sl@0
   465
	testWin->SetColor(TRgb::Gray16(12));
sl@0
   466
	testWin->RealDraw(ETrue);
sl@0
   467
	win.Construct(*TheClient->iGroup->WinTreeNode(),3456);
sl@0
   468
	win.SetColor(TRgb::Gray4(2));
sl@0
   469
	win.SetExtent(TPoint(0,-screenSize.iHeight),TSize(screenSize.iWidth/3-2,2*screenSize.iHeight));
sl@0
   470
	win.SetShadowHeight(screenSize.iWidth/9);
sl@0
   471
	win.Activate();
sl@0
   472
	TheClient->iWs.Flush();
sl@0
   473
	TheClient->WaitForRedrawsToFinish();
sl@0
   474
	INFO_PRINTF1(_L(" Constructed Windows"));
sl@0
   475
	testWin->DrawNow();
sl@0
   476
	testWin->Win()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly);
sl@0
   477
	testWin->DrawNow(topHalf);
sl@0
   478
	TheClient->iWs.Flush();
sl@0
   479
	INFO_PRINTF1(_L(" Drawn TopHalf Faded"));
sl@0
   480
	TBool retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight/2))
sl@0
   481
						,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(screenSize.iWidth/3,screenSize.iHeight/2)));
sl@0
   482
	TEST(retVal);
sl@0
   483
	if (!retVal)
sl@0
   484
		INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value  - Expected: %d, Actual: %d"), ETrue, retVal);		
sl@0
   485
sl@0
   486
	testWin->DrawNow(topHalf);
sl@0
   487
	TheClient->iWs.Flush();
sl@0
   488
	canFade!=TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(10,10))
sl@0
   489
															,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(10,10)));
sl@0
   490
	TEST(canFade);
sl@0
   491
	if (!canFade)
sl@0
   492
		INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value  - Expected: %d, Actual: %d"), ETrue, canFade);		
sl@0
   493
sl@0
   494
	testWin->DrawNow();
sl@0
   495
	TheClient->iWs.Flush();
sl@0
   496
	INFO_PRINTF1(_L(" All Faded (Flush)"));
sl@0
   497
	
sl@0
   498
	retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight/2))
sl@0
   499
						,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(screenSize.iWidth/3,screenSize.iHeight/2)));
sl@0
   500
	TEST(retVal);
sl@0
   501
	if (!retVal)
sl@0
   502
		INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value  - Expected: %d, Actual: %d"), ETrue, retVal);		
sl@0
   503
sl@0
   504
	testWin->Win()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly);
sl@0
   505
	TheClient->iWs.Flush();
sl@0
   506
	TheClient->WaitForRedrawsToFinish();
sl@0
   507
	INFO_PRINTF1(_L(" Redrawn Screen Unfaded"));
sl@0
   508
	testWin->Win()->Invalidate(topHalf);
sl@0
   509
	testWin->Win()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly);
sl@0
   510
	testWin->DrawNow();
sl@0
   511
	TheClient->iWs.Flush();
sl@0
   512
	INFO_PRINTF1(_L(" Re Drawn Top Half Faded Again"));
sl@0
   513
	retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight/2))
sl@0
   514
						,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(screenSize.iWidth/3,screenSize.iHeight/2)));
sl@0
   515
	TEST(retVal);
sl@0
   516
	if (!retVal)
sl@0
   517
		INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value  - Expected: %d, Actual: %d"), ETrue, retVal);		
sl@0
   518
sl@0
   519
	testWin->DrawNow();
sl@0
   520
	TheClient->iWs.Flush();
sl@0
   521
	INFO_PRINTF1(_L(" Re Drawn Top Half Faded Yet Again"));
sl@0
   522
	canFade!=TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(10,10))
sl@0
   523
															,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(10,10)));
sl@0
   524
	TEST(canFade);
sl@0
   525
	if (!canFade)
sl@0
   526
		INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value  - Expected: %d, Actual: %d"), ETrue, canFade);		
sl@0
   527
sl@0
   528
	testWin->DrawNow();
sl@0
   529
	TheClient->iWs.Flush();
sl@0
   530
	INFO_PRINTF1(_L(" All Faded Again"));
sl@0
   531
	retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight/2))
sl@0
   532
						,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(screenSize.iWidth/3,screenSize.iHeight/2)));
sl@0
   533
	TEST(retVal);
sl@0
   534
	if (!retVal)
sl@0
   535
		INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value  - Expected: %d, Actual: %d"), ETrue, retVal);		
sl@0
   536
sl@0
   537
	CleanupStack::PopAndDestroy(2,&win);
sl@0
   538
	INFO_PRINTF1(_L(" Killed Windows"));
sl@0
   539
	}
sl@0
   540
sl@0
   541
void CTRegion::CoverTestL()
sl@0
   542
	{
sl@0
   543
	CBlankWindow* testWin;
sl@0
   544
	RBlankWindow win(TheClient->iWs);
sl@0
   545
	CleanupClosePushL(win);
sl@0
   546
	TSize screenSize=TheClient->iGroup->Size();
sl@0
   547
	testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0));
sl@0
   548
	CleanupStack::PushL(testWin);
sl@0
   549
	testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight),TheClient->iGroup,*TheGc);
sl@0
   550
	testWin->SetColor(TRgb::Gray4(1));
sl@0
   551
	testWin->RealDraw(ETrue);
sl@0
   552
	win.Construct(*TheClient->iGroup->WinTreeNode(),3456);
sl@0
   553
	win.SetColor(TRgb::Gray4(0));
sl@0
   554
	win.SetExtent(TPoint(screenSize.iWidth/3+30,20),TSize(screenSize.iWidth/3-62,25));
sl@0
   555
	win.SetVisible(EFalse);
sl@0
   556
	win.Activate();
sl@0
   557
	TheClient->iWs.Flush();
sl@0
   558
	TheClient->WaitForRedrawsToFinish();
sl@0
   559
	testWin->DrawNow();
sl@0
   560
	testWin->SetColor(TRgb::Gray4(2));
sl@0
   561
	win.SetVisible(ETrue);
sl@0
   562
	testWin->DrawNow();
sl@0
   563
	TheClient->iWs.Flush();
sl@0
   564
	CheckRectNoMatch(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/3+30,20),TSize(10,10),_L("TRegion::CoverTestL() A"));
sl@0
   565
sl@0
   566
	TheClient->WaitForRedrawsToFinish();
sl@0
   567
	CheckRectNoMatch(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/3+30,20),TSize(10,10),_L("TRegion::CoverTestL() B"));
sl@0
   568
sl@0
   569
	win.SetVisible(EFalse);
sl@0
   570
	TheClient->iWs.Flush();
sl@0
   571
	TheClient->WaitForRedrawsToFinish();
sl@0
   572
	testWin->SetColor(TRgb::Gray4(1));
sl@0
   573
	testWin->Win()->Invalidate();
sl@0
   574
	win.SetVisible(ETrue);
sl@0
   575
	testWin->DrawNow();
sl@0
   576
	TheClient->iWs.Flush();
sl@0
   577
	CheckRectNoMatch(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/3+30,20),TSize(10,10),_L("TRegion::CoverTestL() C"));
sl@0
   578
sl@0
   579
	CleanupStack::PopAndDestroy(2,&win);
sl@0
   580
	}
sl@0
   581
sl@0
   582
void CTRegion::OffsetTestL()
sl@0
   583
	{
sl@0
   584
	CBlankWindow* testWin;
sl@0
   585
	RBlankWindow win(TheClient->iWs);
sl@0
   586
	CleanupClosePushL(win);
sl@0
   587
	TSize screenSize=TheClient->iGroup->Size();
sl@0
   588
	testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0));
sl@0
   589
	CleanupStack::PushL(testWin);
sl@0
   590
	testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight-40),TheClient->iGroup,*TheGc);
sl@0
   591
	testWin->Win()->EnableRedrawStore(EFalse);
sl@0
   592
	testWin->SetColor(TRgb::Gray4(1));
sl@0
   593
	testWin->RealDraw(ETrue);
sl@0
   594
	win.Construct(*testWin->WinTreeNode(),3456);
sl@0
   595
	win.SetColor(TRgb::Gray4(2));
sl@0
   596
	win.SetExtent(TPoint(30,20),TSize(screenSize.iWidth/3-62,25));
sl@0
   597
	win.Activate();
sl@0
   598
	TheClient->iWs.Flush();
sl@0
   599
	TheClient->WaitForRedrawsToFinish();
sl@0
   600
	win.SetVisible(EFalse);
sl@0
   601
	TheClient->iWs.Flush();
sl@0
   602
	testWin->DrawNow();
sl@0
   603
	testWin->SetColor(TRgb::Gray4(2));
sl@0
   604
	testWin->Win()->SetPosition(TPoint(screenSize.iWidth/3+30,35));
sl@0
   605
	testWin->DrawNow();
sl@0
   606
	TheClient->iWs.Flush();
sl@0
   607
	/* Andy - this is verifying that the complete redraw of the window in the second DrawNow only affects part
sl@0
   608
	of the window.  I don't understand it atall.
sl@0
   609
	CheckRectNoMatch(TPoint(screenSize.iWidth/3+60,55),TPoint(screenSize.iWidth/3+70,85),TSize(10,10),_L("CTRegion::OffsetTestL() A"));
sl@0
   610
	*/
sl@0
   611
	TheClient->WaitForRedrawsToFinish();
sl@0
   612
	CheckRect(TPoint(screenSize.iWidth/3+60,55),TPoint(screenSize.iWidth/3+70,85),TSize(screenSize.iWidth/3-62,25),_L("CTRegion::OffsetTestL() A"));
sl@0
   613
sl@0
   614
	win.SetVisible(ETrue);
sl@0
   615
	win.SetVisible(EFalse);
sl@0
   616
	testWin->Win()->SetPosition(TPoint(screenSize.iWidth/3+5,5));
sl@0
   617
	testWin->SetColor(TRgb::Gray4(1));
sl@0
   618
	testWin->DrawNow();
sl@0
   619
	TheClient->iWs.Flush();
sl@0
   620
	CheckRect(TPoint(screenSize.iWidth/3+60,55),TPoint(screenSize.iWidth/3+55,90),TSize(screenSize.iWidth/3-62,25),_L("CTRegion::OffsetTestL() B"));
sl@0
   621
	/* Andy - this is verifying that the complete redraw of the window during DrawNow only affects part
sl@0
   622
	of the window.  I don't understand it atall.
sl@0
   623
	CheckRectNoMatch(TPoint(screenSize.iWidth/3+30,20),TPoint(screenSize.iWidth/3+50,90),TSize(10,10),_L("CTRegion::OffsetTestL() B"));
sl@0
   624
	*/
sl@0
   625
	CleanupStack::PopAndDestroy(2,&win);
sl@0
   626
	}
sl@0
   627
sl@0
   628
void CTRegion::ClipTestL()
sl@0
   629
	{
sl@0
   630
	CBlankWindow* testWin;
sl@0
   631
	RBlankWindow win(TheClient->iWs);
sl@0
   632
	CleanupClosePushL(win);
sl@0
   633
	TSize screenSize=TheClient->iGroup->Size();
sl@0
   634
	testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0));
sl@0
   635
	CleanupStack::PushL(testWin);
sl@0
   636
	testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight),TheClient->iGroup,*TheGc);
sl@0
   637
	testWin->Win()->EnableRedrawStore(EFalse);
sl@0
   638
	testWin->SetColor(TRgb::Gray4(1));
sl@0
   639
	testWin->RealDraw(ETrue);
sl@0
   640
	win.Construct(*testWin->WinTreeNode(),3456);
sl@0
   641
	win.SetColor(TRgb::Gray4(2));
sl@0
   642
	win.SetExtent(TPoint(30,20),TSize(screenSize.iWidth/3-62,25));
sl@0
   643
	win.Activate();
sl@0
   644
	TheClient->iWs.Flush();
sl@0
   645
	TheClient->WaitForRedrawsToFinish();
sl@0
   646
	win.SetVisible(EFalse);
sl@0
   647
	TheClient->iWs.Flush();
sl@0
   648
	testWin->DrawNow();
sl@0
   649
	testWin->SetColor(TRgb::Gray4(2));
sl@0
   650
	User::LeaveIfError(testWin->Win()->SetSizeErr(TSize(screenSize.iWidth/6,screenSize.iHeight-2)));
sl@0
   651
	RRegion invalid;
sl@0
   652
	testWin->Win()->GetInvalidRegion(invalid);
sl@0
   653
	testWin->DrawNow();
sl@0
   654
	TheClient->iWs.Flush();
sl@0
   655
	TBool retVal = !invalid.CheckError();
sl@0
   656
	TEST(retVal);
sl@0
   657
	if (!retVal)
sl@0
   658
		INFO_PRINTF3(_L("!invalid.CheckError() return value  - Expected: %d, Actual: %d"), ETrue, retVal);			
sl@0
   659
	
sl@0
   660
	TEST(invalid.BoundingRect().iBr.iX<=screenSize.iWidth/6);
sl@0
   661
	if (invalid.BoundingRect().iBr.iX>screenSize.iWidth/6)
sl@0
   662
		INFO_PRINTF3(_L("invalid.BoundingRect().iBr.iX<=screenSize.iWidth/6  - Expected: %d, Actual: %d"), screenSize.iWidth/6, invalid.BoundingRect().iBr.iX);			
sl@0
   663
	TheClient->iWs.Finish();
sl@0
   664
	TheClient->WaitForRedrawsToFinish();
sl@0
   665
	testWin->Win()->GetInvalidRegion(invalid);
sl@0
   666
	
sl@0
   667
	retVal = invalid.IsEmpty();
sl@0
   668
	TEST(retVal);
sl@0
   669
	if (!retVal)
sl@0
   670
		{
sl@0
   671
		INFO_PRINTF3(_L("!invalid.CheckError() return value  - Expected: %d, Actual: %d"), ETrue, retVal);
sl@0
   672
		}
sl@0
   673
sl@0
   674
	User::LeaveIfError(testWin->Win()->SetSizeErr(TSize(screenSize.iWidth/3,screenSize.iHeight-4)));
sl@0
   675
	win.SetVisible(ETrue);
sl@0
   676
	win.SetVisible(EFalse);
sl@0
   677
	User::LeaveIfError(testWin->Win()->SetSizeErr(TSize(screenSize.iWidth/6,screenSize.iHeight-6)));
sl@0
   678
	testWin->SetColor(TRgb::Gray4(1));
sl@0
   679
	testWin->DrawNow();
sl@0
   680
	TheClient->iWs.Flush();
sl@0
   681
	//PeterI This is testing an intermediate state i.e. "flicker" and will never pass on mk3
sl@0
   682
/*	CheckRectNoMatch(TPoint(screenSize.iWidth/3+30,20),TPoint(screenSize.iWidth/3+50,90),TSize(10,10),_L("CTRegion::ClipTestL()"));
sl@0
   683
	TEST(retVal);
sl@0
   684
	if (!retVal)
sl@0
   685
		{
sl@0
   686
		INFO_PRINTF3(_L("!CheckRect() return value  - Expected: %d, Actual: %d"), ETrue, retVal);
sl@0
   687
		}
sl@0
   688
		*/
sl@0
   689
	CleanupStack::PopAndDestroy(2,&win);
sl@0
   690
	}
sl@0
   691
sl@0
   692
void CTRegion::RunTestCaseL(TInt /*aCurTestCase*/)
sl@0
   693
	{
sl@0
   694
	((CTRegionStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
sl@0
   695
	switch(++iTest->iState)
sl@0
   696
		{
sl@0
   697
/**
sl@0
   698
@SYMTestCaseID		GRAPHICS-WSERV-0272
sl@0
   699
sl@0
   700
@SYMDEF             DEF081259
sl@0
   701
sl@0
   702
@SYMTestCaseDesc    Test drawing to a region including clipping
sl@0
   703
sl@0
   704
@SYMTestPriority    High
sl@0
   705
sl@0
   706
@SYMTestStatus      Implemented
sl@0
   707
sl@0
   708
@SYMTestActions     Draw to a region that has clipping enabled and the check the
sl@0
   709
					drawing occurs correctly
sl@0
   710
sl@0
   711
@SYMTestExpectedResults Drawing to the region occurs correctly
sl@0
   712
*/
sl@0
   713
		case 1:
sl@0
   714
			{
sl@0
   715
			((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0272"));
sl@0
   716
			iTest->LogSubTest(_L("Main"));
sl@0
   717
			RRegion clippingRegion;
sl@0
   718
			CreateChildWindowsL();
sl@0
   719
			TheClient->iWs.Finish();
sl@0
   720
			TheClient->WaitForRedrawsToFinish();
sl@0
   721
			TSize scrSize(TheClient->iScreen->SizeInPixels());
sl@0
   722
			for(TUint index=0;index<(sizeof(regionRectList)/sizeof(regionRectList[0]));index++)
sl@0
   723
				{
sl@0
   724
				regionRectList[index].SetWidth((regionRectList[index].Width()*scrSize.iWidth)/640);
sl@0
   725
				regionRectList[index].SetHeight((regionRectList[index].Height()*scrSize.iHeight)/240);
sl@0
   726
				clippingRectList[index].SetWidth((clippingRectList[index].Width()*scrSize.iWidth)/640);
sl@0
   727
				clippingRectList[index].SetHeight((clippingRectList[index].Height()*scrSize.iHeight)/240);
sl@0
   728
				originList[index].iX = (originList[index].iX*scrSize.iWidth)/640;
sl@0
   729
				originList[index].iY = (originList[index].iY*scrSize.iHeight)/240;
sl@0
   730
sl@0
   731
				clippingRegion.AddRect(regionRectList[index]);
sl@0
   732
				TestRegionL(clippingRegion,clippingRectList[index],originList[index]);
sl@0
   733
				}
sl@0
   734
			clippingRegion.Close();
sl@0
   735
			DeleteChildWindows();
sl@0
   736
			}
sl@0
   737
			break;
sl@0
   738
/**
sl@0
   739
@SYMTestCaseID		GRAPHICS-WSERV-0273
sl@0
   740
sl@0
   741
@SYMDEF             DEF081259
sl@0
   742
sl@0
   743
@SYMTestCaseDesc    Test drawing to a region including clipping as it is exposed
sl@0
   744
sl@0
   745
@SYMTestPriority    High
sl@0
   746
sl@0
   747
@SYMTestStatus      Implemented
sl@0
   748
sl@0
   749
@SYMTestActions     Draw to a region that has clipping enabled as it is exposed
sl@0
   750
					and the check the drawing occurs correctly
sl@0
   751
sl@0
   752
@SYMTestExpectedResults Drawing to the region occurs correctly
sl@0
   753
*/
sl@0
   754
		case 2:
sl@0
   755
			((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0273"));
sl@0
   756
			//PeterI This appears to be testing "flicker" of a window after an expose
sl@0
   757
			//Mk3 doesn't exhibit this behaviour. Is the flicker expected behaviour?
sl@0
   758
//			iTest->LogSubTest(_L("Expose Test"));
sl@0
   759
//			ExposeTestL();
sl@0
   760
			break;
sl@0
   761
/**
sl@0
   762
@SYMTestCaseID		GRAPHICS-WSERV-0274
sl@0
   763
sl@0
   764
@SYMDEF             DEF081259
sl@0
   765
sl@0
   766
@SYMTestCaseDesc    Test drawing to a region including clipping as it is exposed
sl@0
   767
sl@0
   768
@SYMTestPriority    High
sl@0
   769
sl@0
   770
@SYMTestStatus      Implemented
sl@0
   771
sl@0
   772
@SYMTestActions     Draw to a region that has clipping enabled as it is exposed
sl@0
   773
					and the check the drawing occurs correctly
sl@0
   774
sl@0
   775
@SYMTestExpectedResults Drawing to the region occurs correctly
sl@0
   776
*/
sl@0
   777
		case 3:
sl@0
   778
			((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0274"));
sl@0
   779
			iTest->LogSubTest(_L("Expose Test2"));
sl@0
   780
			ExposeTest2L();
sl@0
   781
			break;
sl@0
   782
/**
sl@0
   783
@SYMTestCaseID		GRAPHICS-WSERV-0275
sl@0
   784
sl@0
   785
@SYMDEF             DEF081259
sl@0
   786
sl@0
   787
@SYMTestCaseDesc    Test drawing to a region including clipping as it is covered
sl@0
   788
sl@0
   789
@SYMTestPriority    High
sl@0
   790
sl@0
   791
@SYMTestStatus      Implemented
sl@0
   792
sl@0
   793
@SYMTestActions     Draw to a region that has clipping enabled as it is covered
sl@0
   794
					and the check the drawing occurs correctly
sl@0
   795
sl@0
   796
@SYMTestExpectedResults Drawing to the region occurs correctly
sl@0
   797
*/
sl@0
   798
		case 4:
sl@0
   799
			((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0275"));
sl@0
   800
			iTest->LogSubTest(_L("Cover Test"));
sl@0
   801
			CoverTestL();
sl@0
   802
			break;
sl@0
   803
/**
sl@0
   804
@SYMTestCaseID		GRAPHICS-WSERV-0276
sl@0
   805
sl@0
   806
@SYMDEF             DEF081259
sl@0
   807
sl@0
   808
@SYMTestCaseDesc    Test drawing to a region including clipping and with an offset
sl@0
   809
sl@0
   810
@SYMTestPriority    High
sl@0
   811
sl@0
   812
@SYMTestStatus      Implemented
sl@0
   813
sl@0
   814
@SYMTestActions     Draw to a region that has clipping enabled and with an offset
sl@0
   815
					and the check the drawing occurs correctly
sl@0
   816
sl@0
   817
@SYMTestExpectedResults Drawing to the region occurs correctly
sl@0
   818
*/
sl@0
   819
		case 5:
sl@0
   820
			((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0276"));
sl@0
   821
			iTest->LogSubTest(_L("Offset Test"));
sl@0
   822
			OffsetTestL();
sl@0
   823
			break;
sl@0
   824
/**
sl@0
   825
@SYMTestCaseID		GRAPHICS-WSERV-0277
sl@0
   826
sl@0
   827
@SYMDEF             DEF081259
sl@0
   828
sl@0
   829
@SYMTestCaseDesc    Test drawing to a region including clipping
sl@0
   830
sl@0
   831
@SYMTestPriority    High
sl@0
   832
sl@0
   833
@SYMTestStatus      Implemented
sl@0
   834
sl@0
   835
@SYMTestActions     Draw to a region that has clipping enabled
sl@0
   836
					and the check the drawing occurs correctly
sl@0
   837
sl@0
   838
@SYMTestExpectedResults Drawing to the region occurs correctly
sl@0
   839
*/
sl@0
   840
		case 6:
sl@0
   841
			((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0277"));
sl@0
   842
			iTest->LogSubTest(_L("Clip Test"));
sl@0
   843
			ClipTestL();
sl@0
   844
			break;
sl@0
   845
		default:
sl@0
   846
			((CTRegionStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
sl@0
   847
			((CTRegionStep*)iStep)->CloseTMSGraphicsStep();
sl@0
   848
			TestComplete();
sl@0
   849
		}
sl@0
   850
	((CTRegionStep*)iStep)->RecordTestResultL();
sl@0
   851
	}
sl@0
   852
sl@0
   853
	
sl@0
   854
__WS_CONSTRUCT_STEP__(Region)