My Project
PainterState.h
1 #pragma once
2 #include "Painter.h"
3 #include "PaintEngine.h"
4 #include "qpen.h"
5 #include "qfont.h"
6 #include "qbrush.h"
7 #include "qpainterpath.h"
8 
9 namespace ParaEngine
10 {
13  {
14  public:
15  enum ClipType { RegionClip, PathClip, RectClip, RectFClip };
16  CPainterClipInfo(const QRect &r, ClipOperation op, const QTransform &m) :
17  clipType(RectClip), matrix(m), operation(op), rect(r) { }
18  public:
19  ClipType clipType;
20  QTransform matrix;
21  ClipOperation operation;
22  QRect rect;
23  };
24 
26  {
27  public:
28  CPainterState();
29  CPainterState(const CPainterState *s);
30  virtual ~CPainterState();
31  void init(CPainter *p);
32 
33  public:
35  virtual void SetSpriteTransform(const Matrix4 * pMatrix = NULL);
37  virtual void SetSpriteUseWorldMatrix(bool bEnable){};
38  virtual bool IsSpriteUseWorldMatrix(){ return false; };
39  public:
40  QPen pen() const;
41  QBrush brush() const;
42  QPointF brushOrigin() const;
43  QBrush backgroundBrush() const;
44  QFont font() const;
45  QMatrix matrix() const;
46  QTransform transform() const;
48  Color color();
49 
50  ClipOperation clipOperation() const;
51  QRegion clipRegion() const;
52  QPainterPath clipPath() const;
53  bool isClipEnabled() const;
54 
55  CPainter::CompositionMode compositionMode() const;
56  float opacity() const;
57 
61  void AddPendingAsset(int nCount = 1);
62 
66  void CalculateDeviceMatrix(Matrix4* pOut, const Matrix4* pIn = NULL);
67  public:
68  QPointF m_brushOrigin;
69  QFont m_font;
70  QPen m_pen;
71  QBrush m_brush;
72  QBrush m_bgBrush; // background brush
73  QRegion m_clipRegion;
74  QPainterPath m_clipPath;
75  ClipOperation m_clipOperation;
76  std::vector<CPainterClipInfo> m_clipInfo;
77 
78  QTransform worldMatrix; // World transformation matrix, not window and viewport
79  QTransform m_matrix; // Complete transformation matrix,
82 
83  // viewport rectangle
84  int m_viewportX, m_viewportY, m_viewportWidth, m_viewportHeight;
85  float m_fViewportLeft;
86  float m_fViewportTop;
87  float m_fUIScalingX;
88  float m_fUIScalingY;
89 
90  float m_opacity;
91 
92  bool WxF : 1; // World transformation
93  bool VxF : 1; // View transformation
94  bool m_clipEnabled : 1;
99  CPainter *m_painter;
100  CPainter::CompositionMode m_composition_mode;
101  uint32 changeFlags;
102  };
103 
105  {
106  QFont font;
107  QPen pen;
108  QBrush brush;
109  QTransform transform;
110  };
111 }
currently only RectClip is supported, since we are using Scissor Rect on GPU to do the clipping...
Definition: PainterState.h:12
The QPen class defines how a CPainter should draw lines and outlines of shapes.
Definition: qpen.h:13
Definition: ParaPoint.h:203
Matrix4 matComplete
final complete transform
Definition: PainterState.h:81
different physics engine has different winding order.
Definition: EventBinding.h:32
virtual void SetSpriteUseWorldMatrix(bool bEnable)
set sprite use world matrix.
Definition: PainterState.h:37
when concerting QRect with QRectF and RECT, we ensure that their left, top and width, height are the same.
Definition: ParaRect.h:16
Definition: qfont.h:8
Definition: PainterState.h:25
Definition: qtransform.h:14
The QBrush class defines the fill pattern of shapes drawn by CPainter.
Definition: qbrush.h:11
Class encapsulating a standard 4x4 homogeneous matrix.
Definition: ParaMatrix4.h:23
base class for a surface to paint to.
Definition: Painter.h:38
Definition: PainterState.h:104
int m_nPendingAssetCount
number of texture that is being loaded, but not available at the time of drawing. ...
Definition: PainterState.h:98
Definition: ParaRegion.h:7
Definition: qmatrix.h:12
painter state, such as selected pen, brush, etc.
Definition: PaintEngine.h:178
Definition: ParaColor.h:275
Definition: qpainterpath.h:18