--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/test/tauto/TFADINGBITMAP.CPP Tue Jun 22 15:21:29 2010 +0300
@@ -0,0 +1,250 @@
+// Copyright (c) 2006-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:
+// The fix enables the fading effect with alpha-blending, which was not applied bofore.
+// The test will load a bitmap and two different masks: on/off and alpha-blend.
+// The bitmap will be masked with these masks and displayed before and after
+// setting the fading effect.
+// All different colour modes are being tested for both mask types.
+// The test will check the colour of a specific pixel in the scene before and after the
+// fading. The higher values in the After circle means that it has been highlighted.
+// The result will be printed in wstest log file.
+//
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#include "TFADINGBITMAP.H"
+
+//===================================================
+// CBaseWin Declaration
+//===================================================
+
+CBaseWin::CBaseWin(): CTWin()
+ {
+ }
+
+CBaseWin::~CBaseWin()
+ {
+ delete iTempBitmap;
+ delete iMaskGray256;
+ delete iMaskGray2;
+ delete iTempMask;
+ delete iBitmap;
+ }
+
+void CBaseWin::ConstructWinL(TPoint aPos, TSize aSize, TBool aVisible)
+ {
+ /*** Setting up the window ***/
+ iSize = aSize;
+ SetUpL(aPos, aSize, TheClient->iGroup, *TheClient->iGc, aVisible);
+ Win()->SetBackgroundColor(TRgb(20, 80, 20)); // dark green background
+ BaseWin()->SetRequiredDisplayMode(EColor64K);
+
+ /*** 24 bit bitmap ***/
+ // the original 24b bitmap to mask
+ iTempBitmap = new (ELeave) CFbsBitmap();
+ User::LeaveIfError(iTempBitmap->Load(_L("Z:\\WSTEST\\WSAUTOTEST.MBM"), EMbmWsautotestCircles24b));
+ iBitmap = new (ELeave) CFbsBitmap();
+
+ /*** on/off mask ***/
+ iMaskGray2 = new (ELeave) CFbsBitmap();
+ User::LeaveIfError(iMaskGray2->Load(_L("Z:\\WSTEST\\WSAUTOTEST.MBM"), EMbmWsautotestCircles_mask2b));
+
+ /*** alpha-blend mask ***/
+ // holds the 24bit copy of the alpha blend mask which will be
+ // copied into the proper Gray256 mask, iMaskGray256.
+ iTempMask = new (ELeave) CFbsBitmap();
+ User::LeaveIfError(iTempMask->Load(_L("Z:\\WSTEST\\WSAUTOTEST.MBM"), EMbmWsautotestCircles_mask256));
+ // alpha blend mask; copying its data from iTempMask
+ iMaskGray256 = new (ELeave) CFbsBitmap();
+ User::LeaveIfError(iMaskGray256->Create(iTempBitmap->SizeInPixels(),EGray256));
+ CFbsBitmapDevice *dev = CFbsBitmapDevice::NewL(iMaskGray256);
+ CleanupStack::PushL(dev);
+ CFbsBitGc *gc;
+ User::LeaveIfError(dev->CreateContext(gc));
+ // performing the copying here
+ gc->BitBlt(TPoint(0,0), iTempMask);
+ // cleaning up
+ CleanupStack::Pop();
+ delete gc;
+ gc = NULL;
+ delete dev;
+ dev = NULL;
+ }
+
+void CBaseWin::Draw()
+ {
+ iGc->Clear();
+
+ // Font intialization
+ CFont* myFont;
+ _LIT(KMyFontName,"Swiss");
+ TFontSpec myFontSpec = TFontSpec(KMyFontName,16); // to get smallest Swiss font
+ TFontStyle style = TFontStyle (EPostureUpright, EStrokeWeightBold, EPrintPosNormal);
+ myFontSpec.iFontStyle = style;
+ User::LeaveIfError(TheClient->iScreen->GetNearestFontInPixels(myFont, myFontSpec));
+ iGc->UseFont(myFont);
+ iGc->SetPenStyle(CGraphicsContext::ESolidPen);
+ iGc->SetPenColor(TRgb(255, 255, 255));
+
+ // drawing text
+ iGc->DrawText(_L("Fading = OFF"), TPoint(130,15));
+ iGc->DrawText(_L("Fading = ON"), TPoint(275,15));
+ iGc->DrawText(_L("Alpha blend"), TPoint(15,90));
+ iGc->DrawText(_L("on/off mask"), TPoint(15,190));
+ TBuf <30> displayMode(_L("Display Mode = "));
+ displayMode.Append(iMode);
+ iGc->DrawText(displayMode, TPoint(385,100));
+
+ /*** drawing bitmap with its on/off mask and alpha-blending
+ before and after fading ***/
+ iGc->BitBltMasked(TPoint(140,25), iBitmap,
+ TRect(0,0,100,100), iMaskGray256, EFalse);
+ // Save the pixel colour of a pixel on the outer ring of the circle
+ // before fading enabled.
+ TheClient->iScreen->GetPixel(iNonFadedPixel, TPoint(190,30));
+
+ iGc->SetFaded(ETrue);
+ iGc->BitBltMasked(TPoint(270,25), iBitmap,
+ TRect(0,0,100,100), iMaskGray256, EFalse);
+ // Save the pixel colour of a pixel on the outer ring of the circle
+ // after fading enabled.
+ TheClient->iScreen->GetPixel(iFadedPixel, TPoint(320,30));
+
+ iGc->SetFaded(EFalse);
+
+ iGc->BitBltMasked(TPoint(140,125), iBitmap,
+ TRect(0,0,100,100), iMaskGray2, EFalse);
+ iGc->SetFaded(ETrue);
+ iGc->BitBltMasked(TPoint(270,125), iBitmap,
+ TRect(0,0,100,100), iMaskGray2, EFalse);
+ iGc->SetFaded(EFalse);
+
+ iGc->DiscardFont();
+ TheClient->iScreen->ReleaseFont(myFont);
+ }
+
+
+//===================================================
+// CTFadingBitmap Definition
+//===================================================
+
+CTFadingBitmap::CTFadingBitmap(CTestStep* aStep):
+ CTWsGraphicsBase(aStep), iTestResult(ETrue)
+ {
+ }
+
+CTFadingBitmap::~CTFadingBitmap()
+ {
+ delete iBgWin;
+ }
+
+void CTFadingBitmap::TestFadingL()
+ {
+ // Modes to test
+ TDisplayMode modes[] =
+ {
+ EGray2, EGray4, EGray16, EGray256,
+ EColor16, EColor256, EColor4K, EColor64K,
+ EColor16M, EColor16MU, EColor16MA, EColor16MAP
+ };
+
+ TBuf <12> modesTxt []=
+ {
+ _L("EGray2"), _L("EGray4"), _L("EGray16"), _L("EGray256"),
+ _L("EColor16"), _L("EColor256"), _L("EColor4K"), _L("EColor64K"),
+ _L("EColor16M"), _L("EColor16MU"), _L("EColor16MA"), _L("EColor16MAP")
+ };
+
+ TBuf <100> testTxt;
+ for( int i = 0; i < 12; i++)
+ {
+ testTxt.Format(modesTxt[i]);
+ INFO_PRINTF1(testTxt);
+ // Here we copy the content of the temp bitmap, which holds the test bitmap,
+ // into the bitmap created with alternating color depths.
+ User::LeaveIfError(iBgWin->iBitmap->Create(iBgWin->iTempBitmap->SizeInPixels(), modes[i]));
+ CFbsBitmapDevice *dev = CFbsBitmapDevice::NewL(iBgWin->iBitmap);
+ CleanupStack::PushL(dev);
+ CFbsBitGc *gc;
+ User::LeaveIfError(dev->CreateContext(gc));
+ // performing the copying here
+ gc->BitBlt(TPoint(0,0), iBgWin->iTempBitmap);
+ // setting the mode text to display it
+ iBgWin->iMode = modesTxt[i];
+ // draws the bitmap on screen
+ iBgWin->DrawNow();
+ TheClient->Flush();
+ User::After(5000);
+ // cleaning up
+ CleanupStack::Pop();
+ delete gc;
+ gc = NULL;
+ delete dev;
+ dev = NULL;
+
+ // Here the colours of pixels before and after fading are printed in wstest log
+ testTxt.Format(_L("Nonfaded circle - color of the outside ring: R=%d G=%d B=%d"), iBgWin->iNonFadedPixel.Red(), iBgWin->iNonFadedPixel.Green(), iBgWin->iNonFadedPixel.Blue());
+ INFO_PRINTF1(testTxt);
+ testTxt.Format(_L("Faded circle - color of the outside ring: R=%d G=%d B=%d"), iBgWin->iFadedPixel.Red(), iBgWin->iFadedPixel.Green(), iBgWin->iFadedPixel.Blue());
+ INFO_PRINTF1(testTxt);
+
+ // Checks if the colors are the same before and after the fading.
+ // The color will be the same only in EGray2 and EGray4 as there are no enough
+ // color variations to represent the fading and nonfading effects.
+ if(iTestResult &&
+ iBgWin->iNonFadedPixel.Red() == iBgWin->iFadedPixel.Red() &&
+ iBgWin->iNonFadedPixel.Green() == iBgWin->iFadedPixel.Green() &&
+ iBgWin->iNonFadedPixel.Blue() == iBgWin->iFadedPixel.Blue() &&
+ modes[i] != EGray2 && modes[i] != EGray4)
+ iTestResult = EFalse;
+ }
+ }
+
+void CTFadingBitmap::ConstructL()
+ {
+ // construct the base window of the test in the background
+ TSize scrSize = TSize(TheClient->iScreen->SizeInPixels());
+ iBgWin = new (ELeave) CBaseWin();
+ iBgWin->ConstructWinL(TPoint(0,0), scrSize, ETrue);
+ }
+
+void CTFadingBitmap::RunTestCaseL(TInt aCurTestCase)
+ {
+ ((CTFadingBitmapStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
+ switch(aCurTestCase)
+ {
+ case 1:
+/**
+@SYMTestCaseID GRAPHICS-WSERV-0566
+*/
+ ((CTFadingBitmapStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0566"));
+ TestFadingL();
+ // Fails or passes the test
+ if(!iTestResult)
+ TEST(EFalse);
+ break;
+ default:
+ ((CTFadingBitmapStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
+ ((CTFadingBitmapStep*)iStep)->CloseTMSGraphicsStep();
+ TestComplete();
+ }
+ ((CTFadingBitmapStep*)iStep)->RecordTestResultL();
+ }
+
+__WS_CONSTRUCT_STEP__(FadingBitmap)