Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Toggle main menu visibility
Loading...
Searching...
No Matches
qsgsoftwarerenderablenodeupdater_p.h
Go to the documentation of this file.
1
// Copyright (C) 2016 The Qt Company Ltd.
2
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
// Qt-Security score:significant reason:default
4
5
#
ifndef
QSGSOFTWARERENDERABLENODEUPDATER_H
6
#
define
QSGSOFTWARERENDERABLENODEUPDATER_H
7
8
//
9
// W A R N I N G
10
// -------------
11
//
12
// This file is not part of the Qt API. It exists purely as an
13
// implementation detail. This header file may change from version to
14
// version without notice, or even be removed.
15
//
16
// We mean it.
17
//
18
19
#
include
"qsgsoftwarerenderablenode_p.h"
20
#
include
"qsgabstractsoftwarerenderer_p.h"
21
22
#
include
<
private
/
qsgadaptationlayer_p
.
h
>
23
24
#
include
<
QTransform
>
25
#
include
<
QStack
>
26
#
include
<
QRectF
>
27
28
QT_BEGIN_NAMESPACE
29
30
class
QSGSoftwareRenderableNodeUpdater
:
public
QSGNodeVisitorEx
31
{
32
public
:
33
QSGSoftwareRenderableNodeUpdater
(QSGAbstractSoftwareRenderer *renderer);
34
virtual
~
QSGSoftwareRenderableNodeUpdater
();
35
36
bool
visit
(QSGTransformNode *)
override
;
37
void
endVisit
(QSGTransformNode *)
override
;
38
bool
visit
(QSGClipNode *)
override
;
39
void
endVisit
(QSGClipNode *)
override
;
40
bool
visit
(QSGGeometryNode *)
override
;
41
void
endVisit
(QSGGeometryNode *)
override
;
42
bool
visit
(QSGOpacityNode *)
override
;
43
void
endVisit
(QSGOpacityNode *)
override
;
44
bool
visit
(QSGInternalImageNode *)
override
;
45
void
endVisit
(QSGInternalImageNode *)
override
;
46
bool
visit
(QSGPainterNode *)
override
;
47
void
endVisit
(QSGPainterNode *)
override
;
48
bool
visit
(QSGInternalRectangleNode *)
override
;
49
void
endVisit
(QSGInternalRectangleNode *)
override
;
50
bool
visit
(QSGGlyphNode *)
override
;
51
void
endVisit
(QSGGlyphNode *)
override
;
52
bool
visit
(QSGRootNode *)
override
;
53
void
endVisit
(QSGRootNode *)
override
;
54
#
if
QT_CONFIG
(
quick_sprite
)
55
bool
visit
(
QSGSpriteNode
*)
override
;
56
void
endVisit
(
QSGSpriteNode
*)
override
;
57
#
endif
58
bool
visit
(QSGRenderNode *)
override
;
59
void
endVisit
(QSGRenderNode *)
override
;
60
61
void
updateNodes
(QSGNode *node,
bool
isNodeRemoved =
false
);
62
63
private
:
64
struct
NodeState {
65
float
opacity;
66
QRegion clip;
67
bool
hasClip;
68
QTransform transform;
69
QSGNode *parent;
70
};
71
72
NodeState currentState(QSGNode *node)
const
;
73
74
template
<
class
NODE>
75
bool
updateRenderableNode(QSGSoftwareRenderableNode::NodeType type, NODE *node);
76
77
QSGAbstractSoftwareRenderer *m_renderer;
78
QStack<
float
> m_opacityState;
79
QStack<QRegion> m_clipState;
80
bool
m_hasClip;
81
QStack<QTransform> m_transformState;
82
QHash<QSGNode*,NodeState> m_stateMap;
83
};
84
85
template
<
class
NODE>
86
bool
QSGSoftwareRenderableNodeUpdater
::updateRenderableNode(QSGSoftwareRenderableNode::NodeType type, NODE *node)
87
{
88
//Check if we already know about node
89
auto
renderableNode = m_renderer->renderableNode(node);
90
if
(renderableNode ==
nullptr
) {
91
renderableNode =
new
QSGSoftwareRenderableNode(type, node);
92
m_renderer->addNodeMapping(node, renderableNode);
93
}
94
95
//Update the node
96
renderableNode->setTransform(m_transformState.top());
97
renderableNode->setOpacity(m_opacityState.top());
98
renderableNode->setClipRegion(m_clipState.top(), m_hasClip);
99
100
renderableNode->update();
101
m_stateMap[node] = currentState(node);
102
103
return
true
;
104
}
105
106
QT_END_NAMESPACE
107
108
#
endif
// QSGSOFTWARERENDERABLENODEUPDATER_H
QSGAbstractSoftwareRenderer
Definition
qsgabstractsoftwarerenderer_p.h:31
QSGSoftwareRenderableNodeUpdater
Definition
qsgsoftwarerenderablenodeupdater_p.h:31
QSGSoftwareRenderableNodeUpdater::QSGSoftwareRenderableNodeUpdater
QSGSoftwareRenderableNodeUpdater(QSGAbstractSoftwareRenderer *renderer)
Definition
qsgsoftwarerenderablenodeupdater.cpp:21
QSGSoftwareRenderableNodeUpdater::endVisit
void endVisit(QSGTransformNode *) override
Definition
qsgsoftwarerenderablenodeupdater.cpp:46
QSGSoftwareRenderableNodeUpdater::endVisit
void endVisit(QSGRenderNode *) override
Definition
qsgsoftwarerenderablenodeupdater.cpp:170
QSGSoftwareRenderableNodeUpdater::~QSGSoftwareRenderableNodeUpdater
virtual ~QSGSoftwareRenderableNodeUpdater()
Definition
qsgsoftwarerenderablenodeupdater.cpp:31
QSGSoftwareRenderableNodeUpdater::visit
bool visit(QSGRenderNode *) override
Definition
qsgsoftwarerenderablenodeupdater.cpp:165
QSGSoftwareRenderableNodeUpdater::visit
bool visit(QSGTransformNode *) override
Definition
qsgsoftwarerenderablenodeupdater.cpp:36
QSGSoftwareRenderableNodeUpdater::updateNodes
void updateNodes(QSGNode *node, bool isNodeRemoved=false)
Definition
qsgsoftwarerenderablenodeupdater.cpp:174
QT_BEGIN_NAMESPACE
Combined button and popup list for selecting options.
Definition
qsequentialanimationgroup.cpp:47
Q_STATIC_LOGGING_CATEGORY
QT_BEGIN_NAMESPACE Q_STATIC_LOGGING_CATEGORY(lcSynthesizedIterableAccess, "qt.iterable.synthesized", QtWarningMsg)
qtdeclarative
src
quick
scenegraph
adaptations
software
qsgsoftwarerenderablenodeupdater_p.h
Generated on
for Qt by
1.18.0