diff -r bf7481649c98 -r 2717213c588a windowing/windowserver/test/tauto/TFADE.CPP --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/windowing/windowserver/test/tauto/TFADE.CPP Tue Jun 22 15:21:29 2010 +0300 @@ -0,0 +1,2126 @@ +// 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.iXDrawLine(pos,pos+TSize(0,iTestWinSize.iHeight)); + for(pos.iX=0;pos.iYDrawLine(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)==(!(iiiScreen); +#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& win = *(static_cast*>(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 win; + CleanupStack::PushL(TCleanupItem(ResetAndDestroyWindows, &win)); + TInt height=iTestWinSize.iHeight/NUMBER_OF_WINDOWS; + CTBlankWindow* window=NULL; + TInt ii; + for (TInt firstLoop=0;firstLoopiGroup->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;indexBaseWin()->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;iiWinTreeNode()->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;iiBaseWin()->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)!=(!(countiScreen); +#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; iiConstructExtLD(*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; iiSetTestStepID(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)