Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/scenegraph/adaptations/software/qsgsoftwarelayer.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||
2 | - | |||||||||||||||||||
3 | - | |||||||||||||||||||
4 | - | |||||||||||||||||||
5 | QSGSoftwareLayer::QSGSoftwareLayer(QSGRenderContext *renderContext) | - | ||||||||||||||||||
6 | : m_item(nullptr) | - | ||||||||||||||||||
7 | , m_context(renderContext) | - | ||||||||||||||||||
8 | , m_renderer(nullptr) | - | ||||||||||||||||||
9 | , m_device_pixel_ratio(1) | - | ||||||||||||||||||
10 | , m_mirrorHorizontal(false) | - | ||||||||||||||||||
11 | , m_mirrorVertical(true) | - | ||||||||||||||||||
12 | , m_live(true) | - | ||||||||||||||||||
13 | , m_grab(true) | - | ||||||||||||||||||
14 | , m_recursive(false) | - | ||||||||||||||||||
15 | , m_dirtyTexture(true) | - | ||||||||||||||||||
16 | { | - | ||||||||||||||||||
17 | - | |||||||||||||||||||
18 | } never executed: end of block | 0 | ||||||||||||||||||
19 | - | |||||||||||||||||||
20 | QSGSoftwareLayer::~QSGSoftwareLayer() | - | ||||||||||||||||||
21 | { | - | ||||||||||||||||||
22 | invalidated(); | - | ||||||||||||||||||
23 | } never executed: end of block | 0 | ||||||||||||||||||
24 | - | |||||||||||||||||||
25 | int QSGSoftwareLayer::textureId() const | - | ||||||||||||||||||
26 | { | - | ||||||||||||||||||
27 | return never executed: 0;return 0; never executed: return 0; | 0 | ||||||||||||||||||
28 | } | - | ||||||||||||||||||
29 | - | |||||||||||||||||||
30 | QSize QSGSoftwareLayer::textureSize() const | - | ||||||||||||||||||
31 | { | - | ||||||||||||||||||
32 | return never executed: m_pixmap.size();return m_pixmap.size(); never executed: return m_pixmap.size(); | 0 | ||||||||||||||||||
33 | } | - | ||||||||||||||||||
34 | - | |||||||||||||||||||
35 | bool QSGSoftwareLayer::hasAlphaChannel() const | - | ||||||||||||||||||
36 | { | - | ||||||||||||||||||
37 | return never executed: m_pixmap.hasAlphaChannel();return m_pixmap.hasAlphaChannel(); never executed: return m_pixmap.hasAlphaChannel(); | 0 | ||||||||||||||||||
38 | } | - | ||||||||||||||||||
39 | - | |||||||||||||||||||
40 | bool QSGSoftwareLayer::hasMipmaps() const | - | ||||||||||||||||||
41 | { | - | ||||||||||||||||||
42 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||
43 | } | - | ||||||||||||||||||
44 | - | |||||||||||||||||||
45 | void QSGSoftwareLayer::bind() | - | ||||||||||||||||||
46 | { | - | ||||||||||||||||||
47 | } | - | ||||||||||||||||||
48 | - | |||||||||||||||||||
49 | bool QSGSoftwareLayer::updateTexture() | - | ||||||||||||||||||
50 | { | - | ||||||||||||||||||
51 | bool doGrab = (m_live
| 0 | ||||||||||||||||||
52 | if (doGrab
| 0 | ||||||||||||||||||
53 | grab(); never executed: grab(); | 0 | ||||||||||||||||||
54 | if (m_grab
| 0 | ||||||||||||||||||
55 | scheduledUpdateCompleted(); never executed: scheduledUpdateCompleted(); | 0 | ||||||||||||||||||
56 | m_grab = false; | - | ||||||||||||||||||
57 | return never executed: doGrab;return doGrab; never executed: return doGrab; | 0 | ||||||||||||||||||
58 | } | - | ||||||||||||||||||
59 | - | |||||||||||||||||||
60 | void QSGSoftwareLayer::setItem(QSGNode *item) | - | ||||||||||||||||||
61 | { | - | ||||||||||||||||||
62 | if (item == m_item
| 0 | ||||||||||||||||||
63 | return; never executed: return; | 0 | ||||||||||||||||||
64 | m_item = item; | - | ||||||||||||||||||
65 | - | |||||||||||||||||||
66 | if (m_live
| 0 | ||||||||||||||||||
67 | m_pixmap = QPixmap(); never executed: m_pixmap = QPixmap(); | 0 | ||||||||||||||||||
68 | - | |||||||||||||||||||
69 | markDirtyTexture(); | - | ||||||||||||||||||
70 | } never executed: end of block | 0 | ||||||||||||||||||
71 | - | |||||||||||||||||||
72 | void QSGSoftwareLayer::setRect(const QRectF &rect) | - | ||||||||||||||||||
73 | { | - | ||||||||||||||||||
74 | if (rect == m_rect
| 0 | ||||||||||||||||||
75 | return; never executed: return; | 0 | ||||||||||||||||||
76 | m_rect = rect; | - | ||||||||||||||||||
77 | markDirtyTexture(); | - | ||||||||||||||||||
78 | } never executed: end of block | 0 | ||||||||||||||||||
79 | - | |||||||||||||||||||
80 | void QSGSoftwareLayer::setSize(const QSize &size) | - | ||||||||||||||||||
81 | { | - | ||||||||||||||||||
82 | if (size == m_size
| 0 | ||||||||||||||||||
83 | return; never executed: return; | 0 | ||||||||||||||||||
84 | m_size = size; | - | ||||||||||||||||||
85 | - | |||||||||||||||||||
86 | if (m_live
| 0 | ||||||||||||||||||
87 | m_pixmap = QPixmap(); never executed: m_pixmap = QPixmap(); | 0 | ||||||||||||||||||
88 | - | |||||||||||||||||||
89 | markDirtyTexture(); | - | ||||||||||||||||||
90 | } never executed: end of block | 0 | ||||||||||||||||||
91 | - | |||||||||||||||||||
92 | void QSGSoftwareLayer::scheduleUpdate() | - | ||||||||||||||||||
93 | { | - | ||||||||||||||||||
94 | if (m_grab
| 0 | ||||||||||||||||||
95 | return; never executed: return; | 0 | ||||||||||||||||||
96 | m_grab = true; | - | ||||||||||||||||||
97 | if (m_dirtyTexture
| 0 | ||||||||||||||||||
98 | updateRequested(); | - | ||||||||||||||||||
99 | } never executed: end of block | 0 | ||||||||||||||||||
100 | } never executed: end of block | 0 | ||||||||||||||||||
101 | - | |||||||||||||||||||
102 | QImage QSGSoftwareLayer::toImage() const | - | ||||||||||||||||||
103 | { | - | ||||||||||||||||||
104 | return never executed: m_pixmap.toImage();return m_pixmap.toImage(); never executed: return m_pixmap.toImage(); | 0 | ||||||||||||||||||
105 | } | - | ||||||||||||||||||
106 | - | |||||||||||||||||||
107 | void QSGSoftwareLayer::setLive(bool live) | - | ||||||||||||||||||
108 | { | - | ||||||||||||||||||
109 | if (live == m_live
| 0 | ||||||||||||||||||
110 | return; never executed: return; | 0 | ||||||||||||||||||
111 | m_live = live; | - | ||||||||||||||||||
112 | - | |||||||||||||||||||
113 | if (m_live
| 0 | ||||||||||||||||||
114 | m_pixmap = QPixmap(); never executed: m_pixmap = QPixmap(); | 0 | ||||||||||||||||||
115 | - | |||||||||||||||||||
116 | markDirtyTexture(); | - | ||||||||||||||||||
117 | } never executed: end of block | 0 | ||||||||||||||||||
118 | - | |||||||||||||||||||
119 | void QSGSoftwareLayer::setRecursive(bool recursive) | - | ||||||||||||||||||
120 | { | - | ||||||||||||||||||
121 | m_recursive = recursive; | - | ||||||||||||||||||
122 | } never executed: end of block | 0 | ||||||||||||||||||
123 | - | |||||||||||||||||||
124 | void QSGSoftwareLayer::setFormat(uint) | - | ||||||||||||||||||
125 | { | - | ||||||||||||||||||
126 | } | - | ||||||||||||||||||
127 | - | |||||||||||||||||||
128 | void QSGSoftwareLayer::setHasMipmaps(bool) | - | ||||||||||||||||||
129 | { | - | ||||||||||||||||||
130 | } | - | ||||||||||||||||||
131 | - | |||||||||||||||||||
132 | void QSGSoftwareLayer::setDevicePixelRatio(qreal ratio) | - | ||||||||||||||||||
133 | { | - | ||||||||||||||||||
134 | m_device_pixel_ratio = ratio; | - | ||||||||||||||||||
135 | } never executed: end of block | 0 | ||||||||||||||||||
136 | - | |||||||||||||||||||
137 | void QSGSoftwareLayer::setMirrorHorizontal(bool mirror) | - | ||||||||||||||||||
138 | { | - | ||||||||||||||||||
139 | if (m_mirrorHorizontal == mirror
| 0 | ||||||||||||||||||
140 | return; never executed: return; | 0 | ||||||||||||||||||
141 | m_mirrorHorizontal = mirror; | - | ||||||||||||||||||
142 | markDirtyTexture(); | - | ||||||||||||||||||
143 | } never executed: end of block | 0 | ||||||||||||||||||
144 | - | |||||||||||||||||||
145 | void QSGSoftwareLayer::setMirrorVertical(bool mirror) | - | ||||||||||||||||||
146 | { | - | ||||||||||||||||||
147 | if (m_mirrorVertical == mirror
| 0 | ||||||||||||||||||
148 | return; never executed: return; | 0 | ||||||||||||||||||
149 | m_mirrorVertical = mirror; | - | ||||||||||||||||||
150 | markDirtyTexture(); | - | ||||||||||||||||||
151 | } never executed: end of block | 0 | ||||||||||||||||||
152 | - | |||||||||||||||||||
153 | void QSGSoftwareLayer::markDirtyTexture() | - | ||||||||||||||||||
154 | { | - | ||||||||||||||||||
155 | m_dirtyTexture = true; | - | ||||||||||||||||||
156 | if (m_live
| 0 | ||||||||||||||||||
157 | updateRequested(); | - | ||||||||||||||||||
158 | } never executed: end of block | 0 | ||||||||||||||||||
159 | } never executed: end of block | 0 | ||||||||||||||||||
160 | - | |||||||||||||||||||
161 | void QSGSoftwareLayer::invalidated() | - | ||||||||||||||||||
162 | { | - | ||||||||||||||||||
163 | delete m_renderer; | - | ||||||||||||||||||
164 | m_renderer = nullptr; | - | ||||||||||||||||||
165 | } never executed: end of block | 0 | ||||||||||||||||||
166 | - | |||||||||||||||||||
167 | void QSGSoftwareLayer::grab() | - | ||||||||||||||||||
168 | { | - | ||||||||||||||||||
169 | if (!m_item
| 0 | ||||||||||||||||||
170 | m_pixmap = QPixmap(); | - | ||||||||||||||||||
171 | m_dirtyTexture = false; | - | ||||||||||||||||||
172 | return; never executed: return; | 0 | ||||||||||||||||||
173 | } | - | ||||||||||||||||||
174 | QSGNode *root = m_item; | - | ||||||||||||||||||
175 | while (root->firstChild()
| 0 | ||||||||||||||||||
176 | root = root->firstChild(); never executed: root = root->firstChild(); | 0 | ||||||||||||||||||
177 | if (root->type() != QSGNode::RootNodeType
| 0 | ||||||||||||||||||
178 | return; never executed: return; | 0 | ||||||||||||||||||
179 | - | |||||||||||||||||||
180 | if (!m_renderer
| 0 | ||||||||||||||||||
181 | m_renderer = new QSGSoftwarePixmapRenderer(m_context); | - | ||||||||||||||||||
182 | connect(m_renderer, qFlagLocation("2""sceneGraphChanged()" "\0" __FILE__ ":" "224"), this, qFlagLocation("1""markDirtyTexture()" "\0" __FILE__ ":" "224")); | - | ||||||||||||||||||
183 | } never executed: end of block | 0 | ||||||||||||||||||
184 | m_renderer->setDevicePixelRatio(m_device_pixel_ratio); | - | ||||||||||||||||||
185 | m_renderer->setRootNode(static_cast<QSGRootNode *>(root)); | - | ||||||||||||||||||
186 | - | |||||||||||||||||||
187 | if (m_pixmap.size() != m_size
| 0 | ||||||||||||||||||
188 | m_pixmap = QPixmap(m_size); | - | ||||||||||||||||||
189 | m_pixmap.setDevicePixelRatio(m_device_pixel_ratio); | - | ||||||||||||||||||
190 | } never executed: end of block | 0 | ||||||||||||||||||
191 | - | |||||||||||||||||||
192 | - | |||||||||||||||||||
193 | root->markDirty(QSGNode::DirtyForceUpdate); | - | ||||||||||||||||||
194 | m_renderer->nodeChanged(root, QSGNode::DirtyForceUpdate); | - | ||||||||||||||||||
195 | - | |||||||||||||||||||
196 | m_dirtyTexture = false; | - | ||||||||||||||||||
197 | - | |||||||||||||||||||
198 | m_renderer->setDeviceRect(m_size); | - | ||||||||||||||||||
199 | m_renderer->setViewportRect(m_size); | - | ||||||||||||||||||
200 | QRect mirrored(m_mirrorHorizontal ? m_rect.right() * m_device_pixel_ratio : m_rect.left() * m_device_pixel_ratio, | - | ||||||||||||||||||
201 | m_mirrorVertical ? m_rect.bottom() * m_device_pixel_ratio : m_rect.top() * m_device_pixel_ratio, | - | ||||||||||||||||||
202 | m_mirrorHorizontal ? -m_rect.width() * m_device_pixel_ratio : m_rect.width() * m_device_pixel_ratio, | - | ||||||||||||||||||
203 | m_mirrorVertical ? -m_rect.height() * m_device_pixel_ratio : m_rect.height() * m_device_pixel_ratio); | - | ||||||||||||||||||
204 | m_renderer->setProjectionRect(mirrored); | - | ||||||||||||||||||
205 | m_renderer->setClearColor(Qt::transparent); | - | ||||||||||||||||||
206 | - | |||||||||||||||||||
207 | m_renderer->renderScene(); | - | ||||||||||||||||||
208 | m_renderer->render(&m_pixmap); | - | ||||||||||||||||||
209 | - | |||||||||||||||||||
210 | root->markDirty(QSGNode::DirtyForceUpdate); | - | ||||||||||||||||||
211 | - | |||||||||||||||||||
212 | if (m_recursive
| 0 | ||||||||||||||||||
213 | markDirtyTexture(); never executed: markDirtyTexture(); | 0 | ||||||||||||||||||
214 | } never executed: end of block | 0 | ||||||||||||||||||
215 | - | |||||||||||||||||||
216 | - | |||||||||||||||||||
217 | - | |||||||||||||||||||
Switch to Source code | Preprocessed file |