--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/windowing/windowserver/tauto/tdrawresource.h Tue Feb 02 01:47:50 2010 +0200
@@ -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 <graphics/directgdidriver.h>
+#include <graphics/wsgraphicscontext.h>
+#include <graphics/directgdicontext.h>
+#include <graphics/wsdrawablesourceprovider.h>
+#include <graphics/sgimagecollection.h>
+#include <graphics/directgdiimagetarget.h>
+#include <graphics/wsdrawresource.h>
+#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<TPoint>&){}
+ void DrawPolyLineNoEndPoint(const TArray<TPoint>&){}
+ void DrawPolygon(const TArray<TPoint>& , 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_*/