1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/graphics/windowing/windowserver/test/tauto/TSCROLL.CPP Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,850 @@
1.4 +// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +// Window scroll tests
1.18 +//
1.19 +//
1.20 +
1.21 +/**
1.22 + @file
1.23 + @test
1.24 + @internalComponent - Internal Symbian test code
1.25 +*/
1.26 +
1.27 +#include "TSCROLL.H"
1.28 +
1.29 +#pragma warning(disable : 4710)
1.30 +
1.31 +//
1.32 +// Scroll window, used to test the Scroll() command
1.33 +//
1.34 +
1.35 +void DrawScrollWin(CBitmapContext *aGc, const TPoint &aOffset, const TSize &aSize)
1.36 + {
1.37 + aGc->Clear();
1.38 + TPoint drawBase(-10,-20);
1.39 + TSize drawSize(aSize.iWidth-2*drawBase.iX,aSize.iHeight-2*drawBase.iY);
1.40 + aGc->DrawRect(TRect(drawBase,drawBase+drawSize));
1.41 + TPoint offset=drawBase+aOffset;
1.42 + aGc->SetPenColor(TRgb::Gray4(2));
1.43 +// aGc->SetDrawMode(CGraphicsContext::EDrawModeXOR);
1.44 + aGc->DrawRect(TRect(offset+TPoint(13,23),offset+TPoint(22,32)));
1.45 + TInt xpos,xplus;
1.46 + for(xpos=0,xplus=2;xpos<drawSize.iWidth;xplus+=2,xpos+=xplus)
1.47 + aGc->DrawLine(TPoint(xpos,0)+offset,TPoint(xpos,drawSize.iHeight)+offset);
1.48 + for(TInt ypos=0,yplus=2;ypos<drawSize.iHeight;yplus+=2,ypos+=yplus)
1.49 + aGc->DrawLine(TPoint(0,ypos)+offset,TPoint(drawSize.iWidth,ypos)+offset);
1.50 +//
1.51 + aGc->SetPenColor(TRgb(0,0,0));
1.52 + aGc->SetDrawMode(CGraphicsContext::EDrawModePEN);
1.53 + TheClient->iWs.Flush();
1.54 + for(xpos=0;xpos<drawSize.iWidth;xpos+=16)
1.55 + {
1.56 + aGc->DrawLine(TPoint(xpos,0)+offset,TPoint(drawSize.iWidth,xpos*drawSize.iHeight/drawSize.iWidth)+offset);
1.57 + aGc->DrawLine(TPoint(xpos,0)+offset,TPoint(0,drawSize.iHeight-xpos*drawSize.iHeight/drawSize.iWidth)+offset);
1.58 + aGc->DrawLine(TPoint(xpos,drawSize.iHeight)+offset,TPoint(drawSize.iWidth,drawSize.iHeight-xpos*drawSize.iHeight/drawSize.iWidth)+offset);
1.59 + aGc->DrawLine(TPoint(xpos,drawSize.iHeight)+offset,TPoint(0,xpos*drawSize.iHeight/drawSize.iWidth)+offset);
1.60 + }
1.61 +
1.62 + }
1.63 +
1.64 +CScrollWindowNorm::CScrollWindowNorm() : CTWin()
1.65 + {
1.66 + }
1.67 +
1.68 +void DrawScrollWin(const TPoint &aOffset, const TSize &aSize)
1.69 + {
1.70 + ::DrawScrollWin(TheClient->iGc, aOffset, aSize);
1.71 + }
1.72 +
1.73 +void CScrollWindowNorm::Draw()
1.74 + {
1.75 + DrawScrollWin(iScrollTest->Offset(), Size());
1.76 + }
1.77 +
1.78 +void CScrollWindowNorm::SetScrollTest(CScrollTestBase *aScrollTest)
1.79 + {
1.80 + iScrollTest=aScrollTest;
1.81 + }
1.82 +
1.83 +//
1.84 +// CScrollWindowBackedUp
1.85 +//
1.86 +
1.87 +CScrollWindowBackedUp::CScrollWindowBackedUp(TDisplayMode aDisplayMode) : CTBackedUpWin(aDisplayMode)
1.88 + {
1.89 + }
1.90 +
1.91 +void CScrollWindowBackedUp::Draw()
1.92 + {
1.93 + DrawScrollWin(iScrollTest->Offset(), Size());
1.94 + }
1.95 +
1.96 +void CScrollWindowBackedUp::SetScrollTest(CScrollTestBase *aScrollTest)
1.97 + {
1.98 + iScrollTest=aScrollTest;
1.99 + }
1.100 +
1.101 +//
1.102 +// CScrollTestBase
1.103 +//
1.104 +
1.105 +void CScrollTestBase::Reset()
1.106 + {
1.107 + iOffset=TPoint(0,0);
1.108 + iInvalid.Clear();
1.109 + }
1.110 +
1.111 +void CScrollTestBase::DoInvalidate()
1.112 + {
1.113 + }
1.114 +
1.115 +TPoint CScrollTestBase::Offset() const
1.116 + {
1.117 + return(iOffset);
1.118 + }
1.119 +
1.120 +CScrollTestBase::~CScrollTestBase()
1.121 + {
1.122 + delete iBlankWin;
1.123 + iInvalid.Close();
1.124 + }
1.125 +
1.126 +void CScrollTestBaseNorm::ConstructL(const TPoint &aPos, const TSize &aSize)
1.127 + {
1.128 + iScrollWin=new(ELeave) CScrollWindowNorm();
1.129 + iScrollWin->SetUpL(aPos, aSize, TheClient->iGroup, *TheClient->iGc);
1.130 + iScrollWin->SetScrollTest(this);
1.131 + iSize=iScrollWin->Size();
1.132 + }
1.133 +
1.134 +CScrollTestBaseNorm::~CScrollTestBaseNorm()
1.135 + {
1.136 + delete iScrollWin;
1.137 + }
1.138 +
1.139 +void CScrollTestBaseNorm::Redraw()
1.140 + {
1.141 + iScrollWin->Redraw();
1.142 + }
1.143 +
1.144 +void CScrollTestBaseNorm::Reset()
1.145 + {
1.146 + iScrollWin->Win()->Invalidate();
1.147 + iScrollWin->Redraw();
1.148 + CScrollTestBase::Reset();
1.149 + }
1.150 +
1.151 +CTDrawableWin *CScrollTestBaseNorm::ScrollWin() const
1.152 + {
1.153 + return(iScrollWin);
1.154 + }
1.155 +
1.156 +void CScrollTestBaseNorm::AdjustTestScrollRegion(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect)
1.157 + {
1.158 + RRegion clipped_visible;
1.159 + VisibleRegion(clipped_visible);
1.160 + clipped_visible.ClipRect(aClipRect);
1.161 +//
1.162 +//
1.163 + RRegion invalidate(aRect);
1.164 + invalidate.SubRegion(clipped_visible);
1.165 + invalidate.Offset(aOffset);
1.166 + invalidate.ClipRect(aClipRect);
1.167 +//
1.168 + RRegion invalidate2(aRect);
1.169 + invalidate2.ClipRect(aClipRect);
1.170 + invalidate2.Intersect(iInvalid);
1.171 + invalidate2.Offset(aOffset);
1.172 + invalidate2.ClipRect(aClipRect);
1.173 +//
1.174 + RRegion validate(aRect);
1.175 + validate.Intersect(clipped_visible);
1.176 + validate.SubRegion(iInvalid);
1.177 + validate.Offset(aOffset);
1.178 + validate.ClipRect(aClipRect);
1.179 +//
1.180 + iInvalid.SubRegion(validate);
1.181 + iInvalid.Union(invalidate);
1.182 + iInvalid.Union(invalidate2);
1.183 + RRegion visible;
1.184 + VisibleRegion(visible);
1.185 + iInvalid.Intersect(visible);
1.186 + iInvalid.Tidy();
1.187 +//
1.188 + invalidate2.Close();
1.189 + invalidate.Close();
1.190 + validate.Close();
1.191 + visible.Close();
1.192 + clipped_visible.Close();
1.193 +
1.194 + iOffset+=aOffset;
1.195 + }
1.196 +
1.197 +void CScrollTestBaseNorm::VisibleRegion(RRegion &aRegion)
1.198 + {
1.199 + aRegion.Clear();
1.200 + aRegion.AddRect(TRect(iSize));
1.201 + TRect child;
1.202 + child.iTl=iBlankWin->BaseWin()->InquireOffset(*ScrollWin()->BaseWin());
1.203 + child.iBr=child.iTl+iBlankWin->BaseWin()->Size();
1.204 + aRegion.SubRect(child);
1.205 + }
1.206 +
1.207 +void CScrollWindow1::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect)
1.208 + {
1.209 + TheGc->Activate(*iScrollWin->DrawableWin());
1.210 + RRegion region(aRect);
1.211 + RRegion visible;
1.212 + VisibleRegion(visible);
1.213 + visible.ClipRect(aClipRect);
1.214 + region.Intersect(visible);
1.215 + visible.Close();
1.216 + region.SubRegion(iInvalid);
1.217 + region.Offset(aOffset);
1.218 + region.ClipRect(aClipRect);
1.219 + TheGc->SetClippingRegion(region);
1.220 + TheGc->CopyRect(aOffset,aRect);
1.221 + TheGc->Deactivate();
1.222 + AdjustTestScrollRegion(aClipRect, aOffset,aRect);
1.223 + iInvalid.Union(TRegionFix<1>(TRect(aClipRect)));
1.224 + region.Close();
1.225 + }
1.226 +
1.227 +void CScrollWindow1::DoTestScroll(const TPoint &aOffset)
1.228 + {
1.229 + DoTestScroll(TRect(TPoint(0,0),iSize), aOffset,TRect(-aOffset,iSize));
1.230 + }
1.231 +
1.232 +void CScrollWindow1::DoTestScroll(const TPoint &aOffset, const TRect &aRect)
1.233 + {
1.234 + DoTestScroll(TRect(TPoint(0,0),iSize), aOffset, aRect);
1.235 + }
1.236 +
1.237 +void CScrollWindow1::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset)
1.238 + {
1.239 + DoTestScroll(aClipRect, aOffset, TRect(-aOffset.iX,-aOffset.iY,iSize.iWidth-aOffset.iX, iSize.iHeight-aOffset.iY));
1.240 + }
1.241 +
1.242 +void CScrollWindow1::DoInvalidate()
1.243 + {
1.244 + for(TInt index=0;index<iInvalid.Count();index++)
1.245 + iScrollWin->Invalidate(iInvalid[index]);
1.246 + }
1.247 +
1.248 +void CScrollWindow2::Reset()
1.249 + {
1.250 + CScrollTestBaseNorm::Reset();
1.251 + iClipped=EFalse;
1.252 + }
1.253 +
1.254 +CScrollWindow2::CScrollWindow2(CTScroll *aTest) : iTest(aTest)
1.255 + {
1.256 + }
1.257 +
1.258 +void CScrollWindow2::Draw()
1.259 + {
1.260 + if (iClipped)
1.261 + TheClient->iGc->SetClippingRegion(iInvalid);
1.262 + iScrollWin->Draw();
1.263 + if (iClipped)
1.264 + TheClient->iGc->CancelClippingRegion();
1.265 + }
1.266 +
1.267 +void CScrollWindow2::DoTestScroll(const TPoint &aOffset)
1.268 + {
1.269 + AdjustTestScrollRegion(TRect(iSize), aOffset, TRect(-aOffset.iX,-aOffset.iY,iSize.iWidth-aOffset.iX, iSize.iHeight-aOffset.iY));
1.270 + iClipped=ETrue;
1.271 + iScrollWin->DrawableWin()->Scroll(aOffset);
1.272 + }
1.273 +
1.274 +void CScrollWindow2::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset)
1.275 + {
1.276 + AdjustTestScrollRegion(aClipRect, aOffset, TRect(-aOffset.iX,-aOffset.iY,iSize.iWidth-aOffset.iX, iSize.iHeight-aOffset.iY));
1.277 + iClipped=ETrue;
1.278 + iScrollWin->DrawableWin()->Scroll(aClipRect, aOffset);
1.279 + }
1.280 +
1.281 +void CScrollWindow2::DoTestScroll(const TPoint &aOffset, const TRect &aRect)
1.282 + {
1.283 + AdjustTestScrollRegion(TRect(iSize), aOffset, aRect);
1.284 + iClipped=ETrue;
1.285 + iScrollWin->DrawableWin()->Scroll(aOffset, aRect);
1.286 + }
1.287 +
1.288 +void CScrollWindow2::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect)
1.289 + {
1.290 + AdjustTestScrollRegion(aClipRect, aOffset, aRect);
1.291 + iClipped=ETrue;
1.292 + iScrollWin->DrawableWin()->Scroll(aClipRect, aOffset, aRect);
1.293 + }
1.294 +
1.295 +void CScrollWindow3::DrawScrollBit()
1.296 + {
1.297 + ::DrawScrollWin(iBitmapGc, iOffset, iSize);
1.298 + }
1.299 +
1.300 +void CScrollWindow3::Reset()
1.301 + {
1.302 + CScrollTestBase::Reset();
1.303 + iBitmapGc->Clear(TRect(iSize));
1.304 + DrawScrollBit();
1.305 + DoInvalidate();
1.306 + }
1.307 +
1.308 +CScrollWindow3::~CScrollWindow3()
1.309 + {
1.310 + delete iBitmapGc;
1.311 + delete iBitmapDevice;
1.312 + delete iBitmap;
1.313 + }
1.314 +
1.315 +void CScrollWindow3::ConstructL(const TPoint &aPos, const TSize &aSize)
1.316 + {
1.317 + CScrollTestBaseNorm::ConstructL(aPos,aSize);
1.318 + iBitmap=new(ELeave) CFbsBitmap();
1.319 + User::LeaveIfError(iBitmap->Create(iSize,EGray4));
1.320 + iBitmapDevice=CFbsBitmapDevice::NewL(iBitmap);
1.321 + User::LeaveIfError(iBitmapDevice->CreateContext(iBitmapGc));
1.322 + DrawScrollBit();
1.323 + }
1.324 +
1.325 +void CScrollWindow3::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect)
1.326 + {
1.327 + iOffset+=aOffset;
1.328 + RRegion blank(aRect);
1.329 + TRect clipRect(aClipRect);
1.330 + clipRect.Intersection(TRect(iSize));
1.331 + blank.SubRect(clipRect);
1.332 + blank.Offset(aOffset);
1.333 + blank.ClipRect(clipRect);
1.334 + TRect rect(aRect);
1.335 + rect.Intersection(clipRect);
1.336 + TRect rect2(clipRect);
1.337 + rect2.Move(-aOffset);
1.338 + rect.Intersection(rect2);
1.339 + iBitmapGc->CopyRect(aOffset,rect);
1.340 + iBitmapGc->SetClippingRegion(&blank);
1.341 + iBitmapGc->Clear(TRect(iSize));
1.342 + iBitmapGc->SetClippingRegion(NULL);
1.343 + blank.Close();
1.344 + }
1.345 +
1.346 +void CScrollWindow3::DoTestScroll(const TPoint &aOffset)
1.347 + {
1.348 + DoTestScroll(TRect(iSize), aOffset,TRect(-aOffset.iX,-aOffset.iY,iSize.iWidth-aOffset.iX, iSize.iHeight-aOffset.iY));
1.349 + }
1.350 +
1.351 +void CScrollWindow3::DoTestScroll(const TPoint &aOffset, const TRect &aRect)
1.352 + {
1.353 + DoTestScroll(TRect(iSize), aOffset, aRect);
1.354 + }
1.355 +
1.356 +void CScrollWindow3::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset)
1.357 + {
1.358 + DoTestScroll(aClipRect, aOffset, TRect(-aOffset.iX,-aOffset.iY,iSize.iWidth-aOffset.iX, iSize.iHeight-aOffset.iY));
1.359 + }
1.360 +
1.361 +void CScrollWindow3::Draw()
1.362 + {
1.363 + TheGc->BitBlt(TPoint(),iBitmap);
1.364 + }
1.365 +
1.366 +void CScrollWindow3::DoInvalidate()
1.367 + {
1.368 + RWindow win=*iScrollWin->Win();
1.369 + win.Invalidate();
1.370 + win.BeginRedraw();
1.371 + TheGc->Activate(win);
1.372 + Draw();
1.373 + TheGc->Deactivate();
1.374 + win.EndRedraw();
1.375 + }
1.376 +
1.377 +void CScrollWindow4::ConstructL(const TPoint &aPos, const TSize &aSize)
1.378 + {
1.379 + iScrollWin=new(ELeave) CScrollWindowBackedUp(EGray4);
1.380 + iScrollWin->SetUpL(aPos, aSize, TheClient->iGroup, *TheClient->iGc);
1.381 + iScrollWin->SetScrollTest(this);
1.382 + iSize=iScrollWin->Size();
1.383 + TheClient->iGc->Activate(*iScrollWin->DrawableWin());
1.384 + TheClient->iGc->Clear();
1.385 + DrawScrollWin(TPoint(), iSize);
1.386 + TheClient->iGc->Deactivate();
1.387 + }
1.388 +
1.389 +CScrollWindow4::~CScrollWindow4()
1.390 + {
1.391 + delete iScrollWin;
1.392 + }
1.393 +
1.394 +void CScrollWindow4::Redraw()
1.395 + {
1.396 + }
1.397 +
1.398 +void CScrollWindow4::Reset()
1.399 + {
1.400 + TheClient->iGc->Activate(*iScrollWin->DrawableWin());
1.401 + TheClient->iGc->Clear();
1.402 + DrawScrollWin(TPoint(), iSize);
1.403 + TheClient->iGc->Deactivate();
1.404 + CScrollTestBase::Reset();
1.405 + }
1.406 +
1.407 +void CScrollWindow4::DoTestScroll(const TPoint &aOffset)
1.408 + {
1.409 + iScrollWin->DrawableWin()->Scroll(aOffset);
1.410 + iOffset+=aOffset;
1.411 + }
1.412 +
1.413 +void CScrollWindow4::DoTestScroll(const TPoint &aOffset, const TRect &aRect)
1.414 + {
1.415 + iScrollWin->DrawableWin()->Scroll(aOffset, aRect);
1.416 + iOffset+=aOffset;
1.417 + }
1.418 +
1.419 +void CScrollWindow4::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset)
1.420 + {
1.421 + iScrollWin->DrawableWin()->Scroll(aClipRect, aOffset);
1.422 + iOffset+=aOffset;
1.423 + }
1.424 +
1.425 +void CScrollWindow4::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect)
1.426 + {
1.427 + iScrollWin->DrawableWin()->Scroll(aClipRect, aOffset, aRect);
1.428 + iOffset+=aOffset;
1.429 + }
1.430 +
1.431 +CTDrawableWin *CScrollWindow4::ScrollWin() const
1.432 + {
1.433 + return(iScrollWin);
1.434 + }
1.435 +
1.436 +//
1.437 +
1.438 +CTScroll::CTScroll(CTestStep* aStep):
1.439 + CTWsGraphicsBase(aStep)
1.440 + {
1.441 + }
1.442 +
1.443 +CTScroll::~CTScroll()
1.444 + {
1.445 + BaseWin->SetVisible(ETrue);
1.446 + TestWin->SetVisible(ETrue);
1.447 + delete iBaseScrollWin;
1.448 + delete iTestScrollWin;
1.449 + }
1.450 +
1.451 +void CTScroll::ConstructL()
1.452 + {
1.453 + BaseWin->SetVisible(EFalse);
1.454 + TestWin->SetVisible(EFalse);
1.455 +//
1.456 + iTest->iState=1;
1.457 + TSize screenSize=TheClient->iGroup->Size();
1.458 + TInt winWidth=(screenSize.iWidth/3)-10;
1.459 + TInt winHeight=screenSize.iHeight-10;
1.460 + TInt winBaseX=(screenSize.iWidth/3);
1.461 + if (iMode==0)
1.462 + {
1.463 + iBaseScrollWin=new(ELeave) CScrollWindow1();
1.464 + iTestScrollWin=new(ELeave) CScrollWindow2(this);
1.465 + }
1.466 + else
1.467 + {
1.468 + iBaseScrollWin=new(ELeave) CScrollWindow3();
1.469 + iTestScrollWin=new(ELeave) CScrollWindow4();
1.470 + }
1.471 + iWinSize=TSize(winWidth,winHeight);
1.472 + iBaseScrollWin->ConstructL(TPoint(winBaseX+5,5),iWinSize);
1.473 + iTestScrollWin->ConstructL(TPoint(winBaseX+winWidth+15,5),iWinSize);
1.474 +
1.475 + iBaseScrollWin->iBlankWin=new(ELeave) CTBlankWindow();
1.476 + iBaseScrollWin->iBlankWin->SetUpL(iBaseScrollWin->ScrollWin()->BaseWin()->InquireOffset(*TheClient->iGroup->GroupWin())+TPoint(winWidth>>2,winHeight>>2),TSize(winWidth>>2,winHeight>>1),TheClient->iGroup,*TheClient->iGc);
1.477 + iBaseScrollWin->iBlankWin->BlankWin()->SetShadowHeight(2);
1.478 +
1.479 + iTestScrollWin->iBlankWin=new(ELeave) CTBlankWindow();
1.480 + iTestScrollWin->iBlankWin->SetUpL(iTestScrollWin->ScrollWin()->BaseWin()->InquireOffset(*TheClient->iGroup->GroupWin())+TPoint(winWidth>>2,winHeight>>2),TSize(winWidth>>2,winHeight>>1),TheClient->iGroup,*TheClient->iGc);
1.481 + }
1.482 +
1.483 +void CTScroll::CheckScrollWindows()
1.484 + {
1.485 + CheckRect(iBaseScrollWin->ScrollWin(),iTestScrollWin->ScrollWin(),TRect(iBaseScrollWin->ScrollWin()->Size()),_L("CTScroll::CheckScrollWindows()"));
1.486 + }
1.487 +
1.488 +void CTScroll::DoTestScroll(const TPoint &aOffset)
1.489 + {
1.490 + iTestScrollWin->DoTestScroll(aOffset);
1.491 + iBaseScrollWin->DoTestScroll(aOffset);
1.492 + }
1.493 +
1.494 +void CTScroll::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset)
1.495 + {
1.496 + iTestScrollWin->DoTestScroll(aClipRect,aOffset);
1.497 + iBaseScrollWin->DoTestScroll(aClipRect,aOffset);
1.498 + }
1.499 +
1.500 +void CTScroll::DoTestScroll(const TPoint &aOffset, const TRect &aRect)
1.501 + {
1.502 + iTestScrollWin->DoTestScroll(aOffset,aRect);
1.503 + iBaseScrollWin->DoTestScroll(aOffset,aRect);
1.504 + }
1.505 +
1.506 +void CTScroll::DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect)
1.507 + {
1.508 + iTestScrollWin->DoTestScroll(aClipRect,aOffset,aRect);
1.509 + iBaseScrollWin->DoTestScroll(aClipRect,aOffset,aRect);
1.510 + }
1.511 +
1.512 +void CTScroll::FinishedRectScrolls()
1.513 + {
1.514 + iBaseScrollWin->DoInvalidate();
1.515 + }
1.516 +
1.517 +void CTScroll::CheckOomScroll()
1.518 + {
1.519 + TheClient->iWs.HeapSetFail(RHeap::ENone,0);
1.520 + FinishedRectScrolls();
1.521 + iTestScrollWin->Redraw();
1.522 + iBaseScrollWin->Redraw();
1.523 +// if (iMode!=1) // Out of memory scrolling of backed up windows can not work 100% when out of memory
1.524 +// CheckScrollWindows(); // Redraw window code can't check these cases properly yet
1.525 + }
1.526 +
1.527 +void CTScroll::OomScrolling()
1.528 + {
1.529 + iTestScrollWin->iBlankWin->BaseWin()->SetShadowHeight(0);
1.530 + iBaseScrollWin->iBlankWin->BaseWin()->SetShadowHeight(0);
1.531 + iTestScrollWin->ScrollWin()->BaseWin()->SetShadowHeight(0);
1.532 + iTestScrollWin->Redraw();
1.533 + iBaseScrollWin->Redraw();
1.534 + for(TInt count=1;count<20;count++)
1.535 + {
1.536 + TheClient->iWs.HeapSetFail(RHeap::EDeterministic,count);
1.537 + DoTestScroll(TPoint(50,0));
1.538 + CheckOomScroll();
1.539 + //
1.540 + TheClient->iWs.HeapSetFail(RHeap::EDeterministic,count);
1.541 + iTestScrollWin->Reset();
1.542 + iBaseScrollWin->Reset();
1.543 + DoTestScroll(TPoint(-6,-14),TRect(20,20,100,50));
1.544 + CheckOomScroll();
1.545 + //
1.546 + TheClient->iWs.HeapSetFail(RHeap::EDeterministic,count);
1.547 + iTestScrollWin->Reset();
1.548 + iBaseScrollWin->Reset();
1.549 + DoTestScroll(TRect(TPoint(1,1),iWinSize-TSize(1,1)),TPoint(50,0),TRect(10,10,50,50));
1.550 + CheckOomScroll();
1.551 + }
1.552 + }
1.553 +
1.554 +void CTScroll::RunTestCaseL(TInt /*aCurTestCase*/)
1.555 + {
1.556 + _LIT(KScroll,"Scroll");
1.557 + //if (iTest->iState==0) iTest->iState=22;
1.558 + if (iDoCheck)
1.559 + {
1.560 + if (iMode==1) // The test code does not mimic scrolling to a non-backed up window properly
1.561 + {
1.562 + TheClient->iWs.Flush();
1.563 + TheClient->iWs.Finish();
1.564 + CheckScrollWindows();
1.565 + }
1.566 + iTestScrollWin->Reset();
1.567 + iBaseScrollWin->Reset();
1.568 + TheClient->iWs.Flush();
1.569 + ++iTest->iState;
1.570 + iDoCheck=EFalse;
1.571 + return;
1.572 + }
1.573 + ((CTScrollStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
1.574 + switch(iTest->iState)
1.575 + {
1.576 +/**
1.577 +@SYMTestCaseID GRAPHICS-WSERV-0249
1.578 +
1.579 +@SYMDEF DEF081259
1.580 +
1.581 +@SYMTestCaseDesc Test window scrolling by different offsets
1.582 +
1.583 +@SYMTestPriority High
1.584 +
1.585 +@SYMTestStatus Implemented
1.586 +
1.587 +@SYMTestActions Pass different offsets for scrolling a window by and
1.588 + check the window is scrolled correctly
1.589 +
1.590 +@SYMTestExpectedResults Window scrolls correctly to offsets
1.591 +*/
1.592 + case 1:
1.593 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249"));
1.594 + //DemoWindowScroll();
1.595 + iTest->LogSubTest(KScroll);
1.596 + DoTestScroll(TPoint(6,0));
1.597 + DoTestScroll(TPoint(-6,-14));
1.598 + DoTestScroll(TPoint(-6,-14));
1.599 + DoTestScroll(TPoint(0,10));
1.600 + DoTestScroll(TPoint(0,0));
1.601 + DoTestScroll(TPoint(10,23));
1.602 + break;
1.603 + case 2:
1.604 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249"));
1.605 + iTest->LogSubTest(KScroll);
1.606 + DoTestScroll(TPoint(50,0));
1.607 + break;
1.608 + case 3:
1.609 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249"));
1.610 + iTest->LogSubTest(KScroll);
1.611 + DoTestScroll(TPoint(0,33));
1.612 + break;
1.613 + case 4:
1.614 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249"));
1.615 + iTest->LogSubTest(KScroll);
1.616 + DoTestScroll(TPoint(-10,0));
1.617 + break;
1.618 + case 5:
1.619 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249"));
1.620 + iTest->LogSubTest(KScroll);
1.621 + DoTestScroll(TPoint(0,-13));
1.622 + break;
1.623 + case 6:
1.624 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249"));
1.625 + iTest->LogSubTest(KScroll);
1.626 + DoTestScroll(TPoint(0,0));
1.627 + break;
1.628 + case 7:
1.629 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249"));
1.630 + iTest->LogSubTest(KScroll);
1.631 + DoTestScroll(TPoint(-234,-1400));
1.632 + break;
1.633 + case 8:
1.634 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249"));
1.635 + iTest->LogSubTest(KScroll);
1.636 + DoTestScroll(TPoint(-69,15));
1.637 + break;
1.638 + case 9:
1.639 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249"));
1.640 + iTest->LogSubTest(KScroll);
1.641 + DoTestScroll(TPoint(-234,-1400));
1.642 + DoTestScroll(TPoint(233,1401));
1.643 + break;
1.644 + case 10:
1.645 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0249"));
1.646 + iTest->LogSubTest(KScroll);
1.647 + DoTestScroll(TPoint(10,-1));
1.648 + DoTestScroll(TPoint(11,-10));
1.649 + DoTestScroll(TPoint(-5,-40));
1.650 + DoTestScroll(TPoint(0,50));
1.651 + break;
1.652 +
1.653 +/**
1.654 +@SYMTestCaseID GRAPHICS-WSERV-0250
1.655 +
1.656 +@SYMDEF DEF081259
1.657 +
1.658 +@SYMTestCaseDesc Test window scrolling by different offsets and
1.659 + source rectangles
1.660 +
1.661 +@SYMTestPriority High
1.662 +
1.663 +@SYMTestStatus Implemented
1.664 +
1.665 +@SYMTestActions Pass different offsets for scroll a window by and
1.666 + different source rectangles.
1.667 + Check the window is scrolled correctly
1.668 +
1.669 +@SYMTestExpectedResults Window scrolls correctly to offsets and source
1.670 + rectangles
1.671 +*/
1.672 + case 11:
1.673 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0250"));
1.674 + iTest->LogSubTest(KScroll);
1.675 + DoTestScroll(TPoint(-6,-14),TRect(20,20,100,50));
1.676 + DoTestScroll(TPoint(-6,-14),TRect(20,20,100,50));
1.677 + DoTestScroll(TPoint(-6,-14),TRect(40,10,130,130));
1.678 + break;
1.679 + case 12:
1.680 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0250"));
1.681 + iTest->LogSubTest(KScroll);
1.682 + DoTestScroll(TPoint(10,-1),TRect(20,20,21,21));
1.683 + break;
1.684 + case 13:
1.685 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0250"));
1.686 + iTest->LogSubTest(KScroll);
1.687 + DoTestScroll(TPoint(-20,-14),TRect(10,10,10,10));
1.688 + break;
1.689 + case 14:
1.690 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0250"));
1.691 + iTest->LogSubTest(KScroll);
1.692 + DoTestScroll(TPoint(-6,-14),TRect(20,20,200,300));
1.693 + DoTestScroll(TPoint(10,-24),TRect(20,20,200,300));
1.694 + DoTestScroll(TPoint(3,12),TRect(20,20,200,300));
1.695 + DoTestScroll(TPoint(-20,19),TRect(20,20,200,300));
1.696 + break;
1.697 + case 15:
1.698 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0250"));
1.699 + iTest->LogSubTest(KScroll);
1.700 + DoTestScroll(TPoint(-6,-14),TRect(20000,200000,30000,300000));
1.701 + DoTestScroll(TPoint(10,-24),TRect(20,20,-200,-300));
1.702 + DoTestScroll(TPoint(10,-24),TRect(20,20,-200,300));
1.703 + DoTestScroll(TPoint(10,-24),TRect(20,20,200,-300));
1.704 + DoTestScroll(TPoint(3,12),TRect(-100,-200,1000,2000));
1.705 + DoTestScroll(TPoint(-20,19),TRect(0,0,0,0));
1.706 + break;
1.707 +
1.708 +/**
1.709 +@SYMTestCaseID GRAPHICS-WSERV-0251
1.710 +
1.711 +@SYMDEF DEF081259
1.712 +
1.713 +@SYMTestCaseDesc Test window scrolling by different offsets and
1.714 + clipping rectangles
1.715 +
1.716 +@SYMTestPriority High
1.717 +
1.718 +@SYMTestStatus Implemented
1.719 +
1.720 +@SYMTestActions Pass different offsets for scroll a window by and
1.721 + different clipping rectangles.
1.722 + Check the window is scrolled correctly
1.723 +
1.724 +@SYMTestExpectedResults Window scrolls correctly to offsets and clipping
1.725 + rectangles
1.726 +*/
1.727 + case 16:
1.728 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0251"));
1.729 + iTest->LogSubTest(KScroll);
1.730 + DoTestScroll(TRect(10,10,200,200),TPoint(-6,-14));
1.731 + break;
1.732 + case 17:
1.733 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0251"));
1.734 + iTest->LogSubTest(KScroll);
1.735 + DoTestScroll(TRect(10,50,210,200),TPoint(10,20));
1.736 + DoTestScroll(TRect(0,0,100,100),TPoint(-22,4));
1.737 + DoTestScroll(TRect(50,50,300,500),TPoint(-5,-2));
1.738 + break;
1.739 + case 18:
1.740 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0251"));
1.741 + iTest->LogSubTest(KScroll);
1.742 + DoTestScroll(TRect(-1000,-10000,23456,1111),TPoint(-6,-14));
1.743 + break;
1.744 + case 19:
1.745 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0251"));
1.746 + iTest->LogSubTest(KScroll);
1.747 + DoTestScroll(TRect(20,5,198,202),TPoint(-100,1));
1.748 + DoTestScroll(TRect(1,1,200,123),TPoint(2,1));
1.749 + DoTestScroll(TRect(23,23,200,400),TPoint(5,-1));
1.750 + break;
1.751 + case 20:
1.752 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0251"));
1.753 + iTest->LogSubTest(KScroll);
1.754 + DoTestScroll(TRect(0,0,0,0),TPoint(-10,1));
1.755 + DoTestScroll(TRect(-1000,1,2000,123),TPoint(2,1));
1.756 + DoTestScroll(TRect(23,-23,200,40000),TPoint(5,-1));
1.757 + DoTestScroll(TRect(-1000,-10000,23456,1111),TPoint(-6,-14));
1.758 + break;
1.759 +
1.760 +/**
1.761 +@SYMTestCaseID GRAPHICS-WSERV-0252
1.762 +
1.763 +@SYMDEF DEF081259
1.764 +
1.765 +@SYMTestCaseDesc Test window scrolling by different offsets and
1.766 + clipping ans source rectangles
1.767 +
1.768 +@SYMTestPriority High
1.769 +
1.770 +@SYMTestStatus Implemented
1.771 +
1.772 +@SYMTestActions Pass different offsets for scroll a window by and
1.773 + different clipping and source rectangles.
1.774 + Check the window is scrolled correctly
1.775 +
1.776 +@SYMTestExpectedResults Window scrolls correctly to offsets and source
1.777 + and clipping rectangles
1.778 +*/
1.779 + case 21:
1.780 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0252"));
1.781 + iTest->LogSubTest(KScroll);
1.782 + DoTestScroll(TRect(TPoint(1,1),iWinSize-TSize(1,1)),TPoint(-6,-14),TRect(10,10,50,50));
1.783 + DoTestScroll(TRect(TPoint(1,1),iWinSize-TSize(1,1)),TPoint(16,4),TRect(10,10,50,50));
1.784 + break;
1.785 + case 22:
1.786 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0252"));
1.787 + iTest->LogSubTest(KScroll);
1.788 + DoTestScroll(TRect(TPoint(10,100),iWinSize-TSize(0,10)),TPoint(26,22),TRect(iWinSize));
1.789 + DoTestScroll(TRect(iWinSize),TPoint(2,-1),TRect(-10,-10,50,50));
1.790 + break;
1.791 +/**
1.792 +@SYMTestCaseID GRAPHICS-WSERV-0253
1.793 +
1.794 +@SYMDEF DEF081259
1.795 +
1.796 +@SYMTestCaseDesc Out of memory window scrolling test
1.797 +
1.798 +@SYMTestPriority High
1.799 +
1.800 +@SYMTestStatus Implemented
1.801 +
1.802 +@SYMTestActions Out of memory window scrolling test
1.803 +
1.804 +@SYMTestExpectedResults Out of memory scrolling is handled correctly
1.805 +*/
1.806 + case 23:
1.807 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0253"));
1.808 + iTest->LogSubTest(KScroll);
1.809 + OomScrolling();
1.810 + iTest->CloseAllPanicWindows();
1.811 + ++iTest->iState;
1.812 + return;
1.813 + case 24:
1.814 + ((CTScrollStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0253"));
1.815 + ++iTest->iState;
1.816 + ++iMode;
1.817 + if (iMode==1)
1.818 + {
1.819 + delete iBaseScrollWin;
1.820 + delete iTestScrollWin;
1.821 + ConstructL();
1.822 + }
1.823 + return;
1.824 + default:
1.825 + ((CTScrollStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
1.826 + ((CTScrollStep*)iStep)->CloseTMSGraphicsStep();
1.827 + TestComplete();
1.828 + break;
1.829 + }
1.830 + ((CTScrollStep*)iStep)->RecordTestResultL();
1.831 + FinishedRectScrolls();
1.832 + iDoCheck=ETrue;
1.833 + }
1.834 +
1.835 +void CTScroll::DemoWindowScrollL()
1.836 + //Function to see what scrolling does.
1.837 + {
1.838 + CBlankWindow* iWin;
1.839 + iWin=new(ELeave) CBlankWindow(TRgb(64,64,224));
1.840 + iWin->SetUpL(TPoint(20,10),TSize(120,100),TheClient->iGroup,*TheClient->iGc);
1.841 + iWin->BaseWin()->SetRequiredDisplayMode(EColor256);
1.842 + iWin->Win()->SetBackgroundColor(TRgb(64,224,64));
1.843 + iWin->RealDraw(ETrue);
1.844 + TheClient->WaitForRedrawsToFinish();
1.845 + iWin->DrawableWin()->Scroll(TPoint(8,5),TRect(20,20,100,80));
1.846 + TheClient->Flush();
1.847 + TheClient->WaitForRedrawsToFinish();
1.848 + TheClient->Flush();
1.849 + }
1.850 +
1.851 +
1.852 +__WS_CONSTRUCT_STEP__(Scroll)
1.853 +#pragma warning(default : 4710)