4#ifndef QSGSOFTWARERENDERABLENODEUPDATER_H
5#define QSGSOFTWARERENDERABLENODEUPDATER_H
21#include <private/qsgadaptationlayer_p.h>
35 bool visit(QSGTransformNode *)
override;
36 void endVisit(QSGTransformNode *)
override;
37 bool visit(QSGClipNode *)
override;
38 void endVisit(QSGClipNode *)
override;
39 bool visit(QSGGeometryNode *)
override;
40 void endVisit(QSGGeometryNode *)
override;
41 bool visit(QSGOpacityNode *)
override;
42 void endVisit(QSGOpacityNode *)
override;
43 bool visit(QSGInternalImageNode *)
override;
44 void endVisit(QSGInternalImageNode *)
override;
45 bool visit(QSGPainterNode *)
override;
46 void endVisit(QSGPainterNode *)
override;
47 bool visit(QSGInternalRectangleNode *)
override;
48 void endVisit(QSGInternalRectangleNode *)
override;
49 bool visit(QSGGlyphNode *)
override;
50 void endVisit(QSGGlyphNode *)
override;
51 bool visit(QSGRootNode *)
override;
52 void endVisit(QSGRootNode *)
override;
53#if QT_CONFIG(quick_sprite)
60 void updateNodes(QSGNode *node,
bool isNodeRemoved =
false);
71 NodeState currentState(QSGNode *node)
const;
74 bool updateRenderableNode(QSGSoftwareRenderableNode::NodeType type, NODE *node);
76 QSGAbstractSoftwareRenderer *m_renderer;
77 QStack<
float> m_opacityState;
78 QStack<QRegion> m_clipState;
80 QStack<QTransform> m_transformState;
81 QHash<QSGNode*,NodeState> m_stateMap;
88 auto renderableNode = m_renderer->renderableNode(node);
89 if (renderableNode ==
nullptr) {
90 renderableNode =
new QSGSoftwareRenderableNode(type, node);
91 m_renderer->addNodeMapping(node, renderableNode);
95 renderableNode->setTransform(m_transformState.top());
96 renderableNode->setOpacity(m_opacityState.top());
97 renderableNode->setClipRegion(m_clipState.top(), m_hasClip);
99 renderableNode->update();
100 m_stateMap[node] = currentState(node);
QSGSoftwareRenderableNodeUpdater(QSGAbstractSoftwareRenderer *renderer)
void endVisit(QSGTransformNode *) override
void endVisit(QSGRenderNode *) override
virtual ~QSGSoftwareRenderableNodeUpdater()
bool visit(QSGRenderNode *) override
bool visit(QSGTransformNode *) override
void updateNodes(QSGNode *node, bool isNodeRemoved=false)
Q_STATIC_LOGGING_CATEGORY(lcAccessibilityCore, "qt.accessibility.core")