diff -r bbf46f59e123 -r 25ffed67c7ef windowing/windowserver/tauto/tdrawresource.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/windowing/windowserver/tauto/tdrawresource.h Wed Sep 01 12:39:21 2010 +0100 @@ -0,0 +1,221 @@ +// 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 TDRAWRESOURCE_H_ +#define TDRAWRESOURCE_H_ + +#include "AUTO.H" +#include +#include +#include +#include +#include +#include +#include +#include "RemoteGc.h" +#include "CommandBuffer.h" + +class TSgImageInfo; + +_LIT(KTDrawResourceStep, "TDrawResource"); + +const TSize KSourceSize(200,200); //The size of the rect to copy from the screen +const TPoint KDestPoint(0,0); +const TRect KCopyTestRect(TPoint(0,0), TSize(200,200)); //The test rect to copy from the screen +const TRect KSourceRect(TPoint(0,0), TSize(50,50));//Rect of the source image to be drawn +const TRect KDestRect(TPoint(10,10), TSize(60,60));//Rect of the destination to draw to +const CWindowGc::TGraphicsRotation KTestRotation= CWindowGc::EGraphicsRotation90; +const TPoint KPlayOffset(0,0); + + +/** + * Dummy class used to check the values received by MWsGraphicsContext. + * The only funtions overridden with some functionality are the DrawResource functions. + * These simply receive the values and then store them in public member variables. + */ +class CTestWsGraphicsContext : public CBase, public MWsGraphicsContext, public MWsDrawableSourceProvider + { +public: + static CTestWsGraphicsContext* NewL(RDirectGdiImageTarget& aTarget); + ~CTestWsGraphicsContext(); + +public: //from MWsGraphicsContext + void BitBlt(const TPoint&, const CFbsBitmap&){} + void BitBlt(const TPoint&, const CFbsBitmap&, const TRect&){} + void BitBltMasked(const TPoint&, const CFbsBitmap&, const TRect&, const CFbsBitmap&, TBool){} + void BitBltMasked(const TPoint&, const CFbsBitmap&, const TRect&, const CFbsBitmap&, const TPoint&){} + void ResetClippingRegion(){} + void Clear(); + void Clear(const TRect&){} + void ResetBrushPattern(){} + void ResetFont(){} + void DrawArc(const TRect&, const TPoint&, const TPoint&){} + void DrawPie(const TRect&, const TPoint&, const TPoint&){} + void DrawBitmap(const TRect&, const CFbsBitmap&){} + void DrawBitmap(const TRect&, const CFbsBitmap&, const TRect&){} + void DrawBitmapMasked(const TRect&, const CFbsBitmap&,const TRect&, const CFbsBitmap&, TBool){} + void DrawRoundRect(const TRect&, const TSize&){} + void DrawPolyLine(const TArray&){} + void DrawPolyLineNoEndPoint(const TArray&){} + void DrawPolygon(const TArray& , TFillRule ){} + void DrawEllipse(const TRect&){} + void DrawLine(const TPoint&, const TPoint&){} + void DrawLineTo(const TPoint&){} + void DrawLineBy(const TPoint&){} + void DrawRect(const TRect&){} + void DrawText(const TDesC& ,const TTextParameters* ){} + void DrawText(const TDesC& ,const TTextParameters* ,const TPoint& ){} + void DrawText(const TDesC& ,const TTextParameters* ,const TRect& ){} + void DrawText(const TDesC& ,const TTextParameters* ,const TRect& ,TInt ,TTextAlign ,TInt ){} + void DrawTextVertical(const TDesC& ,const TTextParameters* ,TBool ) {} + void DrawTextVertical(const TDesC& ,const TTextParameters* ,const TPoint& ,TBool ){} + void DrawTextVertical(const TDesC& ,const TTextParameters* ,const TRect& ,TBool ){} + void DrawTextVertical(const TDesC& ,const TTextParameters* ,const TRect& ,TInt ,TBool ,TTextAlign ,TInt ){} + void DrawTextVertical(const TDesC& ,const TTextParameters* ,const TRect& ,TInt ,TInt ,TBool ,TTextAlign ,TInt ){} + void MoveTo(const TPoint&){} + void MoveBy(const TPoint&){} + TPoint Origin() const {return TPoint(0,0);} + void Plot(const TPoint&){} + void Reset(){} + void SetBrushColor(const TRgb&){} + void SetBrushOrigin(const TPoint&){} + void SetBrushStyle(TBrushStyle ){} + void SetClippingRegion(const TRegion&){} + void SetDrawMode(TDrawMode){} + void SetOrigin(const TPoint&){} + void SetPenColor(const TRgb&){} + void SetPenStyle(TPenStyle){} + void SetPenSize(const TSize& ){} + void SetTextShadowColor(const TRgb&){} + void SetCharJustification(TInt, TInt){} + void SetWordJustification(TInt, TInt){} + void SetUnderlineStyle(TFontUnderline){} + void SetStrikethroughStyle(TFontStrikethrough){} + void SetBrushPattern(const CFbsBitmap&){} + void SetBrushPattern(TInt){} + void SetFont(const CFont*){} + void CopyRect(const TPoint&, const TRect&){} + void RectDrawnTo(TRect&){} + void UpdateJustification(const TDesC& ,const TTextParameters* ){} + void UpdateJustificationVertical(const TDesC& ,const TTextParameters* ,TBool ){} + void SetFontNoDuplicate(const CFont* ){} + TBool HasBrushPattern() const{return EFalse;} + TBool HasFont() const{return EFalse;} + void InternalizeL(RReadStream&){} + void ExternalizeL(RWriteStream&){} + TRgb BrushColor() const {return iContext->BrushColor();} + TRgb PenColor() const {return iContext->PenColor();} + TRgb TextShadowColor() const {return iContext->TextShadowColor ();} + + const TRegion& ClippingRegion(){return iRegion;} + TInt GetError(){return KErrNone;} + TInt Push(){return KErrNone;} + void Pop(){} + //from MWsObjectProvider + TAny* ResolveObjectInterface(TUint aTypeId); + + //from MWsDrawableSourceProvider + TInt CreateDrawableSource(const TSgDrawableId& aDrawableId, TAny*& aSource); + void CloseDrawableSource(TAny* aSource); + void DrawResource(const TAny* aSource, const TPoint& aPos, CWindowGc::TGraphicsRotation aRotation = CWindowGc::EGraphicsRotationNone); + void DrawResource(const TAny* aSource, const TRect& aRect, CWindowGc::TGraphicsRotation aRotation = CWindowGc::EGraphicsRotationNone); + void DrawResource(const TAny* aSource, const TRect& aRectDest, const TRect& aRectSrc, CWindowGc::TGraphicsRotation aRotation = CWindowGc::EGraphicsRotationNone); + void DrawResource(const TAny* aSource, const TRect& aRect, const TDesC8& aParam); + +private: + void ConstructL(RDirectGdiImageTarget& aTarget); + void DoCreateDrawableSourceL(const TSgDrawableId& aDrawableId, TAny*& aSource); +public: + TPoint iPos; + TRect iDestRect; + TRect iSrcRect; + DirectGdi::TGraphicsRotation iRotation; + RRegion iRegion; +private: + CDirectGdiContext* iContext; + }; + +/** + * Class derived from MWsGraphicResolver. This a dummy implmentation which has no functionality. + * An instance of it is passed to CCommandBuffer::Play to make it a valid call. + */ +class CWSGraphicsRes: public CBase, public MWsGraphicResolver + { +public: + void DrawWsGraphic(TInt, TBool, const TRect&, const TDesC8&) const{} + }; + +class CTDrawResource : public CTWsGraphicsBase + { +public: + CTDrawResource(CTestStep* aStep); + ~CTDrawResource(); + void ConstructL(); +protected: + //from CTGraphicsStep + void RunTestCaseL(TInt aCurTestCase); +private: + void TestDrawResourcePos(); + void TestDrawResourceRect(); + void TestDrawResourceScale(); + void TestRWsDrawableSourceReferenceCountingL(); + void TestRemoteGcDrawResourcePosL(); + void TestRemoteGcDrawResourceRectL(); + void TestRemoteGcDrawResourceScaleL(); + void TestDrawResourceScreensL(); + void TestCopyScreenToBitmapWithDifferentDisplayModesL(); + //Helper functions + TBool CompareBitmapsByPixel(CFbsBitmap* aCandidateBitmap, CFbsBitmap* aReferenceBitmap); + void CreateReferenceAndCopyBitmapsL(); + void CreateSgImageFromBitmapL(RSgImage& aImage); + void BitmapLC(CFbsBitmap*& aBmp); //helper function to extract bitmap from the image + void CreateReferenceBitmapLC(CFbsBitmap*& aBmpTarget, CFbsBitmap* aBmpSrc, TDisplayMode aDestMode); + void CreateBitmapLC(CFbsBitmap*& aBmpTarget, const TSize& aSize, TDisplayMode aDispMode) const; +private: + RWindow iWindow; + CFbsBitmap* iRefBitmap; + CFbsBitmap* iRotatedRefBitmap; + CFbsBitmap* iScaledBitmap; + CFbsBitmap *iScaledCroppedBitmap; + CFbsBitmap* iCopyBitmap; + CFbsBitmap* iBitmapWrongScreenNumber; + CDirectGdiDriver* iDGdiDriver; + + //Required for RemoteGc testing + RSgImageCollection iImageCollection; + RSgImage iImage; + RDirectGdiImageTarget iImageTarget; + RWsDrawableSource iWsDrawableSource; + CTestWsGraphicsContext* iGraphicsCon; + CWSGraphicsRes* iWsGrapicResolver; + }; + +class CTDrawResourceStep : public CTGraphicsStep + { +public: + CTDrawResourceStep(); +protected: + //from CTGraphicsStep + CTGraphicsBase* CreateTestL(); + }; + + +#endif /*TDRAWRESOURCE_H_*/