sl@0: sl@0: // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies). sl@0: // All rights reserved. sl@0: // This component and the accompanying materials are made available sl@0: // under the terms of "Eclipse Public License v1.0" sl@0: // which accompanies this distribution, and is available sl@0: // at the URL "http://www.eclipse.org/legal/epl-v10.html". sl@0: // sl@0: // Initial Contributors: sl@0: // Nokia Corporation - initial contribution. sl@0: // sl@0: // Contributors: sl@0: // sl@0: // Description: sl@0: // sl@0: sl@0: /** sl@0: @file sl@0: @test sl@0: @internalComponent - Internal Symbian test code sl@0: */ sl@0: sl@0: #ifndef __TSCROLL_H__ sl@0: #define __TSCROLL_H__ sl@0: sl@0: #include sl@0: #include sl@0: #include "../tlib/testbase.h" sl@0: #include sl@0: #include "AUTO.H" sl@0: #include "TGraphicsHarness.h" sl@0: sl@0: class CTScroll; sl@0: class CScrollTestBase; sl@0: sl@0: class CScrollWindowNorm : public CTWin sl@0: { sl@0: public: sl@0: CScrollWindowNorm(); sl@0: void Draw(); sl@0: void SetScrollTest(CScrollTestBase *aScrollTest); sl@0: private: sl@0: CScrollTestBase *iScrollTest; sl@0: }; sl@0: sl@0: class CScrollWindowBackedUp : public CTBackedUpWin sl@0: { sl@0: public: sl@0: CScrollWindowBackedUp(TDisplayMode aDisplayMode); sl@0: void Draw(); sl@0: void SetScrollTest(CScrollTestBase *aScrollTest); sl@0: private: sl@0: CScrollTestBase *iScrollTest; sl@0: }; sl@0: sl@0: class CScrollTestBase : public CBase sl@0: { sl@0: public: sl@0: ~CScrollTestBase(); sl@0: virtual void ConstructL(const TPoint &aPos, const TSize &aSize)=0; sl@0: virtual void DoTestScroll(const TPoint &aOffset)=0; sl@0: virtual void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset)=0; sl@0: virtual void DoTestScroll(const TPoint &aOffset, const TRect &aRect)=0; sl@0: virtual void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect)=0; sl@0: virtual void Reset(); sl@0: TPoint Offset() const; sl@0: virtual CTDrawableWin *ScrollWin() const=0; sl@0: virtual void DoInvalidate(); sl@0: virtual void Redraw()=0; sl@0: protected: sl@0: TSize iSize; sl@0: TPoint iOffset; sl@0: friend class CTScroll; sl@0: RRegion iInvalid; sl@0: CTBlankWindow *iBlankWin; sl@0: }; sl@0: sl@0: class CScrollTestBaseNorm : public CScrollTestBase sl@0: { sl@0: public: sl@0: void ConstructL(const TPoint &aPos, const TSize &aSize); sl@0: ~CScrollTestBaseNorm(); sl@0: virtual CTDrawableWin *ScrollWin() const; sl@0: virtual void Reset(); sl@0: void VisibleRegion(RRegion &aRegion); sl@0: void AdjustTestScrollRegion(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect); sl@0: void DrawScrollWin(const TPoint &aOffset, const TSize &aSize); sl@0: void Redraw(); sl@0: protected: sl@0: CScrollWindowNorm *iScrollWin; sl@0: }; sl@0: sl@0: class CScrollWindow1 : public CScrollTestBaseNorm sl@0: // sl@0: // Used as control window for a normal redraw window sl@0: // sl@0: { sl@0: public: sl@0: void DoTestScroll(const TPoint &aOffset); sl@0: void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset); sl@0: void DoTestScroll(const TPoint &aOffset, const TRect &aRect); sl@0: void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect); sl@0: void DoInvalidate(); sl@0: }; sl@0: sl@0: class CScrollWindow2 : public CScrollTestBaseNorm sl@0: // sl@0: // Used to test a normal redraw window sl@0: // sl@0: { sl@0: public: sl@0: CScrollWindow2(CTScroll *aTest); sl@0: virtual void Draw(); sl@0: virtual void Reset(); sl@0: void DoTestScroll(const TPoint &aOffset); sl@0: void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset); sl@0: void DoTestScroll(const TPoint &aOffset, const TRect &aRect); sl@0: void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect); sl@0: private: sl@0: TBool iClipped; sl@0: CTScroll *iTest; sl@0: }; sl@0: sl@0: class CScrollWindow3 : public CScrollTestBaseNorm sl@0: // sl@0: // Used as control window for testing backed up windows sl@0: // sl@0: { sl@0: public: sl@0: void ConstructL(const TPoint &aPos, const TSize &aSize); sl@0: ~CScrollWindow3(); sl@0: virtual void Reset(); sl@0: void Draw(); sl@0: void DoTestScroll(const TPoint &aOffset); sl@0: void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset); sl@0: void DoTestScroll(const TPoint &aOffset, const TRect &aRect); sl@0: void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect); sl@0: void DoInvalidate(); sl@0: void DrawScrollBit(); sl@0: private: sl@0: CFbsBitmap *iBitmap; sl@0: CFbsDevice *iBitmapDevice; sl@0: CFbsBitGc *iBitmapGc; sl@0: }; sl@0: sl@0: class CScrollWindow4 : public CScrollTestBase sl@0: // sl@0: // Tests a backed up window sl@0: // sl@0: { sl@0: public: sl@0: ~CScrollWindow4(); sl@0: void ConstructL(const TPoint &aPos, const TSize &aSize); sl@0: void DoTestScroll(const TPoint &aOffset); sl@0: void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset); sl@0: void DoTestScroll(const TPoint &aOffset, const TRect &aRect); sl@0: void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect); sl@0: virtual CTDrawableWin *ScrollWin() const; sl@0: virtual void Reset(); sl@0: void Redraw(); sl@0: protected: sl@0: CScrollWindowBackedUp *iScrollWin; sl@0: }; sl@0: sl@0: class CTScroll : public CTWsGraphicsBase sl@0: { sl@0: public: sl@0: CTScroll(CTestStep* aStep); sl@0: ~CTScroll(); sl@0: void ConstructL(); sl@0: void CheckScrollWindows(); sl@0: void DoTestScroll(const TPoint &aOffset); sl@0: void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset); sl@0: void DoTestScroll(const TPoint &aOffset, const TRect &aRect); sl@0: void DoTestScroll(const TRect &aClipRect, const TPoint &aOffset, const TRect &aRect); sl@0: void FinishedRectScrolls(); sl@0: void CheckOomScroll(); sl@0: void OomScrolling(); sl@0: void DemoWindowScrollL(); sl@0: protected: sl@0: //from CTGraphicsStep sl@0: virtual void RunTestCaseL(TInt aCurTestCase); sl@0: private: sl@0: TSize iWinSize; sl@0: TInt iMode; sl@0: TBool iDoCheck; sl@0: CScrollTestBase *iBaseScrollWin; sl@0: CScrollTestBase *iTestScrollWin; sl@0: }; sl@0: sl@0: class CTScrollStep : public CTGraphicsStep sl@0: { sl@0: public: sl@0: CTScrollStep(); sl@0: protected: sl@0: //from CTGraphicsStep sl@0: virtual CTGraphicsBase* CreateTestL(); sl@0: }; sl@0: sl@0: _LIT(KTScrollStep,"TScroll"); sl@0: sl@0: sl@0: #endif