author | Gareth Stockwell <gareth.stockwell@accenture.com> |
Fri, 22 Oct 2010 11:38:29 +0100 | |
branch | bug235_bringup_0 |
changeset 206 | c170e304623f |
parent 0 | 5d03bc08d59c |
permissions | -rw-r--r-- |
// Copyright (c) 1998-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: // Test Fading and UnFading of windows // // #include "TFADE.H" #define __DISPLAY_MODE_64K_COLOR //CRedrawWin CRedrawWin::CRedrawWin(CTFade *aTest) : CTWin(), iTest(aTest) {} CRedrawWin::~CRedrawWin() { } void CRedrawWin::ConstructL(TRect aArea) { ConstructExtLD(*TheClient->iGroup,aArea.iTl,aArea.Size()); AssignGC(*TheClient->iGc); Activate(); iWin.BeginRedraw(); iWin.EndRedraw(); } void CRedrawWin::Draw() { iTest->Drawing(iTest->Content(),iGc); } //CFadeTest CTFade::CTFade(CTestStep* aStep) : CTWsGraphicsBase(aStep) { #if defined (__MARM_THUMB__) CanFade = false; CanFadeSet = false; #endif } void CTFade::ConstructL() { iDeviceDisplayMode=TheClient->iScreen->DisplayMode(); iTestWinSize=StdTestWindowSize(); iFadeDrawMode = iDeviceDisplayMode; iTestWinCopy = new (ELeave) CFbsBitmap(); iTestWinCopy->Create(iTestWinSize,TheClient->iScreen->DisplayMode()); iCheckWinCopy = new (ELeave) CFbsBitmap(); iCheckWinCopy->Create(iTestWinSize,TheClient->iScreen->DisplayMode()); } CTFade::~CTFade() { __ASSERT_ALWAYS(!iBlankWin,AutoPanic(EAutoFadeWindow)); delete iTestWinCopy; delete iCheckWinCopy; } TInt CTFade::Content() { return iContent; } void CTFade::CreateBlankWindowL() { __ASSERT_ALWAYS(!iBlankWin,AutoPanic(EAutoFadeWindow)); TSize scrSize(TheClient->iScreen->SizeInPixels()); iTestWinSize.SetSize(2*scrSize.iWidth/3-6,scrSize.iHeight-6); iBlankWin=new(ELeave) CTBlankWindow(); iWindowRect.SetRect(TPoint(3+scrSize.iWidth/3,3),iTestWinSize); iBlankWin->SetUpL(iWindowRect.iTl,iTestWinSize,TheClient->iGroup,*TheClient->iGc); iBlankWin->BaseWin()->SetRequiredDisplayMode(EGray16); } void CTFade::DestroyBlankWindow() { __ASSERT_ALWAYS(iBlankWin,AutoPanic(EAutoFadeWindow)); delete iBlankWin; iBlankWin=NULL; } void CTFade::CreateBackupWindowL(TBool aMaintainBackup) { __ASSERT_ALWAYS(!iWin,AutoPanic(EAutoFadeWindow)); CTBackedUpWin* backUpWin=new(ELeave) CTBackedUpWin(MODE_LT_64K(iDeviceDisplayMode)?iFadeDrawMode:iDeviceDisplayMode); iWin=backUpWin; iOwnWindow=ETrue; iWindowRect.SetRect(TPoint(2*iTestWinSize.iWidth+35,7),iTestWinSize); backUpWin->ConstructExtLD(*TheClient->iGroup,iWindowRect.iTl,iTestWinSize); if (aMaintainBackup) backUpWin->BackedUpWin()->MaintainBackup(); backUpWin->Activate(); TheClient->WaitForRedrawsToFinish(); //Without this bitmaps won't draw into the window } void CTFade::CreateRedrawWindowL() { __ASSERT_ALWAYS(!iWin,AutoPanic(EAutoFadeWindow)); iWindowRect.SetRect(TPoint(2*iTestWinSize.iWidth+35,7),iTestWinSize); CRedrawWin* redrawWin=new(ELeave) CRedrawWin(this); redrawWin->ConstructL(iWindowRect); redrawWin->Win()->EnableRedrawStore(EFalse); iWin=redrawWin; iOwnWindow=ETrue; iWin->BaseWin()->SetRequiredDisplayMode(iFadeDrawMode); } void CTFade::DestroyDrawableWindow() { __ASSERT_ALWAYS(iWin,AutoPanic(EAutoFadeWindow)); if (iOwnWindow) delete iWin; iWin=NULL; } void CTFade::CreateBitmapsL() { iTestWinSize=BaseWin->Size(); iBaseRect.SetRect(BaseWin->BaseWin()->InquireOffset(*TheClient->iGroup->WinTreeNode()),iTestWinSize); iNormalBitmap.Create(iTestWinSize,MODE_LT_64K(iDeviceDisplayMode)?iFadeDrawMode:iDeviceDisplayMode); iFadedBitmap.Create(iTestWinSize,MODE_LT_64K(iDeviceDisplayMode)?iFadeDrawMode:iDeviceDisplayMode); iNormalBitmapDevice=CFbsBitmapDevice::NewL(&iNormalBitmap); iFadedBitmapDevice=CFbsBitmapDevice::NewL(&iFadedBitmap); User::LeaveIfError(iNormalBitmapDevice->CreateContext(iNormalBitGc)); User::LeaveIfError(iFadedBitmapDevice->CreateContext(iFadedBitGc)); iFadedBitGc->SetFadeMode(ETrue); iBaseWinMode=BaseWin->BaseWin()->DisplayMode(); BaseWin->BaseWin()->SetRequiredDisplayMode(iFadeDrawMode); } void CTFade::DestroyBitmaps() { delete iNormalBitGc; delete iFadedBitGc; delete iNormalBitmapDevice; delete iFadedBitmapDevice; BaseWin->BaseWin()->SetRequiredDisplayMode(iBaseWinMode); } void CTFade::Drawing(TInt aDrawFunc, CBitmapContext *gc) { TRgb grey=TRgb::Gray4(2); TInt ii; gc->Reset(); switch (aDrawFunc) { case 1: case 2: Draw(0,&grey,gc); gc->Reset(); Draw(1,NULL,gc); if (aDrawFunc==1) break; gc->Reset(); Draw(3,NULL,gc); break; case 3: Draw(0,&grey,gc); gc->Reset(); Draw(3,NULL,gc); break; case 4: grey=TRgb::Gray4(1); gc->Reset(); Draw(0,&grey,gc); gc->Reset(); for (ii=1;ii<37;ii+=7) Draw(2,&ii,gc); break; case 5: Draw(0,&grey,gc); gc->Reset(); Draw(1,NULL,gc); gc->Reset(); for (ii=2;ii<60;ii+=11) Draw(2,&ii,gc); break; case 6: case 7: Draw(0,&grey,gc); gc->Reset(); Draw(3,NULL,gc); gc->Reset(); for (ii=3;ii<70;ii+=13) Draw(2,&ii,gc); if (aDrawFunc==6) break; gc->Reset(); Draw(1,NULL,gc); break; default:; } } void CTFade::Draw(TInt aDrawFunc, TAny *aParam, TBool aAlternativeFade/*=EFalse*/, TBool aFade/*=EFalse*/) { CWindowGc *gc=TheClient->iGc; gc->Activate(*iWin->DrawableWin()); gc->Reset(); if (aFade) gc->SetFaded(ETrue); iNormalBitGc->Reset(); iFadedBitGc->Reset(); iFadedBitGc->SetFadeMode(ETrue); if (aAlternativeFade) iFadedBitGc->SetFadingParameters(BLACK_ALTERNATE,WHITE_ALTERNATE); Draw(aDrawFunc,aParam,gc); Draw(aDrawFunc,aParam,iNormalBitGc); Draw(aDrawFunc,aParam,iFadedBitGc); gc->Deactivate(); if (aAlternativeFade) iFadedBitGc->SetFadingParameters(BLACK_NORMAL,WHITE_NORMAL); } #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA // CWindowGc fading is deprecated in NGA void CTFade::GCDraw(TInt aDrawFunc, TAny *aParam, TBool aAlternativeFade) { CWindowGc *gc=TheClient->iGc; gc->Activate(*iWin->DrawableWin()); gc->Reset(); Draw(aDrawFunc,aParam,gc); gc->Deactivate(); gc->Activate(*BaseWin->DrawableWin()); gc->Reset(); gc->SetFaded(ETrue); if (aAlternativeFade) gc->SetFadingParameters(BLACK_ALTERNATE,WHITE_ALTERNATE); Draw(aDrawFunc,aParam,gc); gc->Deactivate(); } #endif // TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA void CTFade::Draw(TInt aDrawFunc, TAny *aParam, CBitmapContext *aGc) { switch(aDrawFunc) { case 0: aGc->SetBrushColor(*((TRgb *)aParam)); aGc->SetBrushStyle(CGraphicsContext::ESolidBrush); aGc->SetPenStyle(CGraphicsContext::ENullPen); aGc->DrawRect(TRect(iTestWinSize)); break; case 1: { TSize half(iTestWinSize.iWidth/2,iTestWinSize.iHeight/2); TRect rect(half); aGc->DrawEllipse(rect); aGc->DrawEllipse(TRect(TPoint(0,half.iHeight),half)); aGc->SetOrigin(TPoint(half.iWidth,0)); aGc->SetClippingRect(rect); aGc->DrawEllipse(rect); aGc->SetOrigin(TPoint(half.iWidth,half.iHeight)); aGc->SetClippingRect(rect); aGc->DrawEllipse(rect); aGc->SetOrigin(TPoint()); aGc->CancelClippingRect(); } break; case 2: { TInt param= *((TInt *)aParam); if (param&0x1) aGc->DrawLine(TPoint(param+(param*27)%iTestWinSize.iWidth,0), TPoint(iTestWinSize.iWidth-((param<<1)+(param*19)%iTestWinSize.iWidth),iTestWinSize.iHeight)); else aGc->DrawLine(TPoint(0, (param<<1)+(param*7)%iTestWinSize.iHeight), TPoint(iTestWinSize.iWidth,param+(param*13)%iTestWinSize.iHeight)); } break; case 3: { TPoint pos; for(;pos.iX<iTestWinSize.iWidth;pos.iX+=10) aGc->DrawLine(pos,pos+TSize(0,iTestWinSize.iHeight)); for(pos.iX=0;pos.iY<iTestWinSize.iHeight;pos.iY+=10) aGc->DrawLine(pos,pos+TSize(iTestWinSize.iWidth,0)); } break; } } void CTFade::CompareWithBitmap(TBool aFade) { TBool match; CWindowGc& gc=*TheClient->iGc; CFbsBitmap* bitmap; TheClient->iWs.Flush(); if (aFade) bitmap=&iFadedBitmap; else bitmap=&iNormalBitmap; gc.Activate(*BaseWin->DrawableWin()); gc.Reset(); gc.BitBlt(TPoint(),bitmap); gc.Deactivate(); TheClient->iWs.Flush(); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA match=TheClient->iScreen->RectCompare(iBaseRect,iWindowRect); #else // In NGA comparison has to be lossy because fading can be implemented on hardware match=LossyCompareWindow(*TheClient->iScreen, *iTestWinCopy, *iCheckWinCopy, iWindowRect); #endif TEST(match); if (!match) { _LIT(KLog,"Windows content don't match when they should"); LOG_MESSAGE(KLog); } } void CTFade::CompareWindows(TBool aAlternativeFade/*=EFalse*/) { if (aAlternativeFade) iWin->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly,BLACK_ALTERNATE,WHITE_ALTERNATE); else iWin->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); TheClient->iWs.Flush(); TBool retVal = TheClient->iScreen->RectCompare(iBaseRect,iWindowRect); TEST(retVal); if (!retVal) INFO_PRINTF3(_L("TheClient->iScreen->RectCompare(iBaseRect,iWindowRect) return value - Expected: %d, Actual: %d"), ETrue, retVal); iWin->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly); TheClient->iWs.Flush(); TheClient->WaitForRedrawsToFinish(); } #define FADE(n,col) n/2+col/2 TInt CTFade::Fade4(TInt aGray4) { #if defined(__WINS__) return FADE(4,aGray4); #elif defined (__MARM_THUMB__) return (CanFade ? FADE(4,aGray4):aGray4); #elif defined (__MARM__) return FADE(4,aGray4); #else return aGray4; #endif } TInt CTFade::Fade16(TInt aGray16) { #if defined(__WINS__) return FADE(16,aGray16); #elif defined (__MARM_THUMB__) return (CanFade ? FADE(16,aGray16):aGray16); #elif defined (__MARM__) return FADE(16,aGray16); #else return aGray16; #endif } TRgb CTFade::FadeRgb(TRgb aColor) { switch (iFadeDrawMode) { case EColor16M: case EColor16MU: case EColor16MA: case EColor16MAP: break; default: aColor=TRgb::Color64K(aColor.Color64K()); break; } #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA // Color fading calculation differs in NGA TInt fadeMapFactor=WHITE_NORMAL-BLACK_NORMAL+1; #else TInt fadeMapFactor=WHITE_NORMAL-BLACK_NORMAL; #endif TInt fadeMapOffset=BLACK_NORMAL; TInt value = aColor.Internal(); TInt b = (((value & 0x000000ff) * fadeMapFactor) >> 8) + fadeMapOffset; TInt g = (((value & 0x0000ff00) * fadeMapFactor) >> 16) + fadeMapOffset; TInt r = (((value & 0x00ff0000) * fadeMapFactor) >> 24) + fadeMapOffset; return TRgb(r,g,b); } TRgb CTFade::FadeRgb(TRgb aColor, TInt aFadeMapFactor, TInt aFadeMapOffset) { switch (iFadeDrawMode) { case EColor16M: case EColor16MU: case EColor16MA: case EColor16MAP: break; default: aColor=TRgb::Color64K(aColor.Color64K()); break; } TInt value = aColor.Internal(); TInt b = (((value & 0x000000ff) * aFadeMapFactor) >> 8) + aFadeMapOffset; TInt g = (((value & 0x0000ff00) * aFadeMapFactor) >> 16) + aFadeMapOffset; TInt r = (((value & 0x00ff0000) * aFadeMapFactor) >> 24) + aFadeMapOffset; return TRgb(r,g,b); } inline void CTFade::ViewDelay() // //This routine can provide a delay which will allow the user to see the colors changing // { TheClient->iWs.Finish(); /*TheClient->iWs.Flush(); User::After(1000000);*/ // 1 sec } void CTFade::ColorTest() { __ASSERT_ALWAYS(iBlankWin,AutoPanic(EAutoFadeWindow)); TBool retVal; TSize size(iTestWinSize); #if defined(SMALL_RECTS) size.iWidth=Min(SIZE_X,size.iWidth); size.iHeight=Min(SIZE_Y,size.iHeight); #endif TRect windowRect(iBlankWin->BaseWin()->InquireOffset(*TheClient->iGroup->WinTreeNode()),size); TInt ii; iBlankWin->BaseWin()->SetRequiredDisplayMode(EGray4); TheClient->WaitForRedrawsToFinish(); //Force the screen into 4 gray mode TRgb fadedColor; for (ii=1;ii<4;ii+=2) //0 and 3 now give dithered colors when fading so causing this test to fail { iBlankWin->SetColor(TRgb::Gray4(ii)); ViewDelay(); INFO_PRINTF1(_L(" Testing Normal Color")); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retVal = CheckBlankWindow(windowRect,TRgb::Gray4(ii),TheClient->iScreen); #else TheClient->iScreen->CopyScreenToBitmap(iTestWinCopy, windowRect); retVal = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, TRgb::Gray4(ii)); #endif TEST(retVal); if (!retVal) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,TRgb::Gray4(ii),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retVal); iBlankWin->BaseWin()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); ViewDelay(); fadedColor=MODE_LT_64K(iDeviceDisplayMode)?TRgb::Gray4(Fade4(ii)):FadeRgb(TRgb::Gray4(ii)); #if defined (__MARM_THUMB__) if (ii==1) { CanFade=!CheckBlankWindow(windowRect,fadedColor,TheClient->iScreen); CanFadeSet=ETrue; fadedColor=MODE_LT_64K(iDeviceDisplayMode)?TRgb::Gray4(Fade4(ii)):FadeRgb(TRgb::Gray4(ii)); } #endif #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retVal = CheckBlankWindow(windowRect,fadedColor,TheClient->iScreen); #else retVal = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, fadedColor); #endif TEST(retVal); if (!retVal) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,fadedColor,TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retVal); iBlankWin->BaseWin()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly); ViewDelay(); INFO_PRINTF1(_L(" Testing Unfaded Color")); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retVal = CheckBlankWindow(windowRect,TRgb::Gray4(ii),TheClient->iScreen); #else retVal = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, TRgb::Gray4(ii)); #endif TEST(retVal); if (!retVal) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,TRgb::Gray4(ii),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retVal); } iBlankWin->BaseWin()->SetRequiredDisplayMode(EGray16); if (MaxGrays()==0 && MaxColors()<256) return; INFO_PRINTF1(_L(" Doing 16 Gray Colors")); for (ii=0;ii<16;++ii) { iBlankWin->SetColor(TRgb::Gray16(ii)); ViewDelay(); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retVal = CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen); #else retVal = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, TRgb::Gray16(ii)); #endif TEST(retVal); if (!retVal) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retVal); iBlankWin->BaseWin()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); ViewDelay(); fadedColor=MODE_LT_64K(iDeviceDisplayMode)?TRgb::Gray16(Fade16(ii)):FadeRgb(TRgb::Gray16(ii)); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retVal = CheckBlankWindow(windowRect,fadedColor,TheClient->iScreen); #else retVal = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, fadedColor); #endif TEST(retVal); if (!retVal) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,fadedColor,TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retVal); iBlankWin->BaseWin()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly); ViewDelay(); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retVal = CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen); #else retVal = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, TRgb::Gray16(ii)); #endif TEST(retVal); if (!retVal) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retVal); } } void CTFade::BlankWindowL() { TBool retVal; if (MaxGrays()==0 && MaxColors()<256) return; __ASSERT_ALWAYS(iBlankWin,AutoPanic(EAutoFadeWindow)); CTBlankWindow* blankWin=new(ELeave) CTBlankWindow(); TRect testArea(iWindowRect); TRect windowRect(testArea); #if defined(SMALL_RECTS) TSize size(testArea.Size()); size.iWidth=Min(2*SIZE_X,size.iWidth); size.iHeight=Min(2*SIZE_Y,size.iHeight); testArea.SetHeight(size.iHeight); testArea.iTl.iX=testArea.iBr.iX-size.iWidth; windowRect=testArea; windowRect.Shrink(size.iWidth/4,size.iHeight/4); #else windowRect.Shrink(30,30); #endif blankWin->SetUpL(windowRect.iTl,windowRect.Size(),TheClient->iGroup,*TheClient->iGc); for (TInt col=2;col<16;col+=6) { iBlankWin->SetColor(TRgb::Gray16(col)); TheClient->iScreen->CopyScreenToBitmap(iTestWinCopy, windowRect); iBlankWin->BaseWin()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); blankWin->SetVisible(EFalse); TheClient->iWs.Finish(); TRgb fadedColor=MODE_LT_64K(iDeviceDisplayMode)?TRgb::Gray16(Fade16(col)):FadeRgb(TRgb::Gray16(col)); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retVal = CheckBlankWindow(testArea,fadedColor,TheClient->iScreen); #else retVal = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, fadedColor); #endif TEST(retVal); if (!retVal) INFO_PRINTF3(_L("LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, fadedColor) return value - Expected: %d, Actual: %d"), ETrue, retVal); blankWin->SetVisible(ETrue); iBlankWin->BaseWin()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly); blankWin->SetVisible(EFalse); TheClient->iWs.Finish(); retVal = CheckBlankWindow(testArea,TRgb::Gray16(col),TheClient->iScreen); TEST(retVal); if (!retVal) INFO_PRINTF3(_L("CheckBlankWindow(testArea,TRgb::Gray16(col),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retVal); blankWin->SetVisible(ETrue); iBlankWin->SetPos(iWindowRect.iTl+TPoint(15,-15)); iBlankWin->BaseWin()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); blankWin->SetVisible(EFalse); iBlankWin->SetPos(iWindowRect.iTl); fadedColor=MODE_LT_64K(iDeviceDisplayMode)?TRgb::Gray16(Fade16(col)):FadeRgb(TRgb::Gray16(col)); TheClient->iWs.Finish(); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retVal = CheckBlankWindow(testArea,fadedColor,TheClient->iScreen); #else retVal = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, fadedColor); #endif TEST(retVal); if (!retVal) INFO_PRINTF3(_L("LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, fadedColor) return value - Expected: %d, Actual: %d"), ETrue, retVal); blankWin->SetVisible(ETrue); iBlankWin->SetPos(iWindowRect.iTl+TPoint(15,-15)); iBlankWin->BaseWin()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly); blankWin->SetVisible(EFalse); iBlankWin->SetPos(iWindowRect.iTl); TheClient->iWs.Finish(); retVal = CheckBlankWindow(testArea,TRgb::Gray16(col),TheClient->iScreen); TEST(retVal); if (!retVal) INFO_PRINTF3(_L("CheckBlankWindow(testArea,TRgb::Gray16(col),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retVal); blankWin->SetVisible(ETrue); } delete blankWin; } void CTFade::TestStrips(TRect aRect,TInt aHeight,TInt aNumNotFaded,TBool aInvert/*=EFalse*/) { TBool isFaded; TInt ii; TRgb col; for (ii=0;ii<16;++ii) { isFaded=((!aInvert)==(!(ii<aNumNotFaded))); if (isFaded) col=MODE_LT_64K(iDeviceDisplayMode)?TRgb::Gray16(Fade16(ii)):FadeRgb(TRgb::Gray16(ii)); else col=TRgb::Gray16(ii); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA TBool retVal = CheckBlankWindow(aRect,col,TheClient->iScreen); #else TBool retVal = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, aRect, col); #endif TEST(retVal); if (!retVal) INFO_PRINTF3(_L("CheckBlankWindow(aRect,col,TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retVal); aRect.Move(0,aHeight); } } void CTFade::FadeChildrenL() { if (MaxGrays()==0 && MaxColors()<256) return; TInt retVal; TBool retBool; __ASSERT_ALWAYS(iBlankWin,AutoPanic(EAutoFadeWindow)); iBlankWin->BaseWin()->SetRequiredDisplayMode(EGray16); iBlankWin->SetColor(TRgb::Gray16(0)); CTBlankWindow* win[16]; win[0]=iBlankWin; TRect rect(iTestWinSize); TInt height=iTestWinSize.iHeight/16; rect.iTl.iY=height; TInt ii; for (ii=1;ii<16;++ii) //Causes memory leakage under OOM { win[ii]=new(ELeave) CTBlankWindow(); win[ii]->SetUpL(rect.iTl,rect.Size(),win[ii-1],*TheClient->iGc); win[ii]->BaseWin()->SetRequiredDisplayMode(EGray16); win[ii]->SetColor(TRgb::Gray16(ii)); rect.iBr.iY-=height; } rect=iWindowRect; rect.SetHeight(height); #if defined(SMALL_RECTS) TSize size(rect.Size()); size.iWidth=Min(SIZE_X,size.iWidth); size.iHeight=Min(SIZE_Y,size.iHeight); rect.SetSize(size); #endif for (ii=0;ii<15;++ii) { win[ii]->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeIncludeChildren); retVal = win[ii]->BaseWin()->IsFaded(); TEST(retVal==1); if (retVal!=1) INFO_PRINTF3(_L("win[ii]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), 1, retVal); TestStrips(rect,height,ii); win[ii]->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeIncludeChildren); retBool = !win[ii]->BaseWin()->IsFaded(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("!win[ii]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), ETrue, retBool); TestStrips(rect,height,16); } TheClient->iGroup->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeIncludeChildren); TestStrips(rect,height,0); TheClient->iGroup->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeIncludeChildren); TestStrips(rect,height,16); for (ii=0;ii<16;++ii) { win[ii]->BaseWin()->FadeBehind(ETrue); retBool = !win[ii]->BaseWin()->IsFaded(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("!win[ii]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), ETrue, retBool); retVal = win[0]->BaseWin()->IsFaded(); TEST(retVal==(ii>0)); if (retVal!=(ii>0)) INFO_PRINTF3(_L("win[0]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), (ii>0), retVal); TestStrips(rect,height,ii,ETrue); win[ii]->BaseWin()->FadeBehind(EFalse); TestStrips(rect,height,16); } iBlankWin->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeIncludeChildren); TestStrips(rect,height,0); iBlankWin->WinTreeNode()->SetNonFading(ETrue); TestStrips(rect,height,16); win[8]->WinTreeNode()->SetNonFading(EFalse); TestStrips(rect,height,8); iBlankWin->WinTreeNode()->SetNonFading(EFalse); TestStrips(rect,height,0); iBlankWin->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeIncludeChildren); TestStrips(rect,height,16); win[8]->WinTreeNode()->SetNonFading(ETrue); TestStrips(rect,height,16); iBlankWin->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeIncludeChildren); TestStrips(rect,height,8,ETrue); win[8]->WinTreeNode()->SetNonFading(EFalse); TestStrips(rect,height,0); iBlankWin->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeIncludeChildren); TestStrips(rect,height,16); for (ii=15;ii>0;--ii) delete win[ii]; } static void ResetAndDestroyWindows(TAny* aPtr) { RPointerArray<CTBlankWindow>& win = *(static_cast<RPointerArray<CTBlankWindow>*>(aPtr)); win.Remove(0); win.ResetAndDestroy(); win.Close(); } void CTFade::FadeChildrenAfterNewChildIsCreatedL() { if (MaxGrays()==0 && MaxColors()<256) return; TBool retBool; TInt retVal; __ASSERT_ALWAYS(iBlankWin,AutoPanic(EAutoFadeWindow)); iBlankWin->BaseWin()->SetRequiredDisplayMode(iFadeDrawMode); iBlankWin->SetColor(TRgb::Gray16(0)); RPointerArray<CTBlankWindow> win; CleanupStack::PushL(TCleanupItem(ResetAndDestroyWindows, &win)); TInt height=iTestWinSize.iHeight/NUMBER_OF_WINDOWS; CTBlankWindow* window=NULL; TInt ii; for (TInt firstLoop=0;firstLoop<NUMBER_OF_WINDOWS-1;) { win.ResetAndDestroy(); TheClient->iGroup->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeIncludeChildren); TRect rect(iTestWinSize); rect.iTl.iY=height; CTBlankWindow* parent=iBlankWin; for (TInt secondLoop=0;secondLoop<=firstLoop;) { window=new(ELeave) CTBlankWindow(); CleanupStack::PushL(window); User::LeaveIfError(win.Append(window)); CleanupStack::Pop(window); window->SetUpL(rect.iTl,rect.Size(),parent,*TheClient->iGc); window->BaseWin()->SetRequiredDisplayMode(iFadeDrawMode); window->SetColor(TRgb::Gray16(++secondLoop)); rect.iBr.iY-=height; parent=window; retBool = window->BaseWin()->IsFaded(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("window->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), ETrue, retBool); } ++firstLoop; TheClient->iGroup->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeIncludeChildren); const TInt count=win.Count(); for(TInt index=0;index<count;++index) { retBool = win[index]->BaseWin()->IsFaded(); TEST(!retBool); if (retBool) INFO_PRINTF3(_L("win[index]->BaseWin()->IsFaded return value - Expected: %d, Actual: %d"), EFalse, retBool); } } User::LeaveIfError(win.Insert(iBlankWin,0)); TRect testRect=iWindowRect; testRect.SetHeight(height); #if defined(SMALL_RECTS) TSize size(testRect.Size()); size.iWidth=Min(SIZE_X,size.iWidth); size.iHeight=Min(SIZE_Y,size.iHeight); testRect.SetSize(size); #endif for (ii=0;ii<NUMBER_OF_WINDOWS;++ii) { win[ii]->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeIncludeChildren); retVal = win[ii]->BaseWin()->IsFaded(); TEST(retVal==1); if (retVal!=1) INFO_PRINTF3(_L("win[index]->BaseWin()->IsFaded return value - Expected: %d, Actual: %d"), 1, retVal); TestStrips(testRect,height,ii); win[ii]->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeIncludeChildren); retBool = !win[ii]->BaseWin()->IsFaded(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("!win[ii]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), EFalse, retBool); TestStrips(testRect,height,NUMBER_OF_WINDOWS); } TheClient->iGroup->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeIncludeChildren); TestStrips(testRect,height,0); TheClient->iGroup->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeIncludeChildren); TestStrips(testRect,height,16); for (ii=0;ii<NUMBER_OF_WINDOWS;++ii) { win[ii]->BaseWin()->FadeBehind(ETrue); retBool = !win[ii]->BaseWin()->IsFaded(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("!win[ii]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), EFalse, retBool); retVal = win[0]->BaseWin()->IsFaded(); TEST(retVal==(ii>0)); if (retVal!=(ii>0)) INFO_PRINTF3(_L("win[index]->BaseWin()->IsFaded return value - Expected: %d, Actual: %d"), (ii>0), retVal); TestStrips(testRect,height,ii,ETrue); win[ii]->BaseWin()->FadeBehind(EFalse); TestStrips(testRect,height,NUMBER_OF_WINDOWS); } iBlankWin->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeIncludeChildren); TestStrips(testRect,height,0); iBlankWin->WinTreeNode()->SetNonFading(ETrue); TestStrips(testRect,height,NUMBER_OF_WINDOWS); win[8]->WinTreeNode()->SetNonFading(EFalse); TestStrips(testRect,height,NUMBER_OF_WINDOWS/2); iBlankWin->WinTreeNode()->SetNonFading(EFalse); TestStrips(testRect,height,0); iBlankWin->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeIncludeChildren); TestStrips(testRect,height,NUMBER_OF_WINDOWS); win[8]->WinTreeNode()->SetNonFading(ETrue); TestStrips(testRect,height,NUMBER_OF_WINDOWS); iBlankWin->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeIncludeChildren); TestStrips(testRect,height,NUMBER_OF_WINDOWS/2,ETrue); win[8]->WinTreeNode()->SetNonFading(EFalse); TestStrips(testRect,height,0); iBlankWin->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeIncludeChildren); TestStrips(testRect,height,NUMBER_OF_WINDOWS); CleanupStack::PopAndDestroy(&win); } void CTFade::TestBlocks(TRect aRect,TSize aSize,TInt aNumNotFaded,TBool aInvert/*=EFalse*/) { TInt count=0; TInt ii,jj; TRgb col; for (ii=0;ii<4;++ii) { for (jj=0;jj<4;++jj) { if ((!aInvert)!=(!(count<aNumNotFaded))) col=TRgb::Gray16(count); else { col = TRgb::Gray16(count); col = MODE_LT_64K(iDeviceDisplayMode)?TRgb::Gray16(Fade16(count)):FadeRgb(col); } #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA TBool retBool = CheckBlankWindow(aRect,col,TheClient->iScreen); #else TBool retBool = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, aRect, col); #endif TEST(retBool); if (!retBool) INFO_PRINTF3(_L("CheckBlankWindow(aRect,col,TheClient->iScreen) return value - Expected: %d, Actual: %d"), EFalse, retBool); aRect.Move(0,aSize.iHeight); count++; } aRect.Move(aSize.iWidth,-jj*aSize.iHeight); } } void CTFade::FadeBehindL() { if (MaxGrays()==0 && MaxColors()<256) return; TBool retBool; TInt retVal; __ASSERT_ALWAYS(iBlankWin,AutoPanic(EAutoFadeWindow)); iBlankWin->BaseWin()->SetRequiredDisplayMode(EGray16); iBlankWin->SetColor(TRgb::Gray16(0)); CTBlankWindow* win[4][4]; win[0][0]=iBlankWin; TSize size=iTestWinSize; TInt height=iTestWinSize.iHeight/4; TInt width=iTestWinSize.iWidth/4; TRect rect(iWindowRect.iTl,TSize(width,height)); TSize rectSize(rect.Size()); TPoint offset(0,height); TPoint topLeft; TInt ii,jj; CTWinBase* parent; #if defined(SMALL_RECTS) TSize rSize(rectSize); rSize.iWidth=Min(SIZE_X,rSize.iWidth); rSize.iHeight=Min(SIZE_Y,rSize.iHeight); rect.SetSize(rSize); #endif for (ii=0;ii<4;++ii) //Causes memory leakage under OOM { parent=TheClient->iGroup; topLeft=iWindowRect.iTl+TPoint(ii*width,0); size.iHeight=iTestWinSize.iHeight; for (jj=0;jj<4;++jj) { if (ii+jj>0) { win[ii][jj]=new(ELeave) CTBlankWindow(); win[ii][jj]->SetUpL(topLeft,size,parent,*TheClient->iGc); win[ii][jj]->BaseWin()->SetRequiredDisplayMode(EGray16); win[ii][jj]->SetColor(TRgb::Gray16(4*ii+jj)); } size.iHeight-=height; topLeft=offset; parent=win[ii][jj]; } size.iWidth-=width; } for (ii=0;ii<4;++ii) { for (jj=0;jj<4;++jj) { win[ii][jj]->BaseWin()->FadeBehind(ETrue); retVal = win[0][0]->BaseWin()->IsFaded(); TEST(retVal==(ii>0||jj>0)); if (retVal!=(ii>0||jj>0)) INFO_PRINTF3(_L("win[0][0]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), (ii>0||jj>0), retVal); retBool = !win[ii][jj]->BaseWin()->IsFaded(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("!win[ii][jj]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), ETrue, retBool); TestBlocks(rect,rectSize,4*ii+jj,ETrue); win[ii][jj]->BaseWin()->FadeBehind(EFalse); TestBlocks(rect,rectSize,16); } } for (ii=0;ii<4;++ii) { for (jj=0;jj<4;++jj) { win[ii][jj]->BaseWin()->FadeBehind(ETrue); TestBlocks(rect,rectSize,4*ii+jj,ETrue); } retVal = win[ii][0]->BaseWin()->IsFaded(); TEST(retVal==3); if (retVal!=3) INFO_PRINTF3(_L("win[ii][0]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), 3, retVal); } for (ii=3;ii>=0;--ii) { retVal = win[ii][0]->BaseWin()->IsFaded(); TEST(retVal==3); if (retVal!=3) INFO_PRINTF3(_L("win[ii][0]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), 3, retVal); for (jj=3;jj>=0;--jj) { TestBlocks(rect,rectSize,4*ii+jj,ETrue); win[ii][jj]->BaseWin()->FadeBehind(EFalse); } } TestBlocks(rect,rectSize,0,ETrue); for (ii=0;ii<4;++ii) { for (jj=0;jj<4;++jj) { win[ii][jj]->BaseWin()->FadeBehind(ETrue); } } TInt fadeCount; for (ii=0;ii<4;++ii) { for (jj=0;jj<4;++jj) { fadeCount=15-(4*ii+jj); retVal = win[0][0]->BaseWin()->IsFaded(); TEST(retVal==Min(15,fadeCount+1)); if (retVal!=Min(15,fadeCount+1)) INFO_PRINTF3(_L("win[0][0]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), Min(15,fadeCount+1), retVal); retVal = win[ii][jj]->BaseWin()->IsFaded(); TEST(retVal==Max(0,fadeCount)); if (retVal!=Max(0,fadeCount)) INFO_PRINTF3(_L("win[ii][jj]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), Max(0,fadeCount), retVal); TestBlocks(rect,rectSize,15,ETrue); win[ii][jj]->BaseWin()->FadeBehind(EFalse); retVal = win[ii][jj]->BaseWin()->IsFaded(); TEST(retVal==Max(0,fadeCount)); if (retVal!=Max(0,fadeCount)) INFO_PRINTF3(_L("win[ii][jj]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), Max(0,fadeCount), retVal); } } TestBlocks(rect,rectSize,0,ETrue); if (Fade16(15)==15) { win[3][3]->BaseWin()->FadeBehind(ETrue); //All faded as the only unfaded one is white for (ii=3;ii>=0;--ii) { retVal = win[ii][0]->BaseWin()->IsFaded(); TEST(retVal==1); if (retVal!=1) INFO_PRINTF3(_L("win[ii][0]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), 1, retVal); retBool = !win[ii][1]->BaseWin()->IsNonFading(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("!win[ii][1]->BaseWin()->IsNonFading() return value - Expected: %d, Actual: %d"), ETrue, retBool); win[ii][0]->WinTreeNode()->SetNonFading(ETrue); retBool = win[ii][1]->BaseWin()->IsNonFading(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("win[ii][1]->BaseWin()->IsNonFading() return value - Expected: %d, Actual: %d"), ETrue, retBool); TestBlocks(rect,rectSize,4*ii,ETrue); } for (ii=3;ii>=0;--ii) { retVal = win[ii][0]->BaseWin()->IsFaded(); TEST(retVal==1); if (retVal!=1) INFO_PRINTF3(_L("win[ii][0]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), 1, retVal); retBool = win[ii][1]->BaseWin()->IsNonFading(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("win[ii][1]->BaseWin()->IsNonFading() return value - Expected: %d, Actual: %d"), ETrue, retBool); win[ii][0]->WinTreeNode()->SetNonFading(EFalse); retBool = !win[ii][1]->BaseWin()->IsNonFading(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("win[ii][1]->BaseWin()->IsNonFading() return value - Expected: %d, Actual: %d"), ETrue, retBool); TestBlocks(rect,rectSize,4*ii); } win[3][3]->BaseWin()->FadeBehind(EFalse); } for (ii=3;ii>=0;--ii) { for (jj=3;jj>=0;--jj) { if (ii+jj>0) delete win[ii][jj]; } } } void CTFade::ColorTest2() { #if defined(__MARM__) return; #else __ASSERT_ALWAYS(iBlankWin,AutoPanic(EAutoFadeWindow)); TSize size=iTestWinSize; #if defined(SMALL_RECTS) size.iWidth=Min(SIZE_X,size.iWidth); size.iHeight=Min(SIZE_Y,size.iHeight); #endif if (MaxGrays()==0 && MaxColors()<256) return; TRect windowRect(iBlankWin->BaseWin()->InquireOffset(*TheClient->iGroup->WinTreeNode()),size); TUint8 bm; TUint8 wm; TInt test=0; TInt ii; FOREVER { TInt fadeMapFactor = 0; TInt fadeMapOffset = 0; switch (test) { case 0: //Nothing bm=0; wm=15; break; case 1: //Shadowing or Quartz fading bm=0; wm=7; #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA TheClient->iWs.SetDefaultFadingParameters(0,127); fadeMapFactor = 128; #else TheClient->iWs.SetDefaultFadingParameters(STATIC_CAST(TUint8,bm*17),127); fadeMapFactor = 127-STATIC_CAST(TUint8,bm*17); #endif break; default: TheClient->iWs.SetDefaultFadingParameters(BLACK_NORMAL,WHITE_NORMAL); return; } if (wm!=7) { fadeMapOffset = STATIC_CAST(TUint8,bm*17); fadeMapFactor = STATIC_CAST(TUint8,wm*17) - fadeMapOffset; TheClient->iWs.SetDefaultFadingParameters(STATIC_CAST(TUint8,bm*17),STATIC_CAST(TUint8,wm*17)); } for (ii=0;ii<16;ii+=5) { iBlankWin->SetColor(TRgb::Gray16(ii)); ViewDelay(); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA TBool retBool=CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen); #else TBool retBool = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, TRgb::Gray16(ii)); #endif TEST(retBool); if (!retBool) { _LIT(KLog,"Setting color on blank window failed mappings=%d color=%d"); LOG_MESSAGE3(KLog,test,ii); } iBlankWin->BaseWin()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); ViewDelay(); TRgb col1 = FadeRgb(TRgb::Gray16(ii), fadeMapFactor, fadeMapOffset); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retBool=CheckBlankWindow(windowRect,col1,TheClient->iScreen); #else retBool = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, col1); #endif TEST(retBool); if (!retBool) { _LIT(KLog,"Fading the window gave wrong color mappings=%d color=%d"); LOG_MESSAGE3(KLog,test,ii); } iBlankWin->BaseWin()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly); ViewDelay(); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retBool=CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen); #else retBool = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, TRgb::Gray16(ii)); #endif TEST(retBool); if (!retBool) { _LIT(KLog,"Unfading the window gave wrong color mappings=%d color=%d"); LOG_MESSAGE3(KLog,test,ii); } } ++test; } #endif //__MARM__ } void CTFade::FadeTest() { #if defined(__MARM__) return; #else __ASSERT_ALWAYS(iBlankWin,AutoPanic(EAutoFadeWindow)); TSize size=iTestWinSize; #if defined(SMALL_RECTS) size.iWidth=Min(SIZE_X,size.iWidth); size.iHeight=Min(SIZE_Y,size.iHeight); #endif if (MaxGrays()==0 && MaxColors()<256) return; TRect windowRect(iBlankWin->BaseWin()->InquireOffset(*TheClient->iGroup->WinTreeNode()),size); TUint8 bm; TUint8 wm; TUint8 fb; TUint8 fw; TInt test=0; TInt ii; FOREVER { TInt fadeMapFactor = 0; TInt fadeMapOffset = 0; fw=0; switch (test) { case 0: //Nothing bm=0; wm=15; break; case 1: //Shadowing or Quartz fading bm=0; wm=7; fw=127; break; default: return; } fb=STATIC_CAST(TUint8,17*bm); if (!fw) fw=STATIC_CAST(TUint8,17*wm); fadeMapFactor = fw - fb; fadeMapOffset = fb; for (ii=0;ii<16;ii+=5) { iBlankWin->SetColor(TRgb::Gray16(ii)); ViewDelay(); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA TBool retBool = CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen); #else TBool retBool = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, TRgb::Gray16(ii)); #endif TEST(retBool); if (!retBool) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retBool); TRgb col3 = TRgb::Gray16(ii).Internal(); TRgb col1 = FadeRgb(col3, fadeMapFactor, fadeMapOffset); iBlankWin->BaseWin()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly,fb,fw); ViewDelay(); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retBool = CheckBlankWindow(windowRect,col1,TheClient->iScreen); #else retBool = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, col1); #endif TEST(retBool); if (!retBool) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,TRgb::Gray16((ii*wb+add)/15),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retBool); iBlankWin->BaseWin()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly); ViewDelay(); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retBool = CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen); #else retBool = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, TRgb::Gray16(ii)); #endif TEST(retBool); if (!retBool) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retBool); } ++test; } #endif //__MARM__ } void CTFade::Draw(TBool aAlternativeFade/*=EFalse*/) { __ASSERT_ALWAYS(iWin,AutoPanic(EAutoFadeWindow)); TRgb grey=TRgb::Gray4(2); Draw(0,&grey,aAlternativeFade); Draw(1,NULL,aAlternativeFade); iContent=1; CompareWithBitmap(EFalse); if (aAlternativeFade) iWin->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly,BLACK_ALTERNATE,WHITE_ALTERNATE); else iWin->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); CompareWithBitmap(ETrue); Draw(3,NULL,aAlternativeFade); iContent=2; CompareWithBitmap(ETrue); iWin->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly); CompareWithBitmap(EFalse); } #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA void CTFade::GCDraw() { __ASSERT_ALWAYS(iWin,AutoPanic(EAutoFadeWindow)); TRgb grey=TRgb::Gray4(2); TInt ii; GCDraw(0,&grey); GCDraw(3,NULL); for (ii=3;ii<70;ii+=13) GCDraw(2,&ii); iContent=6; CompareWindows(); GCDraw(0,&grey,ETrue); GCDraw(3,NULL,ETrue); for (ii=3;ii<70;ii+=13) GCDraw(2,&ii,ETrue); GCDraw(1,NULL,ETrue); iContent=7; CompareWindows(ETrue); } #endif // TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA void CTFade::ObscuredL() { CTBlankWindow* blankWin=new(ELeave) CTBlankWindow(); TRect windowRect(iWindowRect); windowRect.Shrink(30,30); blankWin->SetUpL(windowRect.iTl,windowRect.Size(),TheClient->iGroup,*TheClient->iGc); __ASSERT_ALWAYS(iWin,AutoPanic(EAutoFadeWindow)); TRgb grey=TRgb::Gray4(2); Draw(0,&grey); Draw(3,NULL); iContent=3; iWin->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); blankWin->SetVisible(EFalse); CompareWithBitmap(ETrue); blankWin->SetVisible(ETrue); grey=TRgb::Gray4(1); Draw(0,&grey); for (TInt ii=1;ii<37;ii+=7) Draw(2,&ii); iContent=4; blankWin->SetVisible(EFalse); CompareWithBitmap(ETrue); blankWin->SetVisible(ETrue); iWin->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly); blankWin->SetVisible(EFalse); CompareWithBitmap(EFalse); delete blankWin; } void CTFade::MovingL() { CTBlankWindow* blankWin=new(ELeave) CTBlankWindow(); TRect windowRect(iWindowRect); windowRect.Shrink(40,40); blankWin->SetUpL(windowRect.iTl,windowRect.Size(),TheClient->iGroup,*TheClient->iGc); __ASSERT_ALWAYS(iWin,AutoPanic(EAutoFadeWindow)); TRgb grey=TRgb::Gray4(2); Draw(0,&grey); Draw(1,NULL); for (TInt ii=2;ii<60;ii+=11) Draw(2,&ii); iContent=5; blankWin->SetPos(windowRect.iTl+TPoint(25,-25)); iWin->WinTreeNode()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); blankWin->SetPos(windowRect.iTl+TPoint(10,25)); blankWin->SetVisible(EFalse); CompareWithBitmap(ETrue); blankWin->SetVisible(ETrue); blankWin->SetPos(windowRect.iTl+TPoint(25,-25)); iWin->WinTreeNode()->SetFaded(EFalse,RWindowTreeNode::EFadeWindowOnly); blankWin->SetPos(windowRect.iTl+TPoint(-5,10)); blankWin->SetVisible(EFalse); CompareWithBitmap(EFalse); delete blankWin; } void CTFade::SystemFadeL() { if (MaxGrays()==0 && MaxColors()<256) return; CTBlankWindow* win[16]; TInt height=iTestWinSize.iHeight/16; TRect rect(iWindowRect); rect.SetHeight(height); TInt ii; for (ii=0;ii<16;++ii) //Causes memory leakage under OOM { win[ii]=new(ELeave) CTBlankWindow(); win[ii]->SetUpL(rect.iTl,rect.Size(),TheClient->iGroup,*TheClient->iGc); win[ii]->BaseWin()->SetRequiredDisplayMode(EGray16); win[ii]->SetColor(TRgb::Gray16(ii)); rect.Move(0,height); } rect=iWindowRect; rect.SetHeight(height); #if defined(SMALL_RECTS) TSize size(rect.Size()); size.iWidth=Min(SIZE_X,size.iWidth); size.iHeight=Min(SIZE_Y,size.iHeight); rect.SetSize(size); #endif TBool retBool; // system fade on TheClient->iWs.SetSystemFaded(ETrue); for (ii=0;ii<16;++ii) { retBool = win[ii]->BaseWin()->IsFaded(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("win[ii]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), ETrue, retBool); } TestStrips(rect,height,0); // system fade off TheClient->iWs.SetSystemFaded(EFalse); for (ii=0;ii<16;++ii) { retBool = !win[ii]->BaseWin()->IsFaded(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("!win[ii]->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), ETrue, retBool); } TestStrips(rect,height,16); // Now with half non fading for (ii=8;ii<16;++ii) win[ii]->WinTreeNode()->SetNonFading(ETrue); // system fade on TheClient->iWs.SetSystemFaded(ETrue); TestStrips(rect,height,8,ETrue); // system fade off TheClient->iWs.SetSystemFaded(EFalse); TestStrips(rect,height,16); for (ii=0;ii<16;++ii) delete win[ii]; } void CTFade::SystemAlternateFadeL() { #if defined(__MARM__) return; #else __ASSERT_ALWAYS(iBlankWin,AutoPanic(EAutoFadeWindow)); TSize size=iTestWinSize; #if defined(SMALL_RECTS) size.iWidth=Min(SIZE_X,size.iWidth); size.iHeight=Min(SIZE_Y,size.iHeight); #endif if (MaxGrays()==0 && MaxColors()<256) return; TRect windowRect(iBlankWin->BaseWin()->InquireOffset(*TheClient->iGroup->WinTreeNode()),size); TUint8 bm; TUint8 wm; TUint8 fb; TUint8 fw; TInt wb; TInt add; TInt test=0; TInt ii; TBool retBool; FOREVER { TInt fadeMapFactor = 0; TInt fadeMapOffset = 0; fw=0; switch (test) { case 0: //Nothing bm=0; wm=15; break; case 1: //Shadowing or Quartz fading bm=0; wm=7; fw=127; break; default: return; } wb=wm-bm; add=15*bm+7; fb=STATIC_CAST(TUint8,17*bm); if (!fw) fw=STATIC_CAST(TUint8,17*wm); fadeMapFactor = fw - fb; fadeMapOffset = fb; for (ii=0;ii<16;ii+=5) { iBlankWin->SetColor(TRgb::Gray16(ii)); ViewDelay(); TheClient->iWs.Finish(); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retBool = CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen); #else retBool = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, TRgb::Gray16(ii)); #endif TEST(retBool); if (!retBool) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retBool); TheClient->iWs.SetSystemFaded(ETrue,fb,fw); ViewDelay(); TRgb col3 = TRgb::Gray16(ii).Internal(); TRgb col1 = FadeRgb(col3, fadeMapFactor, fadeMapOffset); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retBool = CheckBlankWindow(windowRect,col1,TheClient->iScreen); #else retBool = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, col1); #endif TEST(retBool); if (!retBool) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,TRgb::Gray16((ii*wb+add)/15),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retBool); TheClient->iWs.SetSystemFaded(EFalse); ViewDelay(); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA retBool = CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen); #else retBool = LossyCheckBlankWindow(*TheClient->iScreen, *iTestWinCopy, windowRect, TRgb::Gray16(ii)); #endif TEST(retBool); if (!retBool) INFO_PRINTF3(_L("CheckBlankWindow(windowRect,TRgb::Gray16(ii),TheClient->iScreen) return value - Expected: %d, Actual: %d"), ETrue, retBool); } ++test; } #endif //__MARM__ } void CTFade::FadeBehindWhenMovedL() { __ASSERT_ALWAYS(iBlankWin,AutoPanic(EAutoFadeWindow)); TDisplayMode displayMode=iBlankWin->BaseWin()->DisplayMode(); iBlankWin->BaseWin()->SetRequiredDisplayMode(EGray16); iBlankWin->SetColor(TRgb::Gray16(1)); TSize size(iTestWinSize.iHeight/4,iTestWinSize.iWidth/4); CTBlankWindow* blankWinTemp=new(ELeave) CTBlankWindow(); CleanupStack::PushL(blankWinTemp); blankWinTemp->SetUpL(TPoint(5,5),size,iBlankWin,*TheClient->iGc); blankWinTemp->BaseWin()->SetRequiredDisplayMode(EGray16); blankWinTemp->SetColor(TRgb::Gray16(15)); blankWinTemp->BaseWin()->FadeBehind(ETrue); TheClient->Flush(); blankWinTemp->SetPos(TPoint(5,120)); //Check whether the back window is faded or not TBool retBool = iBlankWin->BaseWin()->IsFaded(); TEST(retBool); if (!retBool) INFO_PRINTF3(_L("iBlankWin->BaseWin()->IsFaded() return value - Expected: %d, Actual: %d"), ETrue, retBool); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA CheckRect(iWindowRect.iTl+TPoint(5,5),iWindowRect.iTl+TPoint(75,5),size,_L("CTFade::FadeBehindWhenMovedL()")); #else TInt res = LossyCompareWindow(*TheClient->iScreen, *iTestWinCopy, *iCheckWinCopy, TRect(iWindowRect.iTl+TPoint(75,5),size)); TEST(res); #endif //Check whether the area behind the moved window and any other area on same window are identical blankWinTemp->BaseWin()->FadeBehind(EFalse); iBlankWin->BaseWin()->SetRequiredDisplayMode(displayMode); CleanupStack::PopAndDestroy(blankWinTemp); } void CTFade::FadeBehindTransparentWindowL() { const TInt KNumberOfWindows = 3; CRedrawWin* win[KNumberOfWindows]; TRect rect(iWindowRect); rect.Resize(-iWindowRect.Width()/3,-iWindowRect.Height()/3); rect.Move(iWindowRect.Width()/10,iWindowRect.Height()/5); TRect rectWin[KNumberOfWindows]; for (TInt ii=0; ii<KNumberOfWindows; ++ii) //Causes memory leakage under OOM { rectWin[ii] = rect; win[ii]=new(ELeave) CRedrawWin(this); win[ii]->ConstructExtLD(*TheClient->iGroup,rectWin[ii].iTl,rectWin[ii].Size()); win[ii]->AssignGC(*TheClient->iGc); win[ii]->Win()->EnableRedrawStore(EFalse); win[ii]->BaseWin()->SetRequiredDisplayMode(EColor16MA); if (ii==0) { win[ii]->Win()->SetBackgroundColor(TRgb(200,0,0,255)); } else { TEST(KErrNone == win[ii]->Win()->SetTransparencyAlphaChannel()); if (iStep->TestStepResult() != EPass) { INFO_PRINTF1(_L("Transparency Alpha channel failed to be enabled")); } win[ii]->Win()->SetBackgroundColor(TRgb(40,100,0,0)); //RGB colour is of minor importance, as the window is fully transparent (Alpha=0) } win[ii]->Activate(); //Make sure each window is drawn to the screen now when the new background //colour have been set but before the call to SetFaded win[ii]->Win()->BeginRedraw(); win[ii]->Win()->EndRedraw(); rect.Resize(0,-iWindowRect.Height()/10); rect.Move(iWindowRect.Width()/10,iWindowRect.Height()/20); } TheClient->iWs.Flush(); TheClient->iWs.Finish(); win[0]->Win()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); win[1]->Win()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); win[2]->Win()->SetFaded(ETrue,RWindowTreeNode::EFadeWindowOnly); TheClient->iWs.Flush(); TheClient->iWs.Finish(); // As the windows ovelap on their left side, compare the top left corners of the faded windows in order to verify that // for the opaque window the directly on top faded area and the faded area under the transparent window (the area that // overlaps with the transparent windows) have the same colour. TRgb rgbWin[KNumberOfWindows]; TheClient->iScreen->GetPixel(rgbWin[0], rectWin[0].iTl); TheClient->iScreen->GetPixel(rgbWin[1], rectWin[1].iTl); TheClient->iScreen->GetPixel(rgbWin[2], rectWin[2].iTl); TEST( ETrue == (rgbWin[0].Red()==rgbWin[1].Red())&&(rgbWin[0].Green()==rgbWin[1].Green())&&(rgbWin[0].Blue()==rgbWin[1].Blue()) ); TEST( ETrue == (rgbWin[0].Red()==rgbWin[2].Red())&&(rgbWin[0].Green()==rgbWin[2].Green())&&(rgbWin[0].Blue()==rgbWin[2].Blue()) ); for (TInt ii=0; ii<KNumberOfWindows; ++ii) { delete win[ii]; } } #define BACKUPWIN 11 #define REDRAWWIN 20 void CTFade::RunTestCaseL(TInt /*aCurTestCase*/) { ((CTFadeStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); switch(++iTest->iState) { /** @SYMTestCaseID GRAPHICS-WSERV-0218 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading colours in windows @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Fade the colours in windows and check they fade correctly @SYMTestExpectedResults Colour fade correctly */ case 1: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0218")); iTest->LogSubTest(_L("Color Check")); CreateBlankWindowL(); ColorTest(); //iTest->iState=5; break; /** @SYMTestCaseID GRAPHICS-WSERV-0219 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading in a blank window @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Fade in a blank window and check the fading occurs correctly @SYMTestExpectedResults Fading in a blank window occurs correctly */ case 2: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0219")); iTest->LogSubTest(_L("Blank Window")); BlankWindowL(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0220 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading in child windows @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Fade in child windows and check the fading occurs correctly @SYMTestExpectedResults Fading in the child windows occurs correctly */ case 3: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0220")); iTest->LogSubTest(_L("Fade Children")); FadeChildrenL(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0221 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading in newly created child windows @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Fade in newly created child windows and check the fading occurs correctly @SYMTestExpectedResults Fading in the newly created child windows occurs correctly */ case 4: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0221")); iTest->LogSubTest(_L("Fade Children newly created")); FadeChildrenAfterNewChildIsCreatedL(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0222 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading in window behind another window @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Fade in window behind another window and check the fading occurs correctly @SYMTestExpectedResults Fading in window occurs correctly */ case 5: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0222")); iTest->LogSubTest(_L("Fade Behind")); FadeBehindL(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0223 @SYMDEF DEF081259 @SYMTestCaseDesc Test differnt fading techniques in a window @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Fade using different fading techniques in a window and check the fading occurs correctly @SYMTestExpectedResults Fading in window occurs correctly */ case 6: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0223")); #if(defined(__DISPLAY_MODE_64K_COLOR)) //The test case Alternative Fadings1&2 & System Fade are not executed for EColor64k iTest->LogSubTest(_L("Alternative Fadings1")); ColorTest2(); #else LOG_MESSAGE(_L("Alternative Fadings1 test not run")); #endif break; /** @SYMTestCaseID GRAPHICS-WSERV-0224 @SYMDEF DEF081259 @SYMTestCaseDesc Test differnt fading techniques in a window @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Fade using different fading techniques in a window and check the fading occurs correctly @SYMTestExpectedResults Fading in window occurs correctly */ case 7: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0224")); #if(defined(__DISPLAY_MODE_64K_COLOR)) //The test case Alternative Fadings1&2 & System Fade are not executed for EColor64k iTest->LogSubTest(_L("Alternative Fadings2")); FadeTest(); #else LOG_MESSAGE(_L("Alternative Fadings2 test not run")); #endif break; /** @SYMTestCaseID GRAPHICS-WSERV-0225 @SYMDEF DEF081259 @SYMTestCaseDesc Test differnt system wide fading techniques in a window @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Fade using different system wide fading techniques in a window and check the fading occurs correctly @SYMTestExpectedResults Fading in system occurs correctly */ case 8: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0225")); iTest->LogSubTest(_L("System Fade")); SystemFadeL(); SystemAlternateFadeL(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0226 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading in window behind another window when the window has been moved @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Fade in window behind another window and check the fading occurs correctly @SYMTestExpectedResults Fading in window occurs correctly */ case 9: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0226")); iTest->LogSubTest(_L("Fade behind moved")); FadeBehindWhenMovedL(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0227 @SYMDEF DEF081259 @SYMTestCaseDesc Destroy the blnk window used for fading @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Destroy the blnk window used for fading and check it was deleted correctly @SYMTestExpectedResults The window is destroyed */ case 10: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0227")); DestroyBlankWindow(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0228 @SYMDEF DEF081259 @SYMTestCaseDesc Test backup window creation and drawing @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Create a backup window and draw in it @SYMTestExpectedResults The drawing is correct in the window */ case BACKUPWIN: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0228")); iTest->LogSubTest(_L("BackupWin Draw")); CreateBitmapsL(); CreateBackupWindowL(EFalse); Draw(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0229 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading with backup window obscured @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Test fading with the backup window obscured @SYMTestExpectedResults Fading occurs correctly with window obscured */ case BACKUPWIN+1: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0229")); iTest->LogSubTest(_L("BackupWin Obscured")); ObscuredL(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0230 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading with backup window being moved @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Test fading with the backup window being moved @SYMTestExpectedResults Fading occurs correctly with window moved */ case BACKUPWIN+2: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0230")); iTest->LogSubTest(_L("BackupWin Moving")); MovingL(); DestroyDrawableWindow(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0231 @SYMDEF DEF081259 @SYMTestCaseDesc Test backup window creation and drawing @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Create a backup window and draw in it @SYMTestExpectedResults The drawing is correct in the window */ case BACKUPWIN+3: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0231")); iTest->LogSubTest(_L("BackupWin Draw")); CreateBackupWindowL(ETrue); Draw(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0232 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading with backup window obscured @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Test fading with the backup window obscured @SYMTestExpectedResults Fading occurs correctly with window obscured */ case BACKUPWIN+4: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0232")); iTest->LogSubTest(_L("BackupWin Obscured")); ObscuredL(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0233 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading with backup window being moved @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Test fading with the backup window being moved @SYMTestExpectedResults Fading occurs correctly with window moved */ case BACKUPWIN+5: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0233")); iTest->LogSubTest(_L("BackupWin Moving")); MovingL(); DestroyDrawableWindow(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0234 @SYMDEF DEF081259 @SYMTestCaseDesc Test redraw window creation and drawing @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Create a redraw window and draw in it @SYMTestExpectedResults The drawing is correct in the window */ case REDRAWWIN: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0234")); iTest->LogSubTest(_L("RedrawWin Draw")); CreateRedrawWindowL(); Draw(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0235 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading with redraw window obscured @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Test fading with the redraw window obscured @SYMTestExpectedResults Fading occurs correctly with window obscured */ case REDRAWWIN+1: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0235")); iTest->LogSubTest(_L("RedrawWin Obscured")); ObscuredL(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0236 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading with redraw window being moved @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Test fading with the redraw window being moved @SYMTestExpectedResults Fading occurs correctly with window moved */ case REDRAWWIN+2: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0236")); iTest->LogSubTest(_L("RedrawWin Moving")); MovingL(); break; /** @SYMTestCaseID GRAPHICS-WSERV-0237 @SYMDEF DEF081259 @SYMTestCaseDesc Test different fading techniques within a redraw window @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Test different fading techniques within a redraw window @SYMTestExpectedResults Fading occurs correctly for the different techniques */ case REDRAWWIN+3: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0237")); iTest->LogSubTest(_L("AlternativeFadeDraw")); Draw(ETrue); break; /** @SYMTestCaseID GRAPHICS-WSERV-0238 @SYMDEF DEF081259 @SYMTestCaseDesc Test fading within a redraw window using the graphic context @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Test fading within a redraw window using the graphic context @SYMTestExpectedResults Fading occurs correctly in the window */ case REDRAWWIN+4: ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0238")); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NONNGA iTest->LogSubTest(_L("GC Test")); GCDraw(); DestroyDrawableWindow(); DestroyBitmaps(); #endif break; /** @SYMTestCaseID GRAPHICS-WSERV-0538 @SYMDEF DEF120965 @SYMTestCaseDesc Test fading under transparent window @SYMTestPriority High @SYMTestStatus Implemented @SYMTestActions Construct opaque window lying under two transparent windows. Fade the opaque and the transparent windows. @SYMTestExpectedResults Each of the overlapping areas should be faded only once. */ case REDRAWWIN+5: { ((CTFadeStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0538")); iTest->LogSubTest(_L("Fade behind transparent window")); CRedrawWin* win = new(ELeave) CRedrawWin(this); win->ConstructL(TRect(0,0,0,0)); TInt transparency = win->Win()->SetTransparencyAlphaChannel(); if (transparency!=KErrNotSupported) { FadeBehindTransparentWindowL(); } else { WARN_PRINTF1(_L("Transparency not supported. Skipping test.")); } delete win; break; } case REDRAWWIN+6: ((CTFadeStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); iTest->LogSubTest(_L("Test complete\n")); #ifdef TEST_GRAPHICS_WSERV_TAUTOSERVER_NGA DestroyDrawableWindow(); DestroyBitmaps(); #endif ((CTFadeStep*)iStep)->CloseTMSGraphicsStep(); TestComplete(); break; default: ((CTFadeStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); break; } ((CTFadeStep*)iStep)->RecordTestResultL(); } __WS_CONSTRUCT_STEP__(Fade)