1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/os/graphics/windowing/windowserver/test/tauto/tdirecta.h Fri Jun 15 03:10:57 2012 +0200
1.3 @@ -0,0 +1,522 @@
1.4 +// Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
1.5 +// All rights reserved.
1.6 +// This component and the accompanying materials are made available
1.7 +// under the terms of "Eclipse Public License v1.0"
1.8 +// which accompanies this distribution, and is available
1.9 +// at the URL "http://www.eclipse.org/legal/epl-v10.html".
1.10 +//
1.11 +// Initial Contributors:
1.12 +// Nokia Corporation - initial contribution.
1.13 +//
1.14 +// Contributors:
1.15 +//
1.16 +// Description:
1.17 +//
1.18 +
1.19 +/**
1.20 + @file
1.21 + @test
1.22 + @internalComponent - Internal Symbian test code
1.23 +*/
1.24 +
1.25 +#ifndef __TDIRECTA_H__
1.26 +#define __TDIRECTA_H__
1.27 +
1.28 +#include "AUTO.H"
1.29 +#include <e32msgqueue.h>
1.30 +#include <time.h>
1.31 +#include "TGraphicsHarness.h"
1.32 +
1.33 +//#define LOGGING
1.34 +
1.35 +class CColorAnimation;
1.36 +class CScrollText;
1.37 +class CScrollingTextDrawer;
1.38 +class CDirectScreenAccessOld;
1.39 +
1.40 +
1.41 +struct TDirectThreadParam
1.42 + {
1.43 + TRect iRect;
1.44 + TInt iScreenNumber;
1.45 + TBool iIsInFront;
1.46 + };
1.47 +
1.48 +class MAnimCallBacks
1.49 + {
1.50 +public:
1.51 + virtual void LogLeave(TInt aErr)=0;
1.52 + virtual void Fail()=0;
1.53 + virtual void Finished(TInt aId)=0;
1.54 + virtual TDisplayMode DisplayMode(TInt aId)=0;
1.55 + virtual TRgb BrushColorL(TInt aId,TInt& aColor,TBool& aFinished)=0;
1.56 + virtual TInt TimerInterval(TInt aId)=0;
1.57 + virtual void FailedReStart(TInt aId,TInt aReason)=0;
1.58 + virtual TInt SlowStopping(TInt aId,TInt aCount)=0;
1.59 + virtual void Log(const TText8* aFile, TInt aLine, TInt aSeverity,const TDesC& aString)=0;
1.60 +public:
1.61 + CTBlankWindow* iCallBackWin;
1.62 + };
1.63 +
1.64 +class CTDirect : public CTWsGraphicsBase, public MAbortDirectScreenAccess, public MAnimCallBacks
1.65 + {
1.66 +public:
1.67 + enum
1.68 + {
1.69 + eDirectNumFrames=10
1.70 + };
1.71 + enum
1.72 + {
1.73 + eDirectControlSem=0x01,
1.74 + eDirectWindowSem=0x02,
1.75 + eFontSet=0x04,
1.76 + eMultiAnim=0x08,
1.77 + };
1.78 +public:
1.79 + CTDirect(CTestStep* aStep);
1.80 + ~CTDirect();
1.81 + void ConstructL();
1.82 + TBool DrawFrame();
1.83 + TBool Restart();
1.84 + void ChangeToNextScreenModeL();
1.85 + void ChangeScreenScale();
1.86 + //The Tests
1.87 + TestState AnimateWindowL();
1.88 + TestState AnimationDiesL();
1.89 + TestState PackagingClassL();
1.90 + TestState MultipleL();
1.91 + TestState FailCodesL();
1.92 + TestState ScrolingText1L();
1.93 + TestState RClassL();
1.94 + TestState ScrolingText2L();
1.95 + TestState ScrolingText3L();
1.96 + TestState ScrolingText4L();
1.97 + TestState DefectFix_KAA_5J3BLW_L();
1.98 + TestState KillAnimationL();
1.99 + TestState DSAWithScreenModeOffset1L();
1.100 + TestState DSAWithScreenModeOffset2L();
1.101 + TestState WindowPoistionRelativeToScreenL();
1.102 + TestState ScreenModeScalingTestL();
1.103 + TestState ScreenModeTestForScalingL();
1.104 + TestState MultipleDSAsOnSameWindowL();
1.105 + TestState TemporaryDeadlockL();
1.106 + TestState RegionTrackingOnlyNotificationsL(TUint aId);
1.107 + TestState MixDsaAndRegionTrackingOnlyL(TBool aWhoExitsLast);
1.108 + TestState TryDifferentSupportedModesL();
1.109 +protected:
1.110 +//from CTGraphicsStep
1.111 + virtual void RunTestCaseL(TInt aCurTestCase);
1.112 +private:
1.113 + void ConstrucBlankWindowL();
1.114 + void ScanTypeFacesL();
1.115 + void InitialiseAnimationL();
1.116 + void DestroyAnimation();
1.117 + void ResetScreenSizeMode();
1.118 + void StartDirect();
1.119 + void SignalWindow();
1.120 + void ModeSwitch();
1.121 + void ScrolingTextL(TInt aId,TRect aWinRect,TBool aStartThread,TInt aScreenMode=0);
1.122 + void AnimTestL(TInt aId,TRect aWinRect,CTWinBase& aParent);
1.123 + //Pure virtual function from MAbortDirectScreenAccess
1.124 + void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
1.125 + //Pure virtual functions from MAnimCallBacks
1.126 + void LogLeave(TInt aErr);
1.127 + void Fail();
1.128 + void Finished(TInt aId);
1.129 + void DeleteMoveWindow();
1.130 + void DeleteScroll();
1.131 + TDisplayMode DisplayMode(TInt aId);
1.132 + TRgb BrushColorL(TInt aId,TInt& aColor,TBool& aFinished);
1.133 + TInt TimerInterval(TInt aId);
1.134 + void FailedReStart(TInt aId,TInt aReason);
1.135 + TInt SlowStopping(TInt aId,TInt aCount);
1.136 + void Log(const TText8* aFile, TInt aLine, TInt aSeverity,const TDesC& aString);
1.137 + void SetScreenMode(TInt aMode,TPixelsAndRotation& aPixelsAndRotation);
1.138 + void CreateAnimForScreenModeL(TInt aAnimIndex,CTWinBase& aParent,TRect aRect,TInt aId);
1.139 + void BlankTopClientWindowL(CTBlankWindow& aBlankWindow,TRect aRect);
1.140 + void TestDifferentOriginAndScaleL(TSizeMode &aMode,TPoint aOrigin);
1.141 + void CheckForTemporaryDeadlock();
1.142 +private:
1.143 + CProcess* iProcess;
1.144 + CProcess* iMoveWin;
1.145 + RSemaphore iControlSem;
1.146 + RMsgQueueBase iControlQueue;
1.147 + RSemaphore iWinSem;
1.148 + TRequestStatus iThreadStatus;
1.149 + TUint iFlags;
1.150 + CTBlankWindow* iWin;
1.151 + CTBlankWindow* iWin2;
1.152 + CFbsScreenDevice* iScrDev;
1.153 + CFbsBitGc* iGc;
1.154 + CFont* iFont;
1.155 + CPeriodic* iTimer;
1.156 + CIdle* iRestart;
1.157 + CDirectScreenAccessOld* iDirect;
1.158 + RRegion* iDrawingRegion;
1.159 + TSize iScrSize;
1.160 + TRect iDrawRect;
1.161 + TInt iDrawHeight;
1.162 + TInt iFrameNo;
1.163 + TInt iLastTextWidth;
1.164 + TInt iLastMaxTextWidth;
1.165 + TInt iFrameToSignalAfter;
1.166 + TBool iDelay;
1.167 + TBool iCancelNext;
1.168 + TBool iWindowDead;
1.169 + CColorAnimation* iAnim;
1.170 + CColorAnimation* iAnims[13];
1.171 + TInt iCount;
1.172 + CScrollText* iScroll;
1.173 + TInt iCycles;
1.174 + TScreenModeEnforcement iModeBackup;
1.175 + TThreadStartUp iFirstFunction;
1.176 + TInt iNumThreadHandles;
1.177 + CTBlankWindow* iBlankTopClientWin1;
1.178 + CTBlankWindow* iBlankTopClientWin2;
1.179 + CPeriodic* iChangeScreenModeTimer;
1.180 + TInt iCurrentMode;
1.181 + TInt iNumOfModes;
1.182 + TPoint iCurrentScreenModeOrigin;
1.183 + TSize iCurrentScreenModeScale;
1.184 + TInt iNumAnimation;
1.185 + TSizeMode iModeData;
1.186 + CPeriodic* iScreenModeTimer;
1.187 + TInt iIsScalingSupported;
1.188 + TInt iNumOfCallBack;
1.189 + TBool iTestJustFailed;
1.190 + TBool iTestJustCompleted;
1.191 + TInt iState;
1.192 + TBool iNextFrameFinished;
1.193 + TBool iPackagingFinished;
1.194 + TBool iTimerRunning;
1.195 + };
1.196 +
1.197 +class CDirectScreenAccessOld : public CActive
1.198 + {
1.199 +public:
1.200 + static CDirectScreenAccessOld* NewL(RWsSession& aWs,MAbortDirectScreenAccess& aAborter);
1.201 + ~CDirectScreenAccessOld();
1.202 + TInt Request(RRegion*& aRegion, RWindowBase& aWindow);
1.203 +private:
1.204 + inline CDirectScreenAccessOld(RWsSession& aWs,MAbortDirectScreenAccess& aAborter)
1.205 + : CActive(RDirectScreenAccess::EPriorityVeryHigh), iDirectAccess(aWs), iAborter(aAborter) {}
1.206 + void ConstructL();
1.207 + //Pure virtual functions from CActive
1.208 + void DoCancel();
1.209 + void RunL();
1.210 +private:
1.211 + RDirectScreenAccess iDirectAccess;
1.212 + MAbortDirectScreenAccess& iAborter;
1.213 + TBool iAborting;
1.214 + };
1.215 +
1.216 +class CColorAnimation : public CBase, public MDirectScreenAccess
1.217 + {
1.218 +public:
1.219 + enum
1.220 + {
1.221 + eStopNow=EFalse,
1.222 + eStopDelayed=ETrue,
1.223 + eAbort=2,
1.224 + eAbortAll,
1.225 + };
1.226 +public:
1.227 + static TInt DrawColorL(TAny* aAnimation);
1.228 + static TInt IdlingL(TAny* aAnimation);
1.229 + static CColorAnimation* NewL(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack,CTWinBase& aParent,TRect aExtent,TBool aStart,TBool aRegionTrackingOnly = EFalse);
1.230 + inline CColorAnimation(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack) :iId(aId), iCallBack(aCallBack), iScreenNumber(aScreenNumber) {}
1.231 + ~CColorAnimation();
1.232 + void ConstructL(CTWinBase& aParent,TRect aExtent,TBool aRegionTrackingOnly,TInt aTypeWindow=0,TInt aSingleWinForMultipleDSA=0);
1.233 + void StartL(TBool aChildWindow=EFalse);
1.234 + void StartOrPanic();
1.235 + void Stop();
1.236 + void BringWindowToFront();
1.237 + void ChangeModeL(TDisplayMode aMode);
1.238 + TBool inline IsTimerActive() {return iTimer->IsActive();}
1.239 + inline MAnimCallBacks& CallBack() { return iCallBack; }
1.240 + TPoint AbsoluteWindowPosition(TInt aWindowId=0);
1.241 + inline CDirectScreenAccess* GetDrawer();
1.242 + void FinishTest();
1.243 + TBool TestGcAndScreenDeviceValues();
1.244 + //inline TBool IsReadyToAbort(){return (iDrawer->iStatus!=KRequestPending);}
1.245 +protected:
1.246 + void DrawColorL();
1.247 + void IdlingL();
1.248 + /*pure virtual function from MAbortDirectScreenAccess*/
1.249 + void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
1.250 + /*pure virtual function from MDirectScreenAccess*/
1.251 + void Restart(RDirectScreenAccess::TTerminationReasons aReason);
1.252 +private:
1.253 + TInt iId;
1.254 + CTBlankWindow* iWindow;
1.255 + CTBlankWindow* iWindow2;
1.256 + TSize iWinSize;
1.257 + CDirectScreenAccess* iDrawer;
1.258 + CPeriodic* iTimer;
1.259 + MAnimCallBacks& iCallBack;
1.260 + TInt iColor;
1.261 + TInt iCount;
1.262 + TUint iIdling;
1.263 + TInt iScreenNumber;
1.264 + TInt iSingleWinForMultipleDSA;
1.265 + TBool iRegionTrackingOnly;
1.266 + };
1.267 +
1.268 +class CScrollingTextDrawer : public CBase
1.269 + {
1.270 +public:
1.271 + static CScrollingTextDrawer* NewL(TInt aScreenNumber,CFbsScreenDevice*& aDevice,CFbsBitGc& aGc);
1.272 + ~CScrollingTextDrawer();
1.273 + inline void SetScrollJump(TInt aJump) {iJump=aJump;}
1.274 + void SetBottomOfTest(TInt aBottom);
1.275 + void Scroll();
1.276 +private:
1.277 + inline CScrollingTextDrawer(CFbsScreenDevice*& aDevice,CFbsBitGc& aGc) : iDevice(aDevice), iGc(&aGc) {}
1.278 + void ConstructL(TInt aScreenNumber);
1.279 + void CreateFontL();
1.280 +private:
1.281 + CFbsScreenDevice*& iDevice;
1.282 + CFbsScreenDevice* iFontDevice;
1.283 + CFbsBitGc* iGc;
1.284 + CFont* iFont;
1.285 + TBuf<32> iText;
1.286 + TRect iDrawRect;
1.287 + TInt iDrawHeight;
1.288 + TInt iCharWidth;
1.289 + TInt iFirstChar;
1.290 + TInt iJump;
1.291 +#if defined(LOGGING)
1.292 + RWsSession iWs;
1.293 +#endif
1.294 + };
1.295 +
1.296 +class CScrollText : public CBase, public MDirectScreenAccess
1.297 + {
1.298 +public:
1.299 + static TInt DrawText(TAny* aAnimation);
1.300 + static CScrollText* NewL(TInt aScreenNumber,TInt aId,CTWindowGroup& aParent,TInt aScrollJump,TBool aStart=EFalse);
1.301 + inline CScrollText(TInt aId,TInt aScrollJump,TInt aScreenNumber) :iId(aId), iScrollJump(aScrollJump), iScreenNumber(aScreenNumber) {}
1.302 + ~CScrollText();
1.303 + void ConstructL(CTWindowGroup& aParent);
1.304 + void StartL();
1.305 + void Stop();
1.306 + void ContinueL();
1.307 + inline TBool IsRunning() {return iTimer->IsActive();}
1.308 + inline void SetCountDown(TInt aCountDown) {iAbortCountDown=aCountDown; iCounting=ETrue;}
1.309 + inline void SetBottomOfTest(TInt aBottom) {iTextDraw->SetBottomOfTest(aBottom);}
1.310 +private:
1.311 + void ScrollText();
1.312 + void DoContinueL();
1.313 + /*pure virtual function from MAbortDirectScreenAccess*/
1.314 + void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
1.315 + /*pure virtual function from MDirectScreenAccess*/
1.316 + void Restart(RDirectScreenAccess::TTerminationReasons aReason);
1.317 +private:
1.318 + TInt iId;
1.319 + CTBlankWindow* iWindow;
1.320 + TSize iWinSize;
1.321 + CDirectScreenAccess* iDrawer;
1.322 + CScrollingTextDrawer* iTextDraw;
1.323 + CPeriodic* iTimer;
1.324 + TInt iScrollJump;
1.325 + TBool iCounting;
1.326 + TInt iAbortCountDown;
1.327 + TInt iScreenNumber;
1.328 + };
1.329 +
1.330 +
1.331 +/**
1.332 + A simple class based on CScrollText constructs a blank window that has
1.333 + a blank window child, used for functional coverage testing of CWsClientWindow
1.334 + */
1.335 +class CWindowWithChild : public CBase, public MDirectScreenAccess
1.336 + {
1.337 +public:
1.338 + static CWindowWithChild* NewL(TInt aScreenNumber, CTWindowGroup& aParent,TBool aStart=EFalse);
1.339 + inline CWindowWithChild(TInt aScreenNumber) : iScreenNumber(aScreenNumber) {}
1.340 + ~CWindowWithChild();
1.341 + void ConstructL(CTWindowGroup& aParent);
1.342 + void StartL();
1.343 + void Stop();
1.344 + void ContinueL();
1.345 + inline TBool IsRunning() {return iRunning;}
1.346 + void PerformCoverageCalls();
1.347 + RWindow *ChildWindow() {return iChildWindow->Win();}
1.348 +private:
1.349 + void DoContinueL();
1.350 + /*pure virtual function from MAbortDirectScreenAccess*/
1.351 + void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
1.352 + /*pure virtual function from MDirectScreenAccess*/
1.353 + void Restart(RDirectScreenAccess::TTerminationReasons aReason);
1.354 +private:
1.355 + CTBlankWindow* iWindow;
1.356 + CTWin * iChildWindow;
1.357 + TSize iWinSize;
1.358 + CDirectScreenAccess* iDrawer;
1.359 + TInt iScreenNumber;
1.360 + TBool iRunning;
1.361 + };
1.362 +
1.363 +
1.364 +class CWsBase : public CBase
1.365 + {
1.366 +public:
1.367 +protected:
1.368 + ~CWsBase();
1.369 + void ConstructL(TInt aScreenNumber,TInt aHandle);
1.370 + void CreateBlankWindowL(RBlankWindow& iWin,TInt aHandle);
1.371 +protected:
1.372 + RWsSession iWs;
1.373 + CWsScreenDevice *iScrDev;
1.374 + RWindowGroup iGroup;
1.375 + };
1.376 +
1.377 +class CAnimating : public CWsBase, public MAbortDirectScreenAccess
1.378 + {
1.379 +public:
1.380 + static TInt StartLC(TAny* aScreenNumber);
1.381 + //static CAnimating* NewLC();
1.382 + void DrawFrame();
1.383 + /*pure virtual function from MAbortDirectScreenAccess*/
1.384 + void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
1.385 +private:
1.386 + void ConstructL(TInt aScreenNumber);
1.387 + ~CAnimating();
1.388 + void StartAnimatingL();
1.389 +private:
1.390 + RSemaphore iControlSem;
1.391 + RMsgQueueBase iControlQueue;
1.392 + TBool iSemCreated;
1.393 + RBlankWindow iWindow;
1.394 + CFbsScreenDevice* iScrDev;
1.395 + CFbsBitGc* iGc;
1.396 + TSize iScrSize;
1.397 + CDirectScreenAccessOld* iDirect;
1.398 + RRegion* iDrawingRegion;
1.399 + CPeriodic* iTimer;
1.400 + TInt iColor;
1.401 + };
1.402 +
1.403 +class CMoveWindow : public CWsBase
1.404 + {
1.405 +public:
1.406 + static TInt StartLC(TAny* aScreenNumber);
1.407 + static TInt StateChange(TAny* aMoveWin);
1.408 + static TInt FlipChange(TAny*);
1.409 + //Call Backs
1.410 + void MoveWindow();
1.411 +private:
1.412 + inline static CMoveWindow* Cast(TAny* aMoveWin) {return STATIC_CAST(CMoveWindow*,aMoveWin);}
1.413 + ~CMoveWindow();
1.414 + void ConstructL(TInt aScreenNumber);
1.415 + void CreateTimerL();
1.416 + void StateChange();
1.417 + void ToggleDisplayMode();
1.418 + void FlipChange();
1.419 +private:
1.420 + CPeriodic* iFlipTimer;
1.421 + CPeriodic* iStateTimer;
1.422 + CPeriodic* iTimer;
1.423 + CWsScreenDevice* iDevice;
1.424 + RBlankWindow iWindow;
1.425 + TDisplayMode iDisplayMode;
1.426 + RBackedUpWindow iBackUpWin;
1.427 + CWindowGc* iGc;
1.428 + TRect iBounceArea;
1.429 + TSize iScrSize;
1.430 + TPoint iTl;
1.431 + TSize iSize;
1.432 + TSize iDelta;
1.433 + TInt iStateCountDown;
1.434 + TInt iNumOfModes;
1.435 + TInt iCurrentMode;
1.436 + };
1.437 +
1.438 +class CBugFixColorAnimation : public CColorAnimation
1.439 + {
1.440 +public:
1.441 + static CBugFixColorAnimation* NewL(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack,CTWindowGroup& aParent,TRect aExtent,TBool aStart=EFalse);
1.442 + ~CBugFixColorAnimation();
1.443 + inline void Started() { iSem.Signal(); }
1.444 +private:
1.445 + CBugFixColorAnimation(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack);
1.446 + void ConstructL(CTWindowGroup& aParent,TRect aExtent);
1.447 +private:
1.448 + /*pure virtual function from MAbortDirectScreenAccess*/
1.449 + void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
1.450 + /*pure virtual function from MDirectScreenAccess*/
1.451 + void Restart(RDirectScreenAccess::TTerminationReasons aReason);
1.452 +private:
1.453 + CProcess* iThread;
1.454 + CIdle* iTestFailed;
1.455 + TRect iAnimRect;
1.456 + TDirectThreadParam iThreadParam;
1.457 + RSemaphore iSem;
1.458 + };
1.459 +
1.460 +class CRegionTrackingOnly : public CColorAnimation
1.461 + {
1.462 +public:
1.463 + static CRegionTrackingOnly* NewL(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack,CTWindowGroup& aParent,TRect aExtent,TBool aStart,TBool aOpenWindowInFrontDsa);
1.464 + void ConstructL(CTWindowGroup& aParent,TRect aExtent,TBool aOpenWindowInFrontDsa);
1.465 + ~CRegionTrackingOnly();
1.466 + inline void Started() { iSem.Signal(); }
1.467 +private:
1.468 + CRegionTrackingOnly(TInt aScreenNumber,TInt aId,MAnimCallBacks& aCallBack);
1.469 + /*Overriding of bases class virtual functions*/
1.470 + void AbortNow(RDirectScreenAccess::TTerminationReasons aReason);
1.471 + void Restart(RDirectScreenAccess::TTerminationReasons aReason);
1.472 +private:
1.473 + CProcess* iThread;
1.474 + TRect iAnimRect;
1.475 + TBool iExpectedToAbort;
1.476 + TDirectThreadParam iThreadParam;
1.477 + RSemaphore iSem;
1.478 + };
1.479 +
1.480 +/*CPanicDirect*/
1.481 + class CPanicDirect : public CBase
1.482 + {
1.483 + public:
1.484 + static TInt DoTestOnNewScheduler(TInt aInt, TAny* aPtr);
1.485 + static TInt DoTestOnNewSchedulerL(TInt aInt, TAny* aPtr);
1.486 + private:
1.487 + inline CPanicDirect() {}
1.488 + ~CPanicDirect();
1.489 + void ConstructL(TInt aScreenNumber, TInt aInt);
1.490 + static void DoTestNowL(TInt aInt, TAny* aPtr);
1.491 + void TestL();
1.492 + void DoDrawingL();
1.493 +private:
1.494 + TInt iTestNo;
1.495 + RWsSession iWs;
1.496 + CWsScreenDevice* iWsScrDev;
1.497 + RWindowGroup iGroup;
1.498 + RBlankWindow iBlankWin;
1.499 + RDirectScreenAccess iDirect;
1.500 + TRequestStatus iDirectStatus;
1.501 + RRegion* iRegion;
1.502 + RTimer iTimer;
1.503 + TRequestStatus iTimerStatus;
1.504 + TBool iDrawingAllowed;
1.505 + CFbsScreenDevice* iScreenDevice;
1.506 + CFbsBitGc* iGc;
1.507 + TDisplayMode iDisplayMode;
1.508 + CScrollingTextDrawer* iTextDraw;
1.509 + TInt iCount;
1.510 + TInt iScreenNumber;
1.511 + };
1.512 +
1.513 +class CTDirectStep : public CTGraphicsStep
1.514 + {
1.515 +public:
1.516 + CTDirectStep();
1.517 +protected:
1.518 + //from CTGraphicsStep
1.519 + virtual CTGraphicsBase* CreateTestL();
1.520 + };
1.521 +
1.522 +_LIT(KTDirectStep,"TDirect");
1.523 +
1.524 +
1.525 +#endif