--- /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