graphicsdeviceinterface/directgdi/test/tcontextbase.h
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicsdeviceinterface/directgdi/test/tcontextbase.h	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,416 @@
+// Copyright (c) 2007-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 TCONTEXTBASE_H
+#define TCONTEXTBASE_H
+
+#include <graphics/directgditypes.h>
+#include <gdi.h>
+
+// Forward declarations.
+//
+class CFbsBitGc;
+class CDirectGdiContext;
+class CFbsBitGcFont;
+class CDirectGdiDriver;
+class CFbsBitmapDevice;
+class RDirectGdiDrawableSource;
+class RDirectGdiImageTarget;
+
+/**
+Struct to allow the equivalent of an image source to be drawn using BitGdi when testing the
+DrawResource methods. When an image source is created for testing, rotated bitmap versions
+of it are also created to allow the tests to be drawn in BitGdi using DrawBitmap
+*/
+struct TDrawableSourceAndEquivRotatedBmps
+	{
+	TDrawableSourceAndEquivRotatedBmps() :
+		iDrawableSrc(NULL),
+		iBmpRotNone(NULL),
+		iBmpRot90(NULL),
+		iBmpRot180(NULL),
+		iBmpRot270(NULL)
+	{
+	}
+	
+	RDirectGdiDrawableSource* iDrawableSrc;
+	CFbsBitmap* iBmpRotNone;
+	CFbsBitmap* iBmpRot90;
+	CFbsBitmap* iBmpRot180;
+	CFbsBitmap* iBmpRot270;
+	};
+
+/**
+Base class for Contexts in Test.
+*/
+class CTContextBase : public CBase
+	{
+public:
+	virtual void SetOrigin(const TPoint& aOrigin) = 0;
+	virtual void SetClippingRegion(const TRegion& aRegion) = 0;
+	virtual void ResetClippingRegion() = 0;
+	virtual void SetDrawMode(DirectGdi::TDrawMode aMode) = 0;
+	virtual void SetPenColor(const TRgb& aColor) = 0;
+	virtual void SetPenStyle(DirectGdi::TPenStyle aStyle) = 0;
+	virtual void SetPenSize(const TSize& aSize) = 0;
+	virtual void SetTextShadowColor(const TRgb& aColor) = 0;
+	virtual void SetBrushColor(const TRgb& aColor) = 0;
+	virtual void SetBrushStyle(DirectGdi::TBrushStyle aStyle) = 0;
+	virtual void SetBrushOrigin(const TPoint& aOrigin) = 0;
+	virtual void SetBrushPattern(const CFbsBitmap& aPattern) = 0;
+	virtual void SetBrushPattern(TInt aHandle) = 0;
+	virtual void ResetBrushPattern() = 0;
+	virtual void SetFont(const CFont* aFont) = 0;
+	virtual void ResetFont() = 0;
+	virtual void Reset() = 0;
+	virtual TRgb BrushColor() = 0;
+	virtual TRgb PenColor() = 0;
+	virtual TRgb TextShadowColor() = 0;
+	virtual void Clear(const TRect& aRect) = 0;
+	virtual void Clear() = 0;
+	virtual void MoveTo(const TPoint& aPoint) = 0;
+	virtual void MoveBy(const TPoint& aVector) = 0;
+	virtual void Plot(const TPoint& aPoint) = 0;
+	virtual void DrawLine(const TPoint& aStart, const TPoint& aEnd) = 0;
+	virtual void DrawLineTo(const TPoint& aPoint) = 0;
+	virtual void DrawLineBy(const TPoint& aVector) = 0;
+	virtual void DrawRect(const TRect& aRect) = 0;
+	virtual void DrawRoundRect(const TRect& aRect, const TSize& aEllipse) = 0;
+	virtual void DrawPolyLine(const CArrayFix<TPoint>& aPointList) = 0;
+	virtual void DrawPolyLineNoEndPoint(const CArrayFix<TPoint>& aPointList) = 0;
+	virtual void DrawPolygon(const CArrayFix<TPoint>& aPoints,
+			DirectGdi::TFillRule aRule) = 0;
+	virtual void DrawArc(const TRect& aRect, const TPoint& aStart,
+			const TPoint& aEnd) = 0;
+	virtual void DrawPie(const TRect& aRect, const TPoint& aStart,
+			const TPoint& aEnd) = 0;
+	virtual void DrawEllipse(const TRect& aRect) = 0;
+	virtual void BitBlt(const TPoint& aPoint, const CFbsBitmap& aBitmap) = 0;
+	virtual void BitBlt(const TPoint& aDestPos, const CFbsBitmap& aBitmap,
+			const TRect& aSrcRect) = 0;
+	virtual void BitBltMasked(const TPoint& aDestPos,
+			const CFbsBitmap& aBitmap, const TRect& aSrcRect,
+			const CFbsBitmap& aMask, TBool aInvertMask) = 0;
+	virtual void BitBltMasked(const TPoint& aDestPos, const CFbsBitmap& aBitmap, 
+			const TRect& aSourceRect, const CFbsBitmap& aAlpha, 
+			const TPoint& aAlphaPos) = 0;
+	virtual void
+			DrawBitmap(const TRect& aDestRect, const CFbsBitmap& aSource) = 0;
+	virtual void DrawBitmap(const TRect& aDestRect, const CFbsBitmap& aBitmap,
+			const TRect& aSrcRect) = 0;
+	virtual void DrawBitmapMasked(const TRect& aDestRect,
+			const CFbsBitmap& aBitmap, const TRect& aSrcRect,
+			const CFbsBitmap& aMask, TBool aInvertMask) = 0;
+	virtual void CopyRect(const TPoint& aOffset, const TRect& aRect) = 0;
+	virtual TBool HasBrushPattern() const = 0;
+	virtual TBool HasFont() const = 0;
+	virtual void ExternalizeL(RWriteStream& aWriteStream) = 0;
+	virtual void InternalizeL(RReadStream& aReadStream) = 0;
+	virtual void SetCharJustification(TInt aExcessWidth, TInt aNumGaps) = 0;
+	virtual void SetWordJustification(TInt aExcessWidth, TInt aNumChars) = 0;
+	virtual void SetUnderlineStyle(DirectGdi::TFontUnderline aUnderlineStyle) = 0;
+	virtual void
+			SetStrikethroughStyle(DirectGdi::TFontStrikethrough aStrikethroughStyle) = 0;
+	virtual void UpdateJustification(const TDesC& aText, const DirectGdi::TTextParameters* aParam) = 0;
+	virtual void UpdateJustificationVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, TBool aUp) = 0;
+	virtual void SetFontNoDuplicate(const CFont* aFont) = 0;
+	virtual TInt GetError() = 0;
+	// text drawing
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam) = 0;
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TPoint& aPosition) = 0;
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox) = 0;
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TInt aBaselineOffset, 
+		DirectGdi::TTextAlign aAlignment = DirectGdi::ELeft, TInt aMargin = 0) = 0;
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, TBool aUp) = 0;
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TPoint& aPosition, TBool aUp) = 0;
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TBool aUp) = 0;
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TInt aBaselineOffset, 
+			TBool aUp, DirectGdi::TTextAlign aVerticalAlignment = DirectGdi::ELeft, TInt aMargin = 0) = 0;
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TInt aBaselineOffset, 
+			TInt aTextWidth, TBool aUp, DirectGdi::TTextAlign aVerticalAlignment = DirectGdi::ELeft, TInt aMargin = 0) = 0;
+	// New functionality for image based resource (not part of BitGdi)
+	virtual void DrawResource(const TPoint& aPos, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource, 
+							DirectGdi::TGraphicsRotation aRotation=DirectGdi::EGraphicsRotationNone) = 0;
+	virtual void DrawResource(const TRect& aDestRect, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource,
+							DirectGdi::TGraphicsRotation aRotation=DirectGdi::EGraphicsRotationNone) = 0;
+	virtual void DrawResource(const TRect& aDestRect, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource, 
+							const TRect& aSrcRect,
+							DirectGdi::TGraphicsRotation aRotation=DirectGdi::EGraphicsRotationNone) = 0;
+	// New functionality for non-image based resource (not part of BitGdi)
+	virtual void DrawResource(const TRect& aDestRect, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource, 
+							const TDesC8& aParam) = 0;
+	virtual TInt GetInterface(TUid aInterfaceId, TAny*& aInterface) = 0;
+	virtual void CopySettings(const CTContextBase& aGc) = 0;
+	};
+
+/**
+Concrete implementation of a CTContextBase.
+This class implements the rendering mechanism for BitGDI.
+*/
+class CTBitGdiContext : public CTContextBase
+	{
+public:
+	static CTBitGdiContext* NewL(CFbsBitmapDevice* aDevice, TBool aActivate=ETrue);
+	virtual ~CTBitGdiContext();
+
+	// from CTContextBase
+	virtual void SetOrigin(const TPoint& aOrigin);
+	virtual void SetClippingRegion(const TRegion& aRegion);
+	virtual void ResetClippingRegion();
+	virtual void SetDrawMode(DirectGdi::TDrawMode aMode);
+	virtual void SetPenColor(const TRgb& aColor);
+	virtual void SetPenStyle(DirectGdi::TPenStyle aStyle);
+	virtual void SetPenSize(const TSize& aSize);
+	virtual void SetTextShadowColor(const TRgb& aColor);
+	virtual void SetBrushColor(const TRgb& aColor);
+	virtual void SetBrushStyle(DirectGdi::TBrushStyle aStyle);
+	virtual void SetBrushOrigin(const TPoint& aOrigin);
+	virtual void SetBrushPattern(const CFbsBitmap& aPattern);
+	virtual void SetBrushPattern(TInt aHandle);
+	virtual void ResetBrushPattern();
+	virtual void SetFont(const CFont* aFont);
+	virtual void ResetFont();
+	virtual void Reset();
+	virtual TRgb BrushColor();
+	virtual TRgb PenColor();
+	virtual TRgb TextShadowColor();
+	virtual void Clear(const TRect& aRect);
+	virtual void Clear();
+	virtual void MoveTo(const TPoint& aPoint);
+	virtual void MoveBy(const TPoint& aVector);
+	virtual void Plot(const TPoint& aPoint);
+	virtual void DrawLine(const TPoint& aStart, const TPoint& aEnd);
+	virtual void DrawLineTo(const TPoint& aPoint);
+	virtual void DrawLineBy(const TPoint& aVector);
+	virtual void DrawRect(const TRect& aRect);
+	virtual void DrawRoundRect(const TRect& aRect, const TSize& aEllipse);
+	virtual void DrawPolyLine(const CArrayFix<TPoint>& aPointList);
+	virtual void DrawPolyLineNoEndPoint(const CArrayFix<TPoint>& aPointList);
+	virtual void DrawPolygon(const CArrayFix<TPoint>& aPoints,
+			DirectGdi::TFillRule aRule);
+	virtual void DrawArc(const TRect& aRect, const TPoint& aStart,
+			const TPoint& aEnd);
+	virtual void DrawPie(const TRect& aRect, const TPoint& aStart,
+			const TPoint& aEnd);
+	virtual void DrawEllipse(const TRect& aRect);
+	virtual void BitBlt(const TPoint& aPoint, const CFbsBitmap& aBitmap);
+	virtual void BitBlt(const TPoint& aDestPos, const CFbsBitmap& aBitmap,
+			const TRect& aSrcRect);
+	virtual void BitBltMasked(const TPoint& aDestPos,
+			const CFbsBitmap& aBitmap, const TRect& aSrcRect,
+			const CFbsBitmap& aMask, TBool aInvertMask);
+	virtual void BitBltMasked(const TPoint& aDestPos, const CFbsBitmap& aBitmap, 
+			const TRect& aSourceRect, const CFbsBitmap& aAlpha, 
+			const TPoint& aAlphaPos);
+	virtual void DrawBitmap(const TRect& aDestRect, const CFbsBitmap& aSource);
+	virtual void DrawBitmap(const TRect& aDestRect, const CFbsBitmap& aBitmap,
+			const TRect& aSrcRect);
+	virtual void DrawBitmapMasked(const TRect& aDestRect,
+			const CFbsBitmap& aBitmap, const TRect& aSrcRect,
+			const CFbsBitmap& aMask, TBool aInvertMask);
+	virtual void CopyRect(const TPoint& aOffset, const TRect& aRect);
+	virtual void ExternalizeL(RWriteStream& aWriteStream);
+	virtual void InternalizeL(RReadStream& aReadStream);
+	virtual TBool HasBrushPattern() const;
+	virtual TBool HasFont() const;
+	virtual void SetCharJustification(TInt aExcessWidth, TInt aNumGaps);
+	virtual void SetWordJustification(TInt aExcessWidth, TInt aNumChars);
+	virtual void SetUnderlineStyle(DirectGdi::TFontUnderline aUnderlineStyle);
+	virtual void SetStrikethroughStyle(DirectGdi::TFontStrikethrough aStrikethroughStyle);
+	virtual void UpdateJustification(const TDesC& aText, const DirectGdi::TTextParameters* aParam);
+	virtual void UpdateJustificationVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, TBool aUp);
+	virtual void SetFontNoDuplicate(const CFont* aFont);
+	virtual TInt GetError();
+	// text drawing
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam);
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TPoint& aPosition);
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox);
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TInt aBaselineOffset, 
+			DirectGdi::TTextAlign aAlignment = DirectGdi::ELeft, TInt aMargin = 0);
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TInt aBaselineOffset, 
+			TInt aTextWidth, DirectGdi::TTextAlign aAlignment = DirectGdi::ELeft, TInt aMargin = 0);
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, TBool aUp);
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TPoint& aPosition, TBool aUp);
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TBool aUp);
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TInt aBaselineOffset, 
+			TBool aUp, DirectGdi::TTextAlign aVerticalAlignment = DirectGdi::ELeft, TInt aMargin = 0);
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TInt aBaselineOffset, 
+			TInt aTextWidth, TBool aUp, DirectGdi::TTextAlign aVerticalAlignment = DirectGdi::ELeft, TInt aMargin = 0);
+
+   // New functionality for image based resource (not part of BitGdi)
+	virtual void DrawResource(const TPoint& aPos, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource, 
+							DirectGdi::TGraphicsRotation aRotation=DirectGdi::EGraphicsRotationNone);
+	virtual void DrawResource(const TRect& aDestRect, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource,
+							DirectGdi::TGraphicsRotation aRotation=DirectGdi::EGraphicsRotationNone);
+	virtual void DrawResource(const TRect& aDestRect, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource, 
+							const TRect& aSrcRect,
+							DirectGdi::TGraphicsRotation aRotation=DirectGdi::EGraphicsRotationNone);
+	// New functionality for non-image based resource (not part of BitGdi)
+	virtual void DrawResource(const TRect& aDestRect, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource, 
+							const TDesC8& aParam);
+ 
+	virtual TInt Activate(CBitmapDevice *aDevice);
+	virtual TInt GetInterface(TUid aInterfaceId, TAny*& aInterface);
+	virtual void CopySettings(const CTContextBase& aGc);
+private:
+	CTBitGdiContext();
+	void ConstructL(CFbsBitmapDevice* aDevice, TBool aActivate);
+	void SetError(TInt aErr);
+
+public:
+	CFbsBitGc* iGc;
+	TInt iError;
+	};
+
+	
+/**
+Concrete implementation of a CTContextBase.
+This class implements the rendering mechanism for DirectGDI.
+*/
+class CTestDirectGdiContext : public CTContextBase
+	{
+public:
+	static CTestDirectGdiContext* NewL();
+	virtual ~CTestDirectGdiContext();
+
+	// from CTContextBase
+	virtual void SetOrigin(const TPoint& aOrigin);
+	virtual void SetClippingRegion(const TRegion& aRegion);
+	virtual void ResetClippingRegion();
+	virtual void SetDrawMode(DirectGdi::TDrawMode aMode);
+	virtual void SetPenColor(const TRgb& aColor);
+	virtual void SetPenStyle(DirectGdi::TPenStyle aStyle);
+	virtual void SetPenSize(const TSize& aSize);
+	virtual void SetTextShadowColor(const TRgb& aColor);
+	virtual void SetBrushColor(const TRgb& aColor);
+	virtual void SetBrushStyle(DirectGdi::TBrushStyle aStyle);
+	virtual void SetBrushOrigin(const TPoint& aOrigin);
+	virtual void SetBrushPattern(const CFbsBitmap& aPattern);
+	virtual void SetBrushPattern(TInt aHandle);
+	virtual void ResetBrushPattern();
+	virtual void SetFont(const CFont* aFont);
+	virtual void ResetFont();
+	virtual void Reset();
+	virtual TRgb BrushColor();
+	virtual TRgb PenColor();
+	virtual TRgb TextShadowColor();
+	virtual void Clear(const TRect& aRect);
+	virtual void Clear();
+	virtual void MoveTo(const TPoint& aPoint);
+	virtual void MoveBy(const TPoint& aVector);
+	virtual void Plot(const TPoint& aPoint);
+	virtual void DrawLine(const TPoint& aStart, const TPoint& aEnd);
+	virtual void DrawLineTo(const TPoint& aPoint);
+	virtual void DrawLineBy(const TPoint& aVector);
+	virtual void DrawRect(const TRect& aRect);
+	virtual void DrawRoundRect(const TRect& aRect, const TSize& aEllipse);
+	virtual void DrawPolyLine(const CArrayFix<TPoint>& aPointList);
+	virtual void DrawPolyLineNoEndPoint(const CArrayFix<TPoint>& aPointList);
+	virtual void DrawPolygon(const CArrayFix<TPoint>& aPoints,
+			DirectGdi::TFillRule aRule);
+	virtual void DrawArc(const TRect& aRect, const TPoint& aStart,
+			const TPoint& aEnd);
+	virtual void DrawPie(const TRect& aRect, const TPoint& aStart,
+			const TPoint& aEnd);
+	virtual void DrawEllipse(const TRect& aRect);
+	virtual void BitBlt(const TPoint& aPoint, const CFbsBitmap& aBitmap);
+	virtual void BitBlt(const TPoint& aDestPos, const CFbsBitmap& aBitmap,
+			const TRect& aSrcRect);
+	virtual void BitBltMasked(const TPoint& aDestPos,
+			const CFbsBitmap& aBitmap, const TRect& aSrcRect,
+			const CFbsBitmap& aMask, TBool aInvertMask);
+	virtual void BitBltMasked(const TPoint& aDestPos, const CFbsBitmap& aBitmap, 
+			const TRect& aSourceRect, const CFbsBitmap& aAlpha, 
+			const TPoint& aAlphaPos);
+	virtual void DrawBitmap(const TRect& aDestRect, const CFbsBitmap& aSource);
+	virtual void DrawBitmap(const TRect& aDestRect, const CFbsBitmap& aBitmap,
+			const TRect& aSrcRect);
+	virtual void DrawBitmapMasked(const TRect& aDestRect,
+			const CFbsBitmap& aBitmap, const TRect& aSrcRect,
+			const CFbsBitmap& aMask, TBool aInvertMask);
+	virtual void CopyRect(const TPoint& aOffset, const TRect& aRect);
+	virtual void ExternalizeL(RWriteStream& aWriteStream);
+	virtual void InternalizeL(RReadStream& aReadStream);
+	virtual TBool HasBrushPattern() const;
+	virtual TBool HasFont() const;
+	virtual void SetCharJustification(TInt aExcessWidth, TInt aNumGaps);
+	virtual void SetWordJustification(TInt aExcessWidth, TInt aNumChars);
+	virtual void SetUnderlineStyle(DirectGdi::TFontUnderline aUnderlineStyle);
+	virtual void SetStrikethroughStyle(DirectGdi::TFontStrikethrough aStrikethroughStyle);
+	virtual void UpdateJustification(const TDesC& aText, const DirectGdi::TTextParameters* aParam);
+	virtual void UpdateJustificationVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, TBool aUp);
+	virtual void SetFontNoDuplicate(const CFont* aFont);
+	virtual TInt GetError();
+	// text drawing
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam);
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TPoint& aPosition);
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox);
+	virtual void DrawText(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TInt aBaselineOffset, 
+		DirectGdi::TTextAlign aAlignment = DirectGdi::ELeft, TInt aMargin = 0);
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, TBool aUp);
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TPoint& aPosition, TBool aUp);
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TBool aUp);
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TInt aBaselineOffset, 
+			TBool aUp, DirectGdi::TTextAlign aVerticalAlignment = DirectGdi::ELeft, TInt aMargin = 0);
+	virtual void DrawTextVertical(const TDesC& aText, const DirectGdi::TTextParameters* aParam, const TRect& aBox, TInt aBaselineOffset, 
+			TInt aTextWidth, TBool aUp, DirectGdi::TTextAlign aVerticalAlignment = DirectGdi::ELeft, TInt aMargin = 0);
+	// New functionality for image based resource (not part of BitGdi)
+	virtual void DrawResource(const TPoint& aPos, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource, 
+							DirectGdi::TGraphicsRotation aRotation=DirectGdi::EGraphicsRotationNone);
+	virtual void DrawResource(const TRect& aDestRect, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource,
+							DirectGdi::TGraphicsRotation aRotation=DirectGdi::EGraphicsRotationNone);
+	virtual void DrawResource(const TRect& aDestRect, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource, 
+							const TRect& aSrcRect,
+							DirectGdi::TGraphicsRotation aRotation=DirectGdi::EGraphicsRotationNone);
+	// New functionality for non-image based resource (not part of BitGdi)
+	virtual void DrawResource(const TRect& aDestRect, 
+							const TDrawableSourceAndEquivRotatedBmps& aSource, 
+							const TDesC8& aParam);
+
+	virtual TInt GetInterface(TUid aInterfaceId, TAny*& aInterface);
+
+	// CTestDirectGdiContext specific
+	virtual TInt Activate(RDirectGdiImageTarget& aTarget);
+	void NoJustifyAutoUpdate();
+	void SetJustifyAutoUpdate();
+	virtual void CopySettings(const CTContextBase& aGc);
+	
+private:
+	CTestDirectGdiContext();
+	void ConstructL();
+
+public:
+	CDirectGdiDriver* iGdiDriver;
+	CDirectGdiContext* iGc;
+	};
+
+#endif