54#if QT_CONFIG(quick_sprite)
60 QSGSoftwareRenderableNode(NodeType type, QSGNode *node);
61 ~QSGSoftwareRenderableNode();
65 QRegion renderNode(QPainter *painter,
bool forceOpaquePainting =
false);
66 QRect boundingRectMin()
const {
return m_boundingRectMin; }
67 QRect boundingRectMax()
const {
return m_boundingRectMax; }
68 NodeType type()
const {
return m_nodeType; }
69 bool isOpaque()
const {
return m_isOpaque; }
70 bool isDirty()
const {
return m_isDirty; }
71 bool isDirtyRegionEmpty()
const;
72 QSGNode *handle()
const {
return m_handle.node; }
74 void setTransform(
const QTransform &transform);
75 void setClipRegion(
const QRegion &clipRegion,
bool hasClipRegion =
true);
76 void setOpacity(
float opacity);
77 QTransform transform()
const {
return m_transform; }
78 QRegion clipRegion()
const {
return m_clipRegion; }
79 float opacity()
const {
return m_opacity; }
81 void markGeometryDirty();
82 void markMaterialDirty();
84 void addDirtyRegion(
const QRegion &dirtyRegion,
bool forceDirty =
true);
85 void subtractDirtyRegion(
const QRegion &dirtyRegion);
87 QRegion previousDirtyRegion(
bool wasRemoved =
false)
const;
88 QRegion dirtyRegion()
const;
91 union RenderableNodeHandle {
93 QSGSimpleRectNode *simpleRectNode;
94 QSGSimpleTextureNode *simpleTextureNode;
95 QSGSoftwareInternalImageNode *imageNode;
96 QSGSoftwarePainterNode *painterNode;
97 QSGSoftwareInternalRectangleNode *rectangleNode;
98 QSGSoftwareGlyphNode *glpyhNode;
99 QSGSoftwareNinePatchNode *ninePatchNode;
100 QSGRectangleNode *simpleRectangleNode;
101 QSGImageNode *simpleImageNode;
102 QSGSoftwareSpriteNode *spriteNode;
103 QSGRenderNode *renderNode;
106 const NodeType m_nodeType;
107 RenderableNodeHandle m_handle;
112 QRegion m_dirtyRegion;
113 QRegion m_previousDirtyRegion;
115 QTransform m_transform;
116 QRegion m_clipRegion;
117 bool m_hasClipRegion;
120 QRect m_boundingRectMin;
121 QRect m_boundingRectMax;