windowing/windowserver/tauto/tdrawresource.h
changeset 116 171fae344dd4
parent 103 2717213c588a
equal deleted inserted replaced
103:2717213c588a 116:171fae344dd4
     1 // Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 //
       
    15 
       
    16 /**
       
    17  @file
       
    18  @test
       
    19  @internalComponent - Internal Symbian test code
       
    20 */
       
    21 
       
    22 #ifndef TDRAWRESOURCE_H_
       
    23 #define TDRAWRESOURCE_H_
       
    24 
       
    25 #include "AUTO.H"
       
    26 #include <graphics/directgdidriver.h>
       
    27 #include <graphics/wsgraphicscontext.h>
       
    28 #include <graphics/directgdicontext.h>
       
    29 #include <graphics/wsdrawablesourceprovider.h>
       
    30 #include <graphics/sgimagecollection.h>
       
    31 #include <graphics/directgdiimagetarget.h>
       
    32 #include <graphics/wsdrawresource.h>
       
    33 #include "RemoteGc.h"
       
    34 #include "CommandBuffer.h"
       
    35 
       
    36 class TSgImageInfo;
       
    37 
       
    38 _LIT(KTDrawResourceStep, "TDrawResource");
       
    39 
       
    40 const TSize KSourceSize(200,200); //The size of the rect to copy from the screen
       
    41 const TPoint KDestPoint(0,0);
       
    42 const TRect KCopyTestRect(TPoint(0,0), TSize(200,200)); //The test rect to copy from the screen
       
    43 const TRect KSourceRect(TPoint(0,0), TSize(50,50));//Rect of the source image to be drawn
       
    44 const TRect KDestRect(TPoint(10,10), TSize(60,60));//Rect of the destination to draw to
       
    45 const CWindowGc::TGraphicsRotation KTestRotation= CWindowGc::EGraphicsRotation90;
       
    46 const TPoint KPlayOffset(0,0);
       
    47 
       
    48 
       
    49 /**
       
    50  * Dummy class used to check the values received by MWsGraphicsContext.
       
    51  * The only funtions overridden with some functionality are the DrawResource functions.
       
    52  * These simply receive the values and then store them in public member variables.
       
    53  */
       
    54 class CTestWsGraphicsContext : public CBase, public MWsGraphicsContext, public MWsDrawableSourceProvider
       
    55 	{
       
    56 public:
       
    57 	static CTestWsGraphicsContext* NewL(RDirectGdiImageTarget& aTarget);
       
    58 	~CTestWsGraphicsContext();
       
    59 	
       
    60 public: //from MWsGraphicsContext
       
    61 	void BitBlt(const TPoint&, const CFbsBitmap&){}
       
    62 	void BitBlt(const TPoint&, const CFbsBitmap&, const TRect&){}
       
    63 	void BitBltMasked(const TPoint&, const CFbsBitmap&, const TRect&, const CFbsBitmap&, TBool){}
       
    64 	void BitBltMasked(const TPoint&, const CFbsBitmap&, const TRect&, const CFbsBitmap&, const TPoint&){}
       
    65 	void ResetClippingRegion(){}
       
    66 	void Clear();
       
    67 	void Clear(const TRect&){}
       
    68 	void ResetBrushPattern(){}
       
    69 	void ResetFont(){}
       
    70 	void DrawArc(const TRect&, const TPoint&, const TPoint&){}
       
    71 	void DrawPie(const TRect&, const TPoint&, const TPoint&){}
       
    72 	void DrawBitmap(const TRect&, const CFbsBitmap&){}
       
    73 	void DrawBitmap(const TRect&,	const CFbsBitmap&, const TRect&){}
       
    74 	void DrawBitmapMasked(const TRect&, const CFbsBitmap&,const TRect&, const CFbsBitmap&, TBool){}
       
    75 	void DrawRoundRect(const TRect&, const TSize&){}
       
    76 	void DrawPolyLine(const TArray<TPoint>&){}
       
    77 	void DrawPolyLineNoEndPoint(const TArray<TPoint>&){}
       
    78 	void DrawPolygon(const TArray<TPoint>& , TFillRule ){}
       
    79 	void DrawEllipse(const TRect&){}
       
    80 	void DrawLine(const TPoint&, const TPoint&){}
       
    81 	void DrawLineTo(const TPoint&){}
       
    82 	void DrawLineBy(const TPoint&){}
       
    83 	void DrawRect(const TRect&){}
       
    84 	void DrawText(const TDesC& ,const TTextParameters* ){}
       
    85 	void DrawText(const TDesC& ,const TTextParameters* ,const TPoint& ){}
       
    86 	void DrawText(const TDesC& ,const TTextParameters* ,const TRect& ){}
       
    87 	void DrawText(const TDesC& ,const TTextParameters* ,const TRect& ,TInt ,TTextAlign ,TInt ){}
       
    88 	void DrawTextVertical(const TDesC& ,const TTextParameters* ,TBool ) {}
       
    89 	void DrawTextVertical(const TDesC& ,const TTextParameters* ,const TPoint& ,TBool ){}
       
    90 	void DrawTextVertical(const TDesC& ,const TTextParameters* ,const TRect& ,TBool ){}
       
    91 	void DrawTextVertical(const TDesC& ,const TTextParameters* ,const TRect& ,TInt ,TBool ,TTextAlign ,TInt ){}
       
    92 	void DrawTextVertical(const TDesC& ,const TTextParameters* ,const TRect& ,TInt ,TInt ,TBool ,TTextAlign ,TInt ){}
       
    93 	void MoveTo(const TPoint&){}
       
    94 	void MoveBy(const TPoint&){}
       
    95 	TPoint Origin() const {return TPoint(0,0);}
       
    96 	void Plot(const TPoint&){}
       
    97 	void Reset(){}
       
    98 	void SetBrushColor(const TRgb&){}
       
    99 	void SetBrushOrigin(const TPoint&){}
       
   100 	void SetBrushStyle(TBrushStyle ){}
       
   101 	void SetClippingRegion(const TRegion&){}
       
   102 	void SetDrawMode(TDrawMode){}
       
   103 	void SetOrigin(const TPoint&){}
       
   104 	void SetPenColor(const TRgb&){}
       
   105 	void SetPenStyle(TPenStyle){}
       
   106 	void SetPenSize(const TSize& ){}
       
   107 	void SetTextShadowColor(const TRgb&){}
       
   108 	void SetCharJustification(TInt, TInt){}
       
   109 	void SetWordJustification(TInt, TInt){}
       
   110 	void SetUnderlineStyle(TFontUnderline){}
       
   111 	void SetStrikethroughStyle(TFontStrikethrough){}
       
   112 	void SetBrushPattern(const CFbsBitmap&){}
       
   113 	void SetBrushPattern(TInt){}
       
   114 	void SetFont(const CFont*){}
       
   115 	void CopyRect(const TPoint&, const TRect&){}
       
   116 	void RectDrawnTo(TRect&){}
       
   117 	void UpdateJustification(const TDesC& ,const TTextParameters* ){}
       
   118 	void UpdateJustificationVertical(const TDesC& ,const TTextParameters* ,TBool ){}
       
   119 	void SetFontNoDuplicate(const CFont* ){}
       
   120 	TBool HasBrushPattern() const{return EFalse;}
       
   121 	TBool HasFont() const{return EFalse;}
       
   122 	void InternalizeL(RReadStream&){}
       
   123 	void ExternalizeL(RWriteStream&){}
       
   124 	TRgb BrushColor() const {return iContext->BrushColor();}
       
   125 	TRgb PenColor() const {return iContext->PenColor();}
       
   126 	TRgb TextShadowColor() const {return iContext->TextShadowColor ();}
       
   127 	
       
   128 	const TRegion& ClippingRegion(){return iRegion;}
       
   129 	TInt GetError(){return KErrNone;}
       
   130 	TInt Push(){return KErrNone;}
       
   131 	void Pop(){}
       
   132 	//from MWsObjectProvider
       
   133 	TAny* ResolveObjectInterface(TUint aTypeId);
       
   134 	
       
   135 	//from MWsDrawableSourceProvider
       
   136 	TInt CreateDrawableSource(const TSgDrawableId& aDrawableId, TAny*& aSource);
       
   137 	void CloseDrawableSource(TAny* aSource);
       
   138 	void DrawResource(const TAny* aSource, const TPoint& aPos, CWindowGc::TGraphicsRotation aRotation = CWindowGc::EGraphicsRotationNone);
       
   139 	void DrawResource(const TAny* aSource, const TRect& aRect, CWindowGc::TGraphicsRotation aRotation = CWindowGc::EGraphicsRotationNone);
       
   140 	void DrawResource(const TAny* aSource, const TRect& aRectDest, const TRect& aRectSrc, CWindowGc::TGraphicsRotation aRotation = CWindowGc::EGraphicsRotationNone);
       
   141 	void DrawResource(const TAny* aSource, const TRect& aRect, const TDesC8& aParam);
       
   142 	
       
   143 private:
       
   144 	void ConstructL(RDirectGdiImageTarget& aTarget);
       
   145 	void DoCreateDrawableSourceL(const TSgDrawableId& aDrawableId, TAny*& aSource);
       
   146 public:
       
   147 	TPoint iPos;
       
   148 	TRect iDestRect;
       
   149 	TRect iSrcRect;
       
   150 	DirectGdi::TGraphicsRotation iRotation;
       
   151 	RRegion iRegion;
       
   152 private:
       
   153 	CDirectGdiContext* iContext;
       
   154 	};
       
   155 
       
   156 /**
       
   157  * Class derived from MWsGraphicResolver.  This a dummy implmentation which has no functionality.
       
   158  * An instance of it is passed to CCommandBuffer::Play to make it a valid call.  
       
   159  */
       
   160 class CWSGraphicsRes: public CBase, public MWsGraphicResolver
       
   161 	{
       
   162 public:
       
   163 	void DrawWsGraphic(TInt, TBool, const TRect&, const TDesC8&) const{}
       
   164 	};
       
   165 	
       
   166 class CTDrawResource : public CTWsGraphicsBase
       
   167 	{
       
   168 public:
       
   169 	CTDrawResource(CTestStep* aStep);
       
   170 	~CTDrawResource();
       
   171 	void ConstructL();
       
   172 protected:
       
   173 	//from 	CTGraphicsStep
       
   174 	void RunTestCaseL(TInt aCurTestCase);
       
   175 private:
       
   176 	void TestDrawResourcePos();
       
   177 	void TestDrawResourceRect();
       
   178 	void TestDrawResourceScale();
       
   179 	void TestRWsDrawableSourceReferenceCountingL();
       
   180 	void TestRemoteGcDrawResourcePosL();
       
   181 	void TestRemoteGcDrawResourceRectL();
       
   182 	void TestRemoteGcDrawResourceScaleL();
       
   183 	void TestDrawResourceScreensL();
       
   184 	void TestCopyScreenToBitmapWithDifferentDisplayModesL();
       
   185 	//Helper functions
       
   186 	TBool CompareBitmapsByPixel(CFbsBitmap* aCandidateBitmap, CFbsBitmap* aReferenceBitmap);
       
   187 	void CreateReferenceAndCopyBitmapsL();
       
   188 	void CreateSgImageFromBitmapL(RSgImage& aImage);
       
   189 	void BitmapLC(CFbsBitmap*& aBmp); //helper function to extract bitmap from the image
       
   190 	void CreateReferenceBitmapLC(CFbsBitmap*& aBmpTarget, CFbsBitmap* aBmpSrc, TDisplayMode aDestMode); 
       
   191 	void CreateBitmapLC(CFbsBitmap*& aBmpTarget, const TSize& aSize, TDisplayMode aDispMode) const;
       
   192 private:
       
   193 	RWindow iWindow;
       
   194 	CFbsBitmap* iRefBitmap;
       
   195 	CFbsBitmap* iRotatedRefBitmap;
       
   196 	CFbsBitmap* iScaledBitmap;
       
   197 	CFbsBitmap *iScaledCroppedBitmap;
       
   198 	CFbsBitmap* iCopyBitmap;
       
   199 	CFbsBitmap* iBitmapWrongScreenNumber;
       
   200 	CDirectGdiDriver* iDGdiDriver;
       
   201 	
       
   202 	//Required for RemoteGc testing
       
   203 	RSgImageCollection iImageCollection;
       
   204 	RSgImage iImage;
       
   205 	RDirectGdiImageTarget iImageTarget;
       
   206 	RWsDrawableSource iWsDrawableSource;
       
   207 	CTestWsGraphicsContext* iGraphicsCon;
       
   208 	CWSGraphicsRes* iWsGrapicResolver;
       
   209 	};
       
   210 
       
   211 class CTDrawResourceStep : public CTGraphicsStep
       
   212 	{
       
   213 public:
       
   214 	CTDrawResourceStep();
       
   215 protected:	
       
   216 	//from CTGraphicsStep
       
   217 	CTGraphicsBase* CreateTestL();
       
   218 	};
       
   219 
       
   220 
       
   221 #endif /*TDRAWRESOURCE_H_*/