graphicsdeviceinterface/directgdiinterface/inc/directgdiengine.h
changeset 0 5d03bc08d59c
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/graphicsdeviceinterface/directgdiinterface/inc/directgdiengine.h	Tue Feb 02 01:47:50 2010 +0200
@@ -0,0 +1,466 @@
+// 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:
+//
+
+
+#ifndef DIRECTGDIENGINE_H
+#define DIRECTGDIENGINE_H
+
+/**
+@file
+@publishedPartner
+@prototype
+*/
+
+#include <graphics/directgditypes.h>
+#include <e32std.h>
+
+// Forward declarations.
+//
+class CFbsBitmap;
+class RDirectGdiImageSource;
+class RDirectGdiImageTarget;
+class RDirectGdiDrawableSource;
+
+/**
+Pure virtual interface for licensee adaptation of GDI platform implementation.
+
+@publishedPartner
+@prototype
+@deprecated
+*/
+class MDirectGdiEngine
+	{
+public:
+
+	/**
+	@see	CDirectGdiContext::Activate()
+	@see	Deactivate()
+	 */
+	virtual TInt Activate(RDirectGdiImageTarget& aTarget) = 0;
+	
+	/**
+	Unbinds the current rendering target (if any) from drawing engine. Drawing engine states or settings which
+	are not dependent or non-target-specific remain unchanged.
+	
+	The DirectGDI generic layer will call this method prior to activating the drawing engine for another 
+	rendering target.
+	
+	@see	Activate()
+	
+	@pre	None.
+	@post	Drawing engine is no longer associated with any rendering target.
+	 */
+	virtual void Deactivate() = 0;
+	
+	/**
+	@see	CDirectGdiContext::SetOrigin()
+	 */
+	virtual void SetOrigin(const TPoint& aOrigin) = 0;
+	
+	/**
+	@see	CDirectGdiContext::ResetClippingRegion()
+	@see	SetClippingRegion()
+	 */
+	virtual void SetClippingRegion(const TRegion& aRegion) = 0;
+	
+	/**
+	@see	CDirectGdiContext::ReetClippingRegion()
+	@see	SetClippingRegion()
+	 */
+	virtual void ResetClippingRegion() = 0;
+	
+	/**
+	@see	CDirectGdiContext::SetDrawMode()
+	 */
+	virtual void SetDrawMode(DirectGdi::TDrawMode aMode) = 0;
+	
+	/**
+	@see	CDirectGdiContext::SetPenColor()
+	@see	DrawLine()
+	@see	DrawLineTo()
+	@see	DrawLineBy()
+	@see	DrawPolyLine()
+	@see	DrawPolygon()
+	@see	DrawRect()
+	@see	DrawRoundRect()
+	 */
+	virtual void SetPenColor(const TRgb& aColor) = 0;
+	
+	/**
+	@see	CDirectGdiContext::SetPenStyle()
+	@see	DrawLine()
+	@see	DrawLineTo()
+	@see	DrawLineBy()
+	@see	DrawPolyLine()
+	@see	DrawPolygon()
+	@see	DrawRect()
+	@see	DrawRoundRect()
+	 */
+	virtual void SetPenStyle(DirectGdi::TPenStyle aStyle) = 0;
+	
+	/**
+	@see	CDirectGdiContext::SetPenSize()
+	@see	DrawLine()
+	@see	DrawLineTo()
+	@see	DrawLineBy()
+	@see	DrawPolyLine()
+	@see	DrawPolygon()
+	@see	DrawRect()
+	@see	DrawRoundRect()
+	@see	Plot()
+	 */
+	virtual void SetPenSize(const TSize& aSize) = 0;
+	
+	/**
+	@see	CDirectGdiContext::SetTextShadowColor()
+	 */
+	virtual void SetTextShadowColor(const TRgb& aColor) = 0;
+	
+	/**
+	@see	CDirectGdiContext::SetBrushColor()
+	 */
+	virtual void SetBrushColor(const TRgb& aColor) = 0;
+	
+	/**
+	@see 	CDirectGdiContext::SetBrushStyle()
+	@see	SetBrushPattern()
+	 */
+	virtual void SetBrushStyle(DirectGdi::TBrushStyle aStyle) = 0;
+	
+	/**
+	@see	CDirectGdiContext::SetBrushOrigin()
+	@see	SetBrushPattern()
+	 */
+	virtual void SetBrushOrigin(const TPoint& aOrigin) = 0;
+	
+	/**
+	@see	CDirectGdiContext::SetBrushPattern()
+	@see	ResetBrushPattern()
+	
+	@return KErrNone if successful, otherwise one of the system-wide error codes.
+	 */
+	virtual TInt SetBrushPattern(const CFbsBitmap& aPattern) = 0;
+	
+	/**
+	@see 	CDirectGdiContext::ResetBrushPattern()
+	@see	SetBrushPattern()
+	 */
+	virtual void ResetBrushPattern() = 0;
+	
+	/**
+	@see 	CDirectGdiContext::SetFont()
+	
+	@param  aFontId The Font identifier.
+	*/
+	virtual void SetFont(TUint32 aFontId) = 0;
+	
+	/**
+	@see 	CDirectGdiContext::ResetFont()
+	 */
+	virtual void ResetFont() = 0;
+	
+	/**
+	Resets the engine state to default values. 
+	 
+	@see 	CDirectGdiContext::Reset()
+	 */
+	virtual void Reset() = 0;
+	
+	/**
+	@see	CDirectGdiContext::Clear(const TRect&)
+	@see	Clear()
+	@see    SetBrushColor()
+	 */
+	virtual void Clear(const TRect& aRect) = 0;
+	
+	/**
+	@see	CDirectGdiContext::Clear()
+	@see	Clear(const TRect&)
+	@see    SetBrushColor()
+	 */
+	virtual void Clear() = 0;
+	
+	/**
+	@see    CDirectGdiContext::MoveTo()
+	@see	MoveBy()
+	 */
+	virtual void MoveTo(const TPoint& aPoint) = 0;
+	
+	/**
+	@see    CDirectGdiContext::MoveBy()
+	@see	MoveTo()
+	 */
+	virtual void MoveBy(const TPoint& aVector) = 0;
+	
+	/**
+	@see    CDirectGdiContext::Plot()	
+	@see    SetPenSize()
+	@see    SetPenColor()
+	@see    SetDrawMode()
+	 */
+	virtual void Plot(const TPoint& aPoint) = 0;
+	
+	/**
+	@see    CDirectGdiContext::DrawLine()	
+	@see    DrawLineTo()
+	@see    DrawLineBy()
+	@see    SetPenSize()
+	@see    SetPenStyle()
+	@see    SetPenColor()
+	@see    SetDrawMode()
+	 */
+	virtual void DrawLine(const TPoint& aStart, const TPoint& aEnd) = 0;
+	
+	/**
+	@see    CDirectGdiContext::DrawLineTo()	
+	@see    DrawLine()
+	@see    DrawLineBy()
+	@see    SetPenSize()
+	@see    SetPenStyle()
+	@see    SetPenColor()
+	@see    SetDrawMode()
+	@see    MoveTo()
+	@see    MoveBy()
+	 */
+	virtual void DrawLineTo(const TPoint& aPoint) = 0;
+	
+	/**
+	@see    CDirectGdiContext::DrawLineBy()	
+	@see    DrawLine()
+	@see    DrawLineTo()
+	@see    SetPenSize()
+	@see    SetPenStyle()
+	@see    SetPenColor()
+	@see    DrawMode()
+	@see    MoveTo()
+	@see    MoveBy()
+	 */
+	virtual void DrawLineBy(const TPoint& aVector) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawRect()
+	 */
+	virtual void DrawRect(const TRect& aRect) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawRoundRect()
+	 */
+	virtual void DrawRoundRect(const TRect& aRect, const TSize& aCornerSize) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawPolyLine()	
+	@see	SetPenColor()
+	@see	SetPenSize()
+	@see	SetPenStyle()
+	@see	SetDrawMode()
+	 */
+	virtual void DrawPolyLine(const TArray<TPoint>& aPointList) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawPolyLineNoEndPoint()	
+	@see	SetPenColor()
+	@see	SetPenSize()
+	@see	SetPenStyle()
+	@see	SetDrawMode()
+	 */
+	virtual void DrawPolyLineNoEndPoint(const TArray<TPoint>& aPointList) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawPolygon()
+	 */
+	virtual void DrawPolygon(const TArray<TPoint>& aPoints,	DirectGdi::TFillRule aRule) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawArc()
+	@see	DrawPie()
+	 */
+	virtual void DrawArc(const TRect& aRect, const TPoint& aStart, const TPoint& aEnd) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawPie()
+	 */
+	virtual void DrawPie(const TRect& aRect, const TPoint& aStart, const TPoint& aEnd) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawEllipse()
+	 */
+	virtual void DrawEllipse(const TRect& aRect) = 0;
+	
+	/** 
+	@see	CDirectGdiContext::BitBlt(const TPoint&, const CFbsBitmap&, const TRect&)
+	 */
+	virtual void BitBlt(const TPoint& aDestPos, const CFbsBitmap& aBitmap, const TRect& aSourceRect) = 0;
+	
+	/**
+	@see	CDirectGdiContext::BitBltMasked(const TPoint&, const CFbsBitmap&, const TRect&, const CFbsBitmap&, TBool)
+	 */
+	virtual void BitBltMasked(const TPoint& aDestPos,				
+							const CFbsBitmap& aBitmap,
+							const TRect& aSourceRect,				
+							const CFbsBitmap& aMask,
+							TBool aInvertMask) = 0;
+	
+	/**
+	@see	CDirectGdiContext::BitBltMasked(const TPoint&, const CFbsBitmap&, const TRect&, const CFbsBitmap&, const TPoint&)
+	 */
+	virtual void BitBltMasked(const TPoint& aDestPos,			
+							const CFbsBitmap& aBitmap,
+							const TRect& aSourceRect,				
+							const CFbsBitmap& aMask,
+							const TPoint& aMaskPos) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawBitmap(const TRect&, const CFbsBitmap&, const TRect&)
+	 */
+	virtual void DrawBitmap(const TRect& aDestRect, 
+							const CFbsBitmap& aBitmap, 
+							const TRect& aSourceRect) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawBitmapMasked(const TRect&, const CFbsBitmap&, const TRect&, const CFbsBitmap&, TBool)
+	 */
+	virtual void DrawBitmapMasked(const TRect& aDestRect,				
+								const CFbsBitmap& aBitmap,
+								const TRect& aSourceRect,				
+								const CFbsBitmap& aMask,
+								TBool aInvertMask) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawResource(const TPoint&, const RDirectGdiImageSource&, DirectGdi::TGraphicsRotation)
+	 */
+	virtual void DrawResource(const TPoint& aPos, 
+							const RDirectGdiDrawableSource& aSource, 
+							DirectGdi::TGraphicsRotation aRotation) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawResource(const TRect&, const RDirectGdiImageSource&, DirectGdi::TGraphicsRotation)
+	 */
+	virtual void DrawResource(const TRect& aDestRect,
+							const RDirectGdiDrawableSource& aSource,
+							DirectGdi::TGraphicsRotation aRotation) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawResource(const TRect&, const RDirectGdiImageSource&, const TRect&, DirectGdi::TGraphicsRotation)
+	 */
+	virtual void DrawResource(const TRect& aDestRect,				
+							const RDirectGdiDrawableSource& aSource,
+							const TRect& aSourceRect,
+							DirectGdi::TGraphicsRotation aRotation) = 0;
+	
+	/**
+	@see	CDirectGdiContext::DrawResource(const TRect&, const RDirectGdiDrawableSource&, const TDesC8&)
+	 */
+	virtual void DrawResource(const TRect& aDestRect, const RDirectGdiDrawableSource& aSource, const TDesC8& aParam) = 0;
+	
+	/**
+	Draws a glyph.
+	
+	@param	aPos			Position to start drawing the glyph after rotation has been applied (if necessary).
+	@param	aChar			Character being drawn.
+	@param	aGlyphImage		Pointer to the glyph image data.
+	@param	aBitmapType		Type of bitmap format.
+	@param	aGlyphImageSize	Glyph image size.
+	@param	aClipRect		Clipping rect.
+	@param	aRotation		Rotation specifying how the glyph will be drawn.
+	
+	@pre	The rendering target has been activated.
+	@post	Request to draw the glyph has been accepted.
+	 */
+	virtual void DrawGlyph(const TPoint& aPos, 
+						const TChar aChar, 
+						const TUint8* aGlyphImage,
+						const TGlyphBitmapType aBitmapType, 
+						const TSize& aGlyphImageSize, 
+						const TRect& aClipRect,
+						const DirectGdi::TGraphicsRotation aRotation = DirectGdi::EGraphicsRotationNone) = 0;
+	
+	/**
+	Copies the contents of a rectangular area on the target to another location.
+	The source rectangle will be intersected with the full extent of the target.
+	
+	@param	aOffset Offset from the top left corner of the rectangle to be copied to the top left corner of the copy.
+	@param	aRect Area to be copied.
+	
+	@pre 	The rendering target has been activated.
+	@post 	Request to copy an area has been accepted. There is no guarantee that the
+			request has been processed when this method returns.
+	 */
+	virtual void CopyRect(const TPoint& aOffset, const TRect& aRect) = 0;
+	
+	/**
+	Writes the drawing engine object state to the passed write stream.
+	
+	@see    CDirectGdiContext::ExternalizeL()
+	@see	InternalizeL()
+	
+	@param	aWriteStream Write stream.
+
+	@pre	None.
+	@post	The drawing engine object state has been written to the write stream.
+	 */
+	virtual void ExternalizeL(RWriteStream& aWriteStream) = 0;
+	
+	/**
+	Sets the drawing engine object state from the read stream.
+	
+	@see    CDirectGdiContext::InternalizeL()
+	@see	ExternalizeL()
+	 
+	@param	aReadStream Read stream.
+	 
+	@pre	None.
+	@post	The drawing engine object state has been updated with the values from the read stream.
+	 */
+	virtual void InternalizeL(RReadStream& aReadStream) = 0;
+	
+	/**
+	@see CDirectGdiContext::GetInterface()
+	 */
+	virtual TInt GetInterface(TUid aInterfaceId, TAny*& aInterface) = 0;
+	
+	/**
+	Prepares the drawing engine for drawing text as multiple DrawGlyph() commands.
+	This function must always have a corresponding call to EndDrawGlyph() after the multiple 
+	DrawGlyph() commands have been made.
+	Other than DrawGlyph(), no other rendering should be issued to the engine until EndDrawGlyph() has been called.
+	
+	@see EndDrawGlyph()
+	@see DrawGlyph()
+	
+	@pre None.
+	@post None.
+	 */
+	virtual void BeginDrawGlyph() = 0;
+	
+	/**
+	Notifies the drawing engine that the last call to DrawGlyph() has been made for the 
+	text string. This function must always be matched to a corresponding BeginDrawGlyph() call. 
+	Other than DrawGlyph(), no other rendering should be issued to the engine until EndDrawGlyph() has 
+	been called.
+	
+	@see BeginDrawGlyph()
+	@see DrawGlyph()
+	
+	@pre BeginDrawGlyph() has been called.
+	@post None.  
+	 */
+	virtual void EndDrawGlyph() = 0;
+	
+	};
+
+const TUid KDirectGdiEngineUid = {0x10285A72};
+
+
+#endif