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