--- a/windowing/windowserver/tauto/AUTODLL.CPP Tue Jun 22 15:21:29 2010 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,2858 +0,0 @@
-// Copyright (c) 1996-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:
-// Auto test Animated DLL functions
-//
-//
-
-#include <e32std.h>
-#include <w32std.h>
-#include <w32adll.h>
-#include <bitstd.h>
-#include "AUTODLL.H"
-#include "TAnimDraw.h"
-#include "eventdd.h"
-#include <gdi.h>
-#include <fbs.h>
-
-union TAnimArgUnion
- {
- const TAny* any;
- const TBool* Bool;
- const TInt* Int;
- const TPoint* Point;
- const TSize* Size;
- const TRect* Rect;
- const TSpriteMemberInfo* SpriteMemberInfo;
- const TShadowDrawTest* ShadowDrawTest;
- const TDrawTestScreen* DrawTestScreen;
- const TSyncTests* SyncTests;
- const TTimeChangeTest* TimeChangeTest;
- const TAnimRawEvent* AnimRawEvent;
- const TWindowGroupInfoParms* WindowGroupInfoParms;
- const TSetOrdinalParms* SetOrdinalParms;
- const TFrameData* FrameData;
- const TRawEvent* RawEvent;
- };
-
-class CPanicAnim : public CWindowAnim
- {
- enum TSyncState
- {
- ESyncStateNull,
- ESyncStateStarting,
- ESyncStateCounting,
- ESyncLeave,
- ESyncStateTimeChange1,
- ESyncStateTimeChange2,
- ESyncStateTimeChange3
- };
- enum {ESyncCount=8};
-public:
- ~CPanicAnim();
- virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
- virtual void Animate(TDateTime *aDateTime);
- virtual void Redraw();
- virtual void Command(TInt aOpcode, TAny *aArgs);
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- virtual void FocusChanged(TBool aState);
- //Pure virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- void StartSyncTest(MAnimGeneralFunctions::TAnimSync aSync);
- void StartTimeChangeTest();
- void DoLeaveInActiveCallback();
- static TInt LeaveInActiveCallback(TAny *aThis);
-private:
- TRequestStatus *iStatusPtr;
- TRequestStatus *iStatusPtr2;
- TTime iTime;
- TInt iSyncCount;
- TSyncState iSyncState;
- MAnimGeneralFunctions::TAnimSync iSyncMode;
- TBool iLeaveInRedraw;
- CIdle* iActivePanicIdle;
- };
-
-class CPanicAnim2 : public CWindowAnim
-//
-// Simply panics in the ConstructL()
-//
- {
-public:
- virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
- virtual void Animate(TDateTime *aDateTime);
- virtual void Redraw();
- virtual void Command(TInt aOpcode, TAny *aArgs);
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- virtual void FocusChanged(TBool aState);
- //Pure virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
- };
-
-class CAutoAnim3 : public CWindowAnim
-//
-// test drawing/redrawing
-//
- {
-public:
- virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
- virtual void Animate(TDateTime *aDateTime);
- virtual void Redraw();
- virtual void Command(TInt aOpcode, TAny *aArgs);
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- virtual void FocusChanged(TBool aState);
- void Draw(const TRect &aRect);
- void DrawTestScreenL(const TDrawTestScreen* aParams);
- //Pure virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- TRequestStatus *iStatusPtr;
- CFbsFont *iFont;
- TRect iRect;
- TRect iBaseRect;
- TInt iMode;
- };
-
-class CAutoAnimScrBack : public CWindowAnim
-//
-// test anim drawing behind a backed up window
-//
- {
-public:
- virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
- virtual void Animate(TDateTime *aDateTime);
- virtual void Redraw();
- virtual void Command(TInt aOpcode, TAny *aArgs);
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- virtual void FocusChanged(TBool aState);
- void Draw();
- //Pure virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- TRect iRect;
- TInt iMode;
- };
-
-class CTestSpriteAnim : public CSpriteAnim
- {
-public:
- virtual void ConstructL(TAny *aArgs);
- virtual void Animate(TDateTime *aDateTime);
- virtual void Command(TInt aOpcode, TAny *aArgs);
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- //Pure virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- TBool CheckMember(const TSpriteMemberInfo& aMemInfo);
- void DrawMemberL(TInt aMember);
- void DrawMemberL();
- };
-
-/**
-Used by CAnimTimer below
-*/
-class MAnimTimerObserver
- {
-public:
- virtual void DisplayNextFrameL()=0;
- };
-
-/**
-This class is used by CTestFreeTimerAnim to determine when to swap the current frame with the next one.
-*/
-class CAnimTimer : public CTimer
- {
-public:
- ~CAnimTimer();
- static CAnimTimer* NewL(MAnimTimerObserver& aObserver);
- void RunL();
-private:
- CAnimTimer(MAnimTimerObserver& aObserver);
- void ConstructL();
-private:
- MAnimTimerObserver& iAnim;
- };
-
-class CTestFreeTimerAnim : public CFreeTimerWindowAnim, public MAnimTimerObserver
- {
-public:
- //from CBase
- ~CTestFreeTimerAnim();
- //from CAnim
- void Animate(TDateTime *aDateTime);
- void Command(TInt aOpcode, TAny *aArgs);
- TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- //from CWindowAnim
- void ConstructL(TAny *aArgs, TBool aHasFocus);
- void Redraw();
- void FocusChanged(TBool aState);
- //from MEventHandler
- TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- void DisplayNextFrameL();
-private:
- CAnimTimer* iTimer;
- TInt iFrameTime;
- TRgb iColour;
- TRect iRect;
- };
-
-class CEventTestAnimBase : public CWindowAnim
- {
- enum {EEventBufferSize=40};
-public:
- virtual ~CEventTestAnimBase();
- //Pure virtual functions from CAnim
- virtual void Animate(TDateTime *aDateTime);
- virtual void Command(TInt aOpcode, TAny *aArgs);
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- //Pure virtual functions from CWindowAnim
- virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
- virtual void Redraw();
- virtual void FocusChanged(TBool aState);
- //Pure virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-protected:
- void Fail();
- TBool IsIgnorableEvent(const TRawEvent& aRawEvent) const;
- TBool GetNextExpectedEvent(TAnimRawEvent& aRawEvent);
- TBool CompareEvents(const TRawEvent& aExpectedEvent, const TRawEvent& aActualEvent) const;
- TBool HandleRecursiveEvent(const TRawEvent& aRawEvent);
-
- TInt Error() const;
- TInt EventCount() const;
- void ResetEventCount();
- TInt TotalExpectedEvents() const;
- TInt AddEvent(const TAnimRawEvent* event);
-private:
- virtual TInt AddExpectedEvent(const TAnimRawEvent* event)=0;
-private:
- CCirBuf<TAnimRawEvent> iExpectedEvents;
- TInt iError;
- TInt iEventCount;
- };
-
-class CEventTestAnim : public CEventTestAnimBase
- {
-public:
- ~CEventTestAnim();
- //Pure virtual functions from CWindowAnim overridden in CEventTestAnimBase
- void ConstructL(TAny* aArgs,TBool aHasFocus);
- //Pure virtual functions from CAnim overridden in CEventTestAnimBase
- TInt CommandReplyL(TInt aOpcode,TAny* aArgs);
- void Command(TInt aOpcode,TAny* aArgs);
-private:
- TInt UnloadDeviceDriver();
- //Pure virtual function from CEventTestAnimBase
- TInt AddExpectedEvent(const TAnimRawEvent* event);
-private:
- TBool iDevDriverLoaded;
- REventDD iLdd;
- };
-
-class CEventPostingAnim : public CEventTestAnimBase
- {
-public:
- ~CEventPostingAnim();
- //Virtual functions from CEventTestAnimBase
- virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
- //Virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- //Pure virtual function from CEventTestAnimBase
- virtual TInt AddExpectedEvent(const TAnimRawEvent* event);
- };
-
-class CRemovableAnim : public CEventTestAnimBase
- {
-public:
- ~CRemovableAnim();
- //Virtual functions from CEventTestAnimBase
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- //Pure virtual function from CEventTestAnimBase
- virtual TInt AddExpectedEvent(const TAnimRawEvent* event);
-private:
- TInt iLifetime;
- };
-
-class CTimerTestAnim : public CWindowAnim
- {
-public:
- ~CTimerTestAnim();
- //Pure virtual functions from CAnim
- virtual void Animate(TDateTime *aDateTime);
- virtual void Command(TInt aOpcode, TAny *aArgs);
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- //Pure virtual functions from CWindowAnim
- virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
- virtual void Redraw();
- virtual void FocusChanged(TBool aState);
- //Pure virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- TInt iTimerCount;
- TBool iExpectingTicks;
- TBool iFail;
- };
-
-class CWinFunctionTestAnim : public CWindowAnim
- {
- //enum {EEventBufferSize=40};
-public:
- ~CWinFunctionTestAnim();
- //Pure virtual functions from CAnim
- virtual void Animate(TDateTime *aDateTime);
- virtual void Command(TInt aOpcode, TAny *aArgs);
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- //Pure virtual functions from CWindowAnim
- virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
- virtual void Redraw();
- virtual void FocusChanged(TBool aState);
- //Pure virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- MAnimGeneralFunctionsWindowExtension* iWinFunctions;
- };
-
-class CNotificationTestAnim : public CWindowAnim
- {
-public:
- CNotificationTestAnim();
- ~CNotificationTestAnim();
- //Pure virtual functions from CAnim
- virtual void HandleNotification(const TWsEvent& aEvent);
- virtual void Animate(TDateTime *aDateTime);
- virtual void Command(TInt aOpcode, TAny *aArgs);
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- //Pure virtual functions from CWindowAnim
- virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
- virtual void Redraw();
- virtual void FocusChanged(TBool aState);
- //Pure virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- TFixedArray<TBool,2> iDSA;
- TBool iHeartbeatState;
- TBool iScreenDeviceChanged;
- TTime iLastAnimTime;
- };
-
-class CTransAnim : public CWindowAnim
-//
-// Test drawing/redrawing in Transparent window.
-//
- {
-public:
- //Implementaion for pure virtual functions from CAnim
- void ConstructL(TAny* aArgs, TBool aHasFocus);
- void Animate(TDateTime* aDateTime);
- void Redraw();
- void Command(TInt aOpcode, TAny* aArgs);
- TInt CommandReplyL(TInt aOpcode, TAny* aArgs);
- void FocusChanged(TBool aState);
- TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- CFbsFont* iFont;
- TRect iRect;
- TInt iMode;
- TInt iDraw;
- TRgb iColor;
- TInt iCount;
- };
-
-class CTestHandlerAnim : public CWindowAnim
- {
- public:
- ~CTestHandlerAnim();
- void ConstructL(TAny* aArgs, TBool aHasFocus);
- void Redraw();
- void FocusChanged(TBool aState);
- TInt CommandReplyL(TInt aOpcode, TAny* aArgs);
- void Command(TInt aOpcode, TAny* aArgs);
- void Animate(TDateTime* aDateTime);
- TBool OfferRawEvent(const TRawEvent &aRawEvent);
- private:
- };
-
-class CCoverageAnim : public CWindowAnim
-/**
- This class adds functional coverage to CWsAnimGc.
- The actual work is handled by the 'Draw' method which calls
- each method in turn.
- Mostly copied from CAutoAnimScrBack and CAutoAnim3.
- @SYMTestCaseID
- @SYMPREQ 1841 Add Coverage tests.
- @SYMTestCaseDesc Functional coverage.
- @SYMTestActions Run functional coverage test on CWsAnimGc.
- */
- {
-public:
- ~CCoverageAnim();
- virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
- virtual void Animate(TDateTime *aDateTime);
- virtual void Redraw();
- virtual void Command(TInt aOpcode, TAny *aArgs);
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- virtual void FocusChanged(TBool aState);
- void Draw();
- //Pure virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-private:
- TRect iRect; /** rectangle used for all draw ops that require one */
- CFbsFont* iFont;
- };
-
-class CMultiPointerAnim : public CWindowAnim
- {
- enum {EEventBufferSize=40};
-public:
- virtual ~CMultiPointerAnim();
- //Pure virtual functions from CAnim
- virtual void Animate(TDateTime *aDateTime);
- virtual void Command(TInt aOpcode, TAny *aArgs);
- virtual TInt CommandReplyL(TInt aOpcode, TAny *aArgs);
- //Pure virtual functions from CWindowAnim
- virtual void ConstructL(TAny *aArgs, TBool aHasFocus);
- virtual void Redraw();
- virtual void FocusChanged(TBool aState);
- //Pure virtual function from MEventHandler
- virtual TBool OfferRawEvent(const TRawEvent &aRawEvent);
-protected:
- TInt AddEvent(const TAnimRawEvent* aEvent);
- TBool CompareEvents(const TRawEvent& aExpectedEvent, const TRawEvent& aActualEvent);
-private:
- CCirBuf<TAnimRawEvent> iExpectedEvents;
- TBuf<255> iErrorDes;
- TInt iEventCount;
- TInt iError;
- };
-
-class CTestAnimDll : public CAnimDll
- {
-public:
- CAnim *CreateInstanceL(TInt aType);
-private:
- };
-
-/*#if defined(__WINS__)
-#pragma data_seg(".E32_UID")
-__WINS_UID(0, KWservAnimDllUidValue, 0)
-#pragma data_seg()
-#endif*/
-
-EXPORT_C CAnimDll *CreateCAnimDllL()
- {
- return(new(ELeave) CTestAnimDll());
- }
-
-
-// Panic Tests //
-void CPanicAnim::ConstructL(TAny *, TBool )
- {
- iWindowFunctions->SetRect(TRect(0,0,1,1));
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncSecond);
- if (iFunctions->Sync()!=MAnimGeneralFunctions::ESyncSecond)
- User::Leave(KErrGeneral);
-// Check the anim time is not ahead of and not more than 2 secs behind the system time
- TTime now;
- now.UniversalTime();
- TDateTime dt=now.DateTime();
- TDateTime adt=iFunctions->SystemTime();
- if (adt.Day()!=dt.Day())
- User::Leave(KErrGeneral);
-
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncNone);
- if (iFunctions->Sync()!=MAnimGeneralFunctions::ESyncNone)
- User::Leave(KErrGeneral);
- }
-
-CPanicAnim::~CPanicAnim()
- {
- delete iActivePanicIdle;
- }
-
-void CPanicAnim::Animate(TDateTime *aDateTime)
- {
- switch(iSyncState)
- {
- case ESyncStateNull:
- break;
- case ESyncStateStarting:
- iTime=iFunctions->SystemTime();
- iSyncState=ESyncStateCounting;
- iSyncCount=0;
- break;
- case ESyncStateCounting:
- if (aDateTime)
- {
- TTimeIntervalSeconds interval;
- TTime(*aDateTime).SecondsFrom(iTime, interval);
- iSyncCount=interval.Int();
- }
- else
- iSyncCount++;
- if (iSyncCount==ESyncCount)
- {
- TTimeIntervalMicroSeconds minInterval(0);
- TTimeIntervalMicroSeconds maxInterval(0);
- iSyncState=ESyncStateNull;
- switch(iSyncMode)
- {
- case MAnimGeneralFunctions::ESyncSecond:
- minInterval=iSyncCount*1000000-100000;
- maxInterval=iSyncCount*1000000+100000;
- break;
- default:;
- }
- TTime time(iFunctions->SystemTime());
- TTimeIntervalMicroSeconds interval=time.MicroSecondsFrom(iTime);
- TInt ret=KErrNone;
- if (interval<minInterval || interval>maxInterval)
- ret=KErrGeneral;
- iFunctions->Client().RequestComplete(iStatusPtr,ret);
- }
- break;
- case ESyncLeave:
- User::Leave(KErrGeneral); // Test: Not allowed to leave, will cause a panic
- break;
- case ESyncStateTimeChange1:
- if (!aDateTime)
- {
- iFunctions->Client().RequestComplete(iStatusPtr,KErrNone);
- iSyncState=ESyncStateTimeChange2;
- }
- break;
- case ESyncStateTimeChange2:
- if (!aDateTime)
- {
- iSyncState=ESyncStateTimeChange3;
- break;
- }
- case ESyncStateTimeChange3:
- iFunctions->Client().RequestComplete(iStatusPtr2,aDateTime ? KErrNone : KErrGeneral);
- iSyncState=ESyncStateNull;
- break;
- }
- }
-
-void CPanicAnim::Redraw()
- {
- if (iLeaveInRedraw)
- User::Leave(KErrGeneral); //Test: Not allowed to leave, will cause a panic
- }
-
-void CPanicAnim::Command(TInt aOpcode, TAny *)
- {
- switch(aOpcode)
- {
- case EADllPanicCallPanic:
- iFunctions->Panic();
- break;
- case EADllPanicSetInterval:
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncSecond);
- iFunctions->SetInterval(1);
- break;
- case EADllPanicSetNextInterval:
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncMinute);
- iFunctions->SetNextInterval(1);
- break;
- case EADllPanicDoubleActivateGC:
- iWindowFunctions->ActivateGc();
- iWindowFunctions->ActivateGc();
- break;
- case EADllPanicDrawRectWithNoGc:
- iGc->DrawRect(TRect(0,0,10,10));
- break;
- case EADllPanicDrawTextWithNoFont:
- iWindowFunctions->ActivateGc();
- iGc->DrawText(_L("Panic"),TPoint(20,20));
- break;
- case EADllPanicLeaveInAnimate:
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncFlash);
- iSyncState=ESyncLeave;
- break;
- case EADllPanicLeaveInRedraw:
- iLeaveInRedraw=ETrue;
- iWindowFunctions->Invalidate(TRect(0,0,10,10));
- break;
- case EADllPanicLeave:
- //tests a leaving function in a non-leaving function and should not be moved to CommandReplyL as it leaves
- User::Leave(KErrGeneral); //LeaveScan: intentional test
- break;
- case EADllPanicSetVisWithGcActive:
- iWindowFunctions->ActivateGc();
- iWindowFunctions->SetVisible(EFalse);
- iWindowFunctions->SetVisible(ETrue);
- break;
- case EADllPanicLeaveInActiveCallback:
- iActivePanicIdle=CIdle::NewL(EPriorityHigh);
- iActivePanicIdle->Start(TCallBack(CPanicAnim::LeaveInActiveCallback,this));
- break;
- case EADllPanicSetClippingRectWithNoGc:
- {
- // currently this test fails because when deactivated iWin is also NULL and is deferenced in function
- TRect rect(20,20,20,20);
- iGc->SetClippingRect(rect);
- }
- break;
- case EADllPanicCancelClippingRegionWithNoGc:
- // currently this test fails because when deactivated iWin is NULL and function leaves
- iGc->CancelClippingRegion();
- break;
- case EADllPanicCancelClippingRectWithNoGc:
- // currently this test fails because when deactivated iWin is also NULL and is deferenced in function
- iGc->CancelClippingRect();
- break;
- case EADllPanicSetDrawModeWithNoGc:
- iGc->SetDrawMode(CGraphicsContext::EDrawModeAND);
- break;
- case EADllPanicUseFontWithNoGc:
- {
- // currently this test fails because does not check for NULL font
- CFbsFont* font = NULL;
- iGc->UseFont(font);
- }
- break;
- case EADllPanicDiscardFontWithNoGc:
- iGc->DiscardFont();
- break;
- case EADllPanicSetUnderlineStyleWithNoGc:
- iGc->SetUnderlineStyle(EUnderlineOff);
- break;
- case EADllPanicSetStrikeThoughStyleWithNoGc:
- iGc->SetStrikethroughStyle(EStrikethroughOff);
- break;
- case EADllPanicSetWordJustificationWithNoGc:
- iGc->SetWordJustification(0,0);
- break;
- case EADllPanicSetCharJustificationWithNoGc:
- iGc->SetCharJustification(0,0);
- break;
- case EADllPanicSetPenColorWithNoGc:
- {
- TRgb rgbs;
- iGc->SetPenColor(rgbs);
- }
- break;
- case EADllPanicSetPenStyleWithNoGc:
- iGc->SetPenStyle(CGraphicsContext::ESolidPen);
- break;
- case EADllPanicSetPenSizeWithNoGc:
- {
- const TSize size;
- iGc->SetPenSize(size);
- }
- break;
- case EADllPanicSetBrushColorWithNoGc:
- {
- TRgb rgbs;
- iGc->SetBrushColor(rgbs);
- }
- break;
- case EADllPanicSetBrushStyleWithNoGc:
- iGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
- break;
- case EADllPanicSetBrushOriginWithNoGc:
- {
- TPoint point;
- iGc->SetBrushOrigin(point);
- }
- break;
- case EADllPanicUseBrushPatterWithNoGc:
- {
- CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
- CleanupStack::PushL(bitmap);
- User::LeaveIfError(bitmap->Create(TSize(16,16),EGray4));
- iGc->UseBrushPattern(bitmap);
- CleanupStack::PopAndDestroy(bitmap);
- }
- break;
- case EADllPanicDiscardBrushPatternWithNoGc:
- iGc->DiscardBrushPattern();
- break;
- case EADllPanicSetFadedWithNoGc:
- iGc->SetFaded(EFalse);
- break;
- case EADllPanicSetFadingParametersWithNoGc:
- iGc->SetFadingParameters(1,1);
- break;
- case EADllPanicDrawArcWithNoGc:
- {
- TRect rect;
- iGc->DrawArc(rect,
- TPoint(rect.Center().iX, rect.iTl.iY),
- TPoint(rect.iBr.iX, rect.Center().iY));
- }
- break;
- case EADllPanicDrawPieWithNoGc:
- {
- TRect rect;
- iGc->DrawPie(rect, TPoint(rect.Center().iX, rect.iTl.iY), TPoint(rect.iBr.iX, rect.Center().iY));
- }
- break;
- case EADllPanicDrawLineWithNoGc:
- {
- const TPoint point1;
- const TPoint point2;
- iGc->DrawLine(point1, point2);
- }
- break;
- case EADllPanicDrawLineToWithNoGc:
- {
- const TPoint point;
- iGc->DrawLineTo(point);
- }
- break;
- case EADllPanicDrawLineByWithNoGc:
- {
- const TPoint point;
- iGc->DrawLineBy(point);
- }
- break;
- case EADllPanicDrawEllipseWithNoGc:
- {
- TRect rect(20,20,20,20);
- iGc->DrawEllipse(rect);
- }
- break;
- case EADllPanicDrawRoundedRecWithNoGc:
- {
- TRect rect;
- iGc->DrawRoundRect(rect, TSize(rect.Width()/8, rect.Height()/8));
- }
- break;
- case EADllPanicClearWithRectWithNoGc:
- {
- TRect rect(20,20,20,20);
- iGc->Clear(rect);
- }
- break;
- case EADllPanicClearWithNoGc:
- iGc->Clear();
- break;
- case EADllPanicBitBltWithNoGc:
- {
- CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
- CleanupStack::PushL(bitmap);
- User::LeaveIfError(bitmap->Create(TSize(16,16),EGray4));
- iGc->BitBlt(TPoint(0, 0), bitmap);
- CleanupStack::PopAndDestroy(bitmap);
- }
- break;
- case EADllPanicBitBltWithRectWithNoGc:
- {
- CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
- TRect rect;
- CleanupStack::PushL(bitmap);
- User::LeaveIfError(bitmap->Create(TSize(16,16),EGray4));
- iGc->BitBlt(TPoint(0, 0), bitmap, rect);
- CleanupStack::PopAndDestroy(bitmap);
- }
- break;
- case EADllPanicBitBltMaskedWithNoGc:
- {
- CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
- TRect rect;
- CleanupStack::PushL(bitmap);
- User::LeaveIfError(bitmap->Create(TSize(16,16),EGray4));
- iGc->BitBltMasked(TPoint(0, 0), bitmap, rect, bitmap, EFalse);
- CleanupStack::PopAndDestroy(bitmap);
- }
- break;
- case EADllPanicDrawBitmapMaskedFbsBitmapWithNoGc:
- {
- CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
- TRect rect;
- CleanupStack::PushL(bitmap);
- User::LeaveIfError(bitmap->Create(TSize(16,16),EGray4));
- iGc->DrawBitmapMasked(rect, bitmap, rect, bitmap, ETrue);
- CleanupStack::PopAndDestroy(bitmap);
- }
- break;
- case EADllPanicDrawBitmapMaskedWsBitmapWithNoGc:
- {
- CWsBitmap* bitmap = NULL;
- TRect rect;
- iGc->DrawBitmapMasked(rect, bitmap, rect, bitmap, ETrue);
- }
- break;
- case EADllPanicDrawBitmapPointWithNoGc:
- {
- CWsBitmap* bitmap = NULL;
- TRect rect;
- iGc->DrawBitmap(rect.iTl, bitmap);
- }
- break;
- case EADllPanicDrawBitmapWithNoGc:
- {
- CWsBitmap* bitmap = NULL;
- TRect rect;
- iGc->DrawBitmap(rect, bitmap);
- }
- break;
- case EADllPanicDrawBitmapRectWithNoGc:
- {
- CWsBitmap* bitmap = NULL;
- TRect rect;
- iGc->DrawBitmap(rect, bitmap, TRect(0, 0, 16, 16));
- }
- break;
- case EADllPanicDrawPolyLinePointsWithNoGc:
- {
- TRect rect;
- CArrayFixFlat<TPoint>* polyPoints = new(ELeave) CArrayFixFlat<TPoint>(3); //CArrayFixFlat
- CleanupStack::PushL(polyPoints);
- polyPoints->AppendL(rect.iTl);
- polyPoints->AppendL(rect.Center());
- polyPoints->AppendL(TPoint(rect.iBr.iX, rect.iTl.iY));
- iGc->DrawPolyLine(&polyPoints->At(0), 3);
- CleanupStack::PopAndDestroy(polyPoints);
- }
- break;
- case EADllPanicDrawPolyLineArrayWithNoGc:
- {
- TRect rect;
- CArrayFixFlat<TPoint>* polyPoints = new(ELeave) CArrayFixFlat<TPoint>(3); //CArrayFixFlat
- CleanupStack::PushL(polyPoints);
- polyPoints->AppendL(rect.iTl);
- polyPoints->AppendL(rect.Center());
- polyPoints->AppendL(TPoint(rect.iBr.iX, rect.iTl.iY));
- iGc->DrawPolyLine(polyPoints);
- CleanupStack::PopAndDestroy(polyPoints);
- }
- break;
- case EADllPanicMoveToWithNoGc:
- {
- TPoint point;
- iGc->MoveTo(point);
- }
- break;
- case EADllPanicMoveByWithNoGc:
- {
- TPoint point;
- iGc->MoveBy(point);
- }
- break;
- case EADllPanicPlotWithNoGc:
- {
- TPoint point;
- iGc->Plot(point);
- }
- break;
- case EADllPanicSetOriginWithNoGc:
- {
- TPoint point;
- iGc->SetOrigin(point);
- }
- break;
- case EADllPanicCopyRectWithNoGc:
- {
- TPoint point;
- TRect rect;
- iGc->CopyRect(point, rect);
- }
- break;
- case EADllPanicResetWithNoGc:
- iGc->Reset();
- break;
- case EADllPanicMapColorsWithNoGc:
- {
- TRgb rgbs[2];
- TRect rect;
- iGc->MapColors(rect, rgbs, 1, ETrue);
- }
- break;
- case EADllPanicDrawTextWithRectWithNoFont:
- iWindowFunctions->ActivateGc();
- iGc->DrawText(_L("Panic"),TRect(20,20,20,20),0);
- break;
- case EADllPanicDrawTextVerticalWithNoFont:
- iWindowFunctions->ActivateGc();
- iGc->DrawTextVertical(_L("Panic"),TPoint(20,20), EFalse);
- break;
- case EADllPanicDrawTextVerticalWithRectWithNoFont:
- iWindowFunctions->ActivateGc();
- iGc->DrawTextVertical(_L("Panic"),TRect(20,20,20,20), 0, EFalse);
- break;
- case EADllPanicInvalidFocusScreenTooBig:
- (static_cast<MAnimGeneralFunctionsWindowExtension*>(iFunctions->ExtendedInterface(MAnimGeneralFunctions::EWindowExtensionInterface)))->SetFocusScreen(3000);
- break;
- case EADllPanicInvalidFocusScreenNegative:
- (static_cast<MAnimGeneralFunctionsWindowExtension*>(iFunctions->ExtendedInterface(MAnimGeneralFunctions::EWindowExtensionInterface)))->SetFocusScreen(-1);
- break;
- default:
- iFunctions->Panic();
- }
- }
-
-void CPanicAnim::DoLeaveInActiveCallback()
- {
- iWindowFunctions->ActivateGc();
- User::Leave(KErrUnknown);
- }
-
-TInt CPanicAnim::LeaveInActiveCallback(TAny *aThis)
- {
- CPanicAnim* panicAnim=(CPanicAnim*)aThis;
- panicAnim->DoLeaveInActiveCallback();
- return(KErrNone);
- }
-
-void CPanicAnim::StartSyncTest(MAnimGeneralFunctions::TAnimSync aSync)
- {
- iFunctions->SetSync(aSync);
- iSyncMode=aSync;
- iSyncState=ESyncStateStarting;
- }
-
-void CPanicAnim::StartTimeChangeTest()
- {
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncSecond);
- iSyncMode=MAnimGeneralFunctions::ESyncSecond;
- iSyncState=ESyncStateTimeChange1;
- }
-
-TInt CPanicAnim::CommandReplyL(TInt aOpcode,TAny* aParams)
- {
- TAnimArgUnion pData;
- pData.any=aParams;
- switch(aOpcode)
- {
- case EADllPanicBadFont:
- iFunctions->DuplicateFontL(123);
- break;
- case EADllPanicBadBitmap:
- iFunctions->DuplicateBitmapL(123);
- break;
- case EADllPanicCallPanic:
- iFunctions->Panic();
- break;
- case EADllReadRemoteDescriptor:
- {
- TInt ret=0;
- const RMessagePtr2& message=*iFunctions->Message();
- TInt bufLength = message.GetDesLength(KIpcSlot);
- TUint16* heapCell=static_cast<TUint16*>(User::AllocL(bufLength*2));
- TPtr buf(heapCell,bufLength*2,bufLength*2);
- const TInt theError=message.Read(KIpcSlot,buf);
- if(theError == KErrNone)
- {
- for (TInt index=0;index<bufLength;index++)
- {
- ret+=buf[index];
- }
- }
- User::Free(heapCell);
- return(ret);
- }
- case EADllTestWindowSize:
- return(*pData.Size==iWindowFunctions->WindowSize());
- case EADllSyncTests:
- iStatusPtr=pData.SyncTests->status;
- StartSyncTest(pData.SyncTests->syncMode);
- break;
- case EADllTimeChangedTest:
- iStatusPtr=pData.TimeChangeTest->status;
- iStatusPtr2=pData.TimeChangeTest->status2;
- StartTimeChangeTest();
- break;
- case EADllTestSetVisible:
- if (iWindowFunctions->IsHidden())
- goto setVisFailed;
- iWindowFunctions->SetVisible(EFalse);
- if (!iWindowFunctions->IsHidden())
- goto setVisFailed;
- iWindowFunctions->SetVisible(ETrue);
- if (iWindowFunctions->IsHidden())
-setVisFailed: return(EFalse);
- return(ETrue);
- case EADllPanicSetVisWithGcActiveReply:
- iWindowFunctions->ActivateGc();
- iWindowFunctions->SetVisible(EFalse);
- iWindowFunctions->SetVisible(ETrue);
- break;
- case EADllPanicSetClippingRegionWithNoGc:
- {
- // currently this test fails because when deactivated iWin is also NULL and is deferenced in function
- RRegion region;
- TBool err = iGc->SetClippingRegion(region);
- }
- break;
- case EADllPanicDrawPolygonPointsWithNoGc:
- {
- TRect rect(20,20,20,20);
- CArrayFixFlat<TPoint>* polyPoints = new(ELeave) CArrayFixFlat<TPoint>(3); //CArrayFixFlat
- CleanupStack::PushL(polyPoints);
- polyPoints->AppendL(rect.iTl);
- polyPoints->AppendL(rect.Center());
- polyPoints->AppendL(TPoint(rect.iBr.iX, rect.iTl.iY));
- iGc->DrawPolygon(polyPoints, CGraphicsContext::EWinding);
- CleanupStack::PopAndDestroy(polyPoints);
- }
- break;
- case EADllPanicDrawPolygonArrayWithNoGc:
- {
- TRect rect(20,20,20,20);
- CArrayFixFlat<TPoint>* polyPoints = new(ELeave) CArrayFixFlat<TPoint>(3); //CArrayFixFlat
- CleanupStack::PushL(polyPoints);
- polyPoints->AppendL(rect.iTl);
- polyPoints->AppendL(rect.Center());
- polyPoints->AppendL(TPoint(rect.iBr.iX, rect.iTl.iY));
- iGc->DrawPolygon(&polyPoints->At(0), 3, CGraphicsContext::EAlternate);
- CleanupStack::PopAndDestroy(polyPoints);
- }
- break;
- case EADllPanicAlphaBlendingBitmapsFbsBitmapWithNoGc:
- {
- TRect rect(20,20,20,20);
- CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
- CleanupStack::PushL(bitmap);
- User::LeaveIfError(bitmap->Create(TSize(16,16),EGray4));
- iGc->AlphaBlendBitmaps(TPoint(0, 0), bitmap, rect, bitmap, TPoint(0,0));
- CleanupStack::PopAndDestroy(bitmap);
- }
- break;
- case EADllPanicDevice:
- {
- CGraphicsDevice *device = iGc->Device();
- }
- break;
- default:
- iFunctions->Panic();
- }
- return(KErrNone);
- }
-
-void CPanicAnim::FocusChanged(TBool )
- {
- }
-
-TBool CPanicAnim::OfferRawEvent(const TRawEvent &/*aRawEvent*/)
- {
- return EFalse;
- }
-
-
-// CPanicAnim2 simply panics in the construct //
-void CPanicAnim2::ConstructL(TAny *, TBool )
- {
- iFunctions->Panic();
- }
-
-void CPanicAnim2::Animate(TDateTime *)
- {}
-
-void CPanicAnim2::Redraw()
- {}
-
-void CPanicAnim2::Command(TInt , TAny *)
- {}
-
-TInt CPanicAnim2::CommandReplyL(TInt , TAny *)
- {return(0);}
-
-void CPanicAnim2::FocusChanged(TBool )
- {}
-
-TBool CPanicAnim2::OfferRawEvent(const TRawEvent &/*aRawEvent*/)
- {
- return EFalse;
- }
-
-
-// CAutoAnim3 test drawing/redrawing //
-void CAutoAnim3::ConstructL(TAny *aParam, TBool )
- {
- iRect=*((TRect *)aParam);
- iWindowFunctions->SetRect(iRect);
- iMode=0;
- iWindowFunctions->Invalidate(iRect);
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncSecond);
- }
-
-void CAutoAnim3::Animate(TDateTime *)
- {
- iWindowFunctions->ActivateGc();
- if (iMode==1)
- {
- Draw(iRect);
- if (iRect.Width()>20 && iRect.Height()>20)
- iRect.Shrink(TSize(20,20));
- else
- iRect=iBaseRect;
- Draw(iRect);
- }
- else if (iMode==2)
- {
- Draw(iRect);
- iFunctions->Client().RequestComplete(iStatusPtr,KErrNone);
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncNone);
- }
- else if (iMode==3)
- {
- // flip between two sizes
- if (iRect.iTl.iX == 10)
- iRect.SetRect(40,40,80,80);
- else
- iRect.SetRect(10,10,110,110);
- Draw(iRect);
- }
- }
-
-void CAutoAnim3::Draw(const TRect &aRect)
- {
- switch(iMode)
- {
- case 0:
- iGc->SetDrawMode(CGraphicsContext::EDrawModeXOR);
- iGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
- iGc->SetBrushColor(TRgb::Gray256(85));
- iGc->SetPenColor(TRgb::Gray256(170));
- iGc->DrawEllipse(aRect);
- iGc->SetBrushStyle(CGraphicsContext::ENullBrush);
- break;
- case 1: // Shrinking box
- iGc->SetDrawMode(CGraphicsContext::EDrawModeXOR);
- iGc->SetPenColor(TRgb::Gray256(255));
- iGc->DrawRect(aRect);
- break;
- case 2:
- case 3:
- iGc->SetDrawMode(CGraphicsContext::EDrawModePEN);
- iGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
- iGc->SetBrushColor(TRgb::Gray256(85));
- iGc->SetPenColor(TRgb::Gray256(170));
- iGc->DrawEllipse(aRect);
- iGc->SetBrushStyle(CGraphicsContext::ENullBrush);
- break;
- default:
- break;
- }
- }
-
-void CAutoAnim3::Redraw()
- {
- Draw(iRect);
- }
-
-void CAutoAnim3::Command(TInt aOpcode,TAny* aParam)
- {
- TAnimArgUnion pData;
- pData.any=aParam;
- switch(aOpcode)
- {
- case EADllSetRect:
- iWindowFunctions->ActivateGc();
- Draw(iRect);
- iRect=*pData.Rect;
- iWindowFunctions->SetRect(iRect);
- Draw(iRect);
- { //Do more extensive testing
- TWindowInfo data;
- iWindowFunctions->Parameters(data);
- }
- break;
- case EADllStartAnimate:
- iWindowFunctions->ActivateGc();
- Draw(iRect);
- iMode=1;
- iBaseRect=*pData.Rect;
- iRect=iBaseRect;
- iWindowFunctions->SetRect(iRect);
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncFlash);
- Draw(iRect);
- break;
- case EADllCancelAnimate:
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncNone);
- iWindowFunctions->ActivateGc();
- Draw(iRect);
- iMode=-1;
- break;
- case EADllSetVisible:
- iWindowFunctions->SetVisible(*pData.Bool);
- break;
- case EADllSetShadowDrawMode:
- iMode=2;
- break;
- case EADllDrawTestScreen:
- DrawTestScreenL(pData.DrawTestScreen); //Should move to CommandReplyL as it leaves
- break;
- case EADllSetMode:
- iMode = *pData.Int;
- break;
- }
- }
-
-TInt CAutoAnim3::CommandReplyL(TInt aOpcode, TAny *aParam)
- {
- TAnimArgUnion pData;
- pData.any = aParam;
- TInt ret=0;
- switch(aOpcode)
- {
- case EADllShadowAnimTest:
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncFlash);
- iStatusPtr=((TShadowDrawTest *)aParam)->status;
- break;
- case EADllParameterRectValueTest:
- {
- TWindowInfo wininf;
- iWindowFunctions->Parameters(wininf);
- TRect comp = *(pData.Rect);
- ret=(comp==wininf.iScreenPos);
- }
- break;
- case EADllDoSetSync:
- iFunctions->SetSync(static_cast<MAnimGeneralFunctions::TAnimSync>(*pData.Int));
- break;
- case EADllSetInterval:
- iFunctions->SetInterval(*pData.Int);
- break;
- }
- return(ret);
- }
-
-void CAutoAnim3::FocusChanged(TBool )
- {}
-
-//void CAutoAnim3::DrawTestScreen(TDrawTestScreen *aParams)
-//Function now at bottom of file
-
-TBool CAutoAnim3::OfferRawEvent(const TRawEvent &/*aRawEvent*/)
- {
- return EFalse;
- }
-
-
-// CAutoAnimScrBack test drawing/redrawing //
-void CAutoAnimScrBack::ConstructL(TAny *aParam, TBool )
- {
- iRect=*((TRect *)aParam);
- iWindowFunctions->SetRect(iRect);
- iMode=1;
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncFlash);
- }
-
-void CAutoAnimScrBack::Animate(TDateTime *)
- {
- iWindowFunctions->ActivateGc();
- Draw();
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncNone);
- }
-
-void CAutoAnimScrBack::Draw()
- {
- iGc->SetDrawMode(CGraphicsContext::EDrawModePEN);
- if (iMode==2)
- iGc->SetPenSize(TSize(3,3));
- iGc->SetPenColor(TRgb::Gray4(iMode==1 ? 2 : 3));
- iGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
- iGc->SetBrushColor(TRgb::Gray4(iMode==1 ? 1 : 0));
- iGc->DrawRect(iRect);
- }
-
-void CAutoAnimScrBack::Redraw()
- {
- Draw();
- }
-
-void CAutoAnimScrBack::Command(TInt aOpcode,TAny* aParam)
- {
- TAnimArgUnion pData;
- pData.any=aParam;
- switch(aOpcode)
- {
- case EADllDrawOtherRect:
- {
- TRect oldRect(iRect);
- if (iMode==2)
- oldRect.Grow(1,1); // To allow for 3x3 pen size
- iMode=2;
- iRect=*pData.Rect;
- TRect fullRect(iRect);
- fullRect.Grow(1,1); // To allow for 3x3 pen size
- iWindowFunctions->Invalidate(oldRect);
- iWindowFunctions->SetRect(fullRect);
- iWindowFunctions->Invalidate(fullRect);
- }
-// iFunctions->ActivateGc();
-// Draw();
- break;
- }
- }
-
-TInt CAutoAnimScrBack::CommandReplyL(TInt aOpcode, TAny *)
- {
- switch(aOpcode)
- {
- case EADllIsHidden:
- return iWindowFunctions->IsHidden();
- }
- return(0);
- }
-
-void CAutoAnimScrBack::FocusChanged(TBool )
- {}
-
-TBool CAutoAnimScrBack::OfferRawEvent(const TRawEvent &/*aRawEvent*/)
- {
- return EFalse;
- }
-
-
-// CTestSpriteAnim test sprite access //
-void CTestSpriteAnim::ConstructL(TAny* /*aParam*/)
- {
- iSpriteFunctions->SizeChangedL();
- iSpriteFunctions->Activate(ETrue);
- }
-
-void CTestSpriteAnim::Animate(TDateTime*)
- {
- }
-
-void CTestSpriteAnim::Command(TInt aOpcode,TAny* aParam)
- {
- TAnimArgUnion pData;
- pData.any=aParam;
- switch (aOpcode)
- {
- case EADllSizeChanged:
- iSpriteFunctions->Activate(EFalse);
- iSpriteFunctions->SizeChangedL(); //Should move to CommandReplyL as it leaves
- case EADllActivate:
- iSpriteFunctions->Activate(ETrue);
- break;
- case EADllDeactivate:
- iSpriteFunctions->Activate(EFalse);
- break;
- case EADllSetPos:
- iSpriteFunctions->SetPosition(*pData.Point);
- break;
- case EADllDraw1:
- case EADllDraw2:
- case EADllDraw3:
- DrawMemberL(aOpcode-EADllDraw1); //Should move to CommandReplyL as it leaves
- break;
- case EADllIncDraw:
- DrawMemberL(); //Should move to CommandReplyL as it leaves
- break;
- default:;
- }
- }
-
-TInt CTestSpriteAnim::CommandReplyL(TInt aOpcode,TAny* aParam)
- {
- TAnimArgUnion pData;
- pData.any=aParam;
- switch (aOpcode)
- {
- case EADllCheckMember:
- return CheckMember(*pData.SpriteMemberInfo);
- default:;
- }
- return(KErrNone);
- }
-
-TBool CTestSpriteAnim::OfferRawEvent(const TRawEvent& /*aRawEvent*/)
- {
- return EFalse;
- }
-
-TBool CTestSpriteAnim::CheckMember(const TSpriteMemberInfo& aMemInfo)
- {
- TSpriteMember spriteMember=*iSpriteFunctions->GetSpriteMember(aMemInfo.iMember);
- if (spriteMember.iBitmap->Handle()!=aMemInfo.iBitmapHandle)
- return EFalse;
- if (aMemInfo.iMaskBitmapHandle==0)
- {
- if (spriteMember.iMaskBitmap!=NULL)
- return EFalse;
- }
- else
- {
- if (spriteMember.iMaskBitmap->Handle()!=aMemInfo.iMaskBitmapHandle)
- return EFalse;
- }
- if (spriteMember.iInvertMask!=aMemInfo.iInvertMask)
- return EFalse;
- if (spriteMember.iDrawMode!=aMemInfo.iDrawMode)
- return EFalse;
- if (spriteMember.iOffset!=aMemInfo.iOffset)
- return EFalse;
- if (spriteMember.iInterval!=aMemInfo.iInterval)
- return EFalse;
- return ETrue;
- }
-
-void CTestSpriteAnim::DrawMemberL(TInt aMember)
- {
- CFbsBitmap *bitmap=iSpriteFunctions->GetSpriteMember(aMember)->iBitmap;
- CFbsBitmapDevice *device=CFbsBitmapDevice::NewL(bitmap);
- CleanupStack::PushL(device);
- CFbsBitGc *gc;
- User::LeaveIfError(device->CreateContext(gc));
- CleanupStack::PushL(gc);
- //gc->SetBrushColor(TRgb::Gray4((aMember+1)%3));
- gc->SetBrushStyle(CGraphicsContext::ESolidBrush);
- gc->SetPenSize(TSize());
- TSize size=bitmap->SizeInPixels();
- size.SetSize(size.iWidth/2,size.iHeight/2);
- TPoint point=size.AsPoint();
- gc->SetBrushColor(TRgb::Gray4(0));
- //TRect rect=bitmap->SizeInPixels();
- gc->DrawRect(TRect(TPoint(),size));
- gc->SetBrushColor(TRgb::Gray4(1));
- gc->DrawRect(TRect(TPoint(point.iX,0),size));
- gc->SetBrushColor(TRgb::Gray4(2));
- gc->DrawRect(TRect(TPoint(0,point.iY),size));
- gc->SetBrushColor(TRgb::Gray4(3));
- gc->DrawRect(TRect(point,size));
- iSpriteFunctions->UpdateMember(aMember,TRect(bitmap->SizeInPixels()),ETrue);
- CleanupStack::PopAndDestroy(2);
- }
-
-void CTestSpriteAnim::DrawMemberL()
- {
- CFbsBitmap *bitmap=iSpriteFunctions->GetSpriteMember(0)->iBitmap;
- CFbsBitmapDevice *device=CFbsBitmapDevice::NewL(bitmap);
- CleanupStack::PushL(device);
- CFbsBitGc *gc;
- User::LeaveIfError(device->CreateContext(gc));
- CleanupStack::PushL(gc);
- gc->SetPenSize(TSize(3,3));
- gc->SetPenColor(TRgb::Gray4(1));
- TPoint corner=bitmap->SizeInPixels().AsPoint();
- gc->DrawLine(TPoint(),corner);
- gc->DrawLine(TPoint(0,corner.iY),TPoint(corner.iX,0));
- iSpriteFunctions->UpdateMember(0,TRect(bitmap->SizeInPixels()),EFalse);
- CleanupStack::PopAndDestroy(2);
- }
-
-
-// CTestFreeTimerAnim test drawing off own timer //
-CTestFreeTimerAnim::~CTestFreeTimerAnim()
- {
- iTimer->Cancel();
- delete iTimer;
- }
-
-void CTestFreeTimerAnim::ConstructL(TAny* /*aParam*/, TBool )
- {
- User::LeaveIfNull(iFunctions);
- User::LeaveIfNull(iWindowFunctions);
-
- //Configure free-timer anim (these values should be the default ones)
- iFunctions->SetSync( MAnimGeneralFunctions::ESyncNone );
- iFunctions->SetInterval(0);
-
- iFrameTime = 100000; //default frametime 0.1s
- iTimer = CAnimTimer::NewL(*this);
- iRect = iWindowFunctions->WindowSize();
- }
-
-#define MAX(a,b) (((a)>(b))?(a):(b))
-
-void CTestFreeTimerAnim::Animate(TDateTime*)
- {
- TInt max = MAX(iRect.Width(), iRect.Height());
- if(max <= 0)
- {
- iRect = iWindowFunctions->WindowSize();
- }
- else
- {
- iRect.Shrink(1,1);
- }
-
- //change colour
- switch(iColour.Value())
- {
- case 0x000000: //black
- case 0xffffff: //white
- iColour = KRgbRed;
- break;
- case 0x0000ff: //red
- iColour = KRgbGreen;
- break;
- case 0x00ff00: //green
- iColour = KRgbBlue;
- break;
- case 0xff0000: //blue
- iColour = KRgbBlack;
- break;
- }
- }
-
-void CTestFreeTimerAnim::Redraw()
- {
- //draw something in the animated colour
- iGc->SetBrushColor(iColour);
- iGc->SetBrushStyle(CGraphicsContext::ESolidBrush);
- iGc->SetPenColor(KRgbBlack);
- iGc->DrawRect(iRect);
- }
-
-void CTestFreeTimerAnim::Command(TInt aOpcode, TAny* aArgs)
- {
- switch(aOpcode)
- {
- case EStartAnimation:
- DisplayNextFrameL();
- break;
- case EStopAnimation:
- iTimer->Cancel();
- break;
- case ESetFrameTime:
- ASSERT(aArgs);
- iFrameTime = *reinterpret_cast<TInt*>(aArgs);
- break;
- default:
- ASSERT(0);
- }
- }
-
-TInt CTestFreeTimerAnim::CommandReplyL(TInt aOpcode, TAny* aArgs)
- {
- switch(aOpcode)
- {
- case EStartAnimation:
- DisplayNextFrameL();
- break;
- case EStopAnimation:
- iTimer->Cancel();
- break;
- case ESetFrameTime:
- ASSERT(aArgs);
- iFrameTime = *reinterpret_cast<TInt*>(aArgs);
- break;
- default:
- ASSERT(0);
- }
- return(KErrNone);
- }
-
-void CTestFreeTimerAnim::FocusChanged(TBool /*aState*/)
- {
- }
-
-TBool CTestFreeTimerAnim::OfferRawEvent(const TRawEvent& /*aRawEvent*/)
- {
- return EFalse;
- }
-
-
-void CTestFreeTimerAnim::DisplayNextFrameL()
- {
- //Reschedule timer callback
- iTimer->Cancel();
- iTimer->After(iFrameTime);
-
- Animate(NULL); //wserv don't animate free-timer animations
-
- //Schedule wserv redraw
- MAnimFreeTimerWindowFunctions* windowFunctions = WindowFunctions();
- ASSERT(windowFunctions);
- windowFunctions->ActivateGc();
- windowFunctions->DeactivateGc();
- windowFunctions->Update();
- }
-
-//
-// CAnimTimer class
-//
-
-/**
- Constructs a new bitmap animation timer object,and adds the specified active object to the current active scheduler.
-
-@param aObserver a pointer to MAnimTimerObserver
-*/
-CAnimTimer::CAnimTimer(MAnimTimerObserver& aObserver)
- :CTimer(EPriorityStandard),
- iAnim(aObserver)
- {
- CActiveScheduler::Add(this);
- }
-
-/**
- Frees resources owned by the object prior to deletion.
-*/
-CAnimTimer::~CAnimTimer()
- {
- }
-
-/**
- Creates a new bitmap animation timer object.
-
-@param aObserver A pointer to the MAnimTimerObserver
-@return A pointer to the new bitmap animation timer object.
-*/
-CAnimTimer* CAnimTimer::NewL(MAnimTimerObserver& aObserver)
- {
- CAnimTimer* timer=new(ELeave) CAnimTimer(aObserver);
- CleanupStack::PushL(timer);
- timer->ConstructL();
- CleanupStack::Pop();
- return timer;
- }
-
-/**
- Completes construction of the bitmap animation timer object and
- constructs a new asynchronous timer.
-*/
-void CAnimTimer::ConstructL()
- {
- CTimer::ConstructL();
- }
-
-/**
- Handles an active object's request completion event.
- Invokes the function to draw the next frame
-*/
-void CAnimTimer::RunL()
- {
- iAnim.DisplayNextFrameL();
- }
-
-// CEventTestAnimBase base class for event test anims //
-CEventTestAnimBase::~CEventTestAnimBase()
- {
- iFunctions->GetRawEvents(EFalse);
- }
-
-void CEventTestAnimBase::ConstructL(TAny* /*aParam*/, TBool )
- {
- iExpectedEvents.SetLengthL(EEventBufferSize);
- }
-
-void CEventTestAnimBase::Animate(TDateTime*)
- {
- }
-
-void CEventTestAnimBase::Redraw()
- {
- }
-
-void CEventTestAnimBase::Command(TInt /*aOpcode*/, TAny* /*aParam*/)
- {
- /*switch (aOpcode)
- {
- default:;
- }*/
- }
-
-void CEventTestAnimBase::FocusChanged(TBool /*aState*/)
- {
- }
-
-// Base class common client server interface
-TInt CEventTestAnimBase::CommandReplyL(TInt aOpcode,TAny* aParam)
- {
- TAnimArgUnion pData;
- pData.any=aParam;
- switch (aOpcode)
- {
- case EADllAddExpectedEvent:
- return AddExpectedEvent(pData.AnimRawEvent);
- case EADllNumberOfEventsReceived:
- return iEventCount;
- case EADllErrorCode:
- return iError;
- case EADllReset:
- iExpectedEvents.Reset();
- iError = 0;
- iEventCount = 0;
- return KErrNone;
- default:;
- }
- return(KErrNone);
- }
-
-TBool CEventTestAnimBase::HandleRecursiveEvent(const TRawEvent& aRawEvent)
- {
- if (aRawEvent.ScanCode() == 60)
- {
- TRawEvent rawEvent;
- rawEvent.Set(TRawEvent::EKeyUp, 34);
- iFunctions->PostRawEvent(rawEvent);
- rawEvent.Set(TRawEvent::EKeyUp, 35);
- iFunctions->PostRawEvent(rawEvent);
- return ETrue;
- }
- return EFalse;
- }
-
-TBool CEventTestAnimBase::OfferRawEvent(const TRawEvent& aRawEvent)
- {
- // Do not consume the following types of events
- if (IsIgnorableEvent(aRawEvent))
- {
- return EFalse;
- }
-
- // Increment event count if not in an error state
- if (!Error())
- {
- iEventCount++;
- }
-
- // For anim which generates recursive events
- if (aRawEvent.Type() == TRawEvent::EKeyDown && aRawEvent.ScanCode() == 60)
- {
- return HandleRecursiveEvent(aRawEvent);
- }
-
- TAnimRawEvent event;
-
- if (!GetNextExpectedEvent(event))
- {
- Fail();
- return EFalse;
- }
-
- // Fail if wrong event type
- if (!CompareEvents(event.iRawEvent, aRawEvent))
- {
- Fail();
- }
-
- return event.iEat;
- }
-
-TBool CEventTestAnimBase::GetNextExpectedEvent(TAnimRawEvent& aRawEvent)
- {
- // Get next expected event
- if (iExpectedEvents.Remove(&aRawEvent)<1)
- {
- Fail();
- return EFalse;
- }
- else
- {
- return ETrue;
- }
- }
-
-TBool CEventTestAnimBase::IsIgnorableEvent(const TRawEvent& aRawEvent) const
- {
- TRawEvent::TType aType=aRawEvent.Type();
- TBool result = (aType==TRawEvent::EActive || aType==TRawEvent::EInactive || aType==TRawEvent::ERedraw
- || (iExpectedEvents.Count()==0 && aType==TRawEvent::EPointerMove));
-
- return result;
- }
-
-TBool CEventTestAnimBase::CompareEvents(const TRawEvent& aExpectedEvent, const TRawEvent& aActualEvent) const
- {
- TRawEvent::TType eType=aExpectedEvent.Type();
- TRawEvent::TType aType=aActualEvent.Type();
- if (eType!=aType)
- {
- return EFalse;
- }
- else
- {
- switch (aType)
- {
- case TRawEvent::EUpdateModifiers:
- {
- TInt eMod=aExpectedEvent.Modifiers(),aMod=aActualEvent.Modifiers();
- if (eMod!=aMod)
- {
- return EFalse;
- }
- break;
- }
- case TRawEvent::EKeyDown:
- case TRawEvent::EKeyUp:
- {
- TInt eScan=aExpectedEvent.ScanCode(),aScan=aActualEvent.ScanCode();
- if (eScan!=aScan)
- {
- return EFalse;
- }
- break;
- }
- case TRawEvent::EPointerMove:
- case TRawEvent::EPointerSwitchOn:
- case TRawEvent::EButton1Down:
- case TRawEvent::EButton1Up:
- case TRawEvent::EButton2Down:
- case TRawEvent::EButton2Up:
- case TRawEvent::EButton3Down:
- case TRawEvent::EButton3Up:
- {
- TPoint ePoint=aExpectedEvent.Pos(),aPoint=aActualEvent.Pos();
- if (ePoint!=aPoint)
- {
- return EFalse;
- }
- break;
- }
- default:;
- }
- }
- return ETrue;
- }
-
-void CEventTestAnimBase::Fail()
- {
- if (iError==0)
- {
- iError=iEventCount;
- }
- }
-
-inline TInt CEventTestAnimBase::Error() const
- {
- return iError;
- }
-
-inline TInt CEventTestAnimBase::EventCount() const
- {
- return iEventCount;
- }
-
-inline void CEventTestAnimBase::ResetEventCount()
- {
- iEventCount = 0;
- }
-
-inline TInt CEventTestAnimBase::TotalExpectedEvents() const
- {
- return iExpectedEvents.Count();
- }
-
-inline TInt CEventTestAnimBase::AddEvent(const TAnimRawEvent* aEvent)
- {
- return iExpectedEvents.Add(aEvent);
- }
-
-// CEventTestAnim test drawing off own timer //
-CEventTestAnim::~CEventTestAnim()
- {
- UnloadDeviceDriver();
- }
-
-void CEventTestAnim::ConstructL(TAny* aParam, TBool aBool)
- {
- CEventTestAnimBase::ConstructL(aParam, aBool);
- iFunctions->GetRawEvents(ETrue);
- iDevDriverLoaded=EFalse;
- }
-
-TInt CEventTestAnim::UnloadDeviceDriver()
- {
- TInt err=KErrNone;
- iLdd.Close();
- if (iDevDriverLoaded)
- {
- err=User::FreeLogicalDevice(REventDD::BinaryName());
- if (err==KErrNone)
- iDevDriverLoaded=EFalse;
- }
- return err;
- }
-
-TInt CEventTestAnim::AddExpectedEvent(const TAnimRawEvent* aEvent)
- {
- return (AddEvent(aEvent) ? KErrNone : KErrOverflow);
- }
-
-TInt CEventTestAnim::CommandReplyL(TInt aOpcode,TAny* aParam)
- {
- switch (aOpcode)
- {
- case EADllNoEventsAndReset:
- {
- TInt events=EventCount();
- ResetEventCount();
- return events;
- }
- case EADllLoadDeviceDriver:
- {
- TInt err=User::LoadLogicalDevice(REventDD::BinaryName());
- if (err==KErrNone || err==KErrAlreadyExists)
- {
- TInt err2=iLdd.Open();
- if (err==KErrNone)
- {
- if (err2==KErrNone)
- iDevDriverLoaded=ETrue;
- else //Only unload if we loaded it
- User::FreeLogicalDevice(REventDD::BinaryName());
- }
- err=err2;
- }
- return err;
- }
- case EADllUnloadDeviceDriver:
- return UnloadDeviceDriver();
- case EADllSendEvent:
- {
- TAnimRawEvent event;
- TInt events=*static_cast<TInt*>(aParam);
- TInt err=KErrNone;
- TInt ii;
- for (ii=events;ii>0;--ii)
- {
- event.iRawEvent.Set(ii/2==0 ? TRawEvent::ECaseOpen : TRawEvent::ECaseClose);
- //TInt err=UserSvr::AddEvent(event.iRawEvent);
- //Need to do the above line here, but don't have enough capability
- //so call a device driver to do it instead
- err=iLdd.SendEvent(event.iRawEvent);
- if (err!=KErrNone)
- return err;
- event.iEat=ETrue;
- AddExpectedEvent(&event);
- }
- return KErrNone;
- }
- default:;
- return CEventTestAnimBase::CommandReplyL(aOpcode, aParam);
- }
- }
-
-void CEventTestAnim::Command(TInt aOpcode,TAny* /*aParam*/)
- {
- switch (aOpcode)
- {
- case EADllAfterEvent:
- if (TotalExpectedEvents()>0)
- Fail();
- break;
- default:;
- }
- }
-
-// CEventPostingAnim test posting of anim events //
-CEventPostingAnim::~CEventPostingAnim()
- {
- }
-
-void CEventPostingAnim::ConstructL(TAny* aParam, TBool aBool)
- {
- CEventTestAnimBase::ConstructL(aParam, aBool);
- iFunctions->GetRawEvents(ETrue);
- }
-
-TInt CEventPostingAnim::AddExpectedEvent(const TAnimRawEvent* aEvent)
- {
- return (AddEvent(aEvent) ? KErrNone : KErrOverflow);
- }
-
-TBool CEventPostingAnim::OfferRawEvent(const TRawEvent &aRawEvent)
- {
- // Call PostRawEvent or PostKeyEvent according to type of the event
- TBool ret = CEventTestAnimBase::OfferRawEvent(aRawEvent);
- if (ret)
- {
- if (aRawEvent.Type() == TRawEvent::EKeyDown && aRawEvent.ScanCode() == 45)
- {
- TKeyEvent event;
- event.iCode='J';
- event.iScanCode=0;
- event.iModifiers=0;
-
- // This is to check the normal PostKeyEvent API
- iFunctions->PostKeyEvent(event);
-
- // This is to check the newly added API
- iFunctions->EventExtension()->PostKeyEvent(event, 2);
- }
- else
- {
- iFunctions->PostRawEvent(aRawEvent);
- }
- }
- return ret;
- }
-
-// CTimerTestAnim check that timer events stop //
-CTimerTestAnim::~CTimerTestAnim()
- {
- }
-
-void CTimerTestAnim::ConstructL(TAny* /*aParam*/, TBool )
- {
- iWindowFunctions->SetRect(TRect(0,0,1,1));
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncSecond);
- iExpectingTicks=ETrue;
- iFail=EFalse;
- }
-
-void CTimerTestAnim::Animate(TDateTime*)
- {
- ++iTimerCount;
- if (!iExpectingTicks)
- iFail=iTimerCount;
- }
-
-void CTimerTestAnim::Redraw()
- {
- }
-
-void CTimerTestAnim::Command(TInt aOpcode, TAny* /*aParam*/)
- {
- switch (aOpcode)
- {
- case EADllResetCount:
- iTimerCount=0;
- break;
- case EADllNoTimer:
- iExpectingTicks=EFalse;
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncNone);
- break;
- case EADllTimerStarted:
- iExpectingTicks=ETrue;
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncSecond);
- break;
- default:;
- }
- }
-
-TInt CTimerTestAnim::CommandReplyL(TInt aOpcode, TAny* /*aParam*/)
- {
- switch (aOpcode)
- {
- case EADllCurrentCount:
- return iTimerCount;
- case EADllFailed:
- return iFail;
- default:;
- }
- return(KErrNone);
- }
-
-void CTimerTestAnim::FocusChanged(TBool /*aState*/)
- {
- }
-
-TBool CTimerTestAnim::OfferRawEvent(const TRawEvent& /*aRawEvent*/)
- {
- return EFalse;
- }
-
-
-// CWinFunctionTestAnim test drawing off own timer //
-CWinFunctionTestAnim::~CWinFunctionTestAnim()
- {}
-
-void CWinFunctionTestAnim::ConstructL(TAny* /*aParam*/,TBool)
- {
- iWinFunctions=static_cast<MAnimGeneralFunctionsWindowExtension*>
- (iFunctions->ExtendedInterface(MAnimGeneralFunctions::EWindowExtensionInterface));
- }
-
-void CWinFunctionTestAnim::Animate(TDateTime*)
- {}
-
-void CWinFunctionTestAnim::Redraw()
- {}
-
-void CWinFunctionTestAnim::Command(TInt /*aOpcode*/,TAny* /*aParam*/)
- {
- /*switch (aOpcode)
- {
- default:;
- }*/
- }
-
-TInt CWinFunctionTestAnim::CommandReplyL(TInt aOpcode,TAny* aParam)
- {
- TAnimArgUnion pData;
- pData.any=aParam;
- switch (aOpcode)
- {
- case EADllScreen:
- return iWinFunctions->Screens();
- case EADllFocusScreen:
- return iWinFunctions->FocusScreens();
- case EADllWindowGroups:
- return iWinFunctions->WindowGroups(*pData.Int);
- case EADllWindowGroupInfo:
- {
- const TWindowGroupInfoParms& params=*pData.WindowGroupInfoParms;
- TPckgBuf<MAnimGeneralFunctionsWindowExtension::TWindowGroupInfo> info;
- TBool ret=iWinFunctions->WindowGroupInfo(info(),params.iScreen,params.iOrdinalPosition);
- /*const TInt theError=*/(*iFunctions->Message()).Write(KIpcSlot,info);
- return ret;
- }
- case EADllWindowGroupName:
- {
- const TWindowGroupInfoParms& params=*pData.WindowGroupInfoParms;
- TPtrC name;
- TBool ret=iWinFunctions->WindowGroupName(name,params.iScreen,params.iOrdinalPosition);
- /*const TInt theError=*/(*iFunctions->Message()).Write(KIpcSlot,name);
- return ret;
- }
- case EADllSetOrdinalPosition:
- {
- const TSetOrdinalParms& params=*pData.SetOrdinalParms;
- return iWinFunctions->SetOrdinalPosition(params.iIdentifier,params.iOrdinalPosition,params.iOrdinalPriority);
- }
- case EADllSetFocusScreen:
- {
- const TInt& params=*pData.Int;
- iWinFunctions->SetFocusScreen(params);
- break;
- }
- default:;
- }
- return(KErrNone);
- }
-
-void CWinFunctionTestAnim::FocusChanged(TBool /*aState*/)
- {}
-
-TBool CWinFunctionTestAnim::OfferRawEvent(const TRawEvent& /*aRawEvent*/)
- {
- return EFalse;
- }
-
-
-// CNotificationTestAnim
-CNotificationTestAnim::CNotificationTestAnim() : iHeartbeatState(EFalse) , iScreenDeviceChanged(ETrue)
- {
- }
-
-CNotificationTestAnim::~CNotificationTestAnim()
- {
-// Removed for test case GRAPHICS-WSERV-0139 for DEF12220
-// iFunctions->RegisterForNotifications(EFalse);
- }
-
-void CNotificationTestAnim::ConstructL(TAny* /*aParam*/, TBool )
- {
- iWindowFunctions->SetRect(TRect(0,0,1,1));
- iFunctions->RegisterForNotifications(EDirectScreenAccess|EHeartbeatTimer|EScreenDeviceChange);
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncSecond);
- iLastAnimTime.UniversalTime();
- }
-
-void CNotificationTestAnim::HandleNotification(const TWsEvent& aEvent)
- {
- switch (aEvent.Type())
- {
- case EEventDirectScreenAccessBegin:
- {
- TInt screenNum = *(aEvent.Int());
- iDSA[screenNum] = ETrue;
- }
- break;
- case EEventDirectScreenAccessEnd:
- {
- TInt screenNum = *(aEvent.Int());
- iDSA[screenNum] = EFalse;
- }
- break;
- case EEventHeartbeatTimerStateChange:
- {
- iHeartbeatState=*aEvent.Int();
- }
- break;
- case EEventScreenDeviceChanged:
- {
- iScreenDeviceChanged=!iScreenDeviceChanged;
- }
- break;
- default:
- break;
- }
- }
-
-void CNotificationTestAnim::Animate(TDateTime*)
- {
- iLastAnimTime.UniversalTime();
- }
-
-void CNotificationTestAnim::Redraw()
- {
- }
-
-void CNotificationTestAnim::Command(TInt /*aOpcode*/, TAny* /*aParam*/)
- {
- }
-
-TInt CNotificationTestAnim::CommandReplyL(TInt aOpcode,TAny* aParam)
- {
- TAnimArgUnion pData;
- pData.any=aParam;
- switch (aOpcode)
- {
- case EADllQueryDSA:
- {
- TInt screenNum = *pData.Int;
- return iDSA[screenNum];
- }
- case EADllQueryHeartbeatState:
- {
- return iHeartbeatState;
- }
- case EADllIsAnimating:
- {
- // Check if the anim DLL is currently animating by comparing
- // the current time with the last anim time - if this is greater than a second
- // then we are not animating
- TTime timeNow;
- timeNow.UniversalTime();
- TTimeIntervalMicroSeconds microSecs = timeNow.MicroSecondsFrom(iLastAnimTime);
- if(microSecs > TTimeIntervalMicroSeconds(1200000)) // 1 sec plus 0.2 secs to cope with any latency
- {
- return EFalse;
- }
- else
- {
- return ETrue;
- }
- }
- default:;
- }
- return(KErrNone);
- }
-
-void CNotificationTestAnim::FocusChanged(TBool /*aState*/)
- {
- }
-
-TBool CNotificationTestAnim::OfferRawEvent(const TRawEvent& /*aRawEvent*/)
- {
- return EFalse;
- }
-
-// CTransAnim test drawing//
-void CTransAnim::ConstructL(TAny* aParam, TBool)
- {
- iRect=*static_cast<TRect*>(aParam);//Assigns the animation area
- iWindowFunctions->SetRect(iRect);
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncFlash);
- iFont=NULL;
- iColor=TRgb(0,0,0);
- }
-
-void CTransAnim::Animate(TDateTime*)
- {
- iWindowFunctions->ActivateGc();
- if(iMode==1) //Draw line mode
- {
- DoDraw(iDraw,*iGc,iColor,iRect);
- }
- else if(iMode==2) //Draw text mode
- {
- DoDraw(iDraw,*iGc,iColor,iRect,iFont,iCount);
- }
- }
-
-void CTransAnim::Redraw()
- {
- DoDraw(iDraw,*iGc,iColor,iRect,iFont,iCount);
- }
-
-void CTransAnim::Command(TInt aOpcode,TAny* aParam)
- {
- TAnimArgUnion pData;
- pData.any=aParam;
- switch(aOpcode)
- {
- case EADllDrawNow: //Used to draw a single frame
- iWindowFunctions->ActivateGc();
- iMode=1;
- iDraw=36;
- iColor=TRgb(0,0,0);
- DoDraw(iDraw,*iGc,iColor,iRect);
- break;
- case EADllNextFrame: //Used to draw a continous frame
- iMode=2;
- iColor=pData.FrameData->color;
- iDraw=pData.FrameData->draw;
- iCount=pData.FrameData->text;
- break;
- case EADllStartAnimText: //Used to start text animate
- iWindowFunctions->ActivateGc();
- iMode=2;
- iDraw=37;
- iFont=iFunctions->DuplicateFontL(pData.FrameData->font);
- iColor=pData.FrameData->color;
- iCount=pData.FrameData->text;
- if(pData.FrameData->sync==EStateFlash)
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncFlash);
- else if(pData.FrameData->sync==EStateSecond)
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncSecond);
- DoDraw(iDraw,*iGc,iColor,iRect,iFont,iCount);
- break;
- case EADllEndAnimText: //Used to end text animate
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncNone);
- iWindowFunctions->ActivateGc();
- iCount=0;
- iMode=0;
- iFunctions->CloseFont(iFont);
- iFont=NULL;
- break;
- }
- }
-
-TInt CTransAnim::CommandReplyL(TInt /*aOpcode*/, TAny* /*aParam*/)
- {
- return(0);
- }
-
-void CTransAnim::FocusChanged(TBool /*aState*/)
- {}
-
-TBool CTransAnim::OfferRawEvent(const TRawEvent& /*aRawEvent*/)
- {
- return EFalse;
- }
-
-// an anim dll that doesn't remove itself from the event handler list
-CTestHandlerAnim::~CTestHandlerAnim()
- {
- }
-
-void CTestHandlerAnim::ConstructL(TAny* /*aArgs*/, TBool /*aHasFocus*/)
- {
- iFunctions->GetRawEvents(ETrue);
- }
-
-void CTestHandlerAnim::Redraw()
- {
- }
-
-void CTestHandlerAnim::FocusChanged(TBool /*aState*/)
- {
- }
-
-TInt CTestHandlerAnim::CommandReplyL(TInt /*aOpcode*/, TAny* /*aArgs*/)
- {
- return KErrNone;
- }
-
-void CTestHandlerAnim::Command(TInt /*aOpcode*/, TAny* /*aArgs*/)
- {
- }
-
-void CTestHandlerAnim::Animate(TDateTime* /*aDateTime*/)
- {
- }
-
-TBool CTestHandlerAnim::OfferRawEvent(const TRawEvent &/*aRawEvent*/)
- {
- return EFalse;
- }
-
-// CRemovableAnim Test removal of anim during event handling //
-CRemovableAnim::~CRemovableAnim()
- {
- }
-
-TInt CRemovableAnim::AddExpectedEvent(const TAnimRawEvent* aEvent)
- {
- if (TotalExpectedEvents() + EventCount() < iLifetime)
- {
- return (AddEvent(aEvent) ? KErrNone : KErrOverflow);
- }
- else
- {
- return KErrNone;
- }
- }
-
-TInt CRemovableAnim::CommandReplyL(TInt aOpcode,TAny* aParam)
- {
- TAnimArgUnion pData;
- pData.any=aParam;
- switch (aOpcode)
- {
- case EADllSetEventHandlerLifetime:
- iLifetime = *pData.Int;
- return iLifetime;
- case EADllEventHandlerLifetime:
- return iLifetime;
- case EADllAddToEventHandlers:
- iFunctions->GetRawEvents(ETrue);
- return KErrNone;
- case EADllRemoveFromEventHandlers:
- iFunctions->GetRawEvents(EFalse);
- return KErrNone;
- case EADllTestPassed:
- {
- // If any unexpected events are received, then Error() > 0
- // If fewer than the number of expected events are received, then TotalExpectedEvents() > 0
- TBool passed = (Error() == 0) && (TotalExpectedEvents() == 0);
- return passed;
- }
- default:
- return CEventTestAnimBase::CommandReplyL(aOpcode, aParam);
- }
- }
-
-
-TBool CRemovableAnim::OfferRawEvent(const TRawEvent& aRawEvent)
- {
- TBool eat = CEventTestAnimBase::OfferRawEvent(aRawEvent);
-
- // Remove anim from event handlers if lifetime has been exceeded
- if (EventCount() >= iLifetime)
- {
- iFunctions->GetRawEvents(EFalse);
- }
- return eat;
- }
-
-// CMultiPointerAnim for Testing multipointerevents for anims //
-CMultiPointerAnim::~CMultiPointerAnim()
- {
- iFunctions->GetRawEvents(EFalse);
- }
-
-// Important thing here is to call GetRawEvents() which Switches animation raw event handling on
-void CMultiPointerAnim::ConstructL(TAny */*aArgs*/, TBool /*aHasFocus*/)
- {
- iExpectedEvents.SetLengthL(EEventBufferSize);
- iFunctions->GetRawEvents(ETrue);
- }
-
-void CMultiPointerAnim::Animate(TDateTime */*aDateTime*/)
- {
- }
-
-void CMultiPointerAnim::Command(TInt /*aOpcode*/, TAny */*aArgs*/)
- {
- }
-
-TInt CMultiPointerAnim::CommandReplyL(TInt aOpcode, TAny *aArgs)
- {
- TAnimArgUnion pData;
- pData.any=aArgs;
- switch (aOpcode)
- {
- case EADllAddExpectedMultiPtrEvent:
- return AddEvent(pData.AnimRawEvent);
- case EADllMultiPtrEventError:
- return iError;
- case EADllMultiPtrEventErrorDesc:
- if (iError != KErrNone)
- {
- // returns the error description which gets displayed in logs if test failed
- const RMessagePtr2& message=*iFunctions->Message();
- const TInt error=message.Write(KIpcSlot, iErrorDes);
- if (error != KErrNone)
- {
- return error;
- }
- }
- break;
- case EADllMultiPtrEventReset:
- iExpectedEvents.Reset();
- iError = 0;
- iEventCount = 0;
- break;
- default:;
- }
- return(KErrNone);
- }
-
-void CMultiPointerAnim::Redraw()
- {
- }
-
-void CMultiPointerAnim::FocusChanged(TBool /*aState*/)
- {
- }
-
-TBool CMultiPointerAnim::OfferRawEvent(const TRawEvent &aRawEvent)
- {
- // Ignore following raw events
- TRawEvent::TType aType=aRawEvent.Type();
- if (aType==TRawEvent::EActive || aType==TRawEvent::EInactive || aType==TRawEvent::ERedraw
- || aType==TRawEvent::EPointerSwitchOn || aType==TRawEvent::EUpdateModifiers)
- {
- return EFalse;
- }
-
- // If it has already failed then do not test other events becasue the error value
- // and its descriptor will be over written
- if (iError)
- {
- return EFalse;;
- }
-
- TAnimRawEvent expectedEvent;
- if (iExpectedEvents.Remove(&expectedEvent)<1)
- {
- return EFalse;
- }
-
- // Increment event count
- iEventCount++;
-
- // Call compare events function passing in both the events
- if (!CompareEvents(expectedEvent.iRawEvent, aRawEvent))
- {
- iError = iEventCount;
- }
-
- return expectedEvent.iEat;
- }
-
-TInt CMultiPointerAnim::AddEvent(const TAnimRawEvent* aEvent)
- {
- return iExpectedEvents.Add(aEvent);
- }
-
-TBool CMultiPointerAnim::CompareEvents(const TRawEvent& aExpectedEvent, const TRawEvent& aActualEvent)
- {
- // Check pointer type
- if (aExpectedEvent.Type() != aActualEvent.Type())
- {
- _LIT(KEventType, "Actual Event type = %d Expected Event Type = %d ");
- iErrorDes.Format(KEventType, aActualEvent.Type(), aExpectedEvent.Type());
- return EFalse;
- }
-
- // Here for EOutOfRange we cannot query Pos or Pos3D...
- if (aExpectedEvent.Type() != TRawEvent::EPointer3DOutOfRange)
- {
- // Check 3d position
- TPoint3D expected3DPos = aExpectedEvent.Pos3D();
- TPoint3D actual3DPos = aActualEvent.Pos3D();
- if (expected3DPos.iX != actual3DPos.iX)
- {
- _LIT(KXPosition, "Actual X coordinate = %d Expected X coordinate = %d ");
- iErrorDes.Format(KXPosition, actual3DPos.iX, expected3DPos.iX);
- return EFalse;
- }
- if (expected3DPos.iY != actual3DPos.iY)
- {
- _LIT(KYPosition, "Actual Y coordinate = %d Expected Y coordinate = %d ");
- iErrorDes.Format(KYPosition, actual3DPos.iY, expected3DPos.iY);
- return EFalse;
- }
- if (expected3DPos.iZ != actual3DPos.iZ)
- {
- _LIT(KZPosition, "Actual Z coordinate = %d Expected Z coordinate = %d ");
- iErrorDes.Format(KZPosition, actual3DPos.iZ, expected3DPos.iZ);
- return EFalse;
- }
- }
-
- // Check pointer number
- if (aExpectedEvent.PointerNumber() != aActualEvent.PointerNumber())
- {
- _LIT(KPointerNumber, "Actual Pointer number = %d Expected Pointer number = %d ");
- iErrorDes.Copy(KPointerNumber);
- iErrorDes.Format(KPointerNumber, aActualEvent.PointerNumber(), aExpectedEvent.PointerNumber());
- return EFalse;
- }
- return ETrue;
- }
-
-// CCoverageAnim test drawing/redrawing //
-CCoverageAnim::~CCoverageAnim()
- {
- if(iFont && iFunctions)
- iFunctions->CloseFont(iFont);
- }
-
-/**
- Initializes members.
- */
-void CCoverageAnim::ConstructL(TAny *aParam, TBool )
- {
- iRect=*static_cast<TRect*>(aParam);
- iWindowFunctions->SetRect(iRect);
- iWindowFunctions->Invalidate(iRect);
-
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncDay);
- if (iFunctions->Sync() != MAnimGeneralFunctions::ESyncDay)
- User::Leave(KErrGeneral);
-
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncMinute);
- if (iFunctions->Sync() != MAnimGeneralFunctions::ESyncMinute)
- User::Leave(KErrGeneral);
-
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncSecond);
- if (iFunctions->Sync() != MAnimGeneralFunctions::ESyncSecond)
- User::Leave(KErrGeneral);
-
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncFlash);
- if (iFunctions->Sync() != MAnimGeneralFunctions::ESyncFlash)
- User::Leave(KErrGeneral);
-
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncNone);
- if (iFunctions->Sync() != MAnimGeneralFunctions::ESyncNone)
- User::Leave(KErrGeneral);
-
- iFunctions->SetInterval(1);
- iFunctions->SetInterval(0);
- iFunctions->SetNextInterval(0);
-
- User::LeaveIfNull(iFunctions->ExtendedInterface(MAnimGeneralFunctions::ENumberOfExtendedInterfaces));
- User::LeaveIfNull(iFunctions->ExtendedInterface(MAnimGeneralFunctions::EWindowExtensionInterface));
- User::LeaveIfNull(iFunctions->ExtendedInterface(MAnimGeneralFunctions::EEventExtentionInterface));
- User::LeaveIfError(iFunctions->ExtendedInterface(MAnimGeneralFunctions::EInterfaceCount) != NULL);
-
- #if !defined(SYMBIAN_GRAPHICS_GCE)
- // Deprecated in NGA but needs to be tested in NONNGA
- User::LeaveIfNull((TAny*)iFunctions->ScreenDevice());
- #endif
-
- iFunctions->Client();
- }
-
-/**
- Copied from CAutoAnimScrBack.
- */
-void CCoverageAnim::Animate(TDateTime *)
- {
- iWindowFunctions->ActivateGc();
- Draw();
- }
-
-/**
- All methods of the graphic-context are executed one by one.
- */
-void CCoverageAnim::Draw()
- {
- iGc->SetClippingRect(iRect);
- iGc->Clear();
- iGc->Clear(iRect);
-
- iGc->SetDrawMode(CGraphicsContext::EDrawModeAND);
- iGc->SetBrushStyle(CGraphicsContext::ENullBrush);
- iGc->SetBrushColor(TRgb::Gray256(85));
- iGc->SetBrushOrigin(TPoint(0,0));
- iGc->SetPenColor(TRgb::Gray256(170));
-
- //primitive method calls
- iGc->SetFaded(ETrue);
- iGc->SetFadingParameters(1, 1);
-
- iGc->SetPenStyle(CGraphicsContext::ESolidPen);
- iGc->SetStrikethroughStyle(EStrikethroughOff);
- iGc->SetUnderlineStyle(EUnderlineOff);
- iGc->SetWordJustification(2, 1);
-
- if(iFont)
- iGc->UseFont(iFont);
-
- iGc->DrawArc(iRect,
- TPoint(iRect.Center().iX, iRect.iTl.iY),
- TPoint(iRect.iBr.iX, iRect.Center().iY));
- iGc->DrawLine(iRect.iTl,iRect.Center());
- iGc->DrawLineTo(TPoint(iRect.iBr.iX, iRect.iTl.iY));
-
- iGc->DrawLineBy(TPoint(iRect.iTl.iX, iRect.iBr.iY));
- iGc->MoveBy(iRect.iTl + TPoint(1,1));
- iGc->MoveTo(iRect.iTl + TPoint(0,0));
- iGc->SetPenSize(TSize(10,10));
- iGc->Plot(iRect.iTl + TPoint(2,2));
- iGc->SetPenSize(TSize(1,1));
-
- CArrayFixFlat<TPoint>* polyPoints = new(ELeave) CArrayFixFlat<TPoint>(3); //CArrayFixFlat
- CleanupStack::PushL(polyPoints);
- polyPoints->AppendL(iRect.iTl);
- polyPoints->AppendL(iRect.Center());
- polyPoints->AppendL(TPoint(iRect.iBr.iX, iRect.iTl.iY));
-
- iGc->DrawPolyLine(polyPoints);
- iGc->DrawPolyLine(&polyPoints->At(0), 3);
- iGc->DrawPolygon(polyPoints, CGraphicsContext::EWinding);
- iGc->DrawPolygon(&polyPoints->At(0), 3, CGraphicsContext::EAlternate);
-
- iGc->DrawPie(iRect, TPoint(iRect.Center().iX, iRect.iTl.iY), TPoint(iRect.iBr.iX, iRect.Center().iY));
- iGc->DrawEllipse(iRect);
- iGc->DrawRect(iRect);
- iGc->DrawRoundRect(iRect, TSize(iRect.Width()/8, iRect.Height()/8));
-
- CleanupStack::PopAndDestroy(polyPoints);
-
- iGc->CopyRect(TPoint(10, 10), iRect);
-
- CFbsBitmap* bitmap = new(ELeave) CFbsBitmap();
- CleanupStack::PushL(bitmap);
- User::LeaveIfError(bitmap->Create(TSize(16,16),EGray4));
-
- iGc->UseBrushPattern(bitmap);
- iGc->DrawBitmap(iRect.iTl, bitmap);
- iGc->DrawBitmap(iRect, bitmap);
- iGc->DrawBitmap(iRect, bitmap, TRect(0, 0, 16, 16));
- iGc->DrawBitmapMasked(iRect, bitmap, TRect(0, 0, 16, 16), bitmap, ETrue);
-
- iGc->BitBlt(TPoint(0, 0), bitmap);
- iGc->BitBlt(TPoint(0, 0), bitmap, iRect);
- iGc->BitBltMasked(TPoint(0, 0), bitmap, iRect, bitmap, ETrue);
- iGc->AlphaBlendBitmaps(TPoint(0, 0), bitmap, iRect, bitmap, TPoint(0,0));
-
- CleanupStack::PopAndDestroy(bitmap);
-
- iGc->SetCharJustification(1,1);
- iGc->SetClippingRect(iRect);
- if(iFont)
- {
- _LIT(KHelloWorld,"Hello World");
- iGc->DrawText(*&KHelloWorld, iRect.iTl);
- iGc->DrawText(*&KHelloWorld, iRect, 0, CGraphicsContext::ELeft, 0);
- iGc->DrawTextVertical(*&KHelloWorld, iRect.iBr, ETrue);
- iGc->DrawTextVertical(*&KHelloWorld, iRect, 0, ETrue, CGraphicsContext::ELeft, 0);
- }
-
- TRgb rgbs[2];
- iGc->MapColors(iRect, rgbs, 1, ETrue);
- iGc->DiscardBrushPattern();
-
- if(iFont)
- iGc->DiscardFont();
-
- iFunctions->CloseFont(0);
-
- TDateTime dt = iFunctions->SystemTime();
- }
-
-/**
- Copied from CAutoAnim3.
- */
-void CCoverageAnim::Redraw()
- {
- Draw();
- }
-
-/**
- Copied from CAutoAnim3.
- */
-void CCoverageAnim::Command(TInt ,TAny*)
- {
- }
-
-/**
- Copied from CAutoAnim3.
- */
-TInt CCoverageAnim::CommandReplyL(TInt aOpcode , TAny* aParam)
- {
- TAnimArgUnion pData;
- pData.any=aParam;
- switch(aOpcode)
- {
- case EADllDrawNow:
- iFunctions->SetSync(MAnimGeneralFunctions::ESyncFlash);
- break;
- case EADllSetFont:
- if(iFont)
- {
- iFunctions->CloseFont(iFont);
- iFont = NULL;
- }
- iFont = iFunctions->DuplicateFontL(*pData.Int);
- break;
- }
- return(KErrNone);
- }
-
-/**
- Copied from CAutoAnim3.
- */
-void CCoverageAnim::FocusChanged(TBool )
- {}
-
-/**
- Copied from CAutoAnim3.
- */
-TBool CCoverageAnim::OfferRawEvent(const TRawEvent &/*aRawEvent*/)
- {
- return EFalse;
- }
-
-
-// DLL code //
-
-CAnim *CTestAnimDll::CreateInstanceL(TInt aType)
- {
- CAnim *anim=NULL;
- switch(aType)
- {
- case EAnimTypeTest1:
- anim=new(ELeave) CPanicAnim();
- break;
- case EAnimTypeTest2:
- anim=new(ELeave) CPanicAnim2();
- break;
- case EAnimTypeTest3:
- anim=new(ELeave) CAutoAnim3();
- break;
- case EAnimTypeScrBackTest:
- anim=new(ELeave) CAutoAnimScrBack();
- break;
- case EAnimTypeSprite:
- anim=new(ELeave) CTestSpriteAnim();
- break;
- case EAnimTypeFreeTimer:
- anim=new(ELeave) CTestFreeTimerAnim();
- break;
- case EAnimTypeEventTest:
- anim=new(ELeave) CEventTestAnim();
- break;
- case EAnimTypeNotificationTest:
- anim=new(ELeave) CNotificationTestAnim();
- break;
- case EAnimTypeTimer:
- anim=new(ELeave) CTimerTestAnim();
- break;
- case EAnimTypeWindowFunctions:
- anim=new(ELeave) CWinFunctionTestAnim();
- break;
- case EAnimTypeTrans:
- anim=new(ELeave) CTransAnim();
- break;
- case EAnimTypeEventHandler:
- anim = new (ELeave) CTestHandlerAnim();
- break;
- case EAnimTypeRemovableAnim:
- anim=new(ELeave) CRemovableAnim();
- break;
- case EAnimTypeEventPostingTest:
- anim=new(ELeave) CEventPostingAnim();
- break;
- case EAnimTypeCoverage:
- anim=new(ELeave) CCoverageAnim();
- break;
- case EAnimTypeMultiPointer:
- anim=new(ELeave) CMultiPointerAnim();
- break;
- }
- return(anim);
- }
-
-// Dummy E32Dll needed by E32 to build //
-
-void CAutoAnim3::DrawTestScreenL(const TDrawTestScreen* aParams)
-//Moved here as the include messes up the debugging of the rest of the file.
- {
- CFbsBitmap *aBitmap=iFunctions->DuplicateBitmapL(aParams->bitmap);
- CleanupStack::PushL(aBitmap);
- CFbsBitmap *aMaskBitmap=iFunctions->DuplicateBitmapL(aParams->maskBitmap);
- CleanupStack::PushL(aMaskBitmap);
- CFbsFont *aFont=iFont=iFunctions->DuplicateFontL(aParams->font);
- TSize size(iWindowFunctions->WindowSize());
- iWindowFunctions->ActivateGc();
- CBitmapContext *gc=iGc;
- TBool aExtraDrawBitMap=ETrue;
-//
-#include "DLLDRAW.H"
-//
- iFunctions->CloseFont(iFont);
- iFont=NULL;
- CleanupStack::PopAndDestroy(2);
- }