diff -r 000000000000 -r 5d03bc08d59c graphicstest/uibench/src/tredrawing.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/graphicstest/uibench/src/tredrawing.h Tue Feb 02 01:47:50 2010 +0200 @@ -0,0 +1,208 @@ +// Copyright (c) 2006-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 __GRAPHICSPERFORMANCE_REDRAWING_H__ +#define __GRAPHICSPERFORMANCE_REDRAWING_H__ + +#include "te_graphicsperformanceSuiteStepBase.h" +#include +#include + +class CWindow; +class CWsClient; +class CRedrawingTest; + +// List of test cases implemented +// -*-* To add new test case add new enum to bottom of list +enum TRedrawTestCase + { + ETwoWindowBitblt, // Test two windows with alpha bitblited images + ETwoWindowBitbltMasked, // Test two windows with alpha bitblt masked images + ETwoWindowManyBitmapsBitblt, // Test many small bitmaps in window with invaldate small area + }; + +/** +This class is an active object that receives redraw events from the windows server +*/ +class CWsRedrawer : public CActive + { +public: + CWsRedrawer(); + void ConstructL(CWsClient* aClient); + ~CWsRedrawer(); + void IssueRequest(); + + // From CActive + void DoCancel(); + void RunL(); + +private: + CWsClient* iClient; + }; + +/** +Window base abstract class. Derive from this class to introduce new types of windows +*/ +class CWindow : public CBase + { +public: + CWindow(CWsClient* aClient, TRedrawTestCase aTestCase); + void ConstructL (const TRect& aRect, CWindow* aParent=0); + ~CWindow(); + + RWindow& Window(); + void Activate(); + CWindowGc& SystemGc(); + + virtual void Draw(const TRect& aRect) = 0; + +protected: + RWindow iWindow; // window server window + TRect iRect; // rectangle re owning window + CWsClient* iClient; // client including session and group + TRedrawTestCase iTestCase; + }; + +/** +Main window used to draw background +*/ +class CMainWindow : public CWindow + { +public: + CMainWindow (CWsClient* aClient, TRedrawTestCase aTestCase); + ~CMainWindow (); + void ConstructL(const TRect& aRect, CWindow* aParent=0); + void Draw (const TRect& aRect); + +private: + CFbsBitmap* iBitmapImage; + }; + +/** +Test window for use in test cases +*/ +class CTestWindow : public CWindow + { +public: + CTestWindow(CWsClient* aClient, TRedrawTestCase aTestCase); + void ConstructL (const TRect& aRect, CWindow* aParent=0); + ~CTestWindow(); + void Draw(const TRect& aRect); + void AppInitiatedDraw(); + +private: + TBool iBitmapFlag; // Flag to indicate which image to bitblt + CFbsBitmap* iBitmap12bit; + CFbsBitmap* iAlpha8bitMask; + CFbsBitmap* iBitmapImage; + CFbsBitmap* i16x16Icon; + CFbsBitmap* i16x16IconMonochrome; + }; + +/** +The windows server client is an active object to run the redraw test cases +*/ +class CWsClient : public CActive + { +public: + CWsClient(CRedrawingTest& iTestSuite, TRedrawTestCase aTestCase); + void ConstructL(); + ~CWsClient(); + CRedrawingTest& TestSuite() { return iTestSuite; } + RWsSession& WsSession() { return iWs; } + CWindowGc& Gc() { return *iGc; } + RWindowGroup& WindowGroup() { return iGroup; } + +private: + void ConstructMainWindowL(); + void IssueRequest(); + + // From CActive + void DoCancel(); + void RunL(); + + // Nested class to handle test case in separate active object + class CRedrawingTestActive : public CActive + { + public: + CRedrawingTestActive(CWsClient& aClient); + ~CRedrawingTestActive(); + + void ConstructL(); + + private: + // From CActive + void RunL(); + void DoCancel(); + + void RequestComplete(); + + // Test cases + void TestTwoWindowsBitBlt(); + void TestInvalidateSmallArea(); + + private: + CWsClient& iClient; + TBool iFlipWindow; + TInt iIterationCount; + }; + // End nested class CRedrawingTestActive + +private: + RWsSession iWs; + CWindowGc* iGc; + RWindowGroup iGroup; + CWsScreenDevice* iScreen; + TRect iRect; + + CWsRedrawer* iRedrawer; + CRedrawingTestActive* iTestActive; + TRedrawTestCase iTestCase; + CMainWindow* iMainWindow; + CTestWindow* iTestWindow; + CTestWindow* iTestWindow2; + CRedrawingTest& iTestSuite; + }; + +/** +This the the test case derived from CTe_graphicsperformanceSuiteStepBase +It will construct the rest of the framework +*/ +class CRedrawingTest : public CTe_graphicsperformanceSuiteStepBase + { +public: + CRedrawingTest(); + ~CRedrawingTest(); + inline CTProfiler& Profiler() const; +private: + // From CTestStep + virtual TVerdict doTestStepPreambleL(); + virtual TVerdict doTestStepL(); + + void RunRedrawWindowTestCaseL(const TDesC& aTestName, TRedrawTestCase aTestCase); + +private: + CWsClient* iWsClient; + }; + +_LIT(KRedrawingTest,"TRedrawing"); + +#endif //__GRAPHICSPERFORMANCE_REDRAWING_H__