My Project
Public Types | Public Member Functions | Protected Attributes | Friends | List of all members
ParaEngine::CPaintEngine Class Referenceabstract

The CPaintEngine class provides an abstract definition of how CPainter draws to a given device on a given platform. More...

#include <PaintEngine.h>

Inheritance diagram for ParaEngine::CPaintEngine:
ParaEngine::CPaintEngineGPU ParaEngine::CPaintEngineRaster

Public Types

enum  DirtyFlags {
  DirtyPen = 0x0001, DirtyBrush = 0x0002, DirtyBrushOrigin = 0x0004, DirtyFont = 0x0008,
  DirtyBackground = 0x0010, DirtyBackgroundMode = 0x0020, DirtyTransform = 0x0040, DirtyClipRegion = 0x0080,
  DirtyClipPath = 0x0100, DirtyHints = 0x0200, DirtyCompositionMode = 0x0400, DirtyClipEnabled = 0x0800,
  DirtyOpacity = 0x1000, AllDirty = 0xffff
}
 
enum  PolygonDrawMode { OddEvenMode, WindingMode, ConvexMode, PolylineMode }
 

Public Member Functions

virtual CPainterState * createState (CPainterState *orig) const
 
virtual void setState (CPainterState *s)
 
CPainterState * GetState ()
 
const CPainterState * GetState () const
 
bool isActive () const
 
void setActive (bool newState)
 
virtual bool begin (CPaintDevice *pdev)=0
 
virtual bool end ()=0
 
virtual void Flush ()
 
virtual void ApplyStateChanges ()
 
virtual void updateState (const CPaintEngineState &state)=0
 
virtual void drawRects (const QRect *rects, int rectCount)
 
virtual void drawRects (const QRectF *rects, int rectCount)
 
virtual void drawLines (const QLine *lines, int lineCount)
 
virtual void drawLines (const QLineF *lines, int lineCount)
 
virtual void drawLines (const Vector3 *vertices, int lineCount)
 
virtual void drawEllipse (const QRectF &r)
 
virtual void drawEllipse (const QRect &r)
 
virtual void drawTriangles (const Vector3 *vertices, int nTriangleCount)
 
virtual void drawPath (const CPainterPath &path)
 
virtual void drawPoints (const QPointF *points, int pointCount)
 
virtual void drawPoints (const QPoint *points, int pointCount)
 
virtual void drawPolygon (const QPointF *points, int pointCount, PolygonDrawMode mode)
 
virtual void drawPolygon (const QPoint *points, int pointCount, PolygonDrawMode mode)
 
virtual void drawPixmap (const QRectF &r, const TextureEntity &pm, const QRectF &sr)=0
 
virtual void drawTextItem (const QPointF &p, const CTextItem &textItem)
 
virtual void drawImage (const QRectF &r, const ImageEntity &pm, const QRectF &sr)
 
void setPaintDevice (CPaintDevice *device)
 
CPaintDevice * paintDevice () const
 
void setSystemClip (const QRegion &baseClip)
 
QRegion systemClip () const
 
void setSystemRect (const QRect &rect)
 
QRect systemRect () const
 
virtual QPoint coordinateOffset () const
 
bool testDirty (DirtyFlags df)
 
void setDirty (DirtyFlags df)
 
void clearDirty (DirtyFlags df)
 
CPainter * painter () const
 
virtual bool IsScissorRectSupported () const
 
virtual bool IsStencilSupported () const
 
virtual void clip (const QRect &rect, ClipOperation op=ReplaceClip)
 
virtual void SetUse3DTransform (bool bUse3DSpaceTransform)
 by default, transforms are in 2d screen space. More...
 
virtual bool IsUse3DTransform ()
 return false by default. More...
 
virtual HRESULT DrawRect (const RECT *rect, Color color, float depth)
 
virtual HRESULT DrawQuad (TextureEntity *pTexture, const RECT *pSrcRect, const Vector3 *vCenter, const Vector3 *pPosition, Color c)
 
virtual HRESULT drawText (SpriteFontEntity *pFont, const char *strText, int nCount, RECT *rect, DWORD dwTextFormat, DWORD textColor)
 
virtual HRESULT drawText (SpriteFontEntity *pFont, const char16_t *strText, int nCount, RECT *rect, DWORD dwTextFormat, DWORD textColor)
 

Protected Attributes

CPaintDevice * pdev
 
CPaintEngineState * state
 
bool active: 1
 
bool selfDestruct: 1
 
bool hasSystemTransform: 1
 
bool hasSystemViewport: 1
 
QRegion m_systemClip
 
QRect m_systemRect
 
QRegion systemViewport
 
QTransform systemTransform
 
CPaintDevice * currentClipDevice
 

Friends

class CPainter
 

Detailed Description

The CPaintEngine class provides an abstract definition of how CPainter draws to a given device on a given platform.

If one wants to use CPainter to draw to a different backend, one must subclass CPaintEngine and reimplement all its virtual functions. The CPaintEngine implementation is then made available by subclassing QPaintDevice and reimplementing the virtual function CPaintDevice::paintEngine().

QPaintEngine is created and owned by the QPaintDevice that created it.

Note
: CPaintEngine is hidden from end users. The end user only needs to use CPainter to draw on a paint device.

Member Function Documentation

§ IsUse3DTransform()

virtual bool ParaEngine::CPaintEngine::IsUse3DTransform ( )
inlinevirtual

return false by default.

Reimplemented in ParaEngine::CPaintEngineGPU.

§ SetUse3DTransform()

virtual void ParaEngine::CPaintEngine::SetUse3DTransform ( bool  bUse3DSpaceTransform)
inlinevirtual

by default, transforms are in 2d screen space.

However, we can also specify using 3d transform, such as when rendering GUI onto 3D scenes

Reimplemented in ParaEngine::CPaintEngineGPU.


The documentation for this class was generated from the following files: