windowing/windowserver/tauto/TTransptAnim.h
author Faisal Memon <faisal.memon@nokia.com>
Thu, 06 May 2010 11:31:11 +0100
branchNewGraphicsArchitecture
changeset 47 48b924ae7197
parent 0 5d03bc08d59c
permissions -rw-r--r--
Applied patch 1, to provide a syborg specific minigui oby file. Need to compare this with the "stripped" version currently in the tree. This supplied version applies for Nokia builds, but need to repeat the test for SF builds to see if pruning is needed, or if the file needs to be device-specific.


// 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:
//

/**
 @file
 @test
 @internalComponent - Internal Symbian test code
*/
#ifndef __TTRANSPTANIM__
#define __TTRANSPTANIM__

#include <e32std.h>
#include <e32base.h>
#include <w32std.h>
#include "../tlib/testbase.h"
#include "AUTO.H"
#include "AUTODLL.H"

enum
	{
	GraphicsWServ0483 = 0
	};

class CTTestCase;
class CTransAnimTimer;
class CTTransparentAnim;
class CTTAnimation;
class MAnimationObserver;

class CTTransparentAnim : public CTWsGraphicsBase
	{
public:
	static CTTestCase* CreateTestCaseL(CTTransparentAnim*, TInt);
public:
	CTTransparentAnim(CTestStep*);
	virtual ~CTTransparentAnim();
	void ConstructL();

	void SetCurrent(CTTestCase*);
	CTTestCase* GetCurrent();
protected:
	virtual void RunTestCaseL(TInt);
	
private:
	CTTestCase* iCurrentTestCase;
	};

class CTTransparentAnimStep : public CTGraphicsStep
	{
public:
	CTTransparentAnimStep();

protected:
	virtual CTGraphicsBase* CreateTestL();
	};

class CTransAnimTimer : public CTimer
	{
public:
	CTransAnimTimer();
	~CTransAnimTimer();
	void ConstructL();
	void Start(TTimeIntervalMicroSeconds32 aInterval,TCallBack aCallBack);
private:
	void RunL();
	TCallBack iCallBack;
	};

class CTTAnimation
	{
public:
	CTTAnimation(CTWin*, TInt);
	~CTTAnimation();
	
	void StartL();
	TBool IsComplete();
	void SetCurrentFrameSet(TInt);
	CTWin* GetWindow();
	void Attach(MAnimationObserver*);
private:
	static TInt NextFrame(TAny*);
	void NextFrame();

private:
	CTWin* iWin;
	MAnimationObserver* iObserver;
	RAnimDll iAnimDll;
	RTestAnim iDrawAnim;
	CTransAnimTimer iAnimTimer;
	TInt iFrameCount;
	TInt iCurrentFrameSet;
	TBool iIsComplete;
	TInt iDrawArg;
	};

template <TBool AlphaTransparency = EFalse>
class CTAnimWin : public CTWin
	{
public:
	static CTWin* NewL(TPoint aPosition, TSize aSize)
		{
		CTAnimWin* w = new(ELeave) CTAnimWin();
	
		CleanupStack::PushL(w);
		w->ConstructL(aPosition, aSize);
		CleanupStack::Pop();
		
		return w;	
		}
public:
	virtual ~CTAnimWin(){}

	void Draw(){}
private:
	CTAnimWin(){}

	void ConstructL(TPoint aPoint, TSize aSize)
		{
		TRgb bgColor(150, 150, 150);
		ConstructExtLD(*TheClient->iGroup, aPoint, aSize);
		AssignGC(*TheClient->iGc);
		Win()->SetRequiredDisplayMode(EColor16MA);
		if (AlphaTransparency)
			{
			Win()->SetTransparencyAlphaChannel();
			bgColor.SetAlpha(150);
			}
		Win()->SetBackgroundColor(bgColor);
		Win()->Activate();
		}
	};

//*****************************************************************************
class MAnimationObserver
	{
public:
	virtual void Update(CTTAnimation*) = 0;
	};

class CTTestCase : public MAnimationObserver
	{
public:
	CTTestCase();
	virtual ~CTTestCase() {}

	TBool IsAlreadyRunning();
	TBool IsComplete();
	void StartL();
	TBool HasFailed();
	void SetError(TInt);
	
	// Implemented for MAnimationObserver
	virtual void Update(CTTAnimation*);
	virtual void ConstructL() = 0;
	virtual TPtrC TestCaseName() = 0;

protected:
	virtual void RunTestCaseL() = 0;
	void SetIsCompleted(TBool);
	
private:
	TInt iError;
	TBool iIsComplete;
	TBool iIsRunning;
	};

class CTGraphicsWServ0483 : public CTTestCase
	{
public:
	static CTGraphicsWServ0483* NewL();
	
public:
	virtual ~CTGraphicsWServ0483();
	virtual void RunTestCaseL();
	
	void Update(CTTAnimation*);
	
protected:
	CTGraphicsWServ0483(){}
	virtual void ConstructL();
	virtual TPtrC TestCaseName();	
	
private:
	CTTAnimation* iAnim;
	CTTAnimation* iCheckAnim;
	};

_LIT(KTTransparentAnimStep,"TTransparentAnim");

#endif // __TTRANSPTANIM__