os/graphics/windowing/windowserver/test/tauto/tdrawresource.h
author sl
Tue, 10 Jun 2014 14:32:02 +0200
changeset 1 260cb5ec6c19
permissions -rw-r--r--
Update contrib.
     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_*/