Line | Source Code | Coverage |
---|
1 | | - |
2 | | - |
3 | | - |
4 | | - |
5 | | - |
6 | | - |
7 | | - |
8 | QPixmap qt_toRasterPixmap(const QImage &image) | - |
9 | { | - |
10 | QPlatformPixmap *data = | - |
11 | new QRasterPlatformPixmap(image.depth() == 1 | - |
12 | ? QPlatformPixmap::BitmapType | - |
13 | : QPlatformPixmap::PixmapType); | - |
14 | | - |
15 | data->fromImage(image, Qt::AutoColor); | - |
16 | | - |
17 | return QPixmap(data); never executed: return QPixmap(data); | 0 |
18 | } | - |
19 | | - |
20 | QPixmap qt_toRasterPixmap(const QPixmap &pixmap) | - |
21 | { | - |
22 | if (pixmap.isNull()) never evaluated: pixmap.isNull() | 0 |
23 | return QPixmap(); never executed: return QPixmap(); | 0 |
24 | | - |
25 | if (QPixmap(pixmap).data_ptr()->classId() == QPlatformPixmap::RasterClass) never evaluated: QPixmap(pixmap).data_ptr()->classId() == QPlatformPixmap::RasterClass | 0 |
26 | return pixmap; never executed: return pixmap; | 0 |
27 | | - |
28 | return qt_toRasterPixmap(pixmap.toImage()); never executed: return qt_toRasterPixmap(pixmap.toImage()); | 0 |
29 | } | - |
30 | | - |
31 | QRasterPlatformPixmap::QRasterPlatformPixmap(PixelType type) | - |
32 | : QPlatformPixmap(type, RasterClass) | - |
33 | { | - |
34 | } executed: } Execution Count:4936 | 4936 |
35 | | - |
36 | QRasterPlatformPixmap::~QRasterPlatformPixmap() | - |
37 | { | - |
38 | } | - |
39 | | - |
40 | QPlatformPixmap *QRasterPlatformPixmap::createCompatiblePlatformPixmap() const | - |
41 | { | - |
42 | return new QRasterPlatformPixmap(pixelType()); executed: return new QRasterPlatformPixmap(pixelType()); Execution Count:19 | 19 |
43 | } | - |
44 | | - |
45 | void QRasterPlatformPixmap::resize(int width, int height) | - |
46 | { | - |
47 | QImage::Format format; | - |
48 | if (pixelType() == BitmapType) evaluated: pixelType() == BitmapType yes Evaluation Count:130 | yes Evaluation Count:764 |
| 130-764 |
49 | format = QImage::Format_MonoLSB; executed: format = QImage::Format_MonoLSB; Execution Count:130 | 130 |
50 | else | - |
51 | format = QNativeImage::systemFormat(); executed: format = QNativeImage::systemFormat(); Execution Count:764 | 764 |
52 | | - |
53 | image = QImage(width, height, format); | - |
54 | w = width; | - |
55 | h = height; | - |
56 | d = image.depth(); | - |
57 | is_null = (w <= 0 || h <= 0); evaluated: w <= 0 yes Evaluation Count:237 | yes Evaluation Count:657 |
partially evaluated: h <= 0 no Evaluation Count:0 | yes Evaluation Count:657 |
| 0-657 |
58 | | - |
59 | if (pixelType() == BitmapType && !image.isNull()) { evaluated: pixelType() == BitmapType yes Evaluation Count:130 | yes Evaluation Count:764 |
evaluated: !image.isNull() yes Evaluation Count:17 | yes Evaluation Count:113 |
| 17-764 |
60 | image.setColorCount(2); | - |
61 | image.setColor(0, QColor(Qt::color0).rgba()); | - |
62 | image.setColor(1, QColor(Qt::color1).rgba()); | - |
63 | } executed: } Execution Count:17 | 17 |
64 | | - |
65 | setSerialNumber(image.cacheKey() >> 32); | - |
66 | } executed: } Execution Count:894 | 894 |
67 | | - |
68 | bool QRasterPlatformPixmap::fromData(const uchar *buffer, uint len, const char *format, | - |
69 | Qt::ImageConversionFlags flags) | - |
70 | { | - |
71 | QByteArray a = QByteArray::fromRawData(reinterpret_cast<const char *>(buffer), len); | - |
72 | QBuffer b(&a); | - |
73 | b.open(QIODevice::ReadOnly); | - |
74 | QImage image = QImageReader(&b, format).read(); | - |
75 | if (image.isNull()) partially evaluated: image.isNull() no Evaluation Count:0 | yes Evaluation Count:18 |
| 0-18 |
76 | return false; never executed: return false; | 0 |
77 | | - |
78 | createPixmapForImage(image, flags, true); | - |
79 | return !isNull(); executed: return !isNull(); Execution Count:18 | 18 |
80 | } | - |
81 | | - |
82 | void QRasterPlatformPixmap::fromImage(const QImage &sourceImage, | - |
83 | Qt::ImageConversionFlags flags) | - |
84 | { | - |
85 | (void)flags;; | - |
86 | QImage image = sourceImage; | - |
87 | createPixmapForImage(image, flags, false); | - |
88 | } executed: } Execution Count:4191 | 4191 |
89 | | - |
90 | void QRasterPlatformPixmap::fromImageReader(QImageReader *imageReader, | - |
91 | Qt::ImageConversionFlags flags) | - |
92 | { | - |
93 | (void)flags;; | - |
94 | QImage image = imageReader->read(); | - |
95 | if (image.isNull()) partially evaluated: image.isNull() no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
96 | return; | 0 |
97 | | - |
98 | createPixmapForImage(image, flags, true); | - |
99 | } executed: } Execution Count:15 | 15 |
100 | | - |
101 | | - |
102 | extern void qt_scrollRectInImage(QImage &img, const QRect &rect, const QPoint &offset); | - |
103 | | - |
104 | void QRasterPlatformPixmap::copy(const QPlatformPixmap *data, const QRect &rect) | - |
105 | { | - |
106 | fromImage(data->toImage(rect).copy(), Qt::NoOpaqueDetection); | - |
107 | } executed: } Execution Count:9 | 9 |
108 | | - |
109 | bool QRasterPlatformPixmap::scroll(int dx, int dy, const QRect &rect) | - |
110 | { | - |
111 | if (!image.isNull()) partially evaluated: !image.isNull() yes Evaluation Count:12 | no Evaluation Count:0 |
| 0-12 |
112 | qt_scrollRectInImage(image, rect, QPoint(dx, dy)); executed: qt_scrollRectInImage(image, rect, QPoint(dx, dy)); Execution Count:12 | 12 |
113 | return true; executed: return true; Execution Count:12 | 12 |
114 | } | - |
115 | | - |
116 | void QRasterPlatformPixmap::fill(const QColor &color) | - |
117 | { | - |
118 | uint pixel; | - |
119 | | - |
120 | if (image.depth() == 1) { evaluated: image.depth() == 1 yes Evaluation Count:14 | yes Evaluation Count:349 |
| 14-349 |
121 | int gray = qGray(color.rgba()); | - |
122 | | - |
123 | if (qAbs(qGray(image.color(0)) - gray) < qAbs(qGray(image.color(1)) - gray)) evaluated: qAbs(qGray(image.color(0)) - gray) < qAbs(qGray(image.color(1)) - gray) yes Evaluation Count:8 | yes Evaluation Count:6 |
| 6-8 |
124 | pixel = 0; executed: pixel = 0; Execution Count:8 | 8 |
125 | else | - |
126 | pixel = 1; executed: pixel = 1; Execution Count:6 | 6 |
127 | } else if (image.depth() >= 15) { partially evaluated: image.depth() >= 15 yes Evaluation Count:349 | no Evaluation Count:0 |
| 0-349 |
128 | int alpha = color.alpha(); | - |
129 | if (alpha != 255) { evaluated: alpha != 255 yes Evaluation Count:78 | yes Evaluation Count:271 |
| 78-271 |
130 | if (!image.hasAlphaChannel()) { partially evaluated: !image.hasAlphaChannel() yes Evaluation Count:78 | no Evaluation Count:0 |
| 0-78 |
131 | QImage::Format toFormat; | - |
132 | toFormat = QImage::Format_ARGB32_Premultiplied; | - |
133 | | - |
134 | if (!image.isNull() && qt_depthForFormat(image.format()) == qt_depthForFormat(toFormat)) { partially evaluated: !image.isNull() yes Evaluation Count:78 | no Evaluation Count:0 |
partially evaluated: qt_depthForFormat(image.format()) == qt_depthForFormat(toFormat) yes Evaluation Count:78 | no Evaluation Count:0 |
| 0-78 |
135 | image.detach(); | - |
136 | image.d->format = toFormat; | - |
137 | } else { executed: } Execution Count:78 | 78 |
138 | image = QImage(image.width(), image.height(), toFormat); | - |
139 | } | 0 |
140 | } | - |
141 | } executed: } Execution Count:78 | 78 |
142 | pixel = PREMUL(color.rgba()); | - |
143 | const QPixelLayout *layout = &qPixelLayouts[image.format()]; | - |
144 | layout->convertFromARGB32PM(&pixel, &pixel, 1, layout, 0); | - |
145 | } else { executed: } Execution Count:349 | 349 |
146 | pixel = 0; | - |
147 | | - |
148 | } | 0 |
149 | | - |
150 | image.fill(pixel); | - |
151 | } executed: } Execution Count:363 | 363 |
152 | | - |
153 | bool QRasterPlatformPixmap::hasAlphaChannel() const | - |
154 | { | - |
155 | return image.hasAlphaChannel(); executed: return image.hasAlphaChannel(); Execution Count:89 | 89 |
156 | } | - |
157 | | - |
158 | QImage QRasterPlatformPixmap::toImage() const | - |
159 | { | - |
160 | if (!image.isNull()) { partially evaluated: !image.isNull() yes Evaluation Count:2025 | no Evaluation Count:0 |
| 0-2025 |
161 | QImageData *data = const_cast<QImage &>(image).data_ptr(); | - |
162 | if (data->paintEngine && data->paintEngine->isActive() evaluated: data->paintEngine yes Evaluation Count:253 | yes Evaluation Count:1772 |
evaluated: data->paintEngine->isActive() yes Evaluation Count:7 | yes Evaluation Count:246 |
| 7-1772 |
163 | && data->paintEngine->paintDevice() == &image) partially evaluated: data->paintEngine->paintDevice() == &image yes Evaluation Count:7 | no Evaluation Count:0 |
| 0-7 |
164 | { | - |
165 | return image.copy(); executed: return image.copy(); Execution Count:7 | 7 |
166 | } | - |
167 | } executed: } Execution Count:2018 | 2018 |
168 | | - |
169 | return image; executed: return image; Execution Count:2018 | 2018 |
170 | } | - |
171 | | - |
172 | QImage QRasterPlatformPixmap::toImage(const QRect &rect) const | - |
173 | { | - |
174 | if (rect.isNull()) partially evaluated: rect.isNull() no Evaluation Count:0 | yes Evaluation Count:9 |
| 0-9 |
175 | return image; never executed: return image; | 0 |
176 | | - |
177 | QRect clipped = rect.intersected(QRect(0, 0, w, h)); | - |
178 | if (d % 8 == 0) evaluated: d % 8 == 0 yes Evaluation Count:8 | yes Evaluation Count:1 |
| 1-8 |
179 | return QImage(image.scanLine(clipped.y()) + clipped.x() * (d / 8), | 8 |
180 | clipped.width(), clipped.height(), | 8 |
181 | image.bytesPerLine(), image.format()); executed: return QImage(image.scanLine(clipped.y()) + clipped.x() * (d / 8), clipped.width(), clipped.height(), image.bytesPerLine(), image.format()); Execution Count:8 | 8 |
182 | else | - |
183 | return image.copy(clipped); executed: return image.copy(clipped); Execution Count:1 | 1 |
184 | } | - |
185 | | - |
186 | QPaintEngine* QRasterPlatformPixmap::paintEngine() const | - |
187 | { | - |
188 | return image.paintEngine(); executed: return image.paintEngine(); Execution Count:1899 | 1899 |
189 | } | - |
190 | | - |
191 | int QRasterPlatformPixmap::metric(QPaintDevice::PaintDeviceMetric metric) const | - |
192 | { | - |
193 | QImageData *d = image.d; | - |
194 | if (!d) partially evaluated: !d no Evaluation Count:0 | yes Evaluation Count:1916 |
| 0-1916 |
195 | return 0; never executed: return 0; | 0 |
196 | | - |
197 | | - |
198 | switch (metric) { | - |
199 | case QPaintDevice::PdmWidth: | - |
200 | return w; executed: return w; Execution Count:469 | 469 |
201 | case QPaintDevice::PdmHeight: | - |
202 | return h; executed: return h; Execution Count:469 | 469 |
203 | case QPaintDevice::PdmWidthMM: | - |
204 | return qRound(d->width * 25.4 / qt_defaultDpiX()); never executed: return qRound(d->width * 25.4 / qt_defaultDpiX()); | 0 |
205 | case QPaintDevice::PdmHeightMM: | - |
206 | return qRound(d->height * 25.4 / qt_defaultDpiY()); never executed: return qRound(d->height * 25.4 / qt_defaultDpiY()); | 0 |
207 | case QPaintDevice::PdmNumColors: | - |
208 | return d->colortable.size(); never executed: return d->colortable.size(); | 0 |
209 | case QPaintDevice::PdmDepth: | - |
210 | return this->d; never executed: return this->d; | 0 |
211 | case QPaintDevice::PdmDpiX: | - |
212 | return qt_defaultDpiX(); executed: return qt_defaultDpiX(); Execution Count:6 | 6 |
213 | case QPaintDevice::PdmPhysicalDpiX: | - |
214 | return qt_defaultDpiX() * image.devicePixelRatio(); never executed: return qt_defaultDpiX() * image.devicePixelRatio(); | 0 |
215 | case QPaintDevice::PdmDpiY: | - |
216 | return qt_defaultDpiX(); executed: return qt_defaultDpiX(); Execution Count:972 | 972 |
217 | case QPaintDevice::PdmPhysicalDpiY: | - |
218 | return qt_defaultDpiY() * image.devicePixelRatio(); never executed: return qt_defaultDpiY() * image.devicePixelRatio(); | 0 |
219 | default: | - |
220 | QMessageLogger("image/qpixmap_raster.cpp", 284, __PRETTY_FUNCTION__).warning("QRasterPlatformPixmap::metric(): Unhandled metric type %d", metric); | - |
221 | break; | 0 |
222 | } | - |
223 | | - |
224 | return 0; never executed: return 0; | 0 |
225 | } | - |
226 | | - |
227 | void QRasterPlatformPixmap::createPixmapForImage(QImage &sourceImage, Qt::ImageConversionFlags flags, bool inPlace) | - |
228 | { | - |
229 | QImage::Format format; | - |
230 | if (flags & Qt::NoFormatConversion) partially evaluated: flags & Qt::NoFormatConversion no Evaluation Count:0 | yes Evaluation Count:4224 |
| 0-4224 |
231 | format = sourceImage.format(); never executed: format = sourceImage.format(); | 0 |
232 | else | - |
233 | if (pixelType() == BitmapType) { evaluated: pixelType() == BitmapType yes Evaluation Count:212 | yes Evaluation Count:4012 |
| 212-4012 |
234 | format = QImage::Format_MonoLSB; | - |
235 | } else { executed: } Execution Count:212 | 212 |
236 | if (sourceImage.depth() == 1) { evaluated: sourceImage.depth() == 1 yes Evaluation Count:4 | yes Evaluation Count:4008 |
| 4-4008 |
237 | format = sourceImage.hasAlphaChannel() partially evaluated: sourceImage.hasAlphaChannel() no Evaluation Count:0 | yes Evaluation Count:4 |
| 0-4 |
238 | ? QImage::Format_ARGB32_Premultiplied | - |
239 | : QImage::Format_RGB32; | - |
240 | } else { executed: } Execution Count:4 | 4 |
241 | QImage::Format opaqueFormat = QNativeImage::systemFormat(); | - |
242 | QImage::Format alphaFormat = QImage::Format_ARGB32_Premultiplied; | - |
243 | if (!sourceImage.hasAlphaChannel()) { evaluated: !sourceImage.hasAlphaChannel() yes Evaluation Count:137 | yes Evaluation Count:3871 |
| 137-3871 |
244 | format = opaqueFormat; | - |
245 | } else if ((flags & Qt::NoOpaqueDetection) == 0 executed: } Execution Count:137 partially evaluated: (flags & Qt::NoOpaqueDetection) == 0 yes Evaluation Count:3871 | no Evaluation Count:0 |
| 0-3871 |
246 | && !const_cast<QImage &>(sourceImage).data_ptr()->checkForAlphaPixels()) evaluated: !const_cast<QImage &>(sourceImage).data_ptr()->checkForAlphaPixels() yes Evaluation Count:1104 | yes Evaluation Count:2767 |
| 1104-2767 |
247 | { | - |
248 | format = opaqueFormat; | - |
249 | } else { executed: } Execution Count:1104 | 1104 |
250 | format = alphaFormat; | - |
251 | } executed: } Execution Count:2767 | 2767 |
252 | } | - |
253 | } | - |
254 | | - |
255 | | - |
256 | | - |
257 | if (format == QImage::Format_RGB32 && (sourceImage.format() == QImage::Format_ARGB32 evaluated: sourceImage.format() == QImage::Format_ARGB32 yes Evaluation Count:121 | yes Evaluation Count:1124 |
evaluated: format == QImage::Format_RGB32 yes Evaluation Count:1245 | yes Evaluation Count:2979 |
| 121-2979 |
258 | || sourceImage.format() == QImage::Format_ARGB32_Premultiplied)) evaluated: sourceImage.format() == QImage::Format_ARGB32_Premultiplied yes Evaluation Count:983 | yes Evaluation Count:141 |
| 141-983 |
259 | { | - |
260 | image = sourceImage; | - |
261 | if (!inPlace) evaluated: !inPlace yes Evaluation Count:1101 | yes Evaluation Count:3 |
| 3-1101 |
262 | image.detach(); executed: image.detach(); Execution Count:1101 | 1101 |
263 | if (image.d) partially evaluated: image.d yes Evaluation Count:1104 | no Evaluation Count:0 |
| 0-1104 |
264 | image.d->format = QImage::Format_RGB32; executed: image.d->format = QImage::Format_RGB32; Execution Count:1104 | 1104 |
265 | } else if (inPlace && sourceImage.d->convertInPlace(format, flags)) { evaluated: inPlace yes Evaluation Count:30 | yes Evaluation Count:3090 |
evaluated: sourceImage.d->convertInPlace(format, flags) yes Evaluation Count:25 | yes Evaluation Count:5 |
executed: } Execution Count:1104 | 5-3090 |
266 | image = sourceImage; | - |
267 | } else { executed: } Execution Count:25 | 25 |
268 | image = sourceImage.convertToFormat(format); | - |
269 | } executed: } Execution Count:3095 | 3095 |
270 | | - |
271 | if (image.d) { partially evaluated: image.d yes Evaluation Count:4224 | no Evaluation Count:0 |
| 0-4224 |
272 | w = image.d->width; | - |
273 | h = image.d->height; | - |
274 | d = image.d->depth; | - |
275 | } else { executed: } Execution Count:4224 | 4224 |
276 | w = h = d = 0; | - |
277 | } | 0 |
278 | is_null = (w <= 0 || h <= 0); partially evaluated: w <= 0 no Evaluation Count:0 | yes Evaluation Count:4224 |
partially evaluated: h <= 0 no Evaluation Count:0 | yes Evaluation Count:4224 |
| 0-4224 |
279 | | - |
280 | image.d->devicePixelRatio = sourceImage.devicePixelRatio(); | - |
281 | setSerialNumber(image.cacheKey() >> 32); | - |
282 | } executed: } Execution Count:4224 | 4224 |
283 | | - |
284 | QImage* QRasterPlatformPixmap::buffer() | - |
285 | { | - |
286 | return ℑ executed: return ℑ Execution Count:799 | 799 |
287 | } | - |
288 | | - |
289 | qreal QRasterPlatformPixmap::devicePixelRatio() const | - |
290 | { | - |
291 | return image.devicePixelRatio(); executed: return image.devicePixelRatio(); Execution Count:4370 | 4370 |
292 | } | - |
293 | | - |
294 | void QRasterPlatformPixmap::setDevicePixelRatio(qreal scaleFactor) | - |
295 | { | - |
296 | image.setDevicePixelRatio(scaleFactor); | - |
297 | } executed: } Execution Count:8 | 8 |
298 | | - |
299 | | - |
300 | | - |
| | |