diff -r bf7481649c98 -r 7f25ef56562d windowing/windowserver/tdynamicres/inc/wsdynamicresbase.h --- a/windowing/windowserver/tdynamicres/inc/wsdynamicresbase.h Fri Jun 11 14:58:47 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,164 +0,0 @@ -// Copyright (c) 2008-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: -// - -#ifndef WSDYNAMICRESBASE_H_ -#define WSDYNAMICRESBASE_H_ - -#include "t_wsdynamicreswinbase.h" -#include -#include "surfaceutility.h" - -//************************************ -// -// Asserting wrapper around dereferencing a pointer that might be NULL. -// I don't want to fill the test code with checks that this pointer is not null before calling surface utility methods.... -// -//************************************ - -template -class SafePointer - { -public: - SafePointer(LoggerOwner* aOwner,Referee* aReferee=NULL): - iOwner(aOwner), iReferee(aReferee) - {} - Referee* operator=(Referee* aReferee) - { - return iReferee=aReferee; - } - Referee*& operator()() - { - return iReferee; - } - Referee* operator->() - { - if (iReferee==NULL) - { - iOwner -> INFO_PRINTF1(_L("Tried to dereference a pointer that is null!")); - User::Panic(_L("null pointer"),__LINE__); - } - return iReferee; - } -private: - LoggerOwner* iOwner; - Referee* iReferee; - }; - -/** - * Base class test harness that provides facilities for windowing and surface testing - * - **/ -class CWsDynamicResBase : public CWsDynamicResWinBase -{ -public: - CWsDynamicResBase(); - virtual ~CWsDynamicResBase(); - - virtual void SetupL(); - virtual void SetupL(TBool aUseOtherScreenForInfo); - virtual void TearDownL(); - virtual void TearDownFromDeleteL(); - /* Note that each derived test class needs to declare a static function to register tests. - * This should match the following prototype: - static CTestSuite* CreateSuiteL( const TDesC& aName ); - */ - - protected: - void UISurfaceL(TSurfaceId& aSurfaceId) const; - void CommonSurfaceWindowSetupL(RWindow& aWindow, TSurfaceId& aSurface, const TRgb& aColor); - void CommonOverlayWindowSetupL(RWindow& aWindow, const TRgb& aColor); - void ResizeTestCommonSetupL(RWindow& aWindow, const TRgb& aColor); - - void MakeTestWindowPairL(TRect aOuterRect,TRgb aOuterColor,TRect aInnerRect,TRgb aInnerColor); - void LargerTestWindow(TInt aPercentOfBack=80); - void DestroyTestWindowPair(TBool aKillTestBack=ETrue,TBool aKillTestFront=ETrue,TBool aKillTestChildren=ETrue); - void MakeTestWindowTripleL(TRect aOuterRect,TRgb aOuterColor,TRect aInnerRect,TRgb aInnerColor,TRect aChildRect,TRgb aChildColor,TRect aSecondChildRect,TRgb aSecondChildColor); - void CreateTestWindowQuadL(TRect aOuterRect,TRgb aOuterColor,TRect aInnerRect,TRgb aInnerColor,TRect aChildRect,TRgb aChildColor,TRect aSecondChildRect,TRgb aSecondChildColor); - void MakeTestWindowTripleL(TRect aOuterRect,TRgb aOuterColor,TRect aInnerRect,TRgb aInnerColor,TRect aChildRect,TRgb aChildColor); - void MakeExtraChildWindowL(const RWindowBase& aFromParent,TRect aChildRect,TRgb aChildColor); - struct LoopingGcPtr; - LoopingGcPtr LoopBeginActivateWithWipe(const TRegion& aRegion,RWindow& aWin,TRgb aColor); - CWindowGc* BeginActivateWithWipe(TBool aInvalidate,RWindow& aWin,TRgb aColor=TRgb(0,0)); - CWindowGc* BeginActivateWithWipe(TBool aInvalidate,TRect aRect,RWindow& aWin,TRgb aColor=TRgb(0,0)); - CWindowGc* BeginActivateWithWipe(const TRegion& aRegion,RWindow& aWin,TRgb aColor); - static CFbsBitmap* RotateBitmapLC(const CFbsBitmap* aSrcBitmap); - - void Pause(TInt aMilliseconds); - TInt RegionDiffForUiLayer(TInt aUiLayer); //returns values from TRegionExtend::TOverlapFlags enumeration - enum FastPathMode - { //Tereat this as bit flags or distinct states as you wish. - EFpExternalOpaque=0, - EFpUiOpaque=1, - EFpUiBlended=2, - EFpUiComplex=3, //If ony this is set then both blended and opaque are full=screen - EFpUiRegions=4, //If this FLAG is set then the regions are less than full-screen. Never occurs on its own - EFpUiRegionsOpaque=5, //If this is set then the regions are less than full-screen - EFpUiRegionsBlended=6, //If this is set then the regions are less than full-screen - EFpUiRegionsComplex=7 //This is the expected setting for windowed cr1108 optimisation. - }; - FastPathMode DeduceUiFastPathMode(); -protected: - SafePointer iUtility; - class TPostTestCleanup - { - protected: - TPostTestCleanup() {} - public: - mutable CSurfaceUtility* iSharedUtility; - mutable TBool iCleanedUpOnExit; - void CreateSharedUtilityL()const ; - }; - static const TPostTestCleanup& PostTestCleanupInstance(); - RWindow iTestBack; - RWindow iTestFront; - RWindow iTestChild; - RWindow iTestSecondChild; - static const TUidPixelFormat KSurfaceFormat = EUidPixelFormatXRGB_8888; - static const TInt KBytesPerPixel = 4; // Four bytes per pixel for the format above. -private: - -}; - -struct CWsDynamicResBase::LoopingGcPtr - { - LoopingGcPtr(const TRegion& aRegion,RWindow& aWin,TRgb aColor,CWindowGc *aGc) - : iRegion(aRegion), iWin(aWin), iColor(aColor), iGc(aGc), iPass(-1) - { operator++(); } - LoopingGcPtr(const LoopingGcPtr& aRhs) - : iRegion(aRhs.iRegion), iWin(aRhs.iWin), - iColor(aRhs.iColor), iGc(aRhs.iGc), - iPass(aRhs.iPass) - {} - void operator ++(); - operator bool() { return iPass>=0?iGc:(CWindowGc *)NULL; } - CWindowGc * operator ->() { return iPass>=0?iGc:(CWindowGc *)NULL; } - const TRegion& iRegion; - RWindow& iWin; - TRgb iColor; - CWindowGc *iGc; - TInt iPass; - }; - -#define LOG_AND_PANIC_IF_NOT_GCE \ - { \ - if (!GCEIsSupported()) \ - { \ - INFO_PRINTF1(_L("Test skipped: GCE support is not loaded")); \ - User::Panic(_L("GCE.Wrong.Mode"),1); \ - return; \ - } \ - } - -#endif /*WSDYNAMICRESBASE_H_*/