sl@0: // Copyright (c) 2000-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: #include sl@0: #include "TAccelerator.h" sl@0: #include sl@0: sl@0: class TAcceleratedBitmapSpecTest : public TAcceleratedBitmapSpec sl@0: { sl@0: // Provides public access to TAcceleratedBitmapSpec sl@0: public: sl@0: inline TAcceleratedBitmapSpecTest() : TAcceleratedBitmapSpec() {} sl@0: inline TAcceleratedBitmapSpecTest(CFbsBitmap* aBitmap) : TAcceleratedBitmapSpec(aBitmap) {} sl@0: inline TAcceleratedBitmapSpecTest(RHardwareBitmap aBitmap) : TAcceleratedBitmapSpec(aBitmap) {} sl@0: // sl@0: inline TInt GetInfo(TAcceleratedBitmapInfo& aInfo) const { return TAcceleratedBitmapSpec::GetInfo(aInfo); } sl@0: inline void Lock(TBitmapLockCount& aCount) { TAcceleratedBitmapSpec::Lock(aCount); } sl@0: inline void Lock(TBitmapLockCount& aCount,TAcceleratedBitmapInfo& aInfo) { TAcceleratedBitmapSpec::Lock(aCount,aInfo); } sl@0: inline void Unlock(TBitmapLockCount& aCount) { TAcceleratedBitmapSpec::Unlock(aCount); } sl@0: }; sl@0: sl@0: const TInt KNumDisplayModes = 13; sl@0: static struct sl@0: { sl@0: TDisplayMode iMode; sl@0: TBool iEnabled; sl@0: TInt iPixelShift; sl@0: } TestDisplayModes[KNumDisplayModes] = sl@0: { sl@0: {EGray2,EFalse,0}, sl@0: {EGray4,EFalse,1}, sl@0: {EGray16,EFalse,2}, sl@0: {EGray256,EFalse,3}, sl@0: {EColor16,EFalse,2}, sl@0: {EColor256,EFalse,3}, sl@0: {EColor64K,EFalse,4}, sl@0: {EColor16M,EFalse,5}, sl@0: {ERgb,EFalse,5}, sl@0: {EColor4K,EFalse,4}, sl@0: {EColor16MU,EFalse,5}, sl@0: {EColor16MA,EFalse,5}, sl@0: {EColor16MAP,EFalse,5} sl@0: }; sl@0: sl@0: _LIT(KRam32BitmapOnZ, "z:\\system\\data\\32RAM.mbm"); sl@0: _LIT(KRamC24BitmapOnZ, "z:\\system\\data\\24RAMC.mbm"); sl@0: _LIT(KRomC24Bitmap, "z:\\system\\data\\24ROMC.mbm"); sl@0: sl@0: // sl@0: // CTestBitmap sl@0: // sl@0: sl@0: TInt CTestBitmap::ConstructL(TDisplayMode aDisplayMode,TSize aSize,TBool aHWBitmap) sl@0: { sl@0: Reset(); sl@0: sl@0: iBitmap = new CFbsBitmap; sl@0: if(iBitmap==NULL) sl@0: User::Panic(_L("Bitmap not created"),KErrGeneral); sl@0: sl@0: TInt ret; sl@0: if(aHWBitmap) sl@0: ret = iBitmap->CreateHardwareBitmap(aSize,aDisplayMode,TUid()); sl@0: else sl@0: ret = iBitmap->Create(aSize,aDisplayMode); sl@0: sl@0: if (ret == KErrNotSupported) sl@0: { sl@0: Reset(); sl@0: return ret; sl@0: } sl@0: sl@0: User::LeaveIfError(ret); sl@0: sl@0: TRAPD(err,iDevice = CFbsBitmapDevice::NewL(iBitmap)); sl@0: if(err) sl@0: User::Panic(_L("BitmapDevice not created"),err); sl@0: sl@0: err = iDevice->CreateContext(iGc); sl@0: if(err) sl@0: User::Panic(_L("BitmapDevice not created"),err); sl@0: sl@0: return KErrNone; sl@0: } sl@0: sl@0: void CTestBitmap::Reset() sl@0: { sl@0: delete iGc; sl@0: iGc = 0; sl@0: delete iDevice; sl@0: iDevice = 0; sl@0: delete iBitmap; sl@0: iBitmap = 0; sl@0: } sl@0: sl@0: CTestBitmap::~CTestBitmap() sl@0: { sl@0: Reset(); sl@0: } sl@0: sl@0: TBool CTestBitmap::Compare(CTestBitmap* aBitmap2) sl@0: { sl@0: TInt width=iBitmap->SizeInPixels().iWidth; sl@0: TInt pitch = iBitmap->DataStride(); sl@0: TInt height=iBitmap->SizeInPixels().iHeight; sl@0: sl@0: for(TInt yLoop=0;yLoopDataAddress())+offset; sl@0: TUint8* data2 = ((TUint8*)aBitmap2->iBitmap->DataAddress())+offset; sl@0: TUint8* dataLimit = data1 + CFbsBitmap::ScanLineLength(width, iBitmap->DisplayMode()); sl@0: while(data1Save(_L("C:\\Compare1.mbm")); sl@0: aBitmap2->iBitmap->Save(_L("C:\\Compare2.mbm")); sl@0: return EFalse; sl@0: } sl@0: } sl@0: } sl@0: return(ETrue); sl@0: } sl@0: sl@0: // sl@0: // CTAccelerator sl@0: // sl@0: sl@0: CTAccelerator::CTAccelerator(CTestStep* aStep): sl@0: CTGraphicsBase(aStep), sl@0: iRandomSeed(1), sl@0: iGraphicsAccelerator1(0), sl@0: iGraphicsAccelerator2(0), sl@0: iHwScreenDevice(0), sl@0: iScreenGc(0) sl@0: { sl@0: TInt i; sl@0: for(i=0;i<9;i++) sl@0: iFixedRegion.AddRect(TRect(i*16,i*8,i*16+32,i*8+32)); sl@0: for(i=0;i<9;i++) sl@0: iFixedRegion.AddRect(TRect(183-(i*16),i*8,199-(i*16),i*8+32)); sl@0: sl@0: iDefaultRegion.AddRect(TRect(0,0,199,99)); sl@0: INFO_PRINTF1(_L("Graphics Accelerator Testing")); sl@0: } sl@0: sl@0: void CTAccelerator::Cleanup() sl@0: { sl@0: delete iGraphicsAccelerator1; sl@0: iGraphicsAccelerator1 = 0; sl@0: delete iGraphicsAccelerator2; sl@0: iGraphicsAccelerator2 = 0; sl@0: if(iHwScreenDevice) sl@0: { sl@0: delete iHwScreenDevice; sl@0: iHwScreenDevice = 0; sl@0: } sl@0: if(iScreenGc) sl@0: { sl@0: delete iScreenGc; sl@0: iScreenGc = 0; sl@0: } sl@0: iBitmap1.Reset(); sl@0: iBitmap2.Reset(); sl@0: iBitmap3.Reset(); sl@0: iBitmap4.Reset(); sl@0: iBitmap5.Reset(); sl@0: iBitmap6.Reset(); sl@0: iBitmap7.Reset(); sl@0: iTileBitmap.Reset(); sl@0: iAlphaBitmap.Reset(); sl@0: } sl@0: sl@0: TInt CTAccelerator::Random(TInt aMax) // aMax <= 0xFFFF sl@0: { sl@0: iRandomSeed *= 69069; sl@0: TUint r = ((iRandomSeed>>16)*aMax)>>16; sl@0: return r; sl@0: } sl@0: sl@0: void CTAccelerator::RunTestCaseL(TInt aCurTestCase) sl@0: { sl@0: TInt i; sl@0: ((CTAcceleratorStep*)iStep)->SetTestStepID(KUnknownSYMTestCaseIDName); sl@0: sl@0: switch(aCurTestCase) sl@0: { sl@0: case 1: sl@0: ((CTAcceleratorStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0021")); sl@0: INFO_PRINTF1(_L("Testing TAcceleratedBitmapSpec with software bitmaps.")); sl@0: for(i=0; iSetTestStepID(_L("GRAPHICS-BITGDI-0022")); sl@0: INFO_PRINTF1(_L("Testing graphics operations with software bitmaps.")); sl@0: for(i=0; iSetTestStepID(_L("GRAPHICS-BITGDI-0021")); sl@0: INFO_PRINTF1(_L("Testing TAcceleratedBitmapSpec with hardware bitmaps.")); sl@0: for(i=0; iSetTestStepID(_L("GRAPHICS-BITGDI-0022")); sl@0: INFO_PRINTF1(_L("Testing graphics operations with hardware bitmaps.")); sl@0: for(i=0; iSetTestStepID(_L("GRAPHICS-BITGDI-0023")); sl@0: INFO_PRINTF1(_L("Testing graphics operations with hardware bitmap as screen.")); sl@0: for(i=0; iSetTestStepID(_L("GRAPHICS-BITGDI-0112")); sl@0: INFO_PRINTF1(_L("Testing passing of compressed info to accelerator")); sl@0: TestAcceleratorInfo(); sl@0: break; sl@0: case 7: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-BITGDI-0113 sl@0: */ sl@0: ((CTAcceleratorStep*)iStep)->SetTestStepID(_L("GRAPHICS-BITGDI-0113")); sl@0: INFO_PRINTF1(_L("Testing GetInfo() with an extended bitmap")); sl@0: TestAcceleratorInfoForExtendedBitmapL(); sl@0: break; sl@0: sl@0: case 8: sl@0: ((CTAcceleratorStep*)iStep)->SetTestStepID(KNotATestSYMTestCaseIDName); sl@0: ((CTAcceleratorStep*)iStep)->CloseTMSGraphicsStep(); sl@0: TestComplete(); sl@0: break; sl@0: } sl@0: ((CTAcceleratorStep*)iStep)->RecordTestResultL(); sl@0: } sl@0: sl@0: const TSize TestBitmapSize = TSize(199,99); sl@0: TSize TestScreenSize; sl@0: const TSize TestBitmapSize1 = TSize(165,53); sl@0: sl@0: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-BITGDI-0021 sl@0: @SYMCreationDate 21/11/2008 sl@0: @SYMAuthor douglashetherington sl@0: @SYMTestStatus 3. Released sl@0: @SYMTestPriority High sl@0: @SYMTestCaseDesc Checks that TAcceleratedBitmapSpec does not change the underlaying bitmaps data sl@0: @SYMTestExpectedResults The bitmap data is not changed sl@0: @SYMTestActions Creates a bitmap, puts it into a TAcceleratedBitmapSpec then checks the pixel data is unchanged sl@0: @SYMDEF sl@0: */ sl@0: void CTAccelerator::TestAcceleratedBitmapSpecL(TDisplayMode aDisplayMode,TBool aHWBitmap) sl@0: { sl@0: TInt ret=0; sl@0: sl@0: INFO_PRINTF2(_L(" DisplayMode=%d"),aDisplayMode); sl@0: sl@0: // Create bitmap sl@0: ret = iBitmap1.ConstructL(aDisplayMode,TestBitmapSize,aHWBitmap); sl@0: INFO_PRINTF2(_L(" TestAcceleratedBitmapSpecL ret=%d"),ret); sl@0: if(ret!=KErrNone) sl@0: { sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: sl@0: TAcceleratedBitmapSpecTest bitmapSpec(iBitmap1.iBitmap); sl@0: TAcceleratedBitmapInfo info; sl@0: sl@0: // Check correct size sl@0: bitmapSpec.Lock(iBitmapLockCount); sl@0: User::LeaveIfError(bitmapSpec.GetInfo(info)); sl@0: TEST(info.iSize==iBitmap1.iBitmap->SizeInPixels()); sl@0: INFO_PRINTF3(_L("Test Display Modes , Expected iPixelShift : %d, Actual iPixelShift: %d"),TestDisplayModes[aDisplayMode-1].iPixelShift,info.iPixelShift); sl@0: TEST(info.iPixelShift == TestDisplayModes[aDisplayMode-1].iPixelShift); sl@0: bitmapSpec.Unlock(iBitmapLockCount); sl@0: sl@0: TInt scanLineLength = iBitmap1.iBitmap->ScanLineLength(TestBitmapSize.iWidth,aDisplayMode); sl@0: HBufC8* scanLineBuffer = HBufC8::NewMaxLC(scanLineLength); sl@0: TPtr8 scanLine(scanLineBuffer->Des()); sl@0: sl@0: TInt y,x; sl@0: sl@0: // fill bitmap with test data sl@0: for(y=info.iSize.iHeight-1; y>=0; y--) sl@0: { sl@0: TUint8* ptr = &(scanLine)[0]; sl@0: TUint8* ptrLimit = ptr+scanLineLength; sl@0: x = 42; sl@0: while(ptrSetScanLine(scanLine,y); sl@0: } sl@0: sl@0: // use TAcceleratedBitmapSpec to check contents sl@0: bitmapSpec.Lock(iBitmapLockCount,info); sl@0: for(y=0; y=0; y--) sl@0: { sl@0: TUint8* ptr = &(scanLine)[0]; sl@0: TUint8* ptrLimit = ptr+scanLineLength; sl@0: x = 42; sl@0: while(ptrSetScanLine(scanLine,y); sl@0: } sl@0: sl@0: // use TAcceleratedBitmapSpec to check contents sl@0: bitmapSpec.Lock(iBitmapLockCount,info); sl@0: for(y=0; yGraphicsAccelerator())) sl@0: { sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: sl@0: iGraphicsAccelerator1 = ((CTestFbsDevice*)iBitmap1.iDevice)->StealGraphicsAccelerator(); sl@0: delete iGraphicsAccelerator1; sl@0: iGraphicsAccelerator1 = 0; sl@0: sl@0: if(!iSubRegion.IsEmpty()) sl@0: iSubRegion.Clear(); sl@0: iSubRegion.AddRect(iBitmap1.iBitmap->SizeInPixels()); sl@0: iSubRegion.SubRegion(iFixedRegion); sl@0: iSubRegionPtr = &iSubRegion; sl@0: sl@0: TRAP(errCode, ret = iBitmap2.ConstructL(aDisplayMode,TestBitmapSize,aHWBitmap)); sl@0: TEST(errCode== KErrNone); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: TRAP(errCode, ret = iBitmap3.ConstructL(aDisplayMode,TestBitmapSize,aHWBitmap)); sl@0: TEST(errCode== KErrNone); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: iGraphicsAccelerator1 = ((CTestFbsDevice*)iBitmap3.iDevice)->StealGraphicsAccelerator(); sl@0: sl@0: TRAP(errCode, ret = iBitmap4.ConstructL(aDisplayMode,TestBitmapSize,aHWBitmap)); sl@0: TEST(errCode== KErrNone); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: TRAP(errCode, ret = iBitmap5.ConstructL(aDisplayMode,TestBitmapSize1,aHWBitmap)); sl@0: TEST(errCode== KErrNone); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: TRAP(errCode, ret = iBitmap6.ConstructL(aDisplayMode,TestBitmapSize,aHWBitmap)); sl@0: TEST(errCode== KErrNone); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: TRAP(errCode, ret = iBitmap7.ConstructL(aDisplayMode,TestBitmapSize,aHWBitmap)); sl@0: TEST(errCode== KErrNone); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: TRAP(errCode, ret = iBitmap8.ConstructL(aDisplayMode,TestBitmapSize,aHWBitmap)); sl@0: TEST(errCode== KErrNone); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: //BrushBitmap sl@0: CFbsBitmap* iTile = new CFbsBitmap(); sl@0: TEST(iTile!=NULL); sl@0: ret = iTile->Load(_L("z:\\system\\data\\tile.mbm"),0,aHWBitmap); sl@0: TEST(ret==KErrNone); sl@0: sl@0: TSize tileSize = iTile->SizeInPixels(); sl@0: TDisplayMode tileDisplayMode = iTile->DisplayMode(); sl@0: sl@0: TRAP(errCode, ret = iTileBitmap.ConstructL(tileDisplayMode,tileSize,aHWBitmap)); sl@0: TEST(errCode== KErrNone); sl@0: if(ret== KErrNotSupported) sl@0: { sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: delete iTile; sl@0: iTile = NULL; sl@0: return; sl@0: } sl@0: iTileBitmap.iGc->BitBlt(TPoint(0,0),iTile); sl@0: delete iTile; sl@0: iTile = NULL; sl@0: sl@0: //Alpha bitmap sl@0: TRAP(errCode, ret = iAlphaBitmap.ConstructL(EGray256,TestBitmapSize,aHWBitmap)); sl@0: TEST(errCode== KErrNone); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: iGraphicsAccelerator2 = ((CTestFbsDevice*)iBitmap4.iDevice)->StealGraphicsAccelerator(); sl@0: sl@0: INFO_PRINTF1(_L("FilledRect")); sl@0: TestFilledRect(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("FilledRectWithPattern ")); sl@0: TestFilledRectWithPattern(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("InvertRect")); sl@0: TestInvertRect(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("FadeRect ")); sl@0: TestFadeRect(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("BitBlt ")); sl@0: TestBitBlt(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("BitBltMasked ")); sl@0: TestBitBltMasked(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("BitBltAlphaBitmap")); sl@0: TestBitBltAlphaBitmap(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("AlphaBlendTwoBitmaps ")); sl@0: TestAlphaBlendTwoBitmaps(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("AlphaBlendOneBitmap ")); sl@0: TestAlphaBlendOneBitmap(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: Cleanup(); sl@0: } sl@0: sl@0: sl@0: /** sl@0: @SYMTestCaseID GRAPHICS-BITGDI-0023 sl@0: @SYMCreationDate 21/11/2008 sl@0: @SYMAuthor douglashetherington sl@0: @SYMTestStatus 3. Released sl@0: @SYMTestPriority High sl@0: @SYMTestCaseDesc Tests various basic graphic operations draw directly to the screen device sl@0: @SYMTestExpectedResults Tests should perform graphics operations succesfully. sl@0: @SYMTestActions Creates a number of bitmaps then uses them in various graphic operations drawing directly to the screen gc sl@0: @SYMDEF sl@0: */ sl@0: void CTAccelerator::TestGraphicsOperationsWithScreenL(TDisplayMode aDisplayMode,TBool aHWBitmap) sl@0: { sl@0: TInt ret; sl@0: sl@0: INFO_PRINTF2(_L(" DisplayMode=%d."),aDisplayMode); sl@0: sl@0: ret = iBitmap1.ConstructL(aDisplayMode,TestBitmapSize,aHWBitmap); sl@0: if((ret!=KErrNone) || (!iBitmap1.iDevice->GraphicsAccelerator())) sl@0: { sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: sl@0: TRAPD(err,iHwScreenDevice = CFbsScreenDevice::NewL(_L(""),aDisplayMode)); sl@0: if(err) sl@0: User::Panic(_L("BitmapDevice not created"),err); sl@0: iHwScreenDevice->ChangeScreenDevice(NULL); sl@0: err = iHwScreenDevice->CreateContext(iScreenGc); sl@0: if(err) sl@0: User::Panic(_L("BitmapDevice not created"),err); sl@0: sl@0: TestScreenSize.SetSize(iHwScreenDevice->SizeInPixels().iWidth,iHwScreenDevice->SizeInPixels().iHeight); sl@0: iDefaultScreenRegion.AddRect(TestScreenSize); sl@0: sl@0: iBitmap1.Reset(); sl@0: iBitmap1.ConstructL(aDisplayMode,TestScreenSize,aHWBitmap); sl@0: iGraphicsAccelerator1 = ((CTestFbsDevice*)iBitmap1.iDevice)->StealGraphicsAccelerator(); sl@0: delete iGraphicsAccelerator1; sl@0: iGraphicsAccelerator1 = 0; sl@0: sl@0: if(!iSubRegion.IsEmpty()) sl@0: iSubRegion.Clear(); sl@0: iSubRegion.AddRect(iBitmap1.iBitmap->SizeInPixels()); sl@0: iSubRegion.SubRegion(iFixedRegion); sl@0: iSubRegionPtr = &iSubRegion; sl@0: sl@0: ret = iBitmap2.ConstructL(aDisplayMode,TestScreenSize,aHWBitmap); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: ret = iBitmap3.ConstructL(aDisplayMode,TestScreenSize,aHWBitmap); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: iGraphicsAccelerator1 = ((CTestFbsDevice*)iBitmap3.iDevice)->StealGraphicsAccelerator(); sl@0: sl@0: ret = iBitmap4.ConstructL(aDisplayMode,TestScreenSize,aHWBitmap); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: ret = iBitmap5.ConstructL(aDisplayMode,TestBitmapSize1,aHWBitmap); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: ret = iBitmap6.ConstructL(aDisplayMode,TestScreenSize,aHWBitmap); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: ret = iBitmap7.ConstructL(aDisplayMode,TestScreenSize,aHWBitmap); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: //BrushBitmap sl@0: CFbsBitmap* iTile = new CFbsBitmap(); sl@0: TEST(iTile!=NULL); sl@0: ret = iTile->Load(_L("z:\\system\\data\\tile.mbm"),0,aHWBitmap); sl@0: TEST(ret==KErrNone); sl@0: sl@0: TSize tileSize = iTile->SizeInPixels(); sl@0: TDisplayMode tileDisplayMode = iTile->DisplayMode(); sl@0: sl@0: ret= iTileBitmap.ConstructL(tileDisplayMode,tileSize,aHWBitmap); sl@0: if(ret == KErrNotSupported) sl@0: { sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: delete iTile; sl@0: iTile = NULL; sl@0: return; sl@0: } sl@0: iTileBitmap.iGc->BitBlt(TPoint(0,0),iTile); sl@0: delete iTile; sl@0: iTile = NULL; sl@0: sl@0: //Alpha bitmap sl@0: ret = iAlphaBitmap.ConstructL(EGray256,TestBitmapSize,aHWBitmap); sl@0: if(ret!=KErrNone) sl@0: User::Panic(_L("Bitmap not created"),ret); sl@0: sl@0: iGraphicsAccelerator2 = ((CTestFbsDevice*)iBitmap4.iDevice)->StealGraphicsAccelerator(); sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("FilledRect in the screen")); sl@0: TestScreenFilledRect(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("FilledRectWithPattern in the screen")); sl@0: TestScreenFilledRectWithPattern(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("InvertRect in the screen")); sl@0: TestScreenInvertRect(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("FadeRect in the screen")); sl@0: TestScreenFadeRect(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("BitBlt in the screen")); sl@0: TestScreenBitBlt(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("BitBltMasked in the screen")); sl@0: TestScreenBitBltMasked(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("BitBltAlphaBitmap in the screen")); sl@0: TestScreenBitBltAlphaBitmap(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("AlphaBlendTwoBitmaps in the screen")); sl@0: TestScreenAlphaBlendTwoBitmaps(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: sl@0: INFO_PRINTF1(_L("AlphaBlendOneBitmap in the screen")); sl@0: TestScreenAlphaBlendOneBitmap(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("Rotating the screen")); sl@0: TestScreenRotation(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: INFO_PRINTF1(_L("Changing user display mode")); sl@0: TestUserDisplayMode(); sl@0: sl@0: resetColorBitmaps(); sl@0: sl@0: Cleanup(); sl@0: } sl@0: sl@0: void CTAccelerator::TestAcceleratorInfo() sl@0: { sl@0: TInt errCode; sl@0: TInt ret=0; sl@0: sl@0: iBitmap5.iBitmap=new CFbsBitmap(); sl@0: TRAP(errCode, ret=iBitmap5.iBitmap->Load(KRam32BitmapOnZ,0)); sl@0: TEST(errCode==KErrNone); sl@0: TEST(ret==KErrNone); sl@0: TAcceleratedBitmapSpec spec(iBitmap5.iBitmap); sl@0: TAcceleratedBitmapInfo info; sl@0: iBitmap5.iBitmap->LockHeap(); sl@0: spec.GetInfo(info); sl@0: iBitmap5.iBitmap->UnlockHeap(); sl@0: TEST(info.iLinePitch==iBitmap5.iBitmap->Header().iSizeInPixels.iWidth*iBitmap5.iBitmap->Header().iBitsPerPixel/8); sl@0: sl@0: TRAP(errCode, ret=iBitmap5.iBitmap->Compress()); sl@0: TEST(errCode==KErrNone); sl@0: TEST(ret==KErrNone); sl@0: iBitmap5.iBitmap->LockHeap(); sl@0: spec.GetInfo(info); sl@0: iBitmap5.iBitmap->UnlockHeap(); sl@0: TEST(info.iLinePitch==-iBitmap5.iBitmap->Header().iCompression); sl@0: sl@0: TUint32* romAddress = NULL; sl@0: if(CFbsBitmap::IsFileInRom(KRomC24Bitmap, romAddress)) sl@0: { sl@0: TRAP(errCode, ret=iBitmap5.iBitmap->Load(KRomC24Bitmap,0)); sl@0: TEST(errCode==KErrNone); sl@0: TEST(ret==KErrNone); sl@0: iBitmap5.iBitmap->LockHeap(); sl@0: spec.GetInfo(info); sl@0: iBitmap5.iBitmap->UnlockHeap(); sl@0: TEST(info.iLinePitch==-iBitmap5.iBitmap->Header().iCompression); sl@0: } sl@0: else sl@0: { sl@0: INFO_PRINTF2(_L("Skipping ROM bitmap test since file \"%S\" is reported to not be a ROM bitmap."), sl@0: &KRomC24Bitmap); sl@0: INFO_PRINTF1(_L("This should only occur on non-XIP ROMs, e.g. NAND ROMs, where ROM bitmaps aren't supported.")); sl@0: } sl@0: sl@0: TRAP(errCode, ret=iBitmap5.iBitmap->LoadAndCompress(KRamC24BitmapOnZ,0)); sl@0: TEST(errCode==KErrNone); sl@0: TEST(ret==KErrNone); sl@0: iBitmap5.iBitmap->LockHeap(); sl@0: spec.GetInfo(info); sl@0: iBitmap5.iBitmap->UnlockHeap(); sl@0: TEST(info.iLinePitch==-iBitmap5.iBitmap->Header().iCompression); sl@0: sl@0: Cleanup(); sl@0: } sl@0: sl@0: void CTAccelerator::TestAcceleratorInfoForExtendedBitmapL() sl@0: { sl@0: const TSize KSizeInPixels(64,65); sl@0: const TDisplayMode KDisplayMode = EColor64K; sl@0: const TUid KExtendedBitmapUid = {0x87654321}; sl@0: const TUint8 KTestData[] = "Extended bitmap test data 123456"; sl@0: const TInt KTestDataSize = sizeof(KTestData); sl@0: sl@0: CFbsBitmap* exBmp = new (ELeave) CFbsBitmap; sl@0: CleanupStack::PushL(exBmp); sl@0: TInt err = exBmp->CreateExtendedBitmap(KSizeInPixels, KDisplayMode, KExtendedBitmapUid, KTestData, KTestDataSize); sl@0: TEST(err == KErrNone); sl@0: sl@0: TAcceleratedBitmapSpec exSpec(exBmp); sl@0: TAcceleratedBitmapInfo info; sl@0: exBmp->LockHeap(); sl@0: err = exSpec.GetInfo(info); sl@0: TEST(err == KErrNone); sl@0: exBmp->UnlockHeap(); sl@0: sl@0: TEST(info.iDisplayMode == KDisplayMode); sl@0: TEST(info.iSize == KSizeInPixels); sl@0: TEST(info.iLinePitch == -EProprietaryCompression); sl@0: TEST(info.iPixelShift == KExtendedBitmapUid.iUid); sl@0: TEST(info.iDataSize == KTestDataSize); sl@0: sl@0: CleanupStack::PopAndDestroy(exBmp); sl@0: } sl@0: sl@0: const TInt KNumTestFilledRect = 100; sl@0: const TInt KNumTestInvertRect = 100; sl@0: const TInt KNumTestBitBlt = 100; sl@0: const TInt KNumTestFadeRect= 1000; sl@0: const TInt KNumTestBitBltMasked= 100; sl@0: const TInt KNumTestBitBltAlphaBitmap= 100; sl@0: const TInt KNumTestAlphaBlendBitmaps= 100; sl@0: sl@0: void CTAccelerator::TestFilledRect() sl@0: { sl@0: TInt gopBufferSize = KNumTestFilledRect*sizeof(TGopFilledRect); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect bitmapRect(0,0,TestBitmapSize.iWidth,TestBitmapSize.iHeight); sl@0: TRect rect; sl@0: sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: iBitmap2.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap2.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestBitmapSize.iWidth+20)-10; sl@0: rect.iTl.iY = Random(TestBitmapSize.iHeight+20)-10; sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize.iWidth+20); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize.iHeight+20); sl@0: sl@0: sl@0: TRgb colorRect(Random(256),Random(256),Random(256)); sl@0: sl@0: iBitmap1.iGc->SetBrushColor(colorRect); sl@0: iBitmap1.iGc->DrawRect(rect); sl@0: sl@0: iBitmap2.iGc->SetBrushColor(colorRect); sl@0: iBitmap2.iGc->DrawRect(rect); sl@0: sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(bitmapRect); sl@0: if( (rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: TGopFilledRect gop(rect,colorRect); sl@0: gopDes.Append((TUint8*)&gop,sizeof(gop)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gop); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: delete gopBuffer; sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestFilledRectWithPattern() sl@0: { sl@0: TInt gopBufferSize = KNumTestInvertRect*sizeof(TGopFilledRectWithPattern); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect bitmapRect(0,0,TestBitmapSize.iWidth,TestBitmapSize.iHeight); sl@0: TRect rect; sl@0: sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::EPatternedBrush); sl@0: iBitmap1.iGc->UseBrushPattern(iTileBitmap.iBitmap); sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: iBitmap2.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap2.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap2.iGc->SetBrushStyle(CGraphicsContext::EPatternedBrush); sl@0: iBitmap2.iGc->UseBrushPattern(iTileBitmap.iBitmap); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: TAcceleratedBitmapSpec patternBitmapSpec(iTileBitmap.iBitmap); sl@0: TGopFillPattern gopFillPattern; sl@0: gopFillPattern.iBitmap = patternBitmapSpec; sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestBitmapSize.iWidth); sl@0: rect.iTl.iY = Random(TestBitmapSize.iHeight); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize.iWidth); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize.iHeight); sl@0: sl@0: TPoint brushOrigin(Random(TestBitmapSize.iWidth -5),Random(TestBitmapSize.iHeight-5)); sl@0: sl@0: iBitmap1.iGc->SetBrushOrigin(brushOrigin); sl@0: iBitmap1.iGc->DrawRect(rect); sl@0: sl@0: iBitmap2.iGc->SetBrushOrigin(brushOrigin); sl@0: iBitmap2.iGc->DrawRect(rect); sl@0: sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(bitmapRect); sl@0: if( (rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: gopFillPattern.iOrigin = brushOrigin; sl@0: TGopFilledRectWithPattern gop(rect,gopFillPattern); sl@0: gopDes.Append((TUint8*)&gop,sizeof(gop)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gop); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: delete gopBuffer; sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: iBitmap1.iGc->DiscardBrushPattern(); sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestInvertRect() sl@0: { sl@0: TInt gopBufferSize = KNumTestInvertRect*sizeof(TGopInvertRect); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect bitmapRect(0,0,TestBitmapSize.iWidth,TestBitmapSize.iHeight); sl@0: TRect rect; sl@0: sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap1.iGc->SetDrawMode(CGraphicsContext::EDrawModeNOTSCREEN); sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: iBitmap2.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap2.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap2.iGc->SetDrawMode(CGraphicsContext::EDrawModeNOTSCREEN); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestBitmapSize.iWidth+20)-10; sl@0: rect.iTl.iY = Random(TestBitmapSize.iHeight+20)-10; sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize.iWidth+20); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize.iHeight+20); sl@0: sl@0: iBitmap1.iGc->DrawRect(rect); sl@0: iBitmap2.iGc->DrawRect(rect); sl@0: sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(bitmapRect); sl@0: if((rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: TGopInvertRect gop(rect); sl@0: gopDes.Append((TUint8*)&gop,sizeof(gop)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gop); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: delete gopBuffer; sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestFadeRect() sl@0: { sl@0: TInt gopBufferSize = KNumTestFadeRect*sizeof(TGopFadeRect); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect bitmapRect(0,0,TestBitmapSize.iWidth,TestBitmapSize.iHeight); sl@0: TRect rect; sl@0: sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap1.iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: iBitmap2.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap2.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap2.iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestBitmapSize.iWidth); sl@0: rect.iTl.iY = Random(TestBitmapSize.iHeight); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize.iWidth); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize.iHeight); sl@0: sl@0: TUint8 blackMap = (TUint8)Random(256); sl@0: TUint8 whiteMap = (TUint8)Random(256); sl@0: sl@0: RRegion region(rect); sl@0: sl@0: iBitmap1.iGc->SetFaded(ETrue); sl@0: iBitmap1.iGc->SetFadingParameters(blackMap,whiteMap); sl@0: iBitmap1.iGc->FadeArea((TRegion*)®ion); sl@0: sl@0: iBitmap2.iGc->SetFaded(ETrue); sl@0: iBitmap2.iGc->SetFadingParameters(blackMap,whiteMap); sl@0: iBitmap2.iGc->FadeArea((TRegion*)®ion); sl@0: sl@0: region.Close(); sl@0: sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: TGopFadeParams fadeParams; sl@0: fadeParams.iScale = whiteMap - blackMap + 1; sl@0: fadeParams.iOffset = blackMap; sl@0: rect.Intersection(bitmapRect); sl@0: sl@0: if( (rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: TGopFadeRect gop(rect,fadeParams); sl@0: gopDes.Append((TUint8*)&gop,sizeof(gop)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gop); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: goto quitFade2; sl@0: } sl@0: } sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: quitFade2: sl@0: delete gopBuffer; sl@0: iBitmap1.iGc->SetFaded(EFalse); sl@0: iBitmap2.iGc->SetFaded(EFalse); sl@0: } sl@0: sl@0: void CTAccelerator::TestBitBlt() sl@0: { sl@0: TInt gopBufferSize = KNumTestBitBlt*sizeof(TGopBitBlt); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: //dest bitmap has different size sl@0: TRect bitmapRect1(0,0,TestBitmapSize1.iWidth,TestBitmapSize1.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: TRgb color1(Random(256),Random(256),Random(256)); sl@0: sl@0: iBitmap5.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap5.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap5.iGc->SetBrushColor(color1); sl@0: iBitmap5.iGc->DrawRect(bitmapRect1); sl@0: sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestBitmapSize1.iWidth); sl@0: rect.iTl.iY = Random(TestBitmapSize1.iHeight); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize1.iWidth); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize1.iHeight); sl@0: sl@0: TPoint pointDest(Random(TestBitmapSize.iWidth),Random(TestBitmapSize.iHeight)); sl@0: sl@0: //bitblt with GC sl@0: iBitmap1.iGc->BitBlt(pointDest,iBitmap5.iBitmap,rect); sl@0: iBitmap2.iGc->BitBlt(pointDest,iBitmap5.iBitmap,rect); sl@0: sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(bitmapRect1); sl@0: TSize maxSize=TestBitmapSize-pointDest; sl@0: if (rect.Width()>maxSize.iWidth) sl@0: rect.iBr.iX=rect.iTl.iX+maxSize.iWidth; sl@0: if (rect.Height()>maxSize.iHeight) sl@0: rect.iBr.iY=rect.iTl.iY+maxSize.iHeight; sl@0: if(rect.IsEmpty()) sl@0: continue; sl@0: sl@0: if( (rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: TAcceleratedBitmapSpec bitmap5Spec(iBitmap5.iBitmap); sl@0: TGopBitBlt gopBitBlt(pointDest,bitmap5Spec,rect); sl@0: gopDes.Append((TUint8*)&gopBitBlt,sizeof(gopBitBlt)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gopBitBlt); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: delete gopBuffer; sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestBitBltMasked() sl@0: { sl@0: TInt gopBufferSize = KNumTestBitBltMasked*sizeof(TGopBitBltMasked); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect bitmapRect(0,0,TestBitmapSize.iWidth,TestBitmapSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: //Mask bitmap sl@0: iBitmap6.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap6.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: sl@0: TRgb color1(Random(256),Random(256),Random(256)); sl@0: sl@0: //Source bitmap sl@0: iBitmap7.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap7.iGc->SetBrushColor(color1); sl@0: iBitmap7.iGc->DrawRect(bitmapRect); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: TAcceleratedBitmapSpec bitmap7Spec(iBitmap7.iBitmap); sl@0: TAcceleratedBitmapSpec bitmap6Spec(iBitmap6.iBitmap); sl@0: sl@0: TPoint dest; sl@0: TRect rectMask; sl@0: sl@0: //clear the mask bitmap with white sl@0: iBitmap6.iGc->SetBrushColor(TRgb(255,255,255)); sl@0: iBitmap6.iGc->DrawRect(bitmapRect); sl@0: sl@0: //Put randomly in the Bitmap Mask a numbers of black rects sl@0: iBitmap6.iGc->SetBrushColor(TRgb(0,0,0)); sl@0: sl@0: for(TInt n=0; n<10; n++) sl@0: { sl@0: rectMask.iTl.iX = Random(TestBitmapSize1.iWidth); sl@0: rectMask.iTl.iY = Random(TestBitmapSize1.iHeight); sl@0: rectMask.iBr.iX = rectMask.iTl.iX+1+Random(TestBitmapSize1.iWidth); sl@0: rectMask.iBr.iY = rectMask.iTl.iY+1+Random(TestBitmapSize1.iHeight); sl@0: iBitmap6.iGc->DrawRect(rectMask); sl@0: } sl@0: sl@0: for(TInt i=0; i<100; i++) sl@0: { sl@0: //random rect to blit sl@0: rect.iTl.iX = Random(TestBitmapSize1.iWidth); sl@0: rect.iTl.iY = Random(TestBitmapSize1.iHeight); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize1.iWidth); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize1.iHeight); sl@0: sl@0: //random point destination sl@0: dest.iX = Random(TestBitmapSize1.iWidth); sl@0: dest.iY = Random(TestBitmapSize1.iHeight); sl@0: sl@0: //do BitBltMasked with graphics contex sl@0: iBitmap1.iGc->BitBltMasked(dest,iBitmap7.iBitmap,rect,iBitmap6.iBitmap,ETrue); sl@0: iBitmap2.iGc->BitBltMasked(dest,iBitmap7.iBitmap,rect,iBitmap6.iBitmap,ETrue); sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(bitmapRect); sl@0: if(rect.IsEmpty()) sl@0: continue; sl@0: sl@0: if((rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: TGopBitBltMasked gopBitBltMasked(dest,bitmap7Spec,rect,bitmap6Spec); sl@0: gopDes.Append((TUint8*)&gopBitBltMasked,sizeof(gopBitBltMasked)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gopBitBltMasked); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: delete gopBuffer; sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestBitBltAlphaBitmap() sl@0: { sl@0: TInt gopBufferSize = KNumTestBitBltAlphaBitmap*sizeof(TGopBitBltAlphaBitmap); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect bitmapRect(0,0,TestBitmapSize.iWidth,TestBitmapSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: TRgb color = TRgb(Random(256),Random(256),Random(256)); sl@0: sl@0: //Source bitmap sl@0: iBitmap7.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap7.iGc->SetBrushColor(color); sl@0: iBitmap7.iGc->DrawRect(bitmapRect); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: iAlphaBitmap.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: sl@0: //create 10 gray level for the alpha bitmap sl@0: for(TInt i=0; i<10;i++) sl@0: { sl@0: TRect tmpRect(0,10*i,200,10+10*i); sl@0: TInt index = 255-(20*i); sl@0: TRgb tmpRgb; sl@0: iAlphaBitmap.iGc->SetBrushColor(tmpRgb.Gray256(index)); sl@0: iAlphaBitmap.iGc->DrawRect(tmpRect); sl@0: } sl@0: sl@0: TAcceleratedBitmapSpec bitmap7Spec(iBitmap7.iBitmap); sl@0: TAcceleratedBitmapSpec alphaBitmapSpec(iAlphaBitmap.iBitmap); sl@0: sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestBitmapSize.iWidth); sl@0: rect.iTl.iY = Random(TestBitmapSize.iHeight); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize.iWidth); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize.iHeight); sl@0: sl@0: //Random destination point sl@0: TPoint pointDest(Random(TestBitmapSize.iWidth),Random(TestBitmapSize.iHeight)); sl@0: sl@0: //alpha blitting with Graphics Contex sl@0: iBitmap1.iGc->BitBltMasked(pointDest,iBitmap7.iBitmap,rect,iAlphaBitmap.iBitmap,ETrue); sl@0: iBitmap2.iGc->BitBltMasked(pointDest,iBitmap7.iBitmap,rect,iAlphaBitmap.iBitmap,ETrue); sl@0: sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(bitmapRect); sl@0: //alpha blitting with Graphics accelerator sl@0: TGopBitBltAlphaBitmap gopBitBltAlphaBitmap(pointDest,bitmap7Spec,rect,alphaBitmapSpec); sl@0: gopDes.Append((TUint8*)&gopBitBltAlphaBitmap,sizeof(gopBitBltAlphaBitmap)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gopBitBltAlphaBitmap); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: goto done; sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: done: sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestAlphaBlendTwoBitmaps() sl@0: { sl@0: TInt gopBufferSize = KNumTestAlphaBlendBitmaps*sizeof(TGopAlphaBlendTwoBitmaps); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect bitmapRect(0,0,TestBitmapSize.iWidth,TestBitmapSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: TRgb color = TRgb(Random(256),Random(256),Random(256)); sl@0: sl@0: // First Source bitmap sl@0: iBitmap7.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap7.iGc->SetBrushColor(color); sl@0: iBitmap7.iGc->DrawRect(bitmapRect); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: // Get a new random color sl@0: color = TRgb(Random(256),Random(256),Random(256)); sl@0: sl@0: // Second Source bitmap sl@0: iBitmap8.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap8.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap8.iGc->SetBrushColor(color); sl@0: iBitmap8.iGc->DrawRect(bitmapRect); sl@0: iBitmap8.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: iAlphaBitmap.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: sl@0: //create 10 gray level for the alpha bitmap sl@0: for(TInt i=0; i<10;i++) sl@0: { sl@0: TRect tmpRect(0,10*i,200,10+10*i); sl@0: TInt index = 255-(20*i); sl@0: TRgb tmpRgb; sl@0: iAlphaBitmap.iGc->SetBrushColor(tmpRgb.Gray256(index)); sl@0: iAlphaBitmap.iGc->DrawRect(tmpRect); sl@0: } sl@0: sl@0: TAcceleratedBitmapSpec bitmap7Spec(iBitmap7.iBitmap); sl@0: TAcceleratedBitmapSpec bitmap8Spec(iBitmap8.iBitmap); sl@0: TAcceleratedBitmapSpec alphaBitmapSpec(iAlphaBitmap.iBitmap); sl@0: sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestBitmapSize.iWidth - 1); sl@0: rect.iTl.iY = Random(TestBitmapSize.iHeight - 1); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize.iWidth - rect.iTl.iX); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize.iHeight - rect.iTl.iY); sl@0: sl@0: TPoint pointDest(Random(TestBitmapSize.iWidth),Random(TestBitmapSize.iHeight)); sl@0: TPoint pointSource(Random(TestBitmapSize.iWidth),Random(TestBitmapSize.iHeight)); sl@0: TPoint pointAlpha(Random(TestBitmapSize.iWidth - rect.Width() - 1),Random(TestBitmapSize.iHeight - rect.Height() - 1)); sl@0: sl@0: //alpha blending Graphics Context - invalid parameter causes skip to next test sl@0: TInt rc = iBitmap1.iGc->AlphaBlendBitmaps(pointDest,iBitmap7.iBitmap,iBitmap8.iBitmap,rect,pointSource,iAlphaBitmap.iBitmap,pointAlpha); sl@0: if(rc!=KErrNone) sl@0: { sl@0: continue; sl@0: } sl@0: iBitmap2.iGc->AlphaBlendBitmaps(pointDest,iBitmap7.iBitmap,iBitmap8.iBitmap,rect,pointSource,iAlphaBitmap.iBitmap,pointAlpha); sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(bitmapRect); sl@0: //alpha blending with Graphics accelerator sl@0: TGopAlphaBlendTwoBitmaps gopAlphaBlendTwoBitmaps(pointDest,bitmap7Spec,bitmap8Spec,rect,pointSource,alphaBitmapSpec,pointAlpha); sl@0: gopDes.Append((TUint8*)&gopAlphaBlendTwoBitmaps,sizeof(gopAlphaBlendTwoBitmaps)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gopAlphaBlendTwoBitmaps); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: goto done; sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: done: sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestAlphaBlendOneBitmap() sl@0: { sl@0: TInt gopBufferSize = KNumTestAlphaBlendBitmaps*sizeof(TGopAlphaBlendOneBitmap); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect bitmapRect(0,0,TestBitmapSize.iWidth,TestBitmapSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: TRgb color = TRgb(Random(256),Random(256),Random(256)); sl@0: sl@0: // First Source bitmap sl@0: iBitmap7.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap7.iGc->SetBrushColor(color); sl@0: iBitmap7.iGc->DrawRect(bitmapRect); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: // Get a new random color sl@0: color = TRgb(Random(256),Random(256),Random(256)); sl@0: sl@0: iAlphaBitmap.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: sl@0: //create 10 gray level for the alpha bitmap sl@0: for(TInt i=0; i<10;i++) sl@0: { sl@0: TRect tmpRect(0,10*i,200,10+10*i); sl@0: TInt index = 255-(20*i); sl@0: TRgb tmpRgb; sl@0: iAlphaBitmap.iGc->SetBrushColor(tmpRgb.Gray256(index)); sl@0: iAlphaBitmap.iGc->DrawRect(tmpRect); sl@0: } sl@0: sl@0: TAcceleratedBitmapSpec bitmap7Spec(iBitmap7.iBitmap); sl@0: TAcceleratedBitmapSpec alphaBitmapSpec(iAlphaBitmap.iBitmap); sl@0: sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestBitmapSize.iWidth - 1); sl@0: rect.iTl.iY = Random(TestBitmapSize.iHeight - 1); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize.iWidth - rect.iTl.iX); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize.iHeight - rect.iTl.iY); sl@0: sl@0: TPoint pointDest(Random(TestBitmapSize.iWidth),Random(TestBitmapSize.iHeight)); sl@0: TPoint pointAlpha(Random(TestBitmapSize.iWidth - rect.Width()),Random(TestBitmapSize.iHeight - rect.Height())); sl@0: sl@0: iBitmap1.iGc->DrawRect(iBitmap1.iBitmap->SizeInPixels()); sl@0: //alpha blending Graphics Context - wrong argument cause skip to next test sl@0: TInt rc = iBitmap1.iGc->AlphaBlendBitmaps(pointDest,iBitmap7.iBitmap,rect,iAlphaBitmap.iBitmap,pointAlpha); sl@0: if(rc!=KErrNone) sl@0: { sl@0: continue; sl@0: } sl@0: iBitmap2.iGc->AlphaBlendBitmaps(pointDest,iBitmap7.iBitmap,rect,iAlphaBitmap.iBitmap,pointAlpha); sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(bitmapRect); sl@0: //alpha blending with Graphics accelerator sl@0: TGopAlphaBlendOneBitmap gopAlphaBlendOneBitmap(pointDest,iBitmap7.iBitmap,rect,iAlphaBitmap.iBitmap,pointAlpha); sl@0: gopDes.Append((TUint8*)&gopAlphaBlendOneBitmap,sizeof(gopAlphaBlendOneBitmap)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gopAlphaBlendOneBitmap); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: goto done; sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: done: sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestScreenFilledRect() sl@0: { sl@0: TInt gopBufferSize = KNumTestFilledRect*sizeof(TGopFilledRect); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect screenRect(0,0,TestScreenSize.iWidth,TestScreenSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: //used with GC sl@0: iBitmap1.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: iScreenGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iScreenGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iScreenGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestScreenSize.iWidth+20)-10; sl@0: rect.iTl.iY = Random(TestScreenSize.iHeight+20)-10; sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestScreenSize.iWidth+20); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestScreenSize.iHeight+20); sl@0: sl@0: TRgb colorRect(Random(256),Random(256),Random(256)); sl@0: sl@0: iBitmap1.iGc->SetBrushColor(colorRect); sl@0: iBitmap1.iGc->DrawRect(rect); sl@0: sl@0: iScreenGc->SetBrushColor(colorRect); sl@0: iScreenGc->DrawRect(rect); sl@0: sl@0: iBitmap2.iGc->BitBlt(TPoint(0,0),*iScreenGc,screenRect); sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(screenRect); sl@0: if( (rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: TGopFilledRect gop(rect,colorRect); sl@0: gopDes.Append((TUint8*)&gop,sizeof(gop)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gop); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: delete gopBuffer; sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestScreenFilledRectWithPattern() sl@0: { sl@0: TInt gopBufferSize = KNumTestInvertRect*sizeof(TGopFilledRectWithPattern); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect screenRect(0,0,TestScreenSize.iWidth,TestScreenSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: //used with GC sl@0: iBitmap1.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap1.iGc->UseBrushPattern(iTileBitmap.iBitmap); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::EPatternedBrush); sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: iScreenGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iScreenGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iScreenGc->UseBrushPattern(iTileBitmap.iBitmap); sl@0: iScreenGc->SetBrushStyle(CGraphicsContext::EPatternedBrush); sl@0: iScreenGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: TAcceleratedBitmapSpec patternBitmapSpec(iTileBitmap.iBitmap); sl@0: TGopFillPattern gopFillPattern; sl@0: gopFillPattern.iBitmap = patternBitmapSpec; sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestScreenSize.iWidth); sl@0: rect.iTl.iY = Random(TestScreenSize.iHeight); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestScreenSize.iWidth); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestScreenSize.iHeight); sl@0: sl@0: TPoint brushOrigin(Random(TestScreenSize.iWidth -5),Random(TestScreenSize.iHeight-5)); sl@0: sl@0: iBitmap1.iGc->SetBrushOrigin(brushOrigin); sl@0: iBitmap1.iGc->DrawRect(rect); sl@0: sl@0: iScreenGc->SetBrushOrigin(brushOrigin); sl@0: iScreenGc->DrawRect(rect); sl@0: sl@0: iBitmap2.iGc->BitBlt(TPoint(0,0),*iScreenGc,screenRect); sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(screenRect); sl@0: if( (rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: gopFillPattern.iOrigin = brushOrigin; sl@0: TGopFilledRectWithPattern gop(rect,gopFillPattern); sl@0: gopDes.Append((TUint8*)&gop,sizeof(gop)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gop); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: delete gopBuffer; sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: iBitmap1.iGc->DiscardBrushPattern(); sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestScreenInvertRect() sl@0: { sl@0: TInt gopBufferSize = KNumTestInvertRect*sizeof(TGopInvertRect); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect screenRect(0,0,TestScreenSize.iWidth,TestScreenSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap1.iGc->SetDrawMode(CGraphicsContext::EDrawModeNOTSCREEN); sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: iScreenGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iScreenGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iScreenGc->SetDrawMode(CGraphicsContext::EDrawModeNOTSCREEN); sl@0: iScreenGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestScreenSize.iWidth+20)-10; sl@0: rect.iTl.iY = Random(TestScreenSize.iHeight+20)-10; sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestScreenSize.iWidth+20); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestScreenSize.iHeight+20); sl@0: sl@0: iBitmap1.iGc->DrawRect(rect); sl@0: iScreenGc->DrawRect(rect); sl@0: sl@0: iBitmap2.iGc->BitBlt(TPoint(0,0),*iScreenGc,screenRect); sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(screenRect); sl@0: if((rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: TGopInvertRect gop(rect); sl@0: gopDes.Append((TUint8*)&gop,sizeof(gop)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gop); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: delete gopBuffer; sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestScreenFadeRect() sl@0: { sl@0: TInt gopBufferSize = KNumTestFadeRect*sizeof(TGopFadeRect); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect screenRect(0,0,TestScreenSize.iWidth,TestScreenSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap1.iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: iScreenGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iScreenGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iScreenGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iScreenGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestScreenSize.iWidth); sl@0: rect.iTl.iY = Random(TestScreenSize.iHeight); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestScreenSize.iWidth); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestScreenSize.iHeight); sl@0: sl@0: TUint8 blackMap = (TUint8)Random(256); sl@0: TUint8 whiteMap = (TUint8)Random(256); sl@0: sl@0: RRegion region(rect); sl@0: sl@0: iBitmap1.iGc->SetFaded(ETrue); sl@0: iBitmap1.iGc->SetFadingParameters(blackMap,whiteMap); sl@0: iBitmap1.iGc->FadeArea((TRegion*)®ion); sl@0: sl@0: iScreenGc->SetFaded(ETrue); sl@0: iScreenGc->SetFadingParameters(blackMap,whiteMap); sl@0: iScreenGc->FadeArea((TRegion*)®ion); sl@0: sl@0: iBitmap2.iGc->BitBlt(TPoint(0,0),*iScreenGc,screenRect); sl@0: sl@0: region.Close(); sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: TGopFadeParams fadeParams; sl@0: fadeParams.iScale = whiteMap - blackMap + 1; sl@0: fadeParams.iOffset = blackMap; sl@0: rect.Intersection(screenRect); sl@0: sl@0: if( (rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: TGopFadeRect gop(rect,fadeParams); sl@0: gopDes.Append((TUint8*)&gop,sizeof(gop)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gop); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: goto quitFade; sl@0: } sl@0: } sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: quitFade: sl@0: delete gopBuffer; sl@0: iBitmap1.iGc->SetFaded(EFalse); sl@0: iScreenGc->SetFaded(EFalse); sl@0: } sl@0: sl@0: void CTAccelerator::TestScreenBitBlt() sl@0: { sl@0: TInt gopBufferSize = KNumTestBitBlt*sizeof(TGopBitBlt); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect screenRect(0,0,TestScreenSize.iWidth,TestScreenSize.iHeight); sl@0: //dest bitmap has different size sl@0: TRect bitmapRect1(0,0,TestBitmapSize1.iWidth,TestBitmapSize1.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iScreenGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: TRgb color1(Random(256),Random(256),Random(256)); sl@0: sl@0: iBitmap5.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap5.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap5.iGc->SetBrushColor(color1); sl@0: iBitmap5.iGc->DrawRect(bitmapRect1); sl@0: sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestBitmapSize1.iWidth); sl@0: rect.iTl.iY = Random(TestBitmapSize1.iHeight); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize1.iWidth); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize1.iHeight); sl@0: sl@0: TPoint pointDest(Random(TestScreenSize.iWidth),Random(TestScreenSize.iHeight)); sl@0: sl@0: //bitblt with GC sl@0: iBitmap1.iGc->BitBlt(pointDest,iBitmap5.iBitmap,rect); sl@0: iScreenGc->BitBlt(pointDest,iBitmap5.iBitmap,rect); sl@0: sl@0: iBitmap2.iGc->BitBlt(TPoint(0,0),*iScreenGc,screenRect); sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: TInt extraWidth=(pointDest.iX+rect.Width())-TestScreenSize.iWidth; sl@0: if (extraWidth>0) sl@0: rect.iBr.iX-=extraWidth; sl@0: TInt extraHeight=(pointDest.iY+rect.Height())-TestScreenSize.iHeight; sl@0: if (extraHeight>0) sl@0: rect.iBr.iY-=extraHeight; sl@0: rect.Intersection(bitmapRect1); sl@0: TSize maxSize=TestBitmapSize-pointDest; sl@0: if (rect.Width()>maxSize.iWidth) sl@0: rect.iBr.iX=rect.iTl.iX+maxSize.iWidth; sl@0: if (rect.Height()>maxSize.iHeight) sl@0: rect.iBr.iY=rect.iTl.iY+maxSize.iHeight; sl@0: if(rect.IsEmpty()) sl@0: continue; sl@0: sl@0: if( (rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: TAcceleratedBitmapSpec bitmap5Spec(iBitmap5.iBitmap); sl@0: TGopBitBlt gopBitBlt(pointDest,bitmap5Spec,rect); sl@0: gopDes.Append((TUint8*)&gopBitBlt,sizeof(gopBitBlt)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gopBitBlt); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: delete gopBuffer; sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestScreenBitBltMasked() sl@0: { sl@0: TInt gopBufferSize = KNumTestBitBltMasked*sizeof(TGopBitBltMasked); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect screenRect(0,0,TestScreenSize.iWidth,TestScreenSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iScreenGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: //Mask bitmap sl@0: iBitmap6.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap6.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: sl@0: TRgb color1(Random(256),Random(256),Random(256)); sl@0: sl@0: //Source bitmap sl@0: iBitmap7.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap7.iGc->SetBrushColor(color1); sl@0: iBitmap7.iGc->DrawRect(iBitmap7.iBitmap->SizeInPixels()); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: TAcceleratedBitmapSpec bitmap7Spec(iBitmap7.iBitmap); sl@0: TAcceleratedBitmapSpec bitmap6Spec(iBitmap6.iBitmap); sl@0: sl@0: TPoint dest; sl@0: TRect rectMask; sl@0: sl@0: //Put randomly in the Bitmap Mask a numbers of black rects sl@0: iBitmap6.iGc->SetBrushColor(TRgb(0,0,0)); sl@0: sl@0: for(TInt n=0; n<3; n++) sl@0: { sl@0: rectMask.iTl.iX = Random(TestScreenSize.iWidth); sl@0: rectMask.iTl.iY = Random(TestScreenSize.iHeight); sl@0: rectMask.iBr.iX = rectMask.iTl.iX+1+Random(TestScreenSize.iWidth); sl@0: rectMask.iBr.iY = rectMask.iTl.iY+1+Random(TestScreenSize.iHeight); sl@0: iBitmap6.iGc->DrawRect(rectMask); sl@0: } sl@0: sl@0: for(TInt i=0; i<100; i++) sl@0: { sl@0: //random rect to blit sl@0: rect.iTl.iX = Random(TestScreenSize.iWidth); sl@0: rect.iTl.iY = Random(TestScreenSize.iHeight); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestScreenSize.iWidth); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestScreenSize.iHeight); sl@0: sl@0: //random point destination sl@0: dest.iX = Random(TestScreenSize.iWidth); sl@0: dest.iY = Random(TestScreenSize.iHeight); sl@0: sl@0: iBitmap1.iGc->BitBltMasked(dest,iBitmap7.iBitmap,rect,iBitmap6.iBitmap,ETrue); sl@0: iScreenGc->BitBltMasked(dest,iBitmap7.iBitmap,rect,iBitmap6.iBitmap,ETrue); sl@0: iBitmap2.iGc->BitBlt(TPoint(0,0),*iScreenGc,screenRect); sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(screenRect); sl@0: if(rect.IsEmpty()) sl@0: continue; sl@0: sl@0: if((rect.iBr.iX>rect.iTl.iX) && (rect.iBr.iY>rect.iTl.iY)) sl@0: { sl@0: TGopBitBltMasked gopBitBltMasked(dest,bitmap7Spec,rect,bitmap6Spec); sl@0: gopDes.Append((TUint8*)&gopBitBltMasked,sizeof(gopBitBltMasked)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gopBitBltMasked); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: delete gopBuffer; sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: return; sl@0: } sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestScreenBitBltAlphaBitmap() sl@0: { sl@0: TInt gopBufferSize = KNumTestBitBltAlphaBitmap*sizeof(TGopBitBltAlphaBitmap); sl@0: TUint8* gopBuffer = new TUint8[gopBufferSize]; sl@0: TPtr8 gopDes = TPtr8(gopBuffer,0,gopBufferSize); sl@0: sl@0: TRect screenRect(0,0,TestScreenSize.iWidth,TestScreenSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iScreenGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb white; sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetBrushColor(white); sl@0: iBitmap3.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetBrushColor(white); sl@0: iBitmap4.iGc->SetClippingRegion(iSubRegionPtr); sl@0: sl@0: TRgb color = TRgb(Random(256),Random(256),Random(256)); sl@0: sl@0: //Source bitmap sl@0: iBitmap7.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap7.iGc->SetBrushColor(color); sl@0: iBitmap7.iGc->DrawRect(iBitmap7.iBitmap->SizeInPixels()); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: sl@0: iAlphaBitmap.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: sl@0: sl@0: //create 10 gray level for the alpha bitmap sl@0: for(TInt i=0; i<10;i++) sl@0: { sl@0: TRect tmpRect(0,10*i,200,10+10*i); sl@0: TInt index = 255-(20*i); sl@0: TRgb tmpRgb; sl@0: iAlphaBitmap.iGc->SetBrushColor(tmpRgb.Gray256(index)); sl@0: iAlphaBitmap.iGc->DrawRect(tmpRect); sl@0: } sl@0: sl@0: TAcceleratedBitmapSpec bitmap7Spec(iBitmap7.iBitmap); sl@0: TAcceleratedBitmapSpec alphaBitmapSpec(iAlphaBitmap.iBitmap); sl@0: sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestBitmapSize.iWidth); sl@0: rect.iTl.iY = Random(TestBitmapSize.iHeight); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize.iWidth); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize.iHeight); sl@0: sl@0: //Random destination point sl@0: TPoint pointDest(Random(TestScreenSize.iWidth),Random(TestScreenSize.iHeight)); sl@0: sl@0: //alpha blitting with Graphics Contex sl@0: iBitmap1.iGc->BitBltMasked(pointDest,iBitmap7.iBitmap,rect,iAlphaBitmap.iBitmap,ETrue); sl@0: iScreenGc->BitBltMasked(pointDest,iBitmap7.iBitmap,rect,iAlphaBitmap.iBitmap,ETrue); sl@0: iBitmap2.iGc->BitBlt(TPoint(0,0),*iScreenGc,screenRect); sl@0: sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: sl@0: rect.Intersection(screenRect); sl@0: //alpha blitting with Graphics accelerator sl@0: TGopBitBltAlphaBitmap gopBitBltAlphaBitmap(pointDest,bitmap7Spec,rect,alphaBitmapSpec); sl@0: gopDes.Append((TUint8*)&gopBitBltAlphaBitmap,sizeof(gopBitBltAlphaBitmap)); sl@0: TInt error = iGraphicsAccelerator1->Operation(gopBitBltAlphaBitmap); sl@0: if(error == KErrNotSupported) sl@0: { sl@0: WARN_PRINTF1(_L(" Not Supported.")); sl@0: goto done; sl@0: } sl@0: iBitmap3.iGc->DrawRect(iBitmap3.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap2.Compare(&iBitmap3)); sl@0: } sl@0: iGraphicsAccelerator2->Operation(gopDes); sl@0: iBitmap4.iGc->DrawRect(iBitmap4.iBitmap->SizeInPixels()); sl@0: TEST(iBitmap3.Compare(&iBitmap4)); sl@0: done: sl@0: delete gopBuffer; sl@0: } sl@0: sl@0: void CTAccelerator::TestScreenAlphaBlendTwoBitmaps() sl@0: { sl@0: TRect screenRect(0,0,TestBitmapSize.iWidth,TestBitmapSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb color = TRgb(Random(256),Random(256),Random(256)); sl@0: sl@0: // First Source bitmap sl@0: iBitmap7.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap7.iGc->SetBrushColor(color); sl@0: iBitmap7.iGc->DrawRect(screenRect); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: // Get a new random color sl@0: color = TRgb(Random(256),Random(256),Random(256)); sl@0: sl@0: // Second Source bitmap sl@0: iBitmap8.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap8.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap8.iGc->SetBrushColor(color); sl@0: iBitmap8.iGc->DrawRect(screenRect); sl@0: iBitmap8.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: iAlphaBitmap.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: sl@0: //create 10 gray level for the alpha bitmap sl@0: for(TInt i=0; i<10;i++) sl@0: { sl@0: TRect tmpRect(0,10*i,200,10+10*i); sl@0: TInt index = 255-(20*i); sl@0: TRgb tmpRgb; sl@0: iAlphaBitmap.iGc->SetBrushColor(tmpRgb.Gray256(index)); sl@0: iAlphaBitmap.iGc->DrawRect(tmpRect); sl@0: } sl@0: sl@0: TAcceleratedBitmapSpec bitmap7Spec(iBitmap7.iBitmap); sl@0: TAcceleratedBitmapSpec bitmap8Spec(iBitmap8.iBitmap); sl@0: TAcceleratedBitmapSpec alphaBitmapSpec(iAlphaBitmap.iBitmap); sl@0: sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: rect.iTl.iX = Random(TestBitmapSize.iWidth - 1); sl@0: rect.iTl.iY = Random(TestBitmapSize.iHeight - 1); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize.iWidth - rect.iTl.iX); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize.iHeight - rect.iTl.iY); sl@0: sl@0: TPoint pointDest(Random(TestBitmapSize.iWidth),Random(TestBitmapSize.iHeight)); sl@0: TPoint pointSource(Random(TestBitmapSize.iWidth),Random(TestBitmapSize.iHeight)); sl@0: TPoint pointAlpha(Random(TestBitmapSize.iWidth - rect.Width()),Random(TestBitmapSize.iHeight - rect.Height())); sl@0: sl@0: //alpha blending Graphics Context - wrong argument cause skip to next test sl@0: TInt error = iBitmap1.iGc->AlphaBlendBitmaps(pointDest,iBitmap7.iBitmap,iBitmap8.iBitmap,rect,pointSource,iAlphaBitmap.iBitmap,pointAlpha); sl@0: // AlphaBlendBitmaps can return KErrArgument based on the input data - in that case, continue sl@0: if(error!=KErrNone) sl@0: { sl@0: continue; sl@0: } sl@0: iScreenGc->AlphaBlendBitmaps(pointDest,iBitmap7.iBitmap,iBitmap8.iBitmap,rect,pointSource,iAlphaBitmap.iBitmap,pointAlpha); sl@0: iBitmap2.iGc->BitBlt(TPoint(0,0),*iScreenGc,screenRect); sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: } sl@0: } sl@0: sl@0: void CTAccelerator::TestScreenAlphaBlendOneBitmap() sl@0: { sl@0: TRect screenRect(0,0,TestBitmapSize.iWidth,TestBitmapSize.iHeight); sl@0: sl@0: TRect rect; sl@0: iFixedRegionPtr = &iFixedRegion; sl@0: sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: sl@0: TRgb color = TRgb(Random(256),Random(256),Random(256)); sl@0: sl@0: // First Source bitmap sl@0: iBitmap7.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap7.iGc->SetBrushColor(color); sl@0: iBitmap7.iGc->DrawRect(screenRect); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: // Get a new random color sl@0: color = TRgb(Random(256),Random(256),Random(256)); sl@0: sl@0: iAlphaBitmap.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: sl@0: //create 10 gray level for the alpha bitmap sl@0: for(TInt i=0; i<10;i++) sl@0: { sl@0: TRect tmpRect(0,10*i,200,10+10*i); sl@0: TInt index = 255-(20*i); sl@0: TRgb tmpRgb; sl@0: iAlphaBitmap.iGc->SetBrushColor(tmpRgb.Gray256(index)); sl@0: iAlphaBitmap.iGc->DrawRect(tmpRect); sl@0: } sl@0: sl@0: TAcceleratedBitmapSpec bitmap7Spec(iBitmap7.iBitmap); sl@0: TAcceleratedBitmapSpec alphaBitmapSpec(iAlphaBitmap.iBitmap); sl@0: sl@0: iAlphaBitmap.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: for(TInt n=0; n<100; n++) sl@0: { sl@0: if(n==0) continue; sl@0: rect.iTl.iX = Random(TestBitmapSize.iWidth - 1); sl@0: rect.iTl.iY = Random(TestBitmapSize.iHeight - 1); sl@0: rect.iBr.iX = rect.iTl.iX+1+Random(TestBitmapSize.iWidth - rect.iTl.iX); sl@0: rect.iBr.iY = rect.iTl.iY+1+Random(TestBitmapSize.iHeight - rect.iTl.iY); sl@0: sl@0: TPoint pointDest(Random(TestBitmapSize.iWidth),Random(TestBitmapSize.iHeight)); sl@0: TPoint pointAlpha(Random(TestBitmapSize.iWidth - rect.Width() - 1),Random(TestBitmapSize.iHeight - rect.Height() - 1)); sl@0: sl@0: //alpha blending Graphics Context - wrong argument cause skip to next test sl@0: TInt rc = iBitmap1.iGc->AlphaBlendBitmaps(pointDest,iBitmap7.iBitmap,rect,iAlphaBitmap.iBitmap,pointAlpha); sl@0: if(rc!=KErrNone) sl@0: { sl@0: continue; sl@0: } sl@0: iScreenGc->AlphaBlendBitmaps(pointDest,iBitmap7.iBitmap,rect,iAlphaBitmap.iBitmap,pointAlpha); sl@0: iBitmap2.iGc->BitBlt(TPoint(0,0),*iScreenGc,screenRect); sl@0: TEST(iBitmap1.Compare(&iBitmap2)); sl@0: } sl@0: } sl@0: sl@0: void CTAccelerator::resetColorBitmaps() sl@0: { sl@0: TRgb color; sl@0: iFixedRegionPtr = &iDefaultRegion; sl@0: sl@0: if(iHwScreenDevice) sl@0: { sl@0: iFixedRegionPtr = &iDefaultScreenRegion; sl@0: iScreenGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iScreenGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iScreenGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iScreenGc->SetClippingRegion(iFixedRegionPtr); sl@0: iScreenGc->SetBrushColor(color); sl@0: iScreenGc->DrawRect(TestScreenSize); sl@0: iScreenGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: } sl@0: sl@0: iBitmap1.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap1.iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iBitmap1.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iBitmap1.iGc->SetBrushColor(color); sl@0: TRect rect1(iBitmap1.iBitmap->SizeInPixels()); sl@0: iBitmap1.iGc->DrawRect(rect1); sl@0: iBitmap1.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: iBitmap2.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap2.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap2.iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iBitmap2.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iBitmap2.iGc->SetBrushColor(color); sl@0: TRect rect2(iBitmap2.iBitmap->SizeInPixels()); sl@0: iBitmap2.iGc->DrawRect(rect2); sl@0: iBitmap2.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: //GA1 sl@0: iBitmap3.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap3.iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iBitmap3.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iBitmap3.iGc->SetBrushColor(color); sl@0: TRect rect3(iBitmap3.iBitmap->SizeInPixels()); sl@0: iBitmap3.iGc->DrawRect(rect3); sl@0: iBitmap3.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: //GA2 sl@0: iBitmap4.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap4.iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iBitmap4.iGc->SetClippingRegion(iFixedRegionPtr); sl@0: iBitmap4.iGc->SetBrushColor(color); sl@0: TRect rect4(iBitmap4.iBitmap->SizeInPixels()); sl@0: iBitmap4.iGc->DrawRect(rect4); sl@0: iBitmap4.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: iBitmap5.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap5.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap5.iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iBitmap5.iGc->SetBrushColor(color); sl@0: TRect rect5(iBitmap5.iBitmap->SizeInPixels()); sl@0: iBitmap5.iGc->DrawRect(rect5); sl@0: iBitmap5.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: iBitmap6.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap6.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap6.iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iBitmap6.iGc->SetBrushColor(color); sl@0: TRect rect6(iBitmap6.iBitmap->SizeInPixels()); sl@0: iBitmap6.iGc->DrawRect(rect6); sl@0: iBitmap6.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: iBitmap7.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap7.iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iBitmap7.iGc->SetBrushColor(color); sl@0: TRect rect7(iBitmap7.iBitmap->SizeInPixels()); sl@0: iBitmap7.iGc->DrawRect(rect7); sl@0: iBitmap7.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: sl@0: iBitmap8.iGc->SetPenStyle(CGraphicsContext::ENullPen); sl@0: iBitmap8.iGc->SetBrushStyle(CGraphicsContext::ESolidBrush); sl@0: iBitmap8.iGc->SetDrawMode(CGraphicsContext::EDrawModePEN); sl@0: iBitmap8.iGc->SetBrushColor(color); sl@0: TRect rect8(iBitmap8.iBitmap->SizeInPixels()); sl@0: iBitmap8.iGc->DrawRect(rect8); sl@0: iBitmap8.iGc->SetBrushStyle(CGraphicsContext::ENullBrush); sl@0: } sl@0: sl@0: void CTAccelerator::TestScreenRotation() sl@0: { sl@0: // Checks that clearing a rotated screen doesn't blow-up sl@0: iScreenGc->SetOrientation(CFbsBitGc::EGraphicsOrientationRotated90); sl@0: sl@0: iScreenGc->Reset(); sl@0: // fill screen using graphics accelerator sl@0: iScreenGc->SetBrushStyle(CFbsBitGc::ESolidBrush); sl@0: iScreenGc->SetPenStyle(CFbsBitGc::ENullPen); sl@0: iScreenGc->DrawRect(TRect(0,0,KMaxTInt/2,KMaxTInt/2)); sl@0: sl@0: // restore orientation sl@0: iScreenGc->SetOrientation(CFbsBitGc::EGraphicsOrientationNormal); sl@0: iScreenGc->Reset(); sl@0: } sl@0: sl@0: void CTAccelerator::TestUserDisplayMode() sl@0: { sl@0: iScreenGc->Reset(); sl@0: // Change to Gray4 mode sl@0: iScreenGc->SetUserDisplayMode(EGray4); sl@0: // fill screen using graphics accelerator sl@0: iScreenGc->SetBrushStyle(CFbsBitGc::ESolidBrush); sl@0: iScreenGc->SetBrushColor(TRgb(0x44,0x44,0x44)); // should get 'rounded up' to 0x55,0x55,0x55 when drawn sl@0: iScreenGc->SetPenStyle(CFbsBitGc::ENullPen); sl@0: iScreenGc->DrawRect(TRect(0,0,KMaxTInt/2,KMaxTInt/2)); sl@0: sl@0: TRgb pixel; sl@0: iHwScreenDevice->GetPixel(pixel,TPoint(0,0)); sl@0: TRgb checkValue(0x555555,0xff); sl@0: if (iHwScreenDevice->DisplayMode()==EColor64K) sl@0: checkValue=TRgb::Color64K(checkValue.Color64K()); sl@0: TEST(pixel==checkValue); // check pixel color is that of a Gray4 one sl@0: sl@0: // Restore user display mode sl@0: iScreenGc->Reset(); sl@0: } sl@0: sl@0: static void CheckDisplayMode() sl@0: { sl@0: TInt i; sl@0: for(i=0; i