author | Gareth Stockwell <gareth.stockwell@accenture.com> |
Fri, 22 Oct 2010 11:38:29 +0100 | |
branch | bug235_bringup_0 |
changeset 206 | c170e304623f |
parent 0 | 5d03bc08d59c |
permissions | -rw-r--r-- |
// Copyright (c) 2005-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: // /** @file @test @internalComponent - Internal Symbian test code */ #ifndef __TE_GRAPHICSPERFORMANCE_STEP_BASE__ #define __TE_GRAPHICSPERFORMANCE_STEP_BASE__ #include <e32math.h> #include <bitdev.h> #include <test/tprofiler.h> #include <test/testexecutestepbase.h> #include <test/ttmsgraphicsstep.h> #include "te_graphicsperformanceSuiteDefs.h" #include "tdisplaymode_mapping.h" TSize GetPixmapSizeInPixels(); // Define TRgb constants to be used in test cases #define TRANSPARENT_BLACK TRgb(0,0,0,0) #define BLACK_SEMI_TRANSPARENT TRgb(0,0,0,0x40) #define RED_SEMI_TRANSPARENT TRgb(0xff,0,0,0x40) #define GREEN_SEMI_TRANSPARENT TRgb(0,0xff,0,0x40) #define BLUE_SEMI_TRANSPARENT TRgb(0,0,0xff,0x40) #define YELLOW_SEMI_TRANSPARENT TRgb(0xff,0xff,0,0x40) /** Creates a virtual bitmap device if a real screen device of the specified display mode is not supported by the hardware */ class CVirtualBitmapDevice : public CBase { public: virtual ~CVirtualBitmapDevice(); static CVirtualBitmapDevice* NewL(TDisplayMode aDisplayMode, TBool aForceOffscreen); void Update(); CBitmapDevice& BitmapDevice(); CFbsBitmap& Bitmap(); virtual int CreateContext(CGraphicsContext *&aGc); virtual TSize SizeInPixels() const; TInt isScreenDevice(); private: void ConstructL(TDisplayMode aDisplayMode, TBool aForceOffscreen); private: CBitmapDevice* iBitmapDevice; // The virtual or real screen device CFbsBitmap* iBitmap; // Virtual bitmap TBool iIsScreenDevice; // ETrue if the hardware supports the screen device at the specified display mode }; /** Creates a virtual bitmap device if a real screen device of the specified display mode is not supported by the hardware. It is similar to CVirtualBitmapDevice but it uses CFbsDrawDevice directly. */ class CVirtualDrawDevice : public CBase { public: virtual ~CVirtualDrawDevice(); static CVirtualDrawDevice* NewL(TDisplayMode aDisplayMode); CFbsDrawDevice& DrawDevice(); TBool IsDrawDevice(); private: void ConstructL(TDisplayMode aDisplayMode); TInt ByteSize(const TSize& aSize, TDisplayMode aDisplayMode); private: CFbsDrawDevice* iDrawDevice; // The virtual or real screen device TUint8* iDeviceMemory; // Used for virtual draw device TSize iSize; // Used for Clear TBool iIsDrawDevice; // ETrue if the hardware supports the screen device at the specified display mode }; /**************************************************************************** * The reason to have a new step base is that it is very much possible * that the all individual test steps have project related common variables * and members * and this is the place to define these common variable and members. * ****************************************************************************/ class CTe_graphicsperformanceSuiteStepBase : public CTTMSGraphicsStep { public: static const TDesC& ColorModeName(TDisplayMode aMode); virtual ~CTe_graphicsperformanceSuiteStepBase(); CTe_graphicsperformanceSuiteStepBase(); CVirtualBitmapDevice* ScreenDevice(); void SetScreenModeL(TDisplayMode aScreenMode, TBool aForceUseOffscreen=EFalse); CFbsBitmap* CreateSoftwareBitmapLC(const TSize& aSize, TDisplayMode aMode); void CopyBitmapL(CFbsBitmap* aDst, CFbsBitmap* aSrc); CFbsBitmap* CopyIntoNewBitmapL(CFbsBitmap* aSrc, TDisplayMode aDisplayMode); CFbsBitmap* LoadBitmapL(const TDesC& aName, TInt aIndex); static TRgb InterpolateColour(TRgb aLo, TRgb aHi, TInt aX, TInt aN); static void VerticalGradientAlphaL(CFbsBitmap* aBitmap, TRgb aLo, TRgb aHi); void SetDrawDeviceModeL(TDisplayMode aScreenMode); TInt GetDrawDeviceInterfaceL(TInt aInterfaceId, TAny *&aInterface); void ClearDrawDeviceL(TRgb aColor); CFbsBitmap* CreateCheckedBoardL(TDisplayMode aDisplayMode, TSize aSize, TSize aChecksPerAxis) const; virtual CFbsBitmap* GetTargetAsBitmapL(); TInt WriteTargetOutput(TPtrC aName); static void ExtractListL(TPtrC aList, RArray<TPtrC>& aListItems); protected: // From CTestStep virtual TVerdict doTestStepPreambleL(); virtual TVerdict doTestStepPostambleL(); TUint32 TimeMax(); TUint32 TimeMin(); private: //TBool IsFoundScreenMode(TDisplayMode aScreenMode); protected: CVirtualBitmapDevice * iScreenDevice; CFbsBitGc* iGc; CVirtualDrawDevice* iDrawDevice; CTProfiler* iProfiler; private: TSize iScreenSize; TInt iDoProfiling; TInt iCPUSpeed; CActiveScheduler* iScheduler; // Sanity checking flag as read in from the ini file. If ETrue, WriteTargetOutput() will generate // a bitmap of the target, otherwise it will perform no operation. TBool iShowBitmaps; __PROFILERMEMBERS }; // Define 16 RGB colors #define KRgbBlack TRgb(0x000000) #define KRgbDarkGray TRgb(0x555555) #define KRgbDarkRed TRgb(0x000080) #define KRgbDarkGreen TRgb(0x008000) #define KRgbDarkYellow TRgb(0x008080) #define KRgbDarkBlue TRgb(0x800000) #define KRgbDarkMagenta TRgb(0x800080) #define KRgbDarkCyan TRgb(0x808000) #define KRgbRed TRgb(0x0000ff) #define KRgbGreen TRgb(0x00ff00) #define KRgbYellow TRgb(0x00ffff) #define KRgbBlue TRgb(0xff0000) #define KRgbMagenta TRgb(0xff00ff) #define KRgbCyan TRgb(0xffff00) #define KRgbGray TRgb(0xaaaaaa) #define KRgbWhite TRgb(0xffffff) // A 16 RGB color table const TRgb KColor16Table[] = { KRgbWhite, KRgbGray, KRgbCyan, KRgbMagenta, KRgbBlue, KRgbYellow, KRgbGreen, KRgbRed, KRgbDarkCyan, KRgbDarkMagenta, KRgbDarkBlue, KRgbDarkYellow, KRgbDarkGreen, KRgbDarkRed, KRgbDarkGray, KRgbBlack, }; #endif