sl@0: // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // Code for testing CWindowGc::SetCurrentRegion sl@0: // sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @test sl@0: @internalComponent - Internal Symbian test code sl@0: */ sl@0: sl@0: #include "TRegion.H" sl@0: sl@0: TBool RegionCanFade; sl@0: TBool RegionCanFadeSet; sl@0: sl@0: LOCAL_D TBuf<0x10> text=_L("SOME TEXT"); sl@0: LOCAL_D TPoint textRefPos(210, 80); sl@0: sl@0: LOCAL_D TRect regionRectList[]={ sl@0: TRect(0,0,0,0), TRect(30,10,70,40),TRect(60,30,80,70),TRect(10,110,70,170), sl@0: TRect(190,0,240,60),TRect(62,63,67,115),TRect(0,180,240,200),TRect(40,50,210,130), sl@0: TRect(160,130,190,160),TRect(100,140,140,170),TRect(140,170,100,140),TRect(90,120,230,200)}; sl@0: LOCAL_D TRect clippingRectList[]={ sl@0: TRect(0,0,200,400), TRect(30,10,500,600),TRect(-60,0,80,70),TRect(20,0,170,500), sl@0: TRect(0,0,2000,6000),TRect(-1000,-2000,123,195),TRect(10,10,230,190),TRect(0,0,510,730), sl@0: TRect(110,30,190,150),TRect(1,1,500,11170),TRect(0,0,800,940),TRect(-10,-20,240,210)}; sl@0: LOCAL_D TPoint originList[]={ sl@0: TPoint(0,0),TPoint(10,0),TPoint(0,10),TPoint(-5,-20), sl@0: TPoint(1,1),TPoint(0,0),TPoint(0,0),TPoint(100,0), sl@0: TPoint(0,111),TPoint(90,40),TPoint(0,0),TPoint(-1,0)}; sl@0: sl@0: CTRegion::CTRegion(CTestStep* aStep) : CTWsGraphicsBase(aStep) sl@0: { sl@0: } sl@0: sl@0: void CTRegion::ConstructL() sl@0: { sl@0: iDrawableSize=TestWin->Size(); sl@0: // sl@0: User::LeaveIfError(TheClient->iScreen->GetNearestFontToDesignHeightInTwips((CFont *&)iFont,TFontSpec(_L("Arial"),200))); sl@0: User::LeaveIfError(iPicture.Load(TEST_BITMAP_NAME,0)); sl@0: sl@0: iBitmap = new (ELeave) CWsBitmap(TheClient->iWs); sl@0: User::LeaveIfError(iBitmap->Create(TSize(iDrawableSize.iWidth+1,iDrawableSize.iHeight),EGray16)); sl@0: iBitmap->SetSizeInTwips(TheClient->iScreen); sl@0: iBitmapDevice=CFbsBitmapDevice::NewL(iBitmap); sl@0: User::LeaveIfError(iBitmapDevice->CreateContext(iBitGc)); sl@0: User::LeaveIfError(iBitmapDevice->GetNearestFontToDesignHeightInTwips((CFont *&)iBitFont,TFontSpec(_L("Arial"),200))); sl@0: } sl@0: sl@0: CTRegion::~CTRegion() sl@0: { sl@0: delete iBitGc; sl@0: TheClient->iScreen->ReleaseFont(iFont); sl@0: if (iBitmapDevice) sl@0: iBitmapDevice->ReleaseFont(iBitFont); sl@0: delete iBitmapDevice; sl@0: DeleteChildWindows(); sl@0: delete iBitmap; sl@0: } sl@0: sl@0: void CTRegion::CreateChildWindowsL() sl@0: { sl@0: TSize screenSize=TheClient->iGroup->Size(); sl@0: TInt winWidth=(screenSize.iWidth/3)-10; sl@0: TInt winHeight=screenSize.iHeight-10; sl@0: iBaseChildWin=new(ELeave) CBlankWindow(); sl@0: iBaseChildWin->SetUpL(BaseWin->Win()->InquireOffset(*TheClient->iGroup->GroupWin())+TPoint(winWidth>>2,winHeight>>2),TSize(winWidth>>2,winHeight>>1),TheClient->iGroup,*TheClient->iGc); sl@0: iBaseChildWin->Win()->SetShadowHeight(2); sl@0: iTestChildWin=new(ELeave) CBlankWindow(); sl@0: iTestChildWin->SetUpL(TestWin->Win()->InquireOffset(*TheClient->iGroup->GroupWin())+TPoint(winWidth>>2,winHeight>>2),TSize(winWidth>>2,winHeight>>1),TheClient->iGroup,*TheClient->iGc); sl@0: } sl@0: sl@0: void CTRegion::DeleteChildWindows() sl@0: { sl@0: delete iBaseChildWin; sl@0: iBaseChildWin=NULL; sl@0: delete iTestChildWin; sl@0: iTestChildWin=NULL; sl@0: } sl@0: sl@0: void CTRegion::DrawNonClippedSample1(CBitmapContext &aGc) sl@0: { sl@0: aGc.SetPenColor(TRgb::Gray4(0)); sl@0: aGc.SetBrushColor(TRgb::Gray4(2)); sl@0: aGc.SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: aGc.DrawRect(TRect(TPoint(30,100), TPoint(120,200))); sl@0: TheClient->iWs.Flush(); sl@0: } sl@0: sl@0: void CTRegion::DrawClippedSample1(CBitmapContext &aGc) sl@0: { sl@0: aGc.SetPenColor(TRgb::Gray4(0)); sl@0: aGc.SetBrushColor(TRgb::Gray4(1)); sl@0: aGc.SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: aGc.DrawRect(TRect(TSize(100,200))); sl@0: sl@0: // aGc.BitBlt(TPoint(55,65), iPicture); sl@0: sl@0: aGc.SetPenStyle(CGraphicsContext::ENullPen); sl@0: aGc.SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: aGc.SetBrushColor(TRgb::Gray4(2)); sl@0: aGc.DrawEllipse(TRect(TPoint(20,35), TPoint(90,79))); sl@0: sl@0: aGc.SetBrushColor(TRgb::Gray4(0)); sl@0: aGc.DrawEllipse(TRect(TPoint(110,110), TPoint(175,200))); sl@0: sl@0: aGc.SetBrushColor(TRgb::Gray4(1)); sl@0: aGc.DrawEllipse(TRect(TPoint(170,30), TPoint(220,150))); sl@0: sl@0: aGc.SetBrushColor(TRgb::Gray4(3)); sl@0: aGc.DrawEllipse(TRect(TPoint(0,150), TPoint(240,190))); sl@0: sl@0: aGc.SetPenStyle(CGraphicsContext::ESolidPen); sl@0: aGc.SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: TheClient->iWs.Flush(); sl@0: } sl@0: sl@0: void CTRegion::DrawNonClippedSample2(CBitmapContext &aGc, CFont *aFont) sl@0: { sl@0: aGc.SetPenColor(TRgb::Gray4(0)); sl@0: aGc.SetPenColor(TRgb::Gray4(0)); sl@0: aGc.UseFont(aFont); sl@0: TPoint textPos=textRefPos-TPoint(iFont->TextWidthInPixels(text)*3/4, 0); sl@0: aGc.DrawText(text, textPos); sl@0: aGc.DiscardFont(); sl@0: sl@0: TheClient->iWs.Flush(); sl@0: } sl@0: sl@0: void CTRegion::DrawClippedSample2(CBitmapContext &aGc, CFont *aFont) sl@0: { sl@0: aGc.SetPenColor(TRgb::Gray4(0)); sl@0: aGc.SetPenColor(TRgb::Gray4(2)); sl@0: aGc.UseFont(aFont); sl@0: TPoint textPos=textRefPos-TPoint(iFont->TextWidthInPixels(text)*3/4, -20); sl@0: aGc.DrawText(text, textPos); sl@0: aGc.DiscardFont(); sl@0: aGc.SetBrushColor(TRgb::Gray4(3)); sl@0: aGc.SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: aGc.DrawRect(TRect(TPoint(10,100), TPoint(210,120))); sl@0: TheClient->iWs.Flush(); sl@0: } sl@0: sl@0: void CTRegion::DrawClippedSample3(CBitmapContext &aGc) sl@0: { sl@0: aGc.SetPenColor(TRgb::Gray4(0)); sl@0: aGc.SetPenColor(TRgb::Gray4(2)); sl@0: aGc.DrawRect(TRect(TPoint(10,200), TPoint(20,210))); sl@0: } sl@0: sl@0: void CTRegion::DrawNonClippedSample1(CTWin *aWindow, const TPoint &aOrigin) sl@0: { sl@0: TheGc->Activate(*aWindow->Win()); sl@0: TheGc->SetOrigin(aOrigin); sl@0: DrawNonClippedSample1(*TheGc); sl@0: TheGc->Deactivate(); sl@0: } sl@0: sl@0: void CTRegion::DrawNonClippedSample1(CTWin *aWindow, const TRegion &aRegion, const TPoint &aOrigin) sl@0: { sl@0: TheGc->Activate(*aWindow->Win()); sl@0: TheGc->SetOrigin(aOrigin); sl@0: TheGc->SetClippingRegion(aRegion); sl@0: DrawNonClippedSample1(*TheGc); sl@0: TheGc->Deactivate(); sl@0: } sl@0: sl@0: void CTRegion::DrawClippedSample1(TestWindow *aWindow, const TRegion &aRegion, const TRect &aClippingRect, const TPoint &aOrigin) sl@0: { sl@0: TheGc->Activate(*aWindow->Win()); sl@0: TheGc->SetOrigin(aOrigin); sl@0: TheGc->SetClippingRegion(aRegion); sl@0: TheGc->SetClippingRect(aClippingRect); sl@0: DrawClippedSample1(*TheGc); sl@0: TheGc->Deactivate(); sl@0: } sl@0: sl@0: void CTRegion::DrawNonClippedSample2(CTWin *aWindow, const TPoint &aOrigin) sl@0: { sl@0: TheGc->Activate(*aWindow->Win()); sl@0: TheGc->SetOrigin(aOrigin); sl@0: DrawNonClippedSample2(*TheGc,iFont); sl@0: TheGc->Deactivate(); sl@0: } sl@0: sl@0: void CTRegion::DrawNonClippedSample2(CTWin *aWindow, const TRegion &aRegion, const TPoint &aOrigin) sl@0: { sl@0: TheGc->Activate(*aWindow->Win()); sl@0: TheGc->SetOrigin(aOrigin); sl@0: TheGc->SetClippingRegion(aRegion); sl@0: DrawNonClippedSample2(*TheGc,iFont); sl@0: TheGc->Deactivate(); sl@0: } sl@0: sl@0: void CTRegion::DrawClippedSample2(TestWindow *aWindow, const TRegion &aRegion, const TRect &aClippingRect, const TPoint &aOrigin) sl@0: { sl@0: TheGc->Activate(*aWindow->Win()); sl@0: TheGc->SetClippingRegion(TRegionFix<1>()); sl@0: DrawClippedSample3(*TheGc); // needed to trigger region update in wserv sl@0: TheGc->SetOrigin(aOrigin); sl@0: TheGc->SetClippingRect(aClippingRect); sl@0: TheGc->SetClippingRegion(aRegion); sl@0: DrawClippedSample2(*TheGc,iFont); sl@0: TheGc->CancelClippingRegion(); sl@0: TheGc->Deactivate(); sl@0: } sl@0: sl@0: void CTRegion::ClearBitmapAndWindows() sl@0: { sl@0: TestWin->Win()->Invalidate(); sl@0: TestWin->Win()->BeginRedraw(); sl@0: TheGc->Activate(*TestWin->Win()); sl@0: TheGc->SetBrushColor(TRgb::Gray4(3)); sl@0: TheGc->Clear(); sl@0: TheGc->Deactivate(); sl@0: TestWin->Win()->EndRedraw(); sl@0: // sl@0: BaseWin->Win()->Invalidate(); sl@0: BaseWin->Win()->BeginRedraw(); sl@0: TheGc->Activate(*BaseWin->Win()); sl@0: TheGc->SetBrushColor(TRgb::Gray4(3)); sl@0: TheGc->Clear(); sl@0: TheGc->Deactivate(); sl@0: BaseWin->Win()->EndRedraw(); sl@0: // sl@0: iBitGc->SetBrushColor(TRgb::Gray4(3)); sl@0: iBitGc->Clear(); sl@0: TheClient->iWs.Flush(); sl@0: } sl@0: sl@0: void CTRegion::TestRegionL(const TRegion &aClippingRegion, const TRect &aClippingRect, const TPoint &aOrigin) sl@0: { sl@0: if (aClippingRegion.CheckError()) sl@0: User::Leave(KErrGeneral); sl@0: ClearBitmapAndWindows(); sl@0: sl@0: // draw to iWindow1 (clipping intermittently) and iBitmap (not clipping) sl@0: DrawNonClippedSample1(TestWin,aOrigin); sl@0: DrawNonClippedSample1(*iBitGc); sl@0: sl@0: DrawNonClippedSample2(TestWin,aOrigin); sl@0: DrawNonClippedSample2(*iBitGc, iBitFont); sl@0: sl@0: DrawClippedSample1(TestWin,aClippingRegion,aClippingRect,aOrigin); sl@0: DrawClippedSample1(*iBitGc); sl@0: sl@0: DrawClippedSample2(TestWin,aClippingRegion,aClippingRect,aOrigin); sl@0: DrawClippedSample2(*iBitGc, iBitFont); sl@0: sl@0: // copy each rectangle of the clipping region from iBitmap to iWindow2 sl@0: TheGc->Activate(*BaseWin->Win()); sl@0: for (TUint i=0; i<(TUint)aClippingRegion.Count(); i++) sl@0: { sl@0: TRect rect=aClippingRegion.RectangleList()[i]; sl@0: rect.Intersection(aClippingRect); sl@0: TheGc->SetOrigin(aOrigin); sl@0: TheGc->BitBlt(rect.iTl, iBitmap, rect); sl@0: TheClient->Flush(); sl@0: } sl@0: TheGc->Deactivate(); sl@0: sl@0: // draw the non-clipped samples to everywhere in iWindow2 *except* the clipping region sl@0: RRegion inverseClippingRegion(TRect(-aOrigin,iDrawableSize)); sl@0: RRegion clip; sl@0: clip.Copy(aClippingRegion); sl@0: clip.ClipRect(aClippingRect); sl@0: inverseClippingRegion.SubRegion(clip); sl@0: clip.Close(); sl@0: DrawNonClippedSample1(BaseWin,inverseClippingRegion,aOrigin); sl@0: DrawNonClippedSample2(BaseWin,inverseClippingRegion,aOrigin); sl@0: inverseClippingRegion.Close(); sl@0: CompareWindows(_L("CTRegion::TestRegionL")); sl@0: } sl@0: sl@0: void CTRegion::CompareRectsL(TPoint aTl1,TPoint aTl2,TSize aSize) sl@0: { sl@0: _LIT(KError,"Pixels Differ: (%d,%d),(%d,%d)"); sl@0: CFbsScreenDevice* device; sl@0: device=CFbsScreenDevice::NewL(KNullDesC,iBaseChildWin->BaseWin()->DisplayMode()); sl@0: TPoint br=aTl1+aSize; sl@0: TInt startX1=aTl1.iX; sl@0: TInt startX2=aTl2.iX; sl@0: TSize pixelSize(1,1); sl@0: TPoint zero; sl@0: while(aTl1.iYRectCompare(TRect(aTl1,pixelSize),*device,TRect(aTl2,pixelSize))) sl@0: { sl@0: RDebug::Print(KError,aTl1.iX,aTl1.iY,aTl2.iX,aTl2.iY); sl@0: iTest->LogColors(*device,zero,aTl1,aTl1); sl@0: iTest->LogColors(*device,zero,aTl2,aTl2); sl@0: } sl@0: ++aTl1.iX; sl@0: ++aTl2.iX; sl@0: } sl@0: aTl1.iX=startX1; sl@0: aTl2.iX=startX2; sl@0: ++aTl1.iY; sl@0: ++aTl2.iY; sl@0: } sl@0: } sl@0: sl@0: void CTRegion::ScrollBugL() sl@0: { sl@0: CBlankWindow* testWin; sl@0: RBlankWindow win(TheClient->iWs); sl@0: CleanupClosePushL(win); sl@0: TSize screenSize=TheClient->iGroup->Size(); sl@0: testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0)); sl@0: CleanupStack::PushL(testWin); sl@0: //testWin->ConstructL(*TheClient->iGroup); sl@0: testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight),TheClient->iGroup,*TheGc); sl@0: //testWin->Win()->SetBackgroundColor(TRgb::Gray2(1)); sl@0: testWin->Win()->EnableRedrawStore(EFalse); sl@0: testWin->SetColor(TRgb::Gray4(1)); sl@0: testWin->RealDraw(ETrue); sl@0: win.Construct(*TheClient->iGroup->WinTreeNode(),3456); sl@0: win.SetColor(TRgb::Gray4(2)); sl@0: win.SetExtent(TPoint(screenSize.iWidth/3+30,20),TSize(screenSize.iWidth/3-62,25)); sl@0: win.Activate(); sl@0: TheClient->iWs.Flush(); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: win.SetVisible(EFalse); sl@0: TheClient->iWs.Flush(); sl@0: testWin->Win()->BeginRedraw(); sl@0: testWin->DrawNow(); sl@0: testWin->SetColor(TRgb::Gray4(2)); sl@0: testWin->Win()->Scroll(TPoint(0,-50)); sl@0: testWin->DrawNow(); sl@0: testWin->Win()->EndRedraw(); sl@0: TheClient->iWs.Flush(); sl@0: TBool retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight/2-30)) sl@0: ,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2-30),TSize(screenSize.iWidth/3,screenSize.iHeight/2-30))); sl@0: TEST(retVal); sl@0: if (!retVal) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value - Expected: %d, Actual: %d"), ETrue, retVal); sl@0: sl@0: retVal = !TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight-60),TSize(10,10)) sl@0: ,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight-50),TSize(10,10))); sl@0: TEST(retVal); sl@0: if (!retVal) sl@0: INFO_PRINTF3(_L("!TheClient->iScreen->RectCompare() return value - Expected: %d, Actual: %d"), ETrue, retVal); sl@0: sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: win.SetVisible(ETrue); sl@0: win.SetVisible(EFalse); sl@0: testWin->Win()->BeginRedraw(); sl@0: testWin->Win()->Scroll(TPoint(0,-50)); sl@0: testWin->SetColor(TRgb::Gray4(1)); sl@0: testWin->DrawNow(); sl@0: testWin->Win()->EndRedraw(); sl@0: TheClient->iWs.Flush(); sl@0: retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3+35,0),TSize(screenSize.iWidth/6-35,100)) sl@0: ,TRect(TPoint(screenSize.iWidth/2,0),TSize(screenSize.iWidth/6-35,100))); sl@0: TEST(retVal); sl@0: if (!retVal) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value - Expected: %d, Actual: %d"), ETrue, retVal); sl@0: sl@0: retVal = !TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3+30,20),TSize(10,10)) sl@0: ,TRect(TPoint(screenSize.iWidth/3+30,50),TSize(10,10))); sl@0: TEST(retVal); sl@0: if (!retVal) sl@0: INFO_PRINTF3(_L("!TheClient->iScreen->RectCompare() return value - Expected: %d, Actual: %d"), ETrue, retVal); sl@0: sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: testWin->Win()->BeginRedraw(); sl@0: testWin->DrawNow(); sl@0: testWin->Win()->EndRedraw(); sl@0: CleanupStack::PopAndDestroy(2,&win); sl@0: } sl@0: sl@0: void CTRegion::ExposeTestL() sl@0: { sl@0: CBlankWindow* testWin; sl@0: TSize screenSize=TheClient->iGroup->Size(); sl@0: TRect topHalf(0,0,screenSize.iWidth/3,screenSize.iHeight/2); sl@0: TRect leftHalf(0,0,screenSize.iWidth/6,screenSize.iHeight); sl@0: testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0)); sl@0: CleanupStack::PushL(testWin); sl@0: testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight),TheClient->iGroup,*TheGc); sl@0: testWin->Win()->EnableRedrawStore(EFalse); sl@0: testWin->SetColor(TRgb::Gray4(2)); sl@0: testWin->RealDraw(ETrue); sl@0: TheClient->iWs.Flush(); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: testWin->Win()->BeginRedraw(); sl@0: testWin->DrawNow(); sl@0: testWin->Win()->Invalidate(topHalf); sl@0: testWin->SetColor(TRgb::Gray4(1)); sl@0: testWin->DrawNow(); sl@0: testWin->Win()->EndRedraw(); sl@0: TheClient->iWs.Flush(); sl@0: CheckRectNoMatch(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(10,10),_L("CTRegion::ExposeTestL() A")); sl@0: sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: 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: sl@0: testWin->Win()->Invalidate(topHalf); sl@0: testWin->SetColor(TRgb::Gray4(2)); sl@0: testWin->Win()->BeginRedraw(); sl@0: testWin->Win()->Invalidate(leftHalf); sl@0: testWin->DrawNow(); sl@0: testWin->Win()->EndRedraw(); sl@0: TheClient->iWs.Flush(); sl@0: 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: CheckRectNoMatch(TPoint(screenSize.iWidth/2,0),TPoint(screenSize.iWidth/2,screenSize.iHeight/2),TSize(10,10),_L("CTRegion::ExposeTestL() D")); sl@0: CheckRectNoMatch(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/2,0),TSize(10,10),_L("CTRegion::ExposeTestL() E")); sl@0: 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: testWin->Win()->BeginRedraw(); sl@0: testWin->DrawNow(); sl@0: testWin->Win()->EndRedraw(); sl@0: TheClient->iWs.Flush(); sl@0: sl@0: 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: CheckRectNoMatch(TPoint(screenSize.iWidth/2,0),TPoint(screenSize.iWidth/2,screenSize.iHeight/2),TSize(10,10),_L("CTRegion::ExposeTestL() H")); sl@0: 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: CheckRectNoMatch(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TPoint(screenSize.iWidth/2,screenSize.iHeight/2),TSize(10,10),_L("CTRegion::ExposeTestL() J")); sl@0: sl@0: CleanupStack::PopAndDestroy(testWin); sl@0: } sl@0: sl@0: #if defined(__MARM_ARM4__) sl@0: #define FADING ETrue sl@0: #elif defined(__MARM__) sl@0: #define FADING EFalse sl@0: #else sl@0: #define FADING ETrue sl@0: #endif sl@0: void CTRegion::ExposeTest2L() sl@0: { sl@0: TBool canFade=FADING; sl@0: #if defined(__MARM_THUMB__) sl@0: if (!RegionCanFadeSet) sl@0: return; sl@0: canFade=RegionCanFade; sl@0: #endif sl@0: INFO_PRINTF1(_L("AUTO REGN ExpostTest2 ")); sl@0: CBlankWindow* testWin; sl@0: RBlankWindow win(TheClient->iWs); sl@0: CleanupClosePushL(win); sl@0: TSize screenSize=TheClient->iGroup->Size(); sl@0: TRect topHalf(0,0,screenSize.iWidth/3,screenSize.iHeight/2); sl@0: testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0)); sl@0: CleanupStack::PushL(testWin); sl@0: testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight),TheClient->iGroup,*TheGc); sl@0: testWin->Win()->EnableRedrawStore(EFalse); sl@0: testWin->Win()->SetRequiredDisplayMode(EGray16); sl@0: testWin->SetColor(TRgb::Gray16(12)); sl@0: testWin->RealDraw(ETrue); sl@0: win.Construct(*TheClient->iGroup->WinTreeNode(),3456); sl@0: win.SetColor(TRgb::Gray4(2)); sl@0: win.SetExtent(TPoint(0,-screenSize.iHeight),TSize(screenSize.iWidth/3-2,2*screenSize.iHeight)); sl@0: win.SetShadowHeight(screenSize.iWidth/9); sl@0: win.Activate(); sl@0: TheClient->iWs.Flush(); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: INFO_PRINTF1(_L(" Constructed Windows")); sl@0: testWin->DrawNow(); sl@0: testWin->Win()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); sl@0: testWin->DrawNow(topHalf); sl@0: TheClient->iWs.Flush(); sl@0: INFO_PRINTF1(_L(" Drawn TopHalf Faded")); sl@0: TBool retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight/2)) sl@0: ,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(screenSize.iWidth/3,screenSize.iHeight/2))); sl@0: TEST(retVal); sl@0: if (!retVal) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value - Expected: %d, Actual: %d"), ETrue, retVal); sl@0: sl@0: testWin->DrawNow(topHalf); sl@0: TheClient->iWs.Flush(); sl@0: canFade!=TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(10,10)) sl@0: ,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(10,10))); sl@0: TEST(canFade); sl@0: if (!canFade) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value - Expected: %d, Actual: %d"), ETrue, canFade); sl@0: sl@0: testWin->DrawNow(); sl@0: TheClient->iWs.Flush(); sl@0: INFO_PRINTF1(_L(" All Faded (Flush)")); sl@0: sl@0: retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight/2)) sl@0: ,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(screenSize.iWidth/3,screenSize.iHeight/2))); sl@0: TEST(retVal); sl@0: if (!retVal) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value - Expected: %d, Actual: %d"), ETrue, retVal); sl@0: sl@0: testWin->Win()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly); sl@0: TheClient->iWs.Flush(); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: INFO_PRINTF1(_L(" Redrawn Screen Unfaded")); sl@0: testWin->Win()->Invalidate(topHalf); sl@0: testWin->Win()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); sl@0: testWin->DrawNow(); sl@0: TheClient->iWs.Flush(); sl@0: INFO_PRINTF1(_L(" Re Drawn Top Half Faded Again")); sl@0: retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight/2)) sl@0: ,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(screenSize.iWidth/3,screenSize.iHeight/2))); sl@0: TEST(retVal); sl@0: if (!retVal) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value - Expected: %d, Actual: %d"), ETrue, retVal); sl@0: sl@0: testWin->DrawNow(); sl@0: TheClient->iWs.Flush(); sl@0: INFO_PRINTF1(_L(" Re Drawn Top Half Faded Yet Again")); sl@0: canFade!=TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(10,10)) sl@0: ,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(10,10))); sl@0: TEST(canFade); sl@0: if (!canFade) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value - Expected: %d, Actual: %d"), ETrue, canFade); sl@0: sl@0: testWin->DrawNow(); sl@0: TheClient->iWs.Flush(); sl@0: INFO_PRINTF1(_L(" All Faded Again")); sl@0: retVal = TheClient->iScreen->RectCompare(TRect(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight/2)) sl@0: ,TRect(TPoint(screenSize.iWidth/3,screenSize.iHeight/2),TSize(screenSize.iWidth/3,screenSize.iHeight/2))); sl@0: TEST(retVal); sl@0: if (!retVal) sl@0: INFO_PRINTF3(_L("TheClient->iScreen->RectCompare() return value - Expected: %d, Actual: %d"), ETrue, retVal); sl@0: sl@0: CleanupStack::PopAndDestroy(2,&win); sl@0: INFO_PRINTF1(_L(" Killed Windows")); sl@0: } sl@0: sl@0: void CTRegion::CoverTestL() sl@0: { sl@0: CBlankWindow* testWin; sl@0: RBlankWindow win(TheClient->iWs); sl@0: CleanupClosePushL(win); sl@0: TSize screenSize=TheClient->iGroup->Size(); sl@0: testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0)); sl@0: CleanupStack::PushL(testWin); sl@0: testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight),TheClient->iGroup,*TheGc); sl@0: testWin->SetColor(TRgb::Gray4(1)); sl@0: testWin->RealDraw(ETrue); sl@0: win.Construct(*TheClient->iGroup->WinTreeNode(),3456); sl@0: win.SetColor(TRgb::Gray4(0)); sl@0: win.SetExtent(TPoint(screenSize.iWidth/3+30,20),TSize(screenSize.iWidth/3-62,25)); sl@0: win.SetVisible(EFalse); sl@0: win.Activate(); sl@0: TheClient->iWs.Flush(); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: testWin->DrawNow(); sl@0: testWin->SetColor(TRgb::Gray4(2)); sl@0: win.SetVisible(ETrue); sl@0: testWin->DrawNow(); sl@0: TheClient->iWs.Flush(); sl@0: CheckRectNoMatch(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/3+30,20),TSize(10,10),_L("TRegion::CoverTestL() A")); sl@0: sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: CheckRectNoMatch(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/3+30,20),TSize(10,10),_L("TRegion::CoverTestL() B")); sl@0: sl@0: win.SetVisible(EFalse); sl@0: TheClient->iWs.Flush(); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: testWin->SetColor(TRgb::Gray4(1)); sl@0: testWin->Win()->Invalidate(); sl@0: win.SetVisible(ETrue); sl@0: testWin->DrawNow(); sl@0: TheClient->iWs.Flush(); sl@0: CheckRectNoMatch(TPoint(screenSize.iWidth/3,0),TPoint(screenSize.iWidth/3+30,20),TSize(10,10),_L("TRegion::CoverTestL() C")); sl@0: sl@0: CleanupStack::PopAndDestroy(2,&win); sl@0: } sl@0: sl@0: void CTRegion::OffsetTestL() sl@0: { sl@0: CBlankWindow* testWin; sl@0: RBlankWindow win(TheClient->iWs); sl@0: CleanupClosePushL(win); sl@0: TSize screenSize=TheClient->iGroup->Size(); sl@0: testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0)); sl@0: CleanupStack::PushL(testWin); sl@0: testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight-40),TheClient->iGroup,*TheGc); sl@0: testWin->Win()->EnableRedrawStore(EFalse); sl@0: testWin->SetColor(TRgb::Gray4(1)); sl@0: testWin->RealDraw(ETrue); sl@0: win.Construct(*testWin->WinTreeNode(),3456); sl@0: win.SetColor(TRgb::Gray4(2)); sl@0: win.SetExtent(TPoint(30,20),TSize(screenSize.iWidth/3-62,25)); sl@0: win.Activate(); sl@0: TheClient->iWs.Flush(); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: win.SetVisible(EFalse); sl@0: TheClient->iWs.Flush(); sl@0: testWin->DrawNow(); sl@0: testWin->SetColor(TRgb::Gray4(2)); sl@0: testWin->Win()->SetPosition(TPoint(screenSize.iWidth/3+30,35)); sl@0: testWin->DrawNow(); sl@0: TheClient->iWs.Flush(); sl@0: /* Andy - this is verifying that the complete redraw of the window in the second DrawNow only affects part sl@0: of the window. I don't understand it atall. sl@0: CheckRectNoMatch(TPoint(screenSize.iWidth/3+60,55),TPoint(screenSize.iWidth/3+70,85),TSize(10,10),_L("CTRegion::OffsetTestL() A")); sl@0: */ sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: 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: sl@0: win.SetVisible(ETrue); sl@0: win.SetVisible(EFalse); sl@0: testWin->Win()->SetPosition(TPoint(screenSize.iWidth/3+5,5)); sl@0: testWin->SetColor(TRgb::Gray4(1)); sl@0: testWin->DrawNow(); sl@0: TheClient->iWs.Flush(); sl@0: 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: /* Andy - this is verifying that the complete redraw of the window during DrawNow only affects part sl@0: of the window. I don't understand it atall. sl@0: CheckRectNoMatch(TPoint(screenSize.iWidth/3+30,20),TPoint(screenSize.iWidth/3+50,90),TSize(10,10),_L("CTRegion::OffsetTestL() B")); sl@0: */ sl@0: CleanupStack::PopAndDestroy(2,&win); sl@0: } sl@0: sl@0: void CTRegion::ClipTestL() sl@0: { sl@0: CBlankWindow* testWin; sl@0: RBlankWindow win(TheClient->iWs); sl@0: CleanupClosePushL(win); sl@0: TSize screenSize=TheClient->iGroup->Size(); sl@0: testWin=new(ELeave) CBlankWindow(TRgb::Gray4(0)); sl@0: CleanupStack::PushL(testWin); sl@0: testWin->SetUpL(TPoint(screenSize.iWidth/3,0),TSize(screenSize.iWidth/3,screenSize.iHeight),TheClient->iGroup,*TheGc); sl@0: testWin->Win()->EnableRedrawStore(EFalse); sl@0: testWin->SetColor(TRgb::Gray4(1)); sl@0: testWin->RealDraw(ETrue); sl@0: win.Construct(*testWin->WinTreeNode(),3456); sl@0: win.SetColor(TRgb::Gray4(2)); sl@0: win.SetExtent(TPoint(30,20),TSize(screenSize.iWidth/3-62,25)); sl@0: win.Activate(); sl@0: TheClient->iWs.Flush(); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: win.SetVisible(EFalse); sl@0: TheClient->iWs.Flush(); sl@0: testWin->DrawNow(); sl@0: testWin->SetColor(TRgb::Gray4(2)); sl@0: User::LeaveIfError(testWin->Win()->SetSizeErr(TSize(screenSize.iWidth/6,screenSize.iHeight-2))); sl@0: RRegion invalid; sl@0: testWin->Win()->GetInvalidRegion(invalid); sl@0: testWin->DrawNow(); sl@0: TheClient->iWs.Flush(); sl@0: TBool retVal = !invalid.CheckError(); sl@0: TEST(retVal); sl@0: if (!retVal) sl@0: INFO_PRINTF3(_L("!invalid.CheckError() return value - Expected: %d, Actual: %d"), ETrue, retVal); sl@0: sl@0: TEST(invalid.BoundingRect().iBr.iX<=screenSize.iWidth/6); sl@0: if (invalid.BoundingRect().iBr.iX>screenSize.iWidth/6) sl@0: INFO_PRINTF3(_L("invalid.BoundingRect().iBr.iX<=screenSize.iWidth/6 - Expected: %d, Actual: %d"), screenSize.iWidth/6, invalid.BoundingRect().iBr.iX); sl@0: TheClient->iWs.Finish(); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: testWin->Win()->GetInvalidRegion(invalid); sl@0: sl@0: retVal = invalid.IsEmpty(); sl@0: TEST(retVal); sl@0: if (!retVal) sl@0: { sl@0: INFO_PRINTF3(_L("!invalid.CheckError() return value - Expected: %d, Actual: %d"), ETrue, retVal); sl@0: } sl@0: sl@0: User::LeaveIfError(testWin->Win()->SetSizeErr(TSize(screenSize.iWidth/3,screenSize.iHeight-4))); sl@0: win.SetVisible(ETrue); sl@0: win.SetVisible(EFalse); sl@0: User::LeaveIfError(testWin->Win()->SetSizeErr(TSize(screenSize.iWidth/6,screenSize.iHeight-6))); sl@0: testWin->SetColor(TRgb::Gray4(1)); sl@0: testWin->DrawNow(); sl@0: TheClient->iWs.Flush(); sl@0: //PeterI This is testing an intermediate state i.e. "flicker" and will never pass on mk3 sl@0: /* CheckRectNoMatch(TPoint(screenSize.iWidth/3+30,20),TPoint(screenSize.iWidth/3+50,90),TSize(10,10),_L("CTRegion::ClipTestL()")); sl@0: TEST(retVal); sl@0: if (!retVal) sl@0: { sl@0: INFO_PRINTF3(_L("!CheckRect() return value - Expected: %d, Actual: %d"), ETrue, retVal); sl@0: } sl@0: */ sl@0: CleanupStack::PopAndDestroy(2,&win); sl@0: } sl@0: sl@0: void CTRegion::RunTestCaseL(TInt /*aCurTestCase*/) sl@0: { sl@0: ((CTRegionStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); sl@0: switch(++iTest->iState) sl@0: { sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0272 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test drawing to a region including clipping sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Draw to a region that has clipping enabled and the check the sl@0: drawing occurs correctly sl@0: sl@0: @SYMTestExpectedResults Drawing to the region occurs correctly sl@0: */ sl@0: case 1: sl@0: { sl@0: ((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0272")); sl@0: iTest->LogSubTest(_L("Main")); sl@0: RRegion clippingRegion; sl@0: CreateChildWindowsL(); sl@0: TheClient->iWs.Finish(); sl@0: TheClient->WaitForRedrawsToFinish(); sl@0: TSize scrSize(TheClient->iScreen->SizeInPixels()); sl@0: for(TUint index=0;index<(sizeof(regionRectList)/sizeof(regionRectList[0]));index++) sl@0: { sl@0: regionRectList[index].SetWidth((regionRectList[index].Width()*scrSize.iWidth)/640); sl@0: regionRectList[index].SetHeight((regionRectList[index].Height()*scrSize.iHeight)/240); sl@0: clippingRectList[index].SetWidth((clippingRectList[index].Width()*scrSize.iWidth)/640); sl@0: clippingRectList[index].SetHeight((clippingRectList[index].Height()*scrSize.iHeight)/240); sl@0: originList[index].iX = (originList[index].iX*scrSize.iWidth)/640; sl@0: originList[index].iY = (originList[index].iY*scrSize.iHeight)/240; sl@0: sl@0: clippingRegion.AddRect(regionRectList[index]); sl@0: TestRegionL(clippingRegion,clippingRectList[index],originList[index]); sl@0: } sl@0: clippingRegion.Close(); sl@0: DeleteChildWindows(); sl@0: } sl@0: break; sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0273 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test drawing to a region including clipping as it is exposed sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Draw to a region that has clipping enabled as it is exposed sl@0: and the check the drawing occurs correctly sl@0: sl@0: @SYMTestExpectedResults Drawing to the region occurs correctly sl@0: */ sl@0: case 2: sl@0: ((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0273")); sl@0: //PeterI This appears to be testing "flicker" of a window after an expose sl@0: //Mk3 doesn't exhibit this behaviour. Is the flicker expected behaviour? sl@0: // iTest->LogSubTest(_L("Expose Test")); sl@0: // ExposeTestL(); sl@0: break; sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0274 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test drawing to a region including clipping as it is exposed sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Draw to a region that has clipping enabled as it is exposed sl@0: and the check the drawing occurs correctly sl@0: sl@0: @SYMTestExpectedResults Drawing to the region occurs correctly sl@0: */ sl@0: case 3: sl@0: ((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0274")); sl@0: iTest->LogSubTest(_L("Expose Test2")); sl@0: ExposeTest2L(); sl@0: break; sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0275 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test drawing to a region including clipping as it is covered sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Draw to a region that has clipping enabled as it is covered sl@0: and the check the drawing occurs correctly sl@0: sl@0: @SYMTestExpectedResults Drawing to the region occurs correctly sl@0: */ sl@0: case 4: sl@0: ((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0275")); sl@0: iTest->LogSubTest(_L("Cover Test")); sl@0: CoverTestL(); sl@0: break; sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0276 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test drawing to a region including clipping and with an offset sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Draw to a region that has clipping enabled and with an offset sl@0: and the check the drawing occurs correctly sl@0: sl@0: @SYMTestExpectedResults Drawing to the region occurs correctly sl@0: */ sl@0: case 5: sl@0: ((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0276")); sl@0: iTest->LogSubTest(_L("Offset Test")); sl@0: OffsetTestL(); sl@0: break; sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-WSERV-0277 sl@0: sl@0: @SYMDEF DEF081259 sl@0: sl@0: @SYMTestCaseDesc Test drawing to a region including clipping sl@0: sl@0: @SYMTestPriority High sl@0: sl@0: @SYMTestStatus Implemented sl@0: sl@0: @SYMTestActions Draw to a region that has clipping enabled sl@0: and the check the drawing occurs correctly sl@0: sl@0: @SYMTestExpectedResults Drawing to the region occurs correctly sl@0: */ sl@0: case 6: sl@0: ((CTRegionStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0277")); sl@0: iTest->LogSubTest(_L("Clip Test")); sl@0: ClipTestL(); sl@0: break; sl@0: default: sl@0: ((CTRegionStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); sl@0: ((CTRegionStep*)iStep)->CloseTMSGraphicsStep(); sl@0: TestComplete(); sl@0: } sl@0: ((CTRegionStep*)iStep)->RecordTestResultL(); sl@0: } sl@0: sl@0: sl@0: __WS_CONSTRUCT_STEP__(Region)