Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/scenegraph/adaptations/software/qsgsoftwarerenderablenodeupdater.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||
2 | - | |||||||||||||||||||
3 | - | |||||||||||||||||||
4 | - | |||||||||||||||||||
5 | - | |||||||||||||||||||
6 | - | |||||||||||||||||||
7 | QSGSoftwareRenderableNodeUpdater::QSGSoftwareRenderableNodeUpdater(QSGAbstractSoftwareRenderer *renderer) | - | ||||||||||||||||||
8 | : m_renderer(renderer) | - | ||||||||||||||||||
9 | { | - | ||||||||||||||||||
10 | m_opacityState.push(1.0f); | - | ||||||||||||||||||
11 | - | |||||||||||||||||||
12 | m_clipState.push(QRegion()); | - | ||||||||||||||||||
13 | m_hasClip = false; | - | ||||||||||||||||||
14 | m_transformState.push(QTransform()); | - | ||||||||||||||||||
15 | } executed 8 times by 1 test: end of block Executed by:
| 8 | ||||||||||||||||||
16 | - | |||||||||||||||||||
17 | QSGSoftwareRenderableNodeUpdater::~QSGSoftwareRenderableNodeUpdater() | - | ||||||||||||||||||
18 | { | - | ||||||||||||||||||
19 | - | |||||||||||||||||||
20 | } | - | ||||||||||||||||||
21 | - | |||||||||||||||||||
22 | bool QSGSoftwareRenderableNodeUpdater::visit(QSGTransformNode *node) | - | ||||||||||||||||||
23 | { | - | ||||||||||||||||||
24 | m_transformState.push(node->matrix().toTransform() * m_transformState.top()); | - | ||||||||||||||||||
25 | m_stateMap[node] = currentState(node); | - | ||||||||||||||||||
26 | return executed 40 times by 1 test: true;return true; Executed by:
executed 40 times by 1 test: return true; Executed by:
| 40 | ||||||||||||||||||
27 | } | - | ||||||||||||||||||
28 | - | |||||||||||||||||||
29 | void QSGSoftwareRenderableNodeUpdater::endVisit(QSGTransformNode *) | - | ||||||||||||||||||
30 | { | - | ||||||||||||||||||
31 | m_transformState.pop(); | - | ||||||||||||||||||
32 | } executed 40 times by 1 test: end of block Executed by:
| 40 | ||||||||||||||||||
33 | - | |||||||||||||||||||
34 | bool QSGSoftwareRenderableNodeUpdater::visit(QSGClipNode *node) | - | ||||||||||||||||||
35 | { | - | ||||||||||||||||||
36 | - | |||||||||||||||||||
37 | if (m_clipState.count() == 0
| 0 | ||||||||||||||||||
38 | m_clipState.push(m_transformState.top().map(QRegion(node->clipRect().toRect()))); | - | ||||||||||||||||||
39 | m_hasClip = true; | - | ||||||||||||||||||
40 | } never executed: else {end of block | 0 | ||||||||||||||||||
41 | const QRegion transformedClipRect = m_transformState.top().map(QRegion(node->clipRect().toRect())); | - | ||||||||||||||||||
42 | m_clipState.push(transformedClipRect.intersected(m_clipState.top())); | - | ||||||||||||||||||
43 | } never executed: end of block | 0 | ||||||||||||||||||
44 | m_stateMap[node] = currentState(node); | - | ||||||||||||||||||
45 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||
46 | } | - | ||||||||||||||||||
47 | - | |||||||||||||||||||
48 | void QSGSoftwareRenderableNodeUpdater::endVisit(QSGClipNode *) | - | ||||||||||||||||||
49 | { | - | ||||||||||||||||||
50 | m_clipState.pop(); | - | ||||||||||||||||||
51 | if (m_clipState.count() == 0
| 0 | ||||||||||||||||||
52 | m_hasClip = false; never executed: m_hasClip = false; | 0 | ||||||||||||||||||
53 | } never executed: end of block | 0 | ||||||||||||||||||
54 | - | |||||||||||||||||||
55 | bool QSGSoftwareRenderableNodeUpdater::visit(QSGGeometryNode *node) | - | ||||||||||||||||||
56 | { | - | ||||||||||||||||||
57 | if (QSGSimpleRectNode *rectNode = dynamic_cast<QSGSimpleRectNode *>(node)
| 0 | ||||||||||||||||||
58 | return never executed: updateRenderableNode(QSGSoftwareRenderableNode::SimpleRect, rectNode);return updateRenderableNode(QSGSoftwareRenderableNode::SimpleRect, rectNode); never executed: return updateRenderableNode(QSGSoftwareRenderableNode::SimpleRect, rectNode); | 0 | ||||||||||||||||||
59 | } else if (QSGSimpleTextureNode *tn = dynamic_cast<QSGSimpleTextureNode *>(node)
| 0 | ||||||||||||||||||
60 | return never executed: updateRenderableNode(QSGSoftwareRenderableNode::SimpleTexture, tn);return updateRenderableNode(QSGSoftwareRenderableNode::SimpleTexture, tn); never executed: return updateRenderableNode(QSGSoftwareRenderableNode::SimpleTexture, tn); | 0 | ||||||||||||||||||
61 | } else if (QSGNinePatchNode *nn = dynamic_cast<QSGNinePatchNode *>(node)
| 0 | ||||||||||||||||||
62 | return never executed: updateRenderableNode(QSGSoftwareRenderableNode::NinePatch, nn);return updateRenderableNode(QSGSoftwareRenderableNode::NinePatch, nn); never executed: return updateRenderableNode(QSGSoftwareRenderableNode::NinePatch, nn); | 0 | ||||||||||||||||||
63 | } else if (QSGRectangleNode *rn = dynamic_cast<QSGRectangleNode *>(node)
| 0 | ||||||||||||||||||
64 | return never executed: updateRenderableNode(QSGSoftwareRenderableNode::SimpleRectangle, rn);return updateRenderableNode(QSGSoftwareRenderableNode::SimpleRectangle, rn); never executed: return updateRenderableNode(QSGSoftwareRenderableNode::SimpleRectangle, rn); | 0 | ||||||||||||||||||
65 | } else if (QSGImageNode *n = dynamic_cast<QSGImageNode *>(node)
| 0 | ||||||||||||||||||
66 | return never executed: updateRenderableNode(QSGSoftwareRenderableNode::SimpleImage, n);return updateRenderableNode(QSGSoftwareRenderableNode::SimpleImage, n); never executed: return updateRenderableNode(QSGSoftwareRenderableNode::SimpleImage, n); | 0 | ||||||||||||||||||
67 | } else { | - | ||||||||||||||||||
68 | - | |||||||||||||||||||
69 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||
70 | } | - | ||||||||||||||||||
71 | } | - | ||||||||||||||||||
72 | - | |||||||||||||||||||
73 | void QSGSoftwareRenderableNodeUpdater::endVisit(QSGGeometryNode *) | - | ||||||||||||||||||
74 | { | - | ||||||||||||||||||
75 | } | - | ||||||||||||||||||
76 | - | |||||||||||||||||||
77 | bool QSGSoftwareRenderableNodeUpdater::visit(QSGOpacityNode *node) | - | ||||||||||||||||||
78 | { | - | ||||||||||||||||||
79 | m_opacityState.push(m_opacityState.top() * node->opacity()); | - | ||||||||||||||||||
80 | m_stateMap[node] = currentState(node); | - | ||||||||||||||||||
81 | return never executed: true;return true; never executed: return true; | 0 | ||||||||||||||||||
82 | } | - | ||||||||||||||||||
83 | - | |||||||||||||||||||
84 | void QSGSoftwareRenderableNodeUpdater::endVisit(QSGOpacityNode *) | - | ||||||||||||||||||
85 | { | - | ||||||||||||||||||
86 | m_opacityState.pop(); | - | ||||||||||||||||||
87 | } never executed: end of block | 0 | ||||||||||||||||||
88 | - | |||||||||||||||||||
89 | bool QSGSoftwareRenderableNodeUpdater::visit(QSGInternalImageNode *node) | - | ||||||||||||||||||
90 | { | - | ||||||||||||||||||
91 | return never executed: updateRenderableNode(QSGSoftwareRenderableNode::Image, node);return updateRenderableNode(QSGSoftwareRenderableNode::Image, node); never executed: return updateRenderableNode(QSGSoftwareRenderableNode::Image, node); | 0 | ||||||||||||||||||
92 | } | - | ||||||||||||||||||
93 | - | |||||||||||||||||||
94 | void QSGSoftwareRenderableNodeUpdater::endVisit(QSGInternalImageNode *) | - | ||||||||||||||||||
95 | { | - | ||||||||||||||||||
96 | } | - | ||||||||||||||||||
97 | - | |||||||||||||||||||
98 | bool QSGSoftwareRenderableNodeUpdater::visit(QSGPainterNode *node) | - | ||||||||||||||||||
99 | { | - | ||||||||||||||||||
100 | return never executed: updateRenderableNode(QSGSoftwareRenderableNode::Painter, node);return updateRenderableNode(QSGSoftwareRenderableNode::Painter, node); never executed: return updateRenderableNode(QSGSoftwareRenderableNode::Painter, node); | 0 | ||||||||||||||||||
101 | } | - | ||||||||||||||||||
102 | - | |||||||||||||||||||
103 | void QSGSoftwareRenderableNodeUpdater::endVisit(QSGPainterNode *) | - | ||||||||||||||||||
104 | { | - | ||||||||||||||||||
105 | } | - | ||||||||||||||||||
106 | - | |||||||||||||||||||
107 | bool QSGSoftwareRenderableNodeUpdater::visit(QSGInternalRectangleNode *node) | - | ||||||||||||||||||
108 | { | - | ||||||||||||||||||
109 | return never executed: updateRenderableNode(QSGSoftwareRenderableNode::Rectangle, node);return updateRenderableNode(QSGSoftwareRenderableNode::Rectangle, node); never executed: return updateRenderableNode(QSGSoftwareRenderableNode::Rectangle, node); | 0 | ||||||||||||||||||
110 | } | - | ||||||||||||||||||
111 | - | |||||||||||||||||||
112 | void QSGSoftwareRenderableNodeUpdater::endVisit(QSGInternalRectangleNode *) | - | ||||||||||||||||||
113 | { | - | ||||||||||||||||||
114 | } | - | ||||||||||||||||||
115 | - | |||||||||||||||||||
116 | bool QSGSoftwareRenderableNodeUpdater::visit(QSGGlyphNode *node) | - | ||||||||||||||||||
117 | { | - | ||||||||||||||||||
118 | return never executed: updateRenderableNode(QSGSoftwareRenderableNode::Glyph, node);return updateRenderableNode(QSGSoftwareRenderableNode::Glyph, node); never executed: return updateRenderableNode(QSGSoftwareRenderableNode::Glyph, node); | 0 | ||||||||||||||||||
119 | } | - | ||||||||||||||||||
120 | - | |||||||||||||||||||
121 | void QSGSoftwareRenderableNodeUpdater::endVisit(QSGGlyphNode *) | - | ||||||||||||||||||
122 | { | - | ||||||||||||||||||
123 | } | - | ||||||||||||||||||
124 | - | |||||||||||||||||||
125 | bool QSGSoftwareRenderableNodeUpdater::visit(QSGRootNode *node) | - | ||||||||||||||||||
126 | { | - | ||||||||||||||||||
127 | m_stateMap[node] = currentState(node); | - | ||||||||||||||||||
128 | return executed 8 times by 1 test: true;return true; Executed by:
executed 8 times by 1 test: return true; Executed by:
| 8 | ||||||||||||||||||
129 | } | - | ||||||||||||||||||
130 | - | |||||||||||||||||||
131 | void QSGSoftwareRenderableNodeUpdater::endVisit(QSGRootNode *) | - | ||||||||||||||||||
132 | { | - | ||||||||||||||||||
133 | } | - | ||||||||||||||||||
134 | - | |||||||||||||||||||
135 | - | |||||||||||||||||||
136 | bool QSGSoftwareRenderableNodeUpdater::visit(QSGSpriteNode *node) | - | ||||||||||||||||||
137 | { | - | ||||||||||||||||||
138 | return never executed: updateRenderableNode(QSGSoftwareRenderableNode::SpriteNode, node);return updateRenderableNode(QSGSoftwareRenderableNode::SpriteNode, node); never executed: return updateRenderableNode(QSGSoftwareRenderableNode::SpriteNode, node); | 0 | ||||||||||||||||||
139 | } | - | ||||||||||||||||||
140 | - | |||||||||||||||||||
141 | void QSGSoftwareRenderableNodeUpdater::endVisit(QSGSpriteNode *) | - | ||||||||||||||||||
142 | { | - | ||||||||||||||||||
143 | - | |||||||||||||||||||
144 | } | - | ||||||||||||||||||
145 | - | |||||||||||||||||||
146 | - | |||||||||||||||||||
147 | bool QSGSoftwareRenderableNodeUpdater::visit(QSGRenderNode *node) | - | ||||||||||||||||||
148 | { | - | ||||||||||||||||||
149 | return executed 8 times by 1 test: updateRenderableNode(QSGSoftwareRenderableNode::RenderNode, node);return updateRenderableNode(QSGSoftwareRenderableNode::RenderNode, node); Executed by:
executed 8 times by 1 test: return updateRenderableNode(QSGSoftwareRenderableNode::RenderNode, node); Executed by:
| 8 | ||||||||||||||||||
150 | } | - | ||||||||||||||||||
151 | - | |||||||||||||||||||
152 | void QSGSoftwareRenderableNodeUpdater::endVisit(QSGRenderNode *) | - | ||||||||||||||||||
153 | { | - | ||||||||||||||||||
154 | } | - | ||||||||||||||||||
155 | - | |||||||||||||||||||
156 | void QSGSoftwareRenderableNodeUpdater::updateNodes(QSGNode *node, bool isNodeRemoved) | - | ||||||||||||||||||
157 | { | - | ||||||||||||||||||
158 | m_opacityState.clear(); | - | ||||||||||||||||||
159 | m_clipState.clear(); | - | ||||||||||||||||||
160 | m_transformState.clear(); | - | ||||||||||||||||||
161 | - | |||||||||||||||||||
162 | auto parentNode = node->parent(); | - | ||||||||||||||||||
163 | - | |||||||||||||||||||
164 | - | |||||||||||||||||||
165 | if ((!parentNode
| 8-72 | ||||||||||||||||||
166 | parentNode = m_stateMap[node].parent; executed 40 times by 1 test: parentNode = m_stateMap[node].parent; Executed by:
| 40 | ||||||||||||||||||
167 | - | |||||||||||||||||||
168 | - | |||||||||||||||||||
169 | if (parentNode
| 0-72 | ||||||||||||||||||
170 | auto state = m_stateMap[parentNode]; | - | ||||||||||||||||||
171 | m_opacityState.push(state.opacity); | - | ||||||||||||||||||
172 | m_transformState.push(state.transform); | - | ||||||||||||||||||
173 | m_clipState.push(state.clip); | - | ||||||||||||||||||
174 | m_hasClip = state.hasClip; | - | ||||||||||||||||||
175 | } executed 72 times by 1 test: else {end of block Executed by:
| 72 | ||||||||||||||||||
176 | - | |||||||||||||||||||
177 | m_opacityState.push(1.0f); | - | ||||||||||||||||||
178 | m_transformState.push(QTransform()); | - | ||||||||||||||||||
179 | m_clipState.push(QRegion()); | - | ||||||||||||||||||
180 | m_hasClip = false; | - | ||||||||||||||||||
181 | } executed 16 times by 1 test: end of block Executed by:
| 16 | ||||||||||||||||||
182 | - | |||||||||||||||||||
183 | - | |||||||||||||||||||
184 | - | |||||||||||||||||||
185 | if (isNodeRemoved
| 40-48 | ||||||||||||||||||
186 | m_stateMap.remove(node); | - | ||||||||||||||||||
187 | return; executed 40 times by 1 test: return; Executed by:
| 40 | ||||||||||||||||||
188 | } | - | ||||||||||||||||||
189 | - | |||||||||||||||||||
190 | - | |||||||||||||||||||
191 | switch (node->type()) { | - | ||||||||||||||||||
192 | case never executed: QSGNode::ClipNodeType:case QSGNode::ClipNodeType: never executed: {case QSGNode::ClipNodeType: | 0 | ||||||||||||||||||
193 | QSGClipNode *c = static_cast<QSGClipNode*>(node); | - | ||||||||||||||||||
194 | if (visit(c)
| 0 | ||||||||||||||||||
195 | visitChildren(c); never executed: visitChildren(c); | 0 | ||||||||||||||||||
196 | endVisit(c); | - | ||||||||||||||||||
197 | break; never executed: break; | 0 | ||||||||||||||||||
198 | } | - | ||||||||||||||||||
199 | case executed 32 times by 1 test: QSGNode::TransformNodeType:case QSGNode::TransformNodeType: Executed by:
executed 32 times by 1 test: {case QSGNode::TransformNodeType: Executed by:
| 32 | ||||||||||||||||||
200 | QSGTransformNode *c = static_cast<QSGTransformNode*>(node); | - | ||||||||||||||||||
201 | if (visit(c)
| 0-32 | ||||||||||||||||||
202 | visitChildren(c); executed 32 times by 1 test: visitChildren(c); Executed by:
| 32 | ||||||||||||||||||
203 | endVisit(c); | - | ||||||||||||||||||
204 | break; executed 32 times by 1 test: break; Executed by:
| 32 | ||||||||||||||||||
205 | } | - | ||||||||||||||||||
206 | case never executed: QSGNode::OpacityNodeType:case QSGNode::OpacityNodeType: never executed: {case QSGNode::OpacityNodeType: | 0 | ||||||||||||||||||
207 | QSGOpacityNode *c = static_cast<QSGOpacityNode*>(node); | - | ||||||||||||||||||
208 | if (visit(c)
| 0 | ||||||||||||||||||
209 | visitChildren(c); never executed: visitChildren(c); | 0 | ||||||||||||||||||
210 | endVisit(c); | - | ||||||||||||||||||
211 | break; never executed: break; | 0 | ||||||||||||||||||
212 | } | - | ||||||||||||||||||
213 | case never executed: QSGNode::GeometryNodeType:case QSGNode::GeometryNodeType: never executed: {case QSGNode::GeometryNodeType: | 0 | ||||||||||||||||||
214 | if (node->flags() & QSGNode::IsVisitableNode
| 0 | ||||||||||||||||||
215 | QSGVisitableNode *v = static_cast<QSGVisitableNode*>(node); | - | ||||||||||||||||||
216 | v->accept(this); | - | ||||||||||||||||||
217 | } never executed: else {end of block | 0 | ||||||||||||||||||
218 | QSGGeometryNode *c = static_cast<QSGGeometryNode*>(node); | - | ||||||||||||||||||
219 | if (visit(c)
| 0 | ||||||||||||||||||
220 | visitChildren(c); never executed: visitChildren(c); | 0 | ||||||||||||||||||
221 | endVisit(c); | - | ||||||||||||||||||
222 | } never executed: end of block | 0 | ||||||||||||||||||
223 | break; never executed: break; | 0 | ||||||||||||||||||
224 | } | - | ||||||||||||||||||
225 | case executed 8 times by 1 test: QSGNode::RootNodeType:case QSGNode::RootNodeType: Executed by:
executed 8 times by 1 test: {case QSGNode::RootNodeType: Executed by:
| 8 | ||||||||||||||||||
226 | QSGRootNode *root = static_cast<QSGRootNode*>(node); | - | ||||||||||||||||||
227 | if (visit(root)
| 0-8 | ||||||||||||||||||
228 | visitChildren(root); executed 8 times by 1 test: visitChildren(root); Executed by:
| 8 | ||||||||||||||||||
229 | endVisit(root); | - | ||||||||||||||||||
230 | break; executed 8 times by 1 test: break; Executed by:
| 8 | ||||||||||||||||||
231 | } | - | ||||||||||||||||||
232 | case never executed: QSGNode::BasicNodeType:case QSGNode::BasicNodeType: never executed: {case QSGNode::BasicNodeType: | 0 | ||||||||||||||||||
233 | visitChildren(node); | - | ||||||||||||||||||
234 | break; never executed: break; | 0 | ||||||||||||||||||
235 | } | - | ||||||||||||||||||
236 | case executed 8 times by 1 test: QSGNode::RenderNodeType:case QSGNode::RenderNodeType: Executed by:
executed 8 times by 1 test: {case QSGNode::RenderNodeType: Executed by:
| 8 | ||||||||||||||||||
237 | QSGRenderNode *r = static_cast<QSGRenderNode*>(node); | - | ||||||||||||||||||
238 | if (visit(r)
| 0-8 | ||||||||||||||||||
239 | visitChildren(r); executed 8 times by 1 test: visitChildren(r); Executed by:
| 8 | ||||||||||||||||||
240 | endVisit(r); | - | ||||||||||||||||||
241 | break; executed 8 times by 1 test: break; Executed by:
| 8 | ||||||||||||||||||
242 | } | - | ||||||||||||||||||
243 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||
244 | do { ((false) ? static_cast<void>(0) : qt_assert_x("Q_UNREACHABLE()", "Q_UNREACHABLE was reached", __FILE__, 293)); __builtin_unreachable(); } while (false); | - | ||||||||||||||||||
245 | break; never executed: break; | 0 | ||||||||||||||||||
246 | } | - | ||||||||||||||||||
247 | } | - | ||||||||||||||||||
248 | - | |||||||||||||||||||
249 | QSGSoftwareRenderableNodeUpdater::NodeState QSGSoftwareRenderableNodeUpdater::currentState(QSGNode *node) const | - | ||||||||||||||||||
250 | { | - | ||||||||||||||||||
251 | NodeState state; | - | ||||||||||||||||||
252 | state.opacity = m_opacityState.top(); | - | ||||||||||||||||||
253 | state.clip = m_clipState.top(); | - | ||||||||||||||||||
254 | state.hasClip = m_hasClip; | - | ||||||||||||||||||
255 | state.transform = m_transformState.top(); | - | ||||||||||||||||||
256 | state.parent = node->parent(); | - | ||||||||||||||||||
257 | return executed 56 times by 1 test: state;return state; Executed by:
executed 56 times by 1 test: return state; Executed by:
| 56 | ||||||||||||||||||
258 | } | - | ||||||||||||||||||
259 | - | |||||||||||||||||||
260 | - | |||||||||||||||||||
Switch to Source code | Preprocessed file |