windowing/windowserver/tauto/tcrpanim.h
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/tauto/tcrpanim.h	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,98 @@
+// Copyright (c) 2007-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:
+// TCrpAnim.H Defines class CTCrpAnim
+// 
+//
+
+/**
+ @file
+ @test
+ @internalComponent - Internal Symbian test code
+*/
+
+#ifndef __TCRPANIM_H__
+#define __TCRPANIM_H__
+
+#include "AUTO.H"
+
+_LIT(KTCrpAnimStep,"TCrpAnim");
+
+namespace	//anonymous local scope
+	{
+	class CCrpAnim;
+	typedef  CCrpAnim CAnonAnimWindow;
+	class CActiveWait;
+	typedef  CActiveWait CAnonActiveWait;
+	}
+	
+class CTCrpAnim : public CTWsGraphicsBase
+	{
+public:
+	CTCrpAnim(CTestStep* aStep);
+	~CTCrpAnim();
+	void ConstructL();
+protected:
+	virtual void RunTestCaseL(TInt aCurTestCase);
+private:
+	// TAnimFrameResult is a struct designed to track the various frame results
+	// as the animation progresses. Once the animation is complete, TAnimFrameResult
+	// provides an easy to read indication as to the animation's performance
+	struct TAnimFrameResult
+		{
+		TInt iFrameOK;
+		TInt iFramePartial;
+		TInt iFrameIdentical;
+		TInt iFrameEmpty;
+		TInt iFrameTearing;
+		TInt iFrameSkipped;
+		};
+	void InvalidatePauseAndRedraw(const TRect &aRect,TTimeIntervalMicroSeconds32 aInterval);
+	void RedrawAndCheckWindows(TBool aBlankIt=EFalse);
+	void TestSpriteLoopL(TBool aAnimForeground,TBool aDrawForeground);
+    void CheckAnimProgressedL(CAnonAnimWindow* aAnimWin, TInt aAdditionalFrameCount, TBool aCaptureFrameResult = ETrue);
+	TInt DetermineApproxFrameNum(CFbsBitmap* aBitmap, TBool aCaptureFrameResult);
+	void ResetFrameCounters();
+	TInt LogResults();
+// The tests
+    void	TestSpriteInterruptsForegroundL();
+    void	TestSpriteRestartInterruptsForegroundL();
+	void	BasicCRPDemo();
+	void	TestOverlappingWindowsL();
+	void	TestClippingWindowsL();
+	void	DemoClippingWindowsL();
+	void	TestInvalidateL();
+private:
+	CAnonAnimWindow *iTestWin;
+	CAnonAnimWindow *iOverWin;
+	CAnonAnimWindow *iRedrawWin;
+	CAnonAnimWindow *iBaseWin;
+	TInt iPreviousFrameNum;				// identifies the last successfully drawn frame number calculated
+	TInt iMinimumCalcRedLine;			// the calculated minimum length of the red line in the animation
+	TAnimFrameResult iFrameStatus;		// tracker for the performance of each animated frame
+	CActiveWait* iWaiter;				// active object with configurable timer
+	CWsGraphicBitmapAnimation* iAnim; 	// ptr to server-side animation object
+	CFbsBitmap* iScreenBitmap;			// bitmap holding screen snap-shot
+	HBufC8* iScanlineBuf;				// buffer holding pixel data on a single vertical scan line
+	};
+
+class CTCrpAnimStep : public CTGraphicsStep
+	{
+public:
+	CTCrpAnimStep();
+protected:
+	//from CTGraphicsStep
+	virtual CTGraphicsBase* CreateTestL();
+	};
+
+#endif  //__TCRPANIM_H__