diff -r 000000000000 -r 15bf7259bb7c uiaccelerator_plat/alf_visual_api/tsrc/src/testplatalfvisualblockssymbiansbdrawer.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/uiaccelerator_plat/alf_visual_api/tsrc/src/testplatalfvisualblockssymbiansbdrawer.cpp Tue Feb 02 07:56:43 2010 +0200 @@ -0,0 +1,203 @@ +/* +* Copyright (c) 2002 - 2007 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: test functions for alfsymbiansbdrawer.h +* +*/ + + + +// [INCLUDE FILES] +#include +#include + +#include "testplatalfvisual.h" + + +// CONSTANTS +const TInt KTestDisplayPosX = 20; +const TInt KTestDisplayPosY = 10; +const TInt KTestDisplayWidth = 100; +const TInt KTestDisplayHeight = 200; + +const TUid KTestScreenBufferUid = { 0x28032002 }; + + +// FORWARD DECLARATION +//class CTestScreenBufferObserver for testing CAlfScreenBuffer +class CTestScreenBufferObserver : public CBase, public MAlfScreenBufferObserver + { +public: + /** + * From MAlfScreenBufferObserver + */ + TBool BufferComplete( TUid /*aBufferUid*/, TRect& /*aDisplayRect*/, TRect& /*aDirtyRect*/ ) + { + return ETrue; + } + + /** + * From MAlfScreenBufferObserver + */ + void HandleScreenBufferEvent( TUid /*aBufferUid*/, TInt /*aEvent*/ ) {} + }; + + +// ============================ MEMBER FUNCTIONS =============================== + +// ----------------------------------------------------------------------------- +// CTestPlatAlfVisual::TestBufDrawerDrawBufferL +// ----------------------------------------------------------------------------- +// +TInt CTestPlatAlfVisual::TestBufDrawerDrawBufferL( CStifItemParser& /*aItem*/ ) + { + // Print to UI + _LIT( KTestPlatAlfVisual, "TestPlatAlfVisual" ); + _LIT( KTestBufDrawerDrawBufferL, "TestBufDrawerDrawBufferL" ); + TestModuleIf().Printf( 0, KTestPlatAlfVisual, KTestBufDrawerDrawBufferL ); + // Print to log file + iLog->Log( KTestBufDrawerDrawBufferL ); + + TRect dispRect = TRect( + TPoint( KTestDisplayPosX, KTestDisplayPosY ), + TSize( KTestDisplayWidth, KTestDisplayHeight ) + ); + CAlfDisplay* alfDisp = &( iAlfEnv->NewDisplayL( + dispRect, 0, NULL, + CAlfDisplay::EDisplayOffScreenBuffer, + KTestScreenBufferUid ) ); + STIF_ASSERT_NOT_NULL( alfDisp ); + STIF_ASSERT_EQUALS( EAlfRendererBitgdi, iAlfEnv->Renderer() ); + CTestScreenBufferObserver* observer = new ( ELeave ) CTestScreenBufferObserver; + CleanupStack::PushL( observer ); + CAlfScreenBuffer* scrBuffer = CAlfScreenBuffer::NewL( *iAlfEnv ); + CleanupStack::PushL( scrBuffer ); + scrBuffer->AddObserverL( KTestScreenBufferUid, observer ); + CAlfSymbianBufferDrawer* drawer = + ( CAlfSymbianBufferDrawer* ) scrBuffer->GetDrawingInterface( + KAlfSymbianBufferDrawerUid, KTestScreenBufferUid ); + STIF_ASSERT_NOT_NULL( drawer ); + + // create a bitmap, device and context to be used off-screen + CFbsBitmap* bitmap = new ( ELeave ) CFbsBitmap(); + CleanupStack::PushL( bitmap ); + TRect visibleRect = alfDisp->VisibleArea(); + User::LeaveIfError( bitmap->Create( visibleRect.Size(), EColor64K ) ); + CFbsBitmapDevice* device = CFbsBitmapDevice::NewL( bitmap ); + CleanupStack::PushL( device ); + CFbsBitGc* context = NULL; + User::LeaveIfError( device->CreateContext( context ) ); + CleanupStack::PushL( context ); + + // Draw + drawer->DrawBuffer( *context, TPoint(), visibleRect ); + + // Draw masked + CFbsBitmap* mask = new ( ELeave ) CFbsBitmap(); + CleanupStack::PushL( mask ); + User::LeaveIfError( mask->Create( visibleRect.Size(), EColor256 ) ); + drawer->DrawBufferMasked( *context, mask, TPoint(), visibleRect ); + + CleanupStack::PopAndDestroy( mask ); + CleanupStack::PopAndDestroy( context ); + CleanupStack::PopAndDestroy( device ); + CleanupStack::PopAndDestroy( bitmap ); + CleanupStack::PopAndDestroy( scrBuffer ); + CleanupStack::PopAndDestroy( observer ); + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CTestPlatAlfVisual::TestBufDrawerGetBufferBitmapsL +// ----------------------------------------------------------------------------- +// +TInt CTestPlatAlfVisual::TestBufDrawerGetBufferBitmapsL( CStifItemParser& /*aItem*/ ) + { + // Print to UI + _LIT( KTestPlatAlfVisual, "TestPlatAlfVisual" ); + _LIT( KTestBufDrawerGetBufferBitmapsL, "TestBufDrawerGetBufferBitmapsL" ); + TestModuleIf().Printf( 0, KTestPlatAlfVisual, KTestBufDrawerGetBufferBitmapsL ); + // Print to log file + iLog->Log( KTestBufDrawerGetBufferBitmapsL ); + + TRect dispRect = TRect( + TPoint( KTestDisplayPosX, KTestDisplayPosY ), + TSize( KTestDisplayWidth, KTestDisplayHeight ) + ); + CAlfDisplay* alfDisp = &( iAlfEnv->NewDisplayL( + dispRect, 0, NULL, + CAlfDisplay::EDisplayOffScreenBuffer, + KTestScreenBufferUid ) ); + STIF_ASSERT_NOT_NULL( alfDisp ); + STIF_ASSERT_EQUALS( EAlfRendererBitgdi, iAlfEnv->Renderer() ); + CTestScreenBufferObserver* observer = new ( ELeave ) CTestScreenBufferObserver; + CleanupStack::PushL( observer ); + CAlfScreenBuffer* scrBuffer = CAlfScreenBuffer::NewL( *iAlfEnv ); + CleanupStack::PushL( scrBuffer ); + scrBuffer->AddObserverL( KTestScreenBufferUid, observer ); + CAlfSymbianBufferDrawer* drawer = + ( CAlfSymbianBufferDrawer* ) scrBuffer->GetDrawingInterface( + KAlfSymbianBufferDrawerUid, KTestScreenBufferUid ); + STIF_ASSERT_NOT_NULL( drawer ); + CFbsBitmap* bitmap = NULL; + CFbsBitmap* mask = NULL; + drawer->GetBufferBitmaps( bitmap, mask ); + CleanupStack::PopAndDestroy( scrBuffer ); + CleanupStack::PopAndDestroy( observer ); + + return KErrNone; + } + +// ----------------------------------------------------------------------------- +// CTestPlatAlfVisual::TestBufDrawerReleaseDrawerL +// ----------------------------------------------------------------------------- +// +TInt CTestPlatAlfVisual::TestBufDrawerReleaseDrawerL( CStifItemParser& /*aItem*/ ) + { + // Print to UI + _LIT( KTestPlatAlfVisual, "TestPlatAlfVisual" ); + _LIT( KTestBufDrawerReleaseDrawerL, "TestBufDrawerReleaseDrawerL" ); + TestModuleIf().Printf( 0, KTestPlatAlfVisual, KTestBufDrawerReleaseDrawerL ); + // Print to log file + iLog->Log( KTestBufDrawerReleaseDrawerL ); + + TRect dispRect = TRect( + TPoint( KTestDisplayPosX, KTestDisplayPosY ), + TSize( KTestDisplayWidth, KTestDisplayHeight ) + ); + CAlfDisplay* alfDisp = &( iAlfEnv->NewDisplayL( + dispRect, 0, NULL, + CAlfDisplay::EDisplayOffScreenBuffer, + KTestScreenBufferUid ) ); + STIF_ASSERT_NOT_NULL( alfDisp ); + STIF_ASSERT_EQUALS( EAlfRendererBitgdi, iAlfEnv->Renderer() ); + CTestScreenBufferObserver* observer = new ( ELeave ) CTestScreenBufferObserver; + CleanupStack::PushL( observer ); + CAlfScreenBuffer* scrBuffer = CAlfScreenBuffer::NewL( *iAlfEnv ); + CleanupStack::PushL( scrBuffer ); + scrBuffer->AddObserverL( KTestScreenBufferUid, observer ); + CAlfSymbianBufferDrawer* drawer = + ( CAlfSymbianBufferDrawer* ) scrBuffer->GetDrawingInterface( + KAlfSymbianBufferDrawerUid, KTestScreenBufferUid ); + STIF_ASSERT_NOT_NULL( drawer ); + drawer->ReleaseDrawer(); + drawer = NULL; + CleanupStack::PopAndDestroy( scrBuffer ); + CleanupStack::PopAndDestroy( observer ); + + return KErrNone; + } + + +// [End of File]