--- a/windowing/windowserver/tauto/TAlphaChannel.CPP Fri Jun 11 14:58:47 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1936 +0,0 @@
-// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
-// All rights reserved.
-// This component and the accompanying materials are made available
-// under the terms of "Eclipse Public License v1.0"
-// which accompanies this distribution, and is available
-// at the URL "http://www.eclipse.org/legal/epl-v10.html".
-//
-// Initial Contributors:
-// Nokia Corporation - initial contribution.
-//
-// Contributors:
-//
-// Description:
-// An alpha channel test case.
-// Output different graphics primitives in each window using three graphics modes
-// for pen and brush : semi-transparent,transparent, opaque
-// Test also exercises anti-aliasing and fading for 16MA display mode
-// Moves sprite on the window. Tests a sprite functionality.
-// Creates RBackedUpWindow window and moves it over transparent window,
-// hides and shows it.
-// Moves windows on the screen, overlaps them
-// Actions:
-// Create a background window, and five foreground windows:
-// -transparent and semi-transparent
-// -transparent with transparency factor
-// -not transparent
-//
-//
-
-#include "TAlphaChannel.H"
-
-const TInt KWindowIndention = 2;
-const TInt KSizeKoeff = 15;
-
-
-LOCAL_D TPtrC ColumnName[]={
- _L("Opaque"),
- _L("Semi-transparent"),
- _L("Transparent"),
- _L(""),
- _L(""),
- _L(""),
- };
-
-LOCAL_D TPtrC RowName[]={
- _L("n"),
- _L("and"),
- _L("or"),
- _L("xor"),
- _L(""),
- _L(""),
- };
-
-
-//
-//
-CTAlphaChannel::CTAlphaChannel(CTestStep* aStep):
- CTWsGraphicsBase(aStep), iArrWindow(8)
- {
- }
-
-CTAlphaChannel::~CTAlphaChannel()
- {
- delete iBitmap64K_1;
- delete iBitmap16MA_1;
- delete iBitmap64K_2;
- delete iBitmap16MA_2;
- delete iBitmap64K_3;
- delete iBitmap16MA_3;
-
- delete iBitmapMask;
- delete iBitmapGray256Mask;
-
- delete iBitmapContext64K_1;
- delete iBitmapContext16MA_1;
- delete iBitmapContext64K_2;
- delete iBitmapContext16MA_2;
- delete iBitmapContext64K_3;
- delete iBitmapContext16MA_3;
-
- delete iBitmapDevice64K_1;
- delete iBitmapDevice16MA_1;
- delete iBitmapDevice64K_2;
- delete iBitmapDevice16MA_2;
- delete iBitmapDevice64K_3;
- delete iBitmapDevice16MA_3;
-
- delete iBackgroundWindow;
-
-
- iArrWindow.ResetAndDestroy();
-
- if(iFont)
- TheClient->iScreen->ReleaseFont(iFont);
- if(iFont1)
- TheClient->iScreen->ReleaseFont(iFont1);
-
- BaseWin->SetVisible(ETrue);
- TestWin->SetVisible(ETrue);
- }
-
-void CTAlphaChannel::ConstructL()
- {
- const TInt KIndent = 10;
- BaseWin->SetVisible(EFalse);
- TestWin->SetVisible(EFalse);
-
- iText = _L("This is a text");
- iBrushStyle = CGraphicsContext::ESolidBrush;
- iPenTable = KRgbBlack;
-
- TSize screenSize=TheClient->iGroup->Size();
- TInt winWidth=(screenSize.iWidth)-KIndent;
- TInt winHeight=screenSize.iHeight-KIndent;
- TDisplayMode dispMode = EColor64K;
-
- //background opaque window
- iBackgroundWindow = new (ELeave) CTWinAlpha();
- iBackgroundWindow->SetUpL(TPoint(5,5),TSize(winWidth,winHeight),TheClient->iGroup,*TheClient->iGc, &dispMode);
- RWindow *theWin = (RWindow*) (iBackgroundWindow->DrawableWin());
- theWin->SetBackgroundColor(TRgb(255, 0, 0));
- iBackgroundWindow->DrawNow();
-
- iSizeForegroundWindow.iWidth = (winWidth - KWindowIndention * 4) / 5 ;
- iSizeForegroundWindow.iHeight = winHeight;
-
- CalculateSizePrimitives(iSizeForegroundWindow);
-
- //-------------create bitmaps
- //create 64K bitmap
- iBitmap64K_1 = new (ELeave) CFbsBitmap ;
- iBitmap64K_1->Create(iBitmapSize,EColor64K);
- iBitmap64K_2 = new (ELeave) CFbsBitmap ;
- iBitmap64K_2->Create(iBitmapSize,EColor64K);
- iBitmap64K_3 = new (ELeave) CFbsBitmap ;
- iBitmap64K_3->Create(iBitmapSize,EColor64K);
- iBitmapDevice64K_1 = CFbsBitmapDevice::NewL(iBitmap64K_1);
- iBitmapDevice64K_1->CreateContext(iBitmapContext64K_1);
- iBitmapDevice64K_2 = CFbsBitmapDevice::NewL(iBitmap64K_2);
- iBitmapDevice64K_2->CreateContext(iBitmapContext64K_2);
- iBitmapDevice64K_3 = CFbsBitmapDevice::NewL(iBitmap64K_3);
- iBitmapDevice64K_3->CreateContext(iBitmapContext64K_3);
-
- //create 16MA bitmap
- iBitmap16MA_1 = new (ELeave) CFbsBitmap ;
- iBitmap16MA_1->Create(iBitmapSize, EColor16MA);
- iBitmap16MA_2 = new (ELeave) CFbsBitmap ;
- iBitmap16MA_2->Create(iBitmapSize, EColor16MA);
- iBitmap16MA_3 = new (ELeave) CFbsBitmap ;
- iBitmap16MA_3->Create(iBitmapSize, EColor16MA);
-
- iBitmapDevice16MA_1 = CFbsBitmapDevice::NewL(iBitmap16MA_1);
- iBitmapDevice16MA_1->CreateContext(iBitmapContext16MA_1);
- iBitmapDevice16MA_2 = CFbsBitmapDevice::NewL(iBitmap16MA_2);
- iBitmapDevice16MA_2->CreateContext(iBitmapContext16MA_2);
- iBitmapDevice16MA_3 = CFbsBitmapDevice::NewL(iBitmap16MA_3);
- iBitmapDevice16MA_3->CreateContext(iBitmapContext16MA_3);
-
- //create mask bitmap
- iBitmapMask = new (ELeave) CFbsBitmap ;
- iBitmapMask->Create(iBitmapSize, EGray2);
-
- CFbsBitmapDevice* theBitmapDevice = CFbsBitmapDevice::NewL(iBitmapMask);
- CGraphicsContext* theBitmapContext = NULL;
- theBitmapDevice->CreateContext(theBitmapContext);
- TRect rect = TRect(iBitmapMask->SizeInPixels());
- theBitmapContext->SetBrushColor(KRgbWhite);
- theBitmapContext->SetPenColor(KRgbWhite);
- theBitmapContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
- theBitmapContext->DrawRect(rect);
-
- rect.Shrink(4, 4);
- theBitmapContext->SetBrushColor(KRgbBlack);
- theBitmapContext->SetPenColor(KRgbBlack);
- theBitmapContext->DrawEllipse(rect);
- delete theBitmapContext;
- delete theBitmapDevice;
-
- //create 256gray bitmap mask
- iBitmapGray256Mask = new (ELeave) CFbsBitmap;
- iBitmapGray256Mask->Create(iBitmapSize, EGray256);
- theBitmapDevice = CFbsBitmapDevice::NewL(iBitmapGray256Mask);
- theBitmapDevice->CreateContext(theBitmapContext);
-
- if(iBitmapSize != TSize(0, 0))
- {
- //fill bitmap with 256 gradation of gray
- TInt theStep = 256 / iBitmapGray256Mask->SizeInPixels().iWidth;
-
- for(TInt ii = 0; ii < iBitmapGray256Mask->SizeInPixels().iWidth; ii++)
- {
- TInt theSingleCol = theStep * ii;
- TRgb theCol(theSingleCol, theSingleCol, theSingleCol);
- theBitmapContext->SetBrushColor(theCol);
- theBitmapContext->SetPenColor(theCol);
- TPoint ptFrom(ii, 0);
- TPoint ptTo(ii, iBitmapGray256Mask->SizeInPixels().iHeight);
- theBitmapContext->DrawLine(ptFrom, ptTo);
- }
- }
- delete theBitmapContext;
- delete theBitmapDevice;
- //--------------
- TFontSpec fontSpec(KTestFontTypefaceName,600);
-
- fontSpec.iFontStyle.SetStrokeWeight(EStrokeWeightBold);
- fontSpec.iFontStyle.SetBitmapType(EAntiAliasedGlyphBitmap);
-
- User::LeaveIfError(TheClient->iScreen->GetNearestFontToDesignHeightInTwips(iFont, fontSpec));
-
- TFontSpec fontSpec1(KTestFontTypefaceName,100);
- User::LeaveIfError(TheClient->iScreen->GetNearestFontToDesignHeightInTwips(iFont1, fontSpec1));
- }
-
-void CTAlphaChannel::CalculateSizePrimitives(const TSize& aSize)
- {
- TInt theLen = aSize.iWidth / KSizeKoeff;
-
- iBitmapSize = TSize(2 * theLen, 2 * theLen);
- iRectangleSize = TSize(2 * theLen, 2 * theLen);
- iEllipseSize = TSize(4 * theLen, 2 * theLen);
- iTriangleSize = TSize(3 * theLen, 2 * theLen);
- iFirstCellWidth = static_cast <TInt> (1.2 * theLen);
- iFirstCellHeight = static_cast <TInt> (1.5 * theLen);
- }
-
-void CTAlphaChannel::DrawOffscreenBitmapsL(const TRgb& /*aPen*/, const TRgb& aBrush,
- CGraphicsContext* aBitmapContext64K, CGraphicsContext* aBitmapContext16MA,
- CFbsBitmap* aBitmap64K, CFbsBitmap* aBitmap16MA)
- {
-
- if(aBitmapContext64K && aBitmap64K)
- {
- SEpocBitmapHeader header = aBitmap64K->Header();
- TInt source_buffer_size = header.iBitmapSize / header.iSizeInPixels.iHeight * header.iBitsPerPixel ;
- TUint8* buffer = new(ELeave) TUint8[source_buffer_size];
- TPtr8 source_ptr(buffer, source_buffer_size, source_buffer_size);
-
- TUint16* bufferCur = reinterpret_cast<TUint16*> (buffer);
- TInt ii;
- for(ii = 0; ii < header.iSizeInPixels.iWidth; ++ii)
- {
- *bufferCur = aBrush._Color64K();
- bufferCur ++;
- }
-
- for(ii = 0; ii < header.iSizeInPixels.iHeight; ++ii)
- {
- aBitmap64K -> SetScanLine(source_ptr, ii);
- }
-
- delete [] buffer;
- }
-
- if(aBitmapContext16MA && aBitmap16MA)
- {
- SEpocBitmapHeader header = aBitmap16MA -> Header();
- TInt source_buffer_size = header.iBitmapSize / header.iSizeInPixels.iHeight * header.iBitsPerPixel ;
- TUint8* buffer = new(ELeave) TUint8[source_buffer_size];
- TPtr8 source_ptr(buffer, source_buffer_size, source_buffer_size);
-
- TUint32* bufferCur = reinterpret_cast<TUint32*> (buffer);
- TInt ii;
- for(ii = 0; ii < header.iSizeInPixels.iWidth; ++ii)
- {
- *bufferCur = aBrush._Color16MA();
- bufferCur ++;
- }
-
- for(ii = 0; ii < header.iSizeInPixels.iHeight; ++ii)
- {
- aBitmap16MA -> SetScanLine(source_ptr, ii);
- }
-
- delete [] buffer;
- }
-
- }
-
-enum {EOpaque, ESemiTrans, ETrans};
-
-TRgb CTAlphaChannel::GetBrush(TInt aIndex) const
- {
- switch(aIndex)
- {
- case EOpaque:
- return TRgb(0, 0, 255, 255);
- case ESemiTrans:
- return TRgb(0, 0, 255, 128);
- case ETrans:
- return TRgb(0, 0, 255, 0);
- default : break;
- }
-
- return TRgb(0, 0, 255, 255);
- }
-
-TRgb CTAlphaChannel::GetPen(TInt aIndex) const
- {
- switch(aIndex)
- {
- case EOpaque:
- return TRgb(0, 0, 255, 255);
- case ESemiTrans:
- return TRgb(0, 0, 255, 128);
- case ETrans:
- return TRgb(0, 0, 255, 0);
- default : break;
- }
-
- return TRgb(0, 0, 255, 255);
- }
-
-CGraphicsContext::TDrawMode CTAlphaChannel::GetDrawMode(TInt /*aIndex*/) const
- {
- return CGraphicsContext::EDrawModePEN;
- }
-
-enum {EAll64K, EAll16MA, EAllDifferent};// later may add EAll16M
-void CTAlphaChannel::SetDisplayModeConfiguration(TInt aConfig)
- {
- switch (aConfig)
- {
- case EAll64K:
- if(iForegroundWindowOpaque)
- iForegroundWindowOpaque->SetDisplayMode(EColor64K);
- if(iForegroundWindowSemiTrans)
- iForegroundWindowSemiTrans->SetDisplayMode(EColor64K);
- if(iForegroundWindowTrans)
- iForegroundWindowTrans->SetDisplayMode(EColor64K);
- break;
- case EAll16MA:
- if(iForegroundWindowOpaque)
- iForegroundWindowOpaque->SetDisplayMode(EColor16MA);
- if(iForegroundWindowSemiTrans)
- iForegroundWindowSemiTrans->SetDisplayMode(EColor16MA);
- if(iForegroundWindowTrans)
- iForegroundWindowTrans->SetDisplayMode(EColor16MA);
- break;
- case EAllDifferent:
- if(iForegroundWindowOpaque)
- iForegroundWindowOpaque->SetDisplayMode(EColor256);
- if(iForegroundWindowSemiTrans)
- iForegroundWindowSemiTrans->SetDisplayMode(EColor64K);
- if(iForegroundWindowTrans)
- iForegroundWindowTrans->SetDisplayMode(EColor16MA);
- break;
- }
- }
-
-enum {ETiled, EOverlapping};
-
-void CTAlphaChannel::SetPositionConfiguration(TInt aConfig)
- {
- TSize screenSize=TheClient->iGroup->Size();
- TInt winWidth=(screenSize.iWidth)-10;
- TInt winHeight=screenSize.iHeight-10;
- if (aConfig==ETiled)
- {
- if(iForegroundWindowOpaque)
- iForegroundWindowOpaque->SetPos(TPoint(winWidth/5, 0));
- if(iForegroundWindowSemiTrans)
- iForegroundWindowSemiTrans->SetPos(TPoint(2*winWidth/5, 0));
- if(iForegroundWindowTrans)
- iForegroundWindowTrans->SetPos(TPoint(3*winWidth/5, 0));
- }
- else
- {
- if(iForegroundWindowOpaque)
- iForegroundWindowOpaque->SetPos(TPoint(winWidth/3, -winHeight/3));
- if(iForegroundWindowSemiTrans)
- iForegroundWindowSemiTrans->SetPos(TPoint(2*winWidth/5, winHeight/3));
- if(iForegroundWindowTrans)
- iForegroundWindowTrans->SetPos(TPoint(winWidth/2, -winHeight/3));
- }
- if (iForegroundWindowBottom)
- iForegroundWindowBottom->SetPos(TPoint(0, 0));
- if (iForegroundWindowTop)
- iForegroundWindowTop->SetPos(TPoint(4*winWidth/5, 0));
- }
-
-enum {EVaryingTransparency, EVaryingColour};
-
-void CTAlphaChannel::SetColourConfiguration(TInt aConfig)
- {
- RWindow* win;
- if (aConfig==EVaryingTransparency)
- {
- // red background, green foregrounds of varying transparency
- win = (RWindow*)(iBackgroundWindow->DrawableWin());
- win->SetBackgroundColor(TRgb(255,0,0,255));
-
- if(iForegroundWindowOpaque)
- iForegroundWindowOpaque->SetBackgroundColor(TRgb(0,255,0,255));
- if(iForegroundWindowSemiTrans)
- iForegroundWindowSemiTrans->SetBackgroundColor(TRgb(0,255,0,128));
- if(iForegroundWindowTrans)
- iForegroundWindowTrans->SetBackgroundColor(TRgb(0,255,0,0));
- }
- else
- {
- // white background, semi-transparent foregrounds in primary colours
- win = (RWindow*)(iBackgroundWindow->DrawableWin());
- win->SetBackgroundColor(TRgb(255,255,255,255));
-
- if(iForegroundWindowOpaque)
- iForegroundWindowOpaque->SetBackgroundColor(TRgb(255,0,0,128));
- if(iForegroundWindowSemiTrans)
- iForegroundWindowSemiTrans->SetBackgroundColor(TRgb(0,255,0,128));
- if(iForegroundWindowTrans)
- iForegroundWindowTrans->SetBackgroundColor(TRgb(0,0,255,128));
- }
- }
-
-void CTAlphaChannel::DoMoving()
- {
- TPoint pos;
- for (TInt i = 0; i<20; i++)
- {
- if (iForegroundWindowBottom)
- {
- pos = iForegroundWindowBottom->Position();
- pos += TPoint(1,5);
- iForegroundWindowBottom->SetPos(pos);
- }
-
- if (iForegroundWindowOpaque)
- {
- pos = iForegroundWindowOpaque->Position();
- pos += TPoint(1,5);
- iForegroundWindowOpaque->SetPos(pos);
- }
-
- if (iForegroundWindowSemiTrans)
- {
- pos = iForegroundWindowSemiTrans->Position();
- pos += TPoint(1,5);
- iForegroundWindowSemiTrans->SetPos(pos);
- }
-
- if (iForegroundWindowTrans)
- {
- pos = iForegroundWindowTrans->Position();
- pos += TPoint(1,5);
- iForegroundWindowTrans->SetPos(pos);
- }
-
- if (iForegroundWindowTop)
- {
- pos = iForegroundWindowTop->Position();
- pos += TPoint(1,5);
- iForegroundWindowTop->SetPos(pos);
- }
-
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(50000));
- }
-
- }
-
-void CTAlphaChannel::DoMoveBehind()
- {
- TPoint pos = iBackgroundWindow->Position();
- for (TInt i = 0; i<20; i++)
- {
- pos += TPoint(0,5);
- iBackgroundWindow->SetPos(pos);
-
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(50000));
- }
- iBackgroundWindow->SetPos(TPoint(5,5));
- }
-
-void CTAlphaChannel::DoInvisibility()
- {
- RWindow* win;
- if (iForegroundWindowBottom)
- {
- win = (RWindow*)(iForegroundWindowBottom->DrawableWin());
- win->SetVisible(EFalse);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
-
- win->SetVisible(ETrue);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
- }
- if (iForegroundWindowOpaque)
- {
- win = (RWindow*)(iForegroundWindowOpaque->DrawableWin());
- win->SetVisible(EFalse);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
-
- win->SetVisible(ETrue);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
- }
- if (iForegroundWindowSemiTrans)
- {
- win = (RWindow*)(iForegroundWindowSemiTrans->DrawableWin());
- win->SetVisible(EFalse);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
-
- win->SetVisible(ETrue);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
- }
- if (iForegroundWindowTrans)
- {
- win = (RWindow*)(iForegroundWindowTrans->DrawableWin());
- win->SetVisible(EFalse);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
-
- win->SetVisible(ETrue);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
- }
- if (iForegroundWindowTop)
- {
- win = (RWindow*)(iForegroundWindowTop->DrawableWin());
- win->SetVisible(EFalse);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
-
- win->SetVisible(ETrue);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
- }
- }
-
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0328
-
- @SYMTestCaseDesc Testing a Fading.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Set fading parameters. Draw all graphics primitives and bitmaps with
- various transparency .
-
- @SYMTestExpectedResults
- All windows should be drawn according their fading values.
- */
-
-void CTAlphaChannel::TestFading()
- {
- iIsFading = ETrue;
- iBlackFading = 0;
- iWhiteFading = 128;
- iText.Format(_L("Fading. %dX%d"), iBlackFading, iWhiteFading);
- INFO_PRINTF1(iText);
- DrawTestWindowsNow();
-
- User::After(TTimeIntervalMicroSeconds32(1000000 * 1));
- iIsFading = EFalse;
- DrawTestWindowsNow();
- iIsFading = ETrue;
- iBlackFading = 128;
- iWhiteFading = 255;
- iText.Format(_L("Fading. %dX%d"), iBlackFading, iWhiteFading);
- INFO_PRINTF1(iText);
- DrawTestWindowsNow();
-
- iIsFading = EFalse;
- }
-
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0329
-
- @SYMTestCaseDesc Tests moving of foreground windows.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Set fading parameters. Set position of foreground windows as tile .
-
- @SYMTestExpectedResults
- Foreground window has to be redrawn properly.
- */
-
-void CTAlphaChannel::TestMoving()
- {
- SetPositionConfiguration(ETiled);
- DoMoving();
- SetPositionConfiguration(ETiled);
- }
-
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0330
-
- @SYMTestCaseDesc Tests moving of foreground windows.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Set fading parameters. Moves foreground windows over the screen .
-
- @SYMTestExpectedResults
- Foreground window has to be redrawn properly.
- */
-
-
-void CTAlphaChannel::TestMovingOverlapping()
- {
- TPoint pos;
-
- for (TInt i = 0; i < 20; i++)
- {
- if (iForegroundWindowOpaque)
- {
- pos = iForegroundWindowOpaque->Position();
- pos += TPoint(3,0);
- iForegroundWindowOpaque->SetPos(pos);
- }
- if (iForegroundWindowTrans)
- {
- pos = iForegroundWindowTrans->Position();
- pos -= TPoint(3,0);
- iForegroundWindowTrans->SetPos(pos);
- }
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(50000));
- }
- }
-
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0331
-
- @SYMTestCaseDesc Testing transparency factor for windows with alpha channel.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Sets background colour with various level of transparency .
-
- @SYMTestExpectedResults
- Foreground window must be redrawn properly.
- */
-void CTAlphaChannel::TestChangingTransparencyFactor()
- {
- TInt i = 0;
- while (i <= 255)
- {
- iForegroundWindowOpaque->SetBackgroundColor(TRgb(0,255,0,255-i));
- iForegroundWindowTrans->SetBackgroundColor(TRgb(0,255,0,i));
- iForegroundWindowOpaque->DrawNow();
- iForegroundWindowTrans->DrawNow();
- i+=15;
- }
- i=0;
- while (i <= 255)
- {
- iForegroundWindowOpaque->SetBackgroundColor(TRgb(0,255,0,i));
- iForegroundWindowTrans->SetBackgroundColor(TRgb(0,255,0,255-i));
- iForegroundWindowOpaque->DrawNow();
- iForegroundWindowTrans->DrawNow();
- User::After(TTimeIntervalMicroSeconds32(50000));// 20 frames per second
- i+=15;
- }
- }
-
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0332
-
- @SYMTestCaseDesc Testing redrawing of foreground windows while their positions and
- invisibility have been changed.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Sets position of the foreground windows as overlapping, tiled.
- Change visability of semi transparent foreground window. .
-
- @SYMTestExpectedResults
- Foreground window must be redrawn properly.
- */
-
-void CTAlphaChannel::TestInvisibility()
- {
- RWindow* win = (RWindow*)(iForegroundWindowSemiTrans->DrawableWin());
- SetPositionConfiguration(EOverlapping);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
-
- win->SetVisible(EFalse);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
-
- win->SetVisible(ETrue);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
-
- SetPositionConfiguration(ETiled);
-
- }
-
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0333
-
- @SYMTestCaseDesc Testing redrawing of foreground windows after a
- background window has been moved.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Sets position of the foreground windows as tiled.
- Moves background window.
-
- @SYMTestExpectedResults
- Foreground windows must be redrawn properly.
- */
-void CTAlphaChannel::TestMoveUnderneath()
- {
- SetPositionConfiguration(ETiled);
- DoMoveBehind();
- }
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0334
-
- @SYMTestCaseDesc Testing redrawing of foreground windows after a
- background window has been moved.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Sets different position of the foreground windows: tiled, overlapping.
- Moves background window.
-
- @SYMTestExpectedResults
- Foreground windows has to be redrawn properly.
- */
-
-void CTAlphaChannel::TestMoveBehindInvisible()
- {
- SetPositionConfiguration(ETiled);
- RWindow* win;
- win = (RWindow*)(iForegroundWindowOpaque->DrawableWin());
- win->SetVisible(EFalse);
- win = (RWindow*)(iForegroundWindowSemiTrans->DrawableWin());
- win->SetVisible(EFalse);
- win = (RWindow*)(iForegroundWindowTrans->DrawableWin());
- win->SetVisible(EFalse);
- TheClient->iWs.Flush();
-
- DoMoveBehind();
-
- SetPositionConfiguration(EOverlapping);
- DoMoveBehind();
-
- win = (RWindow*)(iForegroundWindowOpaque->DrawableWin());
- win->SetVisible(ETrue);
- win = (RWindow*)(iForegroundWindowSemiTrans->DrawableWin());
- win->SetVisible(ETrue);
- win = (RWindow*)(iForegroundWindowTrans->DrawableWin());
- win->SetVisible(ETrue);
- TheClient->iWs.Flush();
- }
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0335
-
- @SYMTestCaseDesc Testing redrawing of foreground windows.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Redraws background window
-
- @SYMTestExpectedResults
- Foreground windows should be redrawn properly, if background window
- has been redrawn.
- */
-void CTAlphaChannel::TestRedrawBehind()
- {
- TheClient->iWs.Flush();
- iBackgroundWindow->iState += 1;
- iBackgroundWindow->DrawNow();
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
- }
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0336
-
- @SYMTestCaseDesc Testing transparency with RWsSprite class.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Creates RBackedUpWindow window and moves it over transparent window
- appears and dissapears set up window as transparent
-
- @SYMTestExpectedResults
- Must work with transparent windows.
- */
-
-void CTAlphaChannel::TestAnimationL()
- {
- for(TInt ii = 0; ii < iArrWindow.Count(); ii++)
- {
- iArrWindow[ii]->StartAnimationL();
- }
- }
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0337
-
- @SYMTestCaseDesc Testing transparency with RBackedUpWindow window class.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Creates RBackedUpWindow window and moves it over transparent window
- appears and dissapears set up transparent window as transparent
-
- @SYMTestExpectedResults
- Do not expect correct work of alpha channel with
- RBackedUpWindow window class.
-*/
-void CTAlphaChannel::TestBackedWindowL()
- {
- for(TInt ii = 0; ii < iArrWindow.Count(); ii++)
- {
- iArrWindow[ii]->CreateBackedWindowL();
- }
- }
-
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0338
-
- @SYMTestCaseDesc Implication of setting SetDrawOpaque on drawing with alpha channel.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Change graphic context to opaque and none opaque and rewdraw all test windows
-
- @SYMTestExpectedResults
- must not impact on output with alpha channel
- */
-
-void CTAlphaChannel::TestEffectSetOpaque()
- {
- for(TInt ii = 0; ii < 3; ii++)
- {
-
- for(TInt ii = 0; ii < iArrWindow.Count(); ii++)
- {
- iArrWindow[ii]->SetDrawOpaque(EFalse);
- }
-
- DrawTestWindowsNow();
- User::After(TTimeIntervalMicroSeconds32(1000000));
-
- for(TInt jj = 0; jj < iArrWindow.Count(); jj++)
- {
- iArrWindow[jj]->SetDrawOpaque(ETrue);
- }
-
- DrawTestWindowsNow();
- User::After(TTimeIntervalMicroSeconds32(1000000));
- }
- }
-
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0339
-
- @SYMTestCaseDesc Redrawing of child windows with transparency.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Creates a few child windows with various levels of transparency.
- Moves parent window over the screen.
- @SYMTestExpectedResults
- Child and parent windows must be redrawn properly
- */
-
-void CTAlphaChannel::TestChildWindowL()
- {
- SetPositionConfiguration(ETiled);
- SetColourConfiguration(EVaryingColour);
- DrawTestWindowsNow(ETrue);
- TDisplayMode mode = EColor64K;
- CTWinAlphaForeground* childWin[] = {NULL, NULL, NULL, NULL, NULL};
- if (iForegroundWindowBottom)
- {
- childWin[0] = CTWinAlphaForeground::NewL(*this, TPoint(0,0),TSize(50,50),iForegroundWindowBottom,*TheClient->iGc, &mode, TRgb(0, 255, 0,128), ENonTransparentAlpha);
- childWin[0]->DrawNow();
- }
- if (iForegroundWindowOpaque)
- {
- childWin[1] = CTWinAlphaForeground::NewL(*this, TPoint(0,0),TSize(50,50),iForegroundWindowOpaque,*TheClient->iGc, &mode, TRgb(0, 255, 0,128), ETransparencyFactor);
- childWin[1]->DrawNow();
- }
- if (iForegroundWindowSemiTrans)
- {
- childWin[2] = CTWinAlphaForeground::NewL(*this, TPoint(0,0),TSize(50,50),iForegroundWindowSemiTrans,*TheClient->iGc, &mode, TRgb(0, 255, 0,128), ETransparencyAlpha);
- childWin[2]->DrawNow();
- }
- if (iForegroundWindowTrans)
- {
- childWin[3] = CTWinAlphaForeground::NewL(*this, TPoint(0,0),TSize(50,50),iForegroundWindowTrans,*TheClient->iGc, &mode, TRgb(0, 255, 0,128), ENonTransparentAlpha);
- childWin[3]->DrawNow();
- }
- if (iForegroundWindowTop)
- {
- childWin[4] = CTWinAlphaForeground::NewL(*this, TPoint(0,0),TSize(50,50),iForegroundWindowTop,*TheClient->iGc, &mode, TRgb(0, 255, 0,128), ENonTransparentAlpha);
- childWin[4]->DrawNow();
- }
- TheClient->iWs.Flush();
-
- User::After(TTimeIntervalMicroSeconds32(1000000));
- DoMoving();
-
- delete childWin[0];
- delete childWin[1];
- delete childWin[2];
- delete childWin[3];
- delete childWin[4];
- }
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0340
-
- @SYMTestCaseDesc Redrawing of multiple child windows with transparency.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Creates multiple child windows with various levels of transparency.
- Moves parent windows over the screen.
- @SYMTestExpectedResults
- Child and parent windows must be redrawn properly
- */
-
-void CTAlphaChannel::TestMultipleChildrenL()
- {
- SetPositionConfiguration(ETiled);
- SetColourConfiguration(EVaryingColour);
- TDisplayMode mode = EColor64K;
- CTWinAlphaForeground* childWin[] = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
- if (iForegroundWindowBottom)
- {
- childWin[0] = CTWinAlphaForeground::NewL(*this, TPoint(0,0),TSize(50,50),iForegroundWindowBottom,*TheClient->iGc, &mode, TRgb(255, 255, 255,128), ETransparencyFactor);
- childWin[1] = CTWinAlphaForeground::NewL(*this, TPoint(20,20),TSize(50,50),childWin[0],*TheClient->iGc, &mode, TRgb(255, 255, 255,128), ENonTransparentAlpha);
- childWin[0]->DrawNow();
- childWin[1]->DrawNow();
- }
- if (iForegroundWindowOpaque)
- {
- childWin[4] = CTWinAlphaForeground::NewL(*this, TPoint(0,0),TSize(100,100),iForegroundWindowOpaque,*TheClient->iGc, &mode, TRgb(255, 255, 255,128), ETransparencyAlpha);
- childWin[5] = CTWinAlphaForeground::NewL(*this, TPoint(20,80),TSize(50,50),iForegroundWindowOpaque,*TheClient->iGc, &mode, TRgb(255, 255, 255,128), ENonTransparentAlpha);
- childWin[6] = CTWinAlphaForeground::NewL(*this, TPoint(20,20),TSize(60,60),childWin[4],*TheClient->iGc, &mode, TRgb(0, 255, 0,128), ENonTransparentAlpha);
- childWin[7] = CTWinAlphaForeground::NewL(*this, TPoint(20,20),TSize(50,50),childWin[6],*TheClient->iGc, &mode, TRgb(0, 255, 0,128), ENonTransparentAlpha);
- childWin[4]->DrawNow();
- childWin[5]->DrawNow();
- childWin[6]->DrawNow();
- childWin[7]->DrawNow();
- }
- DrawTestWindowsNow(ETrue);
-
- TestMoving();
-
- delete childWin[0];
- delete childWin[1];
- delete childWin[2];
- delete childWin[3];
- delete childWin[4];
- delete childWin[5];
- delete childWin[6];
- delete childWin[7];
- }
-
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0341
-
- @SYMTestCaseDesc Test transparent window which positioned under opaque.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Creates an opaque window on the topt of transparent windows.
- Moves transparent windows over the screen.
- @SYMTestExpectedResults
- Transparent windows must be redrawn properly
- */
-
-void CTAlphaChannel::TestTransparentMovingUnderOpaqueL()
- {
- SetColourConfiguration(EVaryingColour);
- TDisplayMode mode = EColor64K;
- CTWinAlphaForeground* win = CTWinAlphaForeground::NewL(*this, TPoint(0,100),TSize(600,40),TheClient->iGroup,*TheClient->iGc, &mode, TRgb(0, 255, 0,128), ENonTransparentAlpha);
- win->DrawNow();
-
- TestMoving();
-
- delete win;
- }
-/**
- @SYMTestCaseID GRAPHICS-WSERV-0342
-
- @SYMTestCaseDesc Changing orinary position of the foreground windows.
-
- @SYMTestPriority High
-
- @SYMTestStatus Implemented
-
- @SYMTestActions
- Set ordinal position of foreground windows.
- @SYMTestExpectedResults
- Foreground windows must be redrawn properly
- */
-
-void CTAlphaChannel::TestSetOrdinalPosition()
- {
- SetColourConfiguration(EVaryingColour);
- SetPositionConfiguration(EOverlapping);
- DrawTestWindowsNow(ETrue);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
- RWindow* win;
- for (TInt i=0; i<3; i++)
- {
- if (iForegroundWindowOpaque)
- {
- win = (RWindow*)(iForegroundWindowOpaque->DrawableWin());
- win->SetOrdinalPosition(0);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
- }
- if (iForegroundWindowSemiTrans)
- {
- win = (RWindow*)(iForegroundWindowSemiTrans->DrawableWin());
- win->SetOrdinalPosition(0);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
- }
- if (iForegroundWindowTrans)
- {
- win = (RWindow*)(iForegroundWindowTrans->DrawableWin());
- win->SetOrdinalPosition(0);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(1000000));
- }
- }
- }
-
-void CTAlphaChannel::RunTestCaseL(TInt aCurTestCase)
- {
- User::After(TTimeIntervalMicroSeconds32(1000000 * 2));
-
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName);
- switch (aCurTestCase)
- {
- case 1:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
- CreateForegroundWindowsL(iSizeForegroundWindow, EColor16MU);
- break;
- case 2:
- {
- CreateForegroundWindowsL(iSizeForegroundWindow, EColor64K);
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0339"));
- TestChildWindowL();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0340"));
- TestMultipleChildrenL();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0342"));
- TestSetOrdinalPosition();
- }
- break;
- case 3:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0336"));
- TestAnimationL();
- case 4:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0337"));
- TestBackedWindowL();
- break;
- case 5:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0338"));
- TestEffectSetOpaque();
- break;
- case 6:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
- iIsFading = EFalse;
- DrawTestWindowsNow();
- INFO_PRINTF1(_L("Anti-aliasing"));
- iIsFading = EFalse;
- iDrawText = ETrue;
- DrawTestWindowsNow();
- break;
- case 7:
- SetColourConfiguration(EVaryingColour);
- SetPositionConfiguration(EOverlapping);
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0335"));
- TestRedrawBehind();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0329"));
- TestMoving();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0330"));
- TestMovingOverlapping();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0341"));
- TestMoveBehindInvisible();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0334"));
- TestTransparentMovingUnderOpaqueL();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0331"));
- TestInvisibility();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0332"));
- TestChangingTransparencyFactor();
- break;
- case 8:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0328"));
- TestFading();
- break;
- case 9:
- {
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
- iDrawText = EFalse;
- SetDisplayModeConfiguration(EAll16MA);
- }
- break;
- case 10:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
- iIsFading = EFalse;
- DrawTestWindowsNow();
- INFO_PRINTF1(_L("Anti-aliasing"));
- iIsFading = EFalse;
- iDrawText = ETrue;
- DrawTestWindowsNow();
- break;
- case 11:
- SetColourConfiguration(EVaryingColour);
- SetPositionConfiguration(EOverlapping);
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0333"));
- TestMoveUnderneath();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0335"));
- TestRedrawBehind();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0329"));
- TestMoving();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0332"));
- TestInvisibility();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0331"));
- TestChangingTransparencyFactor();
- break;
- case 12:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0328"));
- TestFading();
- break;
- case 13:
- SetDisplayModeConfiguration(EAllDifferent);
- SetColourConfiguration(EVaryingColour);
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0333"));
- TestMoveUnderneath();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0335"));
- TestRedrawBehind();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0332"));
- TestInvisibility();
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0329"));
- TestMoving();
- break;
- case 14:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0336"));
- TestAnimationL();
- break;
- case 15:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0337"));
- TestBackedWindowL();
- break;
- case 16:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(_L("GRAPHICS-WSERV-0338"));
- TestEffectSetOpaque();
- break;
- case 17:
- ((CTAlphaChannelStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName);
- ((CTAlphaChannelStep*)iStep)->CloseTMSGraphicsStep();
- TestComplete();
- break;
- }
- ((CTAlphaChannelStep*)iStep)->RecordTestResultL();
- }
-
-/** Calculate foreground windows margin and create them*/
-void CTAlphaChannel::CreateForegroundWindowsL(const TSize& aSize, TDisplayMode aMode)
- {
- TPoint pt = TPoint(5, 5);
-
- //creating foreground windows
- //bottom window
- TDisplayMode dispMode = aMode;
- iForegroundWindowBottom = CTWinAlphaForeground::NewL(*this, pt,aSize,TheClient->iGroup,*TheClient->iGc, &dispMode, TRgb(0, 255, 0,128), ETransparencyFactor);
- iArrWindow.AppendL( iForegroundWindowBottom);
-
- //dispMode = EColor16MA;
- pt.iX += aSize.iWidth + KWindowIndention;
- //opaque window
- iForegroundWindowOpaque = CTWinAlphaForeground::NewL(*this, pt,aSize,TheClient->iGroup,*TheClient->iGc, &dispMode, TRgb(0, 255, 0, 255), ETransparencyAlpha);
- iArrWindow.AppendL( iForegroundWindowOpaque);
-
- pt.iX += aSize.iWidth + KWindowIndention;
- //semi-transparent window
- iForegroundWindowSemiTrans = CTWinAlphaForeground::NewL(*this, pt,aSize,TheClient->iGroup,*TheClient->iGc, &dispMode, TRgb(0, 255, 0, 128), ETransparencyAlpha);
- iArrWindow.AppendL( iForegroundWindowSemiTrans);
-
- //transparent window
- pt.iX += aSize.iWidth + KWindowIndention;
- iForegroundWindowTrans = CTWinAlphaForeground::NewL(*this, pt,aSize,TheClient->iGroup,*TheClient->iGc, &dispMode, TRgb(0, 255, 0, 0), ETransparencyAlpha);
- iArrWindow.AppendL( iForegroundWindowTrans);
-
- // top window
- pt.iX += aSize.iWidth + KWindowIndention;
- iForegroundWindowTop = CTWinAlphaForeground::NewL(*this, pt,aSize,TheClient->iGroup,*TheClient->iGc, &dispMode, TRgb(0, 255, 0,128), ENonTransparentAlpha);
- iArrWindow.AppendL( iForegroundWindowTop);
- }
-
-void CTAlphaChannel::DestroyForegroundWindows()
- {
- iArrWindow.ResetAndDestroy();
- iForegroundWindowBottom = NULL;
- iForegroundWindowOpaque = NULL;
- iForegroundWindowSemiTrans = NULL;
- iForegroundWindowTrans = NULL;
- iForegroundWindowTop = NULL;
- }
-
-/** Draw all foreground windows */
-void CTAlphaChannel::DrawTestWindowsNow(TBool aDrawBackgroundWin)
- {
- if(iBackgroundWindow && aDrawBackgroundWin)
- {
- iBackgroundWindow->DrawNow();
- }
-
- for(TInt ii = 0; ii < iArrWindow.Count(); ii++)
- {
- iArrWindow[ii]->DrawNow();
- }
- }
-
-//-------------
-
-CTWinAlphaForeground* CTWinAlphaForeground::NewL(CTAlphaChannel& aTest, TPoint aPos, TSize aSize, CTWinBase *aParent, CWindowGc &aGc, TDisplayMode *aMode, TRgb aCol, TInt aTransparencyType)
- {
- CTWinAlphaForeground* theWin = new(ELeave) CTWinAlphaForeground(aTest);
-
- theWin->ConstructL(*aParent);
- if (aMode)
- theWin->SetDisplayMode(*aMode);
- theWin->SetExtL(aPos, aSize);
- theWin->AssignGC(aGc);
- theWin->PrepareForDrawingL();
-
- // for hardware testing only we create an additional bitmap
-#ifndef __WINS__
- theWin->CreateBackgroundBitmapL(*aMode);
-#endif
-
- RWindow* win = (RWindow*) (theWin->DrawableWin());
- win->SetShadowHeight(0);
- win->SetShadowDisabled(ETrue);
- switch (aTransparencyType)
- {
- case ETransparencyFactor:
- {
- win->SetTransparencyFactor(aCol);
- theWin->SetBackgroundColor(aCol);
- }
- break;
- case ETransparencyAlpha:
- win->SetTransparencyAlphaChannel();
- // fall through into next case
- case ENonTransparentAlpha:
- default:
- theWin->SetBackgroundColor(aCol);
- break;
- }
-
- theWin->Activate();
-
- return theWin;
- }
-
-CTWinAlphaForeground::~CTWinAlphaForeground()
- {
- if(iPolygon)
- {
- iPolygon->Reset();
- delete iPolygon;
- }
- delete iBitmapBackground;
- delete iBitmapDeviceBackground;
- delete iBitmapContextBackground;
- }
-
-CTWinAlphaForeground::CTWinAlphaForeground(CTAlphaChannel& aTest)
- : iTest(aTest)
- {
- }
-
-
-void CTWinAlphaForeground::SetDisplayMode(TDisplayMode aDisplayMode)
- {
- BaseWin()->SetRequiredDisplayMode(aDisplayMode);
- switch (aDisplayMode)
- {
- case EColor256:
- iTitle1 = _L("256");
- break;
- case EColor64K:
- iTitle1 = _L("64K");
- break;
- case EColor16MU:
- iTitle1 = _L("16MU");
- break;
- case EColor16MA:
- iTitle1 = _L("16MA");
- break;
- case EColor16MAP:
- iTitle1 = _L("16MAP");
- break;
- default:
- iTitle1 = _L("");
- break;
- }
- }
-
-void CTWinAlphaForeground::SetBackgroundColor(TRgb aRgb)
- {
- switch (aRgb.Alpha())
- {
- case 0:
- iTitle2 = _L(" trans ");
- break;
- case 255:
- iTitle2 = _L(" opaque ");
- break;
- case 128:
- default:
- iTitle2 = _L(" s-trans ");
- break;
- }
- if (aRgb.Red())
- iTitle2 += _L("R");
- if (aRgb.Green())
- iTitle2 += _L("G");
- if (aRgb.Blue())
- iTitle2 += _L("B");
-
- iBackgroundColor = aRgb;
- ((RWindow*) DrawableWin())->SetBackgroundColor(aRgb);
- }
-
-void CTWinAlphaForeground::Draw()
- {
- CBitmapContext* theGc = TheClient->iGc;
- ((CWindowGc*)theGc)->SetOpaque(iDrawOpaque);
-
- if(iBitmapContextBackground)
- {
- //CGraphicsContext
- theGc = iBitmapContextBackground;
- CleanBackgroundBitmap();
- }
- if(iTest.iFont1)
- theGc->UseFont(iTest.iFont1);
-
-
- theGc->SetFaded(EFalse);
- DrawTable(*theGc);
-
- TInt numRows = sizeof(iRows) / sizeof(iRows[0]) ;
-
- theGc->SetBrushStyle(iTest.iBrushStyle);
- if(iTest.iFont && iTest.iDrawText)
- {
- theGc->DiscardFont();
- theGc->UseFont(iTest.iFont);
- }
-
- theGc->SetFaded(iTest.iIsFading);
-
- // the factor and offset are calculated as follows:
- // iFadeMapFactor = iWhiteFading - iBlackFading;
- // iFadeMapOffset = iBlackFading;
-
- theGc->SetFadingParameters(iTest.iBlackFading, iTest.iWhiteFading); //black and white
-
- for(TInt ii = 0; ii < numRows - 1; ii++)
- {
- theGc -> SetBrushStyle(iTest.iBrushStyle);
-
- TRect theRect = TRect(iCol, iRows[ii], Size().iWidth, iRows[ii + 1]);
-
- TRgb theBrush = iTest.GetBrush(ii);
- TRgb thePen = iTest.GetPen(ii);
-
- CGraphicsContext::TDrawMode theDrawMode = iTest.GetDrawMode(ii);
-
- theGc->SetBrushColor(theBrush);
- theGc->SetPenColor(thePen);
- theGc->SetDrawMode(theDrawMode);
-
- CGraphicsContext* theBitmapContext64K;
- CGraphicsContext* theBitmapContext16MA;
- CFbsBitmap* theBitmap64K;
- CFbsBitmap* theBitmap16MA;
-
- switch(ii)
- {
- case 0:
- {
- theBitmapContext64K = iTest.iBitmapContext64K_1;
- theBitmapContext16MA = iTest.iBitmapContext16MA_1;
- theBitmap64K = iTest.iBitmap64K_1;
- theBitmap16MA = iTest.iBitmap16MA_1;
- break;
- }
- case 1:
- {
- theBitmapContext64K = iTest.iBitmapContext64K_2;
- theBitmapContext16MA = iTest.iBitmapContext16MA_2;
- theBitmap64K = iTest.iBitmap64K_2;
- theBitmap16MA = iTest.iBitmap16MA_2;
- break;
- }
- default:
- {
- theBitmapContext64K = iTest.iBitmapContext64K_3;
- theBitmapContext16MA = iTest.iBitmapContext16MA_3;
- theBitmap64K = iTest.iBitmap64K_3;
- theBitmap16MA = iTest.iBitmap16MA_3;
- break;
- }
- }
- if(iTest.iDrawText)
- {
- DrawTextInCell(*theGc, theRect);
- }
- else
- {
- TRAP_IGNORE(iTest.DrawOffscreenBitmapsL(thePen, theBrush, theBitmapContext64K,
- theBitmapContext16MA, theBitmap64K, theBitmap16MA));
- DrawPrimitivesInCell(*theGc, theRect, theBitmap64K, theBitmap16MA);
- }
- TheClient->iWs.Flush();
- }
-
- theGc->DiscardFont();
-
- if(iBitmapContextBackground)
- {
- theGc = TheClient->iGc;
- theGc->BitBlt(TPoint(0, 0), iBitmapBackground);
- }
- }
-
-void CTWinAlphaForeground::SetPoligonLocation(const TPoint &ptOffset)
- {
- TRect rect = TRect(iTest.iTriangleSize);
- (*iPolygon)[0] = rect.iTl + ptOffset;
- (*iPolygon)[1] = TPoint(rect.iTl.iX, rect.iBr.iY) + ptOffset;
- (*iPolygon)[2] = rect.iBr + ptOffset;
- }
-
-/** Define boundary of the table*/
-void CTWinAlphaForeground::CalculateTableMargin()
- {
- TInt numRows = sizeof(iRows) / sizeof(iRows[0]) ;
- iRows[0] = iTest.iFirstCellHeight;
- TInt theRowHeight = (Size().iHeight - iTest.iFirstCellHeight) / 3;
- for(TInt ii = 1; ii < numRows; ii++)
- {
- iRows[ii] = iRows[ii-1] + theRowHeight;
- }
- }
-
-/** Draw a table which comprises 3 rows: for transparent, semi-transparent
- and opaque output
-
-*/
-void CTWinAlphaForeground::DrawTable(CBitmapContext& aGc) const
- {
- TInt numRows = sizeof(iRows) / sizeof(iRows[0]) ;
-
- aGc.SetPenColor(iTest.iPenTable);
-
- for (TInt ii = 0; ii < numRows - 1; ii++)
- {
- TBuf<4> iBuf;
- TPoint pt1 = TPoint(0, iRows[ii]);
- TPoint pt2 = TPoint(Size().iWidth, iRows[ii]);
-
- aGc.DrawLine(pt1, pt2);
-
- if(iCol)
- {
- TPoint pt3 = TPoint(0, iRows[ii]) + TPoint(2,(iRows[1] - iRows[0]) / 2);
- switch(ii)
- {
- case 0: iBuf = _L("o"); break;
- case 1: iBuf = _L("s"); break;
- case 2: iBuf = _L("t"); break;
- default : iBuf = _L(""); break;
- }
- aGc.DrawText(iBuf, pt3);
- }
- }
- if(iCol)
- {
- TPoint pt3 = TPoint(iCol, iRows[0]) + TPoint(1,-2);
- TBuf<32> text = iTitle1;
- text += iTitle2;
- aGc.DrawText(text, pt3);
-
- TPoint pt1 = TPoint(iCol, 0);
- TPoint pt2 = TPoint(iCol, Size().iHeight);
- aGc.DrawLine(pt1, pt2);
- }
-
- }
-
-/** Draw truetype font to check anti-aliasing*/
-void CTWinAlphaForeground::DrawTextInCell(CBitmapContext& aGc, const TRect& aRect)
- {
- TPoint pt(aRect.iTl.iX, aRect.iBr.iY);
- pt += TPoint(2, -10);
-
- aGc.DrawText(_L("ABCD"), pt);
- }
-
-/** Draw graphics primitive in a cell:
- rectangle, ellipse, triangle, a few lines, bitmaps
-
- */
-void CTWinAlphaForeground::DrawPrimitivesInCell(CBitmapContext& aGc, const TRect& aRect,
- CFbsBitmap* aBitmap64K, CFbsBitmap* aBitmap16MA)
- {
- TRect theCellRect = aRect;
- theCellRect.Shrink(1, 1);
-
- //rectangle
- TRect rect = TRect(iTest.iRectangleSize);
- rect.Move(theCellRect.iTl);
- aGc.DrawRect(rect);
-
- //ellipse
- rect = TRect(iTest.iEllipseSize);
- rect.Move(theCellRect.iTl + TPoint(iTest.iRectangleSize.iWidth + 5, 0));
- aGc.DrawEllipse(rect);
-
- //triangle
- TPoint pt = TPoint(rect.iBr.iX, rect.iTl.iY) + TPoint(5, 0);
- SetPoligonLocation(pt);
- aGc.DrawPolygon(iPolygon);
-
- //DrawLine
- pt = pt + TPoint (((*iPolygon)[2]).iX - ((*iPolygon)[0]).iX, 0) + TPoint(5, 2);
- rect = TRect(iTest.iTriangleSize);
- rect.Move(pt);
- aGc.DrawLine(rect.iTl, TPoint(rect.iTl.iX, rect.iBr.iY));
- aGc.DrawLine(TPoint(rect.iTl.iX, rect.iBr.iY), rect.iBr);
- aGc.DrawLine(rect.iBr, TPoint(rect.iBr.iX, rect.iTl.iY));
- aGc.DrawLine(TPoint(rect.iBr.iX, rect.iTl.iY), rect.iTl);
- aGc.DrawLine(rect.iTl, rect.iBr);
- aGc.DrawLine(TPoint(rect.iBr.iX, rect.iTl.iY), TPoint(rect.iTl.iX, rect.iBr.iY));
-
- //64K bitmap
- aGc.SetBrushStyle(CGraphicsContext::ENullBrush);
- pt = TPoint(theCellRect.iTl.iX, rect.iBr.iY) + TPoint(0, 5);
- if(aBitmap64K)
- {
- aGc.BitBlt(pt, aBitmap64K);
- pt = pt + TPoint( aBitmap64K->SizeInPixels().iWidth, 0) + TPoint(2, 0);
-
- aGc.BitBltMasked(pt,
- aBitmap64K, TRect(aBitmap64K->SizeInPixels()),
- iTest.iBitmapGray256Mask, EFalse);
- pt = pt + TPoint( aBitmap64K->SizeInPixels().iWidth, 0) + TPoint(2, 0);
-
- aGc.BitBltMasked(pt,
- aBitmap64K, TRect(aBitmap64K->SizeInPixels()),
- iTest.iBitmapMask, EFalse);
-
- pt = pt + TPoint( aBitmap64K->SizeInPixels().iWidth, 0) + TPoint(2, 0);
- }
-
- if(aBitmap16MA)
- {
- aGc.BitBlt(pt, aBitmap16MA);
-
- pt = pt + TPoint( aBitmap16MA->SizeInPixels().iWidth, 0) + TPoint(2, 0);
-
- aGc.BitBltMasked(pt,
- aBitmap16MA, TRect(aBitmap16MA->SizeInPixels()),
- iTest.iBitmapGray256Mask, EFalse);
-
- pt = pt + TPoint( aBitmap16MA->SizeInPixels().iWidth, 0) + TPoint(2,0);
-
- pt = pt + TPoint( 0, aBitmap16MA->SizeInPixels().iHeight);
- }
-
- pt.iX = aRect.iTl.iX + 2;
- pt.iY = pt.iY + 18;
-
- if(aBitmap64K)
- {
- TSize size = aBitmap64K->SizeInPixels();
- TRect srcRect(TPoint(0,0),size);
- size += TSize(5,5);
- TRect destRect(pt - TPoint(0, 8), size);
- aGc.DrawBitmap(destRect, aBitmap64K, srcRect);
- pt = pt + TPoint( size.iWidth, 0) + TPoint(2, 0);
-
-#ifdef __WINS__
- destRect.Move(TPoint(aBitmap64K->SizeInPixels().iWidth + 8, 0));
- ((CWindowGc&) aGc).DrawBitmapMasked(destRect,
- aBitmap64K, srcRect,
- iTest.iBitmapGray256Mask, EFalse);
- pt = pt + TPoint( aBitmap64K->SizeInPixels().iWidth, 0) + TPoint(2, 0);
-#endif
- }
-
- aGc.DrawText(iTest.iText, pt);
-
-#ifdef __WINS__
- ((CWindowGc&) aGc).DrawTextVertical(iTest.iText, pt, ETrue);
-#endif
- }
-
-/** calculate table's size and size of graphics primitieves */
-void CTWinAlphaForeground::PrepareForDrawingL()
- {
- iCol = iTest.iFirstCellWidth;
-
- CalculateTableMargin();
-
- //create triangle
- iPolygon = new (ELeave) CArrayFixFlat<TPoint> (3);
- TRect rect = TRect(iTest.iTriangleSize);
- iPolygon->AppendL(rect.iTl);
- iPolygon->AppendL(TPoint(rect.iTl.iX, rect.iBr.iY));
- iPolygon->AppendL(rect.iBr);
- }
-
-/** Bitmap is intended to use on target only*/
-void CTWinAlphaForeground::CreateBackgroundBitmapL(const TDisplayMode& aDispMode)
- {
- ASSERT(!iBitmapBackground);
-
- TSize size = Size();
-
- iBitmapBackground = new (ELeave) CFbsBitmap ;
- iBitmapBackground->Create(size,aDispMode);
-
- iBitmapDeviceBackground = CFbsBitmapDevice::NewL(iBitmapBackground);
- CGraphicsContext *&theGc = (CGraphicsContext*&)iBitmapContextBackground;
- iBitmapDeviceBackground->CreateContext(theGc);
- }
-
-void CTWinAlphaForeground::CleanBackgroundBitmap()
- {
- ASSERT(iBitmapBackground);
-
- TRect rect = TRect(iBitmapBackground->SizeInPixels());
- iBitmapContextBackground->SetBrushColor(iBackgroundColor);
- iBitmapContextBackground->SetPenColor(iBackgroundColor);
- iBitmapContextBackground->SetBrushStyle(CGraphicsContext::ESolidBrush);
- iBitmapContextBackground->DrawRect(rect);
- }
-
-void CTWinAlphaForeground::StartAnimationL()
- {
- __UHEAP_MARK;
- RWsSprite theSprite;
-
- RDrawableWindow *theWin = DrawableWin();
-
- theSprite=RWsSprite(TheClient->iWs);
- TPoint theSpritePos = TPoint(10, 10);
- TInt theFlags = 0;
- theSprite.Construct(*theWin, theSpritePos, theFlags);
- TDisplayMode dispMode = EColor256;
- //create a ball bitmap for animation
- CFbsBitmap* theBitmapBall= new (ELeave) CFbsBitmap;
- theBitmapBall->Create(TSize(32, 32), dispMode);
- CFbsBitmapDevice* theBitmapDeviceBall = CFbsBitmapDevice::NewL(theBitmapBall);
- CGraphicsContext* theBitmapContextBall = NULL;
- theBitmapDeviceBall->CreateContext(theBitmapContextBall);
- //draw a background
- theBitmapContextBall->SetBrushColor(TRgb(128, 0, 255));
- theBitmapContextBall->SetPenColor(TRgb(128, 0, 255));
- theBitmapContextBall->SetBrushStyle(CGraphicsContext::ESolidBrush);
- theBitmapContextBall->DrawRect(theBitmapBall->SizeInPixels());
-
- //create a ball's mask
- CFbsBitmap* theBitmapMask= new (ELeave) CFbsBitmap;
- theBitmapMask->Create(TSize(32, 32), dispMode);
- CFbsBitmapDevice* theBitmapDeviceMask = CFbsBitmapDevice::NewL(theBitmapMask);
- CGraphicsContext* theBitmapContextMask = NULL;
- theBitmapDeviceMask->CreateContext(theBitmapContextMask);
- //draw a mask
- theBitmapContextMask->SetBrushColor(TRgb(0, 0, 0));
- theBitmapContextMask->SetPenColor(TRgb(0, 0, 0));
- theBitmapContextMask->SetBrushStyle(CGraphicsContext::ESolidBrush);
- theBitmapContextMask->DrawRect(theBitmapMask->SizeInPixels());
-
- theBitmapContextMask->SetBrushColor(TRgb(255, 255, 255));
- theBitmapContextMask->SetPenColor(TRgb(255, 255, 255));
- TRect rect = TRect(theBitmapMask->SizeInPixels());
- theBitmapContextMask->SetPenSize(TSize(6,6));
- theBitmapContextMask->DrawLine(rect.iTl, rect.iBr);
- theBitmapContextMask->DrawLine(TPoint(0, rect.iBr.iY), TPoint(rect.iBr.iX, 0));
-
- //create a second ball's mask
- CFbsBitmap* theBitmapMask1= new (ELeave) CFbsBitmap;
- theBitmapMask1->Create(TSize(32, 32), dispMode);
- CFbsBitmapDevice* theBitmapDeviceMask1 = CFbsBitmapDevice::NewL(theBitmapMask1);
- CGraphicsContext* theBitmapContextMask1 = NULL;
- theBitmapDeviceMask1->CreateContext(theBitmapContextMask1);
- //draw a mask
- theBitmapContextMask1->SetBrushColor(TRgb(0, 0, 0));
- theBitmapContextMask1->SetPenColor(TRgb(0, 0, 0));
- theBitmapContextMask1->SetBrushStyle(CGraphicsContext::ESolidBrush);
- theBitmapContextMask1->DrawRect(theBitmapMask1->SizeInPixels());
-
- theBitmapContextMask1->SetBrushColor(TRgb(255, 255, 255));
- theBitmapContextMask1->SetPenColor(TRgb(255, 255, 255));
- rect = TRect(theBitmapMask1->SizeInPixels());
- theBitmapContextMask1->SetPenSize(TSize(6,6));
- theBitmapContextMask1->DrawLine(TPoint(rect.iBr.iX/2, 0), TPoint(rect.iBr.iX/2, rect.iBr.iY));
- theBitmapContextMask1->DrawLine(TPoint(0, rect.iBr.iY/2), TPoint(rect.iBr.iX, rect.iBr.iY/2));
-
-
- TSpriteMember theSpriteList;
- theSpriteList.iBitmap = theBitmapBall;
- theSpriteList.iMaskBitmap = theBitmapMask;
- theSpriteList.iInvertMask = EFalse;
- theSpriteList.iDrawMode = CGraphicsContext::EDrawModePEN;
- theSpriteList.iOffset = TPoint(0, 0);
- theSpriteList.iInterval = TTimeIntervalMicroSeconds32(100000);
- theSprite.AppendMember(theSpriteList);
-
- TSpriteMember theSpriteList1;
- theSpriteList1.iBitmap = theBitmapBall;
- theSpriteList1.iMaskBitmap = theBitmapMask1;
- theSpriteList1.iInvertMask = EFalse;
- theSpriteList1.iDrawMode = CGraphicsContext::EDrawModePEN;
- theSpriteList1.iOffset = TPoint(0, 0);
- theSpriteList1.iInterval = TTimeIntervalMicroSeconds32(100000);
-
- theSprite.AppendMember(theSpriteList1);
-
- theSprite.Activate();
-
- for(TInt ii = 0; ii < 20; ii++)
- {
- theSpritePos += TPoint(3, 8);
- theSprite.SetPosition(theSpritePos);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(50000));
- }
-
- for(TInt jj = 0; jj < 20; jj++)
- {
- theSpritePos -= TPoint(0, 8);
- theSprite.SetPosition(theSpritePos);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(50000));
- }
-
- theSprite.Close();
-
- delete theBitmapContextBall;
- delete theBitmapDeviceBall;
-
- delete theBitmapBall;
-
- delete theBitmapMask;
- delete theBitmapContextMask;
- delete theBitmapDeviceMask;
-
- delete theBitmapMask1;
- delete theBitmapContextMask1;
- delete theBitmapDeviceMask1;
-
- __UHEAP_MARKEND;
- }
-
-void CTWinAlphaForeground::CreateBackedWindowL()
- {
- RBackedUpWindow theBackedWindow(TheClient->iWs);
- CleanupClosePushL(theBackedWindow);
-
- TDisplayMode theDisplayMode = EColor16MA;
-
- RWindow* theWin = (RWindow*) DrawableWin();
-
- theBackedWindow.Construct(*theWin,theDisplayMode, ENullWsHandle);
-
- TPoint pos =TPoint(10, 10);
- TSize size = theWin->Size();
- size.SetSize(size.iWidth / 5, size.iHeight/10);
-
- theBackedWindow.SetExtentErr(pos, size);
- theBackedWindow.SetOrdinalPosition(0);
-
-
- //draw to backed window
- TRgb color = TRgb(255, 0, 128);
- TInt bitmapHandle = theBackedWindow.BitmapHandle();
- CFbsBitmap bitmapWin;
- bitmapWin.Duplicate(bitmapHandle);
- //Leave poss here - theBackedWindow could leak
- CFbsBitmapDevice* theBitmapDevice = CFbsBitmapDevice::NewL(&bitmapWin);
- CGraphicsContext* theBitmapContext = NULL;
- theBitmapDevice->CreateContext(theBitmapContext);
- theBitmapContext->SetBrushColor(color);
- theBitmapContext->SetPenColor(color);
- theBitmapContext->SetBrushStyle(CGraphicsContext::ESolidBrush);
- theBitmapContext->DrawRect(TRect(bitmapWin.SizeInPixels()));
-
- color = TRgb(0, 0, 0);
- theBitmapContext->SetPenColor(color);
- for(TInt kk = 0; kk < bitmapWin.SizeInPixels().iWidth; kk += 8)
- {
- theBitmapContext->DrawLine(TPoint(kk, 0), TPoint(kk, bitmapWin.SizeInPixels().iHeight));
- }
-
-
- theBackedWindow.Activate();
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(500000));
-
- //hide the window
- theBackedWindow.SetVisible(EFalse);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(500000));
- theBackedWindow.SetVisible(ETrue);
- TheClient->iWs.Flush();
-
- for(TInt ii = 0; ii < 7; ii++)
- {
- User::After(TTimeIntervalMicroSeconds32(100000));
- pos.iX += 5;
- pos.iY += 15;
-
- theBackedWindow.SetExtentErr(pos, size);
- TheClient->iWs.Flush();
- }
-
- User::After(TTimeIntervalMicroSeconds32(500000));
-
- //transparent color. don't expect it to work
- pos.iX -= 5;
- pos.iY -= 15;
-
- theBackedWindow.SetExtentErr(pos, size);
- color = TRgb(255, 255, 128, 128);
- theBitmapContext->SetBrushColor(color);
- theBitmapContext->SetPenColor(color);
- theBitmapContext->DrawRect(TRect(bitmapWin.SizeInPixels()));
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(500000));
-
- //semi-transparent color
- pos.iX -= 5;
- pos.iY -= 15;
- theBackedWindow.SetExtentErr(pos, size);
- color = TRgb(255, 255, 128, 255);
- theBitmapContext->SetBrushColor(color);
- theBitmapContext->SetPenColor(color);
- TheClient->iWs.Flush();
- User::After(TTimeIntervalMicroSeconds32(500000));
-
-
- CleanupStack::PopAndDestroy(); //bitmapWin
- delete theBitmapContext;
- delete theBitmapDevice;
-
- }
-
-
-//-------------------
-void CTWinAlpha::Draw()
- {
- CBitmapContext* theGc = TheClient->iGc;
- TSize size = Size();
-
- for(TInt ii = 0; ii < size.iHeight; ii += (20+iState))
- {
- theGc->DrawLine(TPoint(0, ii), TPoint(size.iWidth, ii));
- }
- }
-
-__WS_CONSTRUCT_STEP__(AlphaChannel)