image/qxpmhandler.cpp

Source codeSwitch to Preprocessed file
LineSource CodeCoverage
1/**************************************************************************** -
2** -
3** Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). -
4** Contact: http://www.qt-project.org/legal -
5** -
6** This file is part of the QtGui module of the Qt Toolkit. -
7** -
8** $QT_BEGIN_LICENSE:LGPL$ -
9** Commercial License Usage -
10** Licensees holding valid commercial Qt licenses may use this file in -
11** accordance with the commercial license agreement provided with the -
12** Software or, alternatively, in accordance with the terms contained in -
13** a written agreement between you and Digia. For licensing terms and -
14** conditions see http://qt.digia.com/licensing. For further information -
15** use the contact form at http://qt.digia.com/contact-us. -
16** -
17** GNU Lesser General Public License Usage -
18** Alternatively, this file may be used under the terms of the GNU Lesser -
19** General Public License version 2.1 as published by the Free Software -
20** Foundation and appearing in the file LICENSE.LGPL included in the -
21** packaging of this file. Please review the following information to -
22** ensure the GNU Lesser General Public License version 2.1 requirements -
23** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. -
24** -
25** In addition, as a special exception, Digia gives you certain additional -
26** rights. These rights are described in the Digia Qt LGPL Exception -
27** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. -
28** -
29** GNU General Public License Usage -
30** Alternatively, this file may be used under the terms of the GNU -
31** General Public License version 3.0 as published by the Free Software -
32** Foundation and appearing in the file LICENSE.GPL included in the -
33** packaging of this file. Please review the following information to -
34** ensure the GNU General Public License version 3.0 requirements will be -
35** met: http://www.gnu.org/copyleft/gpl.html. -
36** -
37** -
38** $QT_END_LICENSE$ -
39** -
40****************************************************************************/ -
41 -
42#include "private/qxpmhandler_p.h" -
43 -
44#ifndef QT_NO_IMAGEFORMAT_XPM -
45 -
46#include <private/qcolor_p.h> -
47#include <qimage.h> -
48#include <qmap.h> -
49#include <qtextstream.h> -
50#include <qvariant.h> -
51 -
52#if defined(Q_CC_BOR) -
53// needed for qsort() because of a std namespace problem on Borland -
54#include "qplatformdefs.h" -
55#endif -
56 -
57QT_BEGIN_NAMESPACE -
58 -
59static quint64 xpmHash(const QString &str) -
60{ -
61 unsigned int hashValue = 0;
executed (the execution status of this line is deduced): unsigned int hashValue = 0;
-
62 for (int i = 0; i < str.size(); ++i) {
evaluated: i < str.size()
TRUEFALSE
yes
Evaluation Count:87358
yes
Evaluation Count:58228
58228-87358
63 hashValue <<= 8;
executed (the execution status of this line is deduced): hashValue <<= 8;
-
64 hashValue += (unsigned int)str.at(i).unicode();
executed (the execution status of this line is deduced): hashValue += (unsigned int)str.at(i).unicode();
-
65 }
executed: }
Execution Count:87358
87358
66 return hashValue;
executed: return hashValue;
Execution Count:58228
58228
67} -
68static quint64 xpmHash(char *str) -
69{ -
70 unsigned int hashValue = 0;
executed (the execution status of this line is deduced): unsigned int hashValue = 0;
-
71 while (*str != '\0') {
evaluated: *str != '\0'
TRUEFALSE
yes
Evaluation Count:6100738
yes
Evaluation Count:3679874
3679874-6100738
72 hashValue <<= 8;
executed (the execution status of this line is deduced): hashValue <<= 8;
-
73 hashValue += (unsigned int)*str;
executed (the execution status of this line is deduced): hashValue += (unsigned int)*str;
-
74 ++str;
executed (the execution status of this line is deduced): ++str;
-
75 }
executed: }
Execution Count:6100738
6100738
76 return hashValue;
executed: return hashValue;
Execution Count:3679874
3679874
77} -
78 -
79#ifdef QRGB -
80#undef QRGB -
81#endif -
82#define QRGB(r,g,b) (r*65536 + g*256 + b) -
83 -
84static const int xpmRgbTblSize = 657; -
85 -
86static const struct XPMRGBData { -
87 uint value; -
88 const char *name; -
89} xpmRgbTbl[] = { -
90 { QRGB(240,248,255), "aliceblue" }, -
91 { QRGB(250,235,215), "antiquewhite" }, -
92 { QRGB(255,239,219), "antiquewhite1" }, -
93 { QRGB(238,223,204), "antiquewhite2" }, -
94 { QRGB(205,192,176), "antiquewhite3" }, -
95 { QRGB(139,131,120), "antiquewhite4" }, -
96 { QRGB(127,255,212), "aquamarine" }, -
97 { QRGB(127,255,212), "aquamarine1" }, -
98 { QRGB(118,238,198), "aquamarine2" }, -
99 { QRGB(102,205,170), "aquamarine3" }, -
100 { QRGB( 69,139,116), "aquamarine4" }, -
101 { QRGB(240,255,255), "azure" }, -
102 { QRGB(240,255,255), "azure1" }, -
103 { QRGB(224,238,238), "azure2" }, -
104 { QRGB(193,205,205), "azure3" }, -
105 { QRGB(131,139,139), "azure4" }, -
106 { QRGB(245,245,220), "beige" }, -
107 { QRGB(255,228,196), "bisque" }, -
108 { QRGB(255,228,196), "bisque1" }, -
109 { QRGB(238,213,183), "bisque2" }, -
110 { QRGB(205,183,158), "bisque3" }, -
111 { QRGB(139,125,107), "bisque4" }, -
112 { QRGB( 0, 0, 0), "black" }, -
113 { QRGB(255,235,205), "blanchedalmond" }, -
114 { QRGB( 0, 0,255), "blue" }, -
115 { QRGB( 0, 0,255), "blue1" }, -
116 { QRGB( 0, 0,238), "blue2" }, -
117 { QRGB( 0, 0,205), "blue3" }, -
118 { QRGB( 0, 0,139), "blue4" }, -
119 { QRGB(138, 43,226), "blueviolet" }, -
120 { QRGB(165, 42, 42), "brown" }, -
121 { QRGB(255, 64, 64), "brown1" }, -
122 { QRGB(238, 59, 59), "brown2" }, -
123 { QRGB(205, 51, 51), "brown3" }, -
124 { QRGB(139, 35, 35), "brown4" }, -
125 { QRGB(222,184,135), "burlywood" }, -
126 { QRGB(255,211,155), "burlywood1" }, -
127 { QRGB(238,197,145), "burlywood2" }, -
128 { QRGB(205,170,125), "burlywood3" }, -
129 { QRGB(139,115, 85), "burlywood4" }, -
130 { QRGB( 95,158,160), "cadetblue" }, -
131 { QRGB(152,245,255), "cadetblue1" }, -
132 { QRGB(142,229,238), "cadetblue2" }, -
133 { QRGB(122,197,205), "cadetblue3" }, -
134 { QRGB( 83,134,139), "cadetblue4" }, -
135 { QRGB(127,255, 0), "chartreuse" }, -
136 { QRGB(127,255, 0), "chartreuse1" }, -
137 { QRGB(118,238, 0), "chartreuse2" }, -
138 { QRGB(102,205, 0), "chartreuse3" }, -
139 { QRGB( 69,139, 0), "chartreuse4" }, -
140 { QRGB(210,105, 30), "chocolate" }, -
141 { QRGB(255,127, 36), "chocolate1" }, -
142 { QRGB(238,118, 33), "chocolate2" }, -
143 { QRGB(205,102, 29), "chocolate3" }, -
144 { QRGB(139, 69, 19), "chocolate4" }, -
145 { QRGB(255,127, 80), "coral" }, -
146 { QRGB(255,114, 86), "coral1" }, -
147 { QRGB(238,106, 80), "coral2" }, -
148 { QRGB(205, 91, 69), "coral3" }, -
149 { QRGB(139, 62, 47), "coral4" }, -
150 { QRGB(100,149,237), "cornflowerblue" }, -
151 { QRGB(255,248,220), "cornsilk" }, -
152 { QRGB(255,248,220), "cornsilk1" }, -
153 { QRGB(238,232,205), "cornsilk2" }, -
154 { QRGB(205,200,177), "cornsilk3" }, -
155 { QRGB(139,136,120), "cornsilk4" }, -
156 { QRGB( 0,255,255), "cyan" }, -
157 { QRGB( 0,255,255), "cyan1" }, -
158 { QRGB( 0,238,238), "cyan2" }, -
159 { QRGB( 0,205,205), "cyan3" }, -
160 { QRGB( 0,139,139), "cyan4" }, -
161 { QRGB( 0, 0,139), "darkblue" }, -
162 { QRGB( 0,139,139), "darkcyan" }, -
163 { QRGB(184,134, 11), "darkgoldenrod" }, -
164 { QRGB(255,185, 15), "darkgoldenrod1" }, -
165 { QRGB(238,173, 14), "darkgoldenrod2" }, -
166 { QRGB(205,149, 12), "darkgoldenrod3" }, -
167 { QRGB(139,101, 8), "darkgoldenrod4" }, -
168 { QRGB(169,169,169), "darkgray" }, -
169 { QRGB( 0,100, 0), "darkgreen" }, -
170 { QRGB(169,169,169), "darkgrey" }, -
171 { QRGB(189,183,107), "darkkhaki" }, -
172 { QRGB(139, 0,139), "darkmagenta" }, -
173 { QRGB( 85,107, 47), "darkolivegreen" }, -
174 { QRGB(202,255,112), "darkolivegreen1" }, -
175 { QRGB(188,238,104), "darkolivegreen2" }, -
176 { QRGB(162,205, 90), "darkolivegreen3" }, -
177 { QRGB(110,139, 61), "darkolivegreen4" }, -
178 { QRGB(255,140, 0), "darkorange" }, -
179 { QRGB(255,127, 0), "darkorange1" }, -
180 { QRGB(238,118, 0), "darkorange2" }, -
181 { QRGB(205,102, 0), "darkorange3" }, -
182 { QRGB(139, 69, 0), "darkorange4" }, -
183 { QRGB(153, 50,204), "darkorchid" }, -
184 { QRGB(191, 62,255), "darkorchid1" }, -
185 { QRGB(178, 58,238), "darkorchid2" }, -
186 { QRGB(154, 50,205), "darkorchid3" }, -
187 { QRGB(104, 34,139), "darkorchid4" }, -
188 { QRGB(139, 0, 0), "darkred" }, -
189 { QRGB(233,150,122), "darksalmon" }, -
190 { QRGB(143,188,143), "darkseagreen" }, -
191 { QRGB(193,255,193), "darkseagreen1" }, -
192 { QRGB(180,238,180), "darkseagreen2" }, -
193 { QRGB(155,205,155), "darkseagreen3" }, -
194 { QRGB(105,139,105), "darkseagreen4" }, -
195 { QRGB( 72, 61,139), "darkslateblue" }, -
196 { QRGB( 47, 79, 79), "darkslategray" }, -
197 { QRGB(151,255,255), "darkslategray1" }, -
198 { QRGB(141,238,238), "darkslategray2" }, -
199 { QRGB(121,205,205), "darkslategray3" }, -
200 { QRGB( 82,139,139), "darkslategray4" }, -
201 { QRGB( 47, 79, 79), "darkslategrey" }, -
202 { QRGB( 0,206,209), "darkturquoise" }, -
203 { QRGB(148, 0,211), "darkviolet" }, -
204 { QRGB(255, 20,147), "deeppink" }, -
205 { QRGB(255, 20,147), "deeppink1" }, -
206 { QRGB(238, 18,137), "deeppink2" }, -
207 { QRGB(205, 16,118), "deeppink3" }, -
208 { QRGB(139, 10, 80), "deeppink4" }, -
209 { QRGB( 0,191,255), "deepskyblue" }, -
210 { QRGB( 0,191,255), "deepskyblue1" }, -
211 { QRGB( 0,178,238), "deepskyblue2" }, -
212 { QRGB( 0,154,205), "deepskyblue3" }, -
213 { QRGB( 0,104,139), "deepskyblue4" }, -
214 { QRGB(105,105,105), "dimgray" }, -
215 { QRGB(105,105,105), "dimgrey" }, -
216 { QRGB( 30,144,255), "dodgerblue" }, -
217 { QRGB( 30,144,255), "dodgerblue1" }, -
218 { QRGB( 28,134,238), "dodgerblue2" }, -
219 { QRGB( 24,116,205), "dodgerblue3" }, -
220 { QRGB( 16, 78,139), "dodgerblue4" }, -
221 { QRGB(178, 34, 34), "firebrick" }, -
222 { QRGB(255, 48, 48), "firebrick1" }, -
223 { QRGB(238, 44, 44), "firebrick2" }, -
224 { QRGB(205, 38, 38), "firebrick3" }, -
225 { QRGB(139, 26, 26), "firebrick4" }, -
226 { QRGB(255,250,240), "floralwhite" }, -
227 { QRGB( 34,139, 34), "forestgreen" }, -
228 { QRGB(220,220,220), "gainsboro" }, -
229 { QRGB(248,248,255), "ghostwhite" }, -
230 { QRGB(255,215, 0), "gold" }, -
231 { QRGB(255,215, 0), "gold1" }, -
232 { QRGB(238,201, 0), "gold2" }, -
233 { QRGB(205,173, 0), "gold3" }, -
234 { QRGB(139,117, 0), "gold4" }, -
235 { QRGB(218,165, 32), "goldenrod" }, -
236 { QRGB(255,193, 37), "goldenrod1" }, -
237 { QRGB(238,180, 34), "goldenrod2" }, -
238 { QRGB(205,155, 29), "goldenrod3" }, -
239 { QRGB(139,105, 20), "goldenrod4" }, -
240 { QRGB(190,190,190), "gray" }, -
241 { QRGB( 0, 0, 0), "gray0" }, -
242 { QRGB( 3, 3, 3), "gray1" }, -
243 { QRGB( 26, 26, 26), "gray10" }, -
244 { QRGB(255,255,255), "gray100" }, -
245 { QRGB( 28, 28, 28), "gray11" }, -
246 { QRGB( 31, 31, 31), "gray12" }, -
247 { QRGB( 33, 33, 33), "gray13" }, -
248 { QRGB( 36, 36, 36), "gray14" }, -
249 { QRGB( 38, 38, 38), "gray15" }, -
250 { QRGB( 41, 41, 41), "gray16" }, -
251 { QRGB( 43, 43, 43), "gray17" }, -
252 { QRGB( 46, 46, 46), "gray18" }, -
253 { QRGB( 48, 48, 48), "gray19" }, -
254 { QRGB( 5, 5, 5), "gray2" }, -
255 { QRGB( 51, 51, 51), "gray20" }, -
256 { QRGB( 54, 54, 54), "gray21" }, -
257 { QRGB( 56, 56, 56), "gray22" }, -
258 { QRGB( 59, 59, 59), "gray23" }, -
259 { QRGB( 61, 61, 61), "gray24" }, -
260 { QRGB( 64, 64, 64), "gray25" }, -
261 { QRGB( 66, 66, 66), "gray26" }, -
262 { QRGB( 69, 69, 69), "gray27" }, -
263 { QRGB( 71, 71, 71), "gray28" }, -
264 { QRGB( 74, 74, 74), "gray29" }, -
265 { QRGB( 8, 8, 8), "gray3" }, -
266 { QRGB( 77, 77, 77), "gray30" }, -
267 { QRGB( 79, 79, 79), "gray31" }, -
268 { QRGB( 82, 82, 82), "gray32" }, -
269 { QRGB( 84, 84, 84), "gray33" }, -
270 { QRGB( 87, 87, 87), "gray34" }, -
271 { QRGB( 89, 89, 89), "gray35" }, -
272 { QRGB( 92, 92, 92), "gray36" }, -
273 { QRGB( 94, 94, 94), "gray37" }, -
274 { QRGB( 97, 97, 97), "gray38" }, -
275 { QRGB( 99, 99, 99), "gray39" }, -
276 { QRGB( 10, 10, 10), "gray4" }, -
277 { QRGB(102,102,102), "gray40" }, -
278 { QRGB(105,105,105), "gray41" }, -
279 { QRGB(107,107,107), "gray42" }, -
280 { QRGB(110,110,110), "gray43" }, -
281 { QRGB(112,112,112), "gray44" }, -
282 { QRGB(115,115,115), "gray45" }, -
283 { QRGB(117,117,117), "gray46" }, -
284 { QRGB(120,120,120), "gray47" }, -
285 { QRGB(122,122,122), "gray48" }, -
286 { QRGB(125,125,125), "gray49" }, -
287 { QRGB( 13, 13, 13), "gray5" }, -
288 { QRGB(127,127,127), "gray50" }, -
289 { QRGB(130,130,130), "gray51" }, -
290 { QRGB(133,133,133), "gray52" }, -
291 { QRGB(135,135,135), "gray53" }, -
292 { QRGB(138,138,138), "gray54" }, -
293 { QRGB(140,140,140), "gray55" }, -
294 { QRGB(143,143,143), "gray56" }, -
295 { QRGB(145,145,145), "gray57" }, -
296 { QRGB(148,148,148), "gray58" }, -
297 { QRGB(150,150,150), "gray59" }, -
298 { QRGB( 15, 15, 15), "gray6" }, -
299 { QRGB(153,153,153), "gray60" }, -
300 { QRGB(156,156,156), "gray61" }, -
301 { QRGB(158,158,158), "gray62" }, -
302 { QRGB(161,161,161), "gray63" }, -
303 { QRGB(163,163,163), "gray64" }, -
304 { QRGB(166,166,166), "gray65" }, -
305 { QRGB(168,168,168), "gray66" }, -
306 { QRGB(171,171,171), "gray67" }, -
307 { QRGB(173,173,173), "gray68" }, -
308 { QRGB(176,176,176), "gray69" }, -
309 { QRGB( 18, 18, 18), "gray7" }, -
310 { QRGB(179,179,179), "gray70" }, -
311 { QRGB(181,181,181), "gray71" }, -
312 { QRGB(184,184,184), "gray72" }, -
313 { QRGB(186,186,186), "gray73" }, -
314 { QRGB(189,189,189), "gray74" }, -
315 { QRGB(191,191,191), "gray75" }, -
316 { QRGB(194,194,194), "gray76" }, -
317 { QRGB(196,196,196), "gray77" }, -
318 { QRGB(199,199,199), "gray78" }, -
319 { QRGB(201,201,201), "gray79" }, -
320 { QRGB( 20, 20, 20), "gray8" }, -
321 { QRGB(204,204,204), "gray80" }, -
322 { QRGB(207,207,207), "gray81" }, -
323 { QRGB(209,209,209), "gray82" }, -
324 { QRGB(212,212,212), "gray83" }, -
325 { QRGB(214,214,214), "gray84" }, -
326 { QRGB(217,217,217), "gray85" }, -
327 { QRGB(219,219,219), "gray86" }, -
328 { QRGB(222,222,222), "gray87" }, -
329 { QRGB(224,224,224), "gray88" }, -
330 { QRGB(227,227,227), "gray89" }, -
331 { QRGB( 23, 23, 23), "gray9" }, -
332 { QRGB(229,229,229), "gray90" }, -
333 { QRGB(232,232,232), "gray91" }, -
334 { QRGB(235,235,235), "gray92" }, -
335 { QRGB(237,237,237), "gray93" }, -
336 { QRGB(240,240,240), "gray94" }, -
337 { QRGB(242,242,242), "gray95" }, -
338 { QRGB(245,245,245), "gray96" }, -
339 { QRGB(247,247,247), "gray97" }, -
340 { QRGB(250,250,250), "gray98" }, -
341 { QRGB(252,252,252), "gray99" }, -
342 { QRGB( 0,255, 0), "green" }, -
343 { QRGB( 0,255, 0), "green1" }, -
344 { QRGB( 0,238, 0), "green2" }, -
345 { QRGB( 0,205, 0), "green3" }, -
346 { QRGB( 0,139, 0), "green4" }, -
347 { QRGB(173,255, 47), "greenyellow" }, -
348 { QRGB(190,190,190), "grey" }, -
349 { QRGB( 0, 0, 0), "grey0" }, -
350 { QRGB( 3, 3, 3), "grey1" }, -
351 { QRGB( 26, 26, 26), "grey10" }, -
352 { QRGB(255,255,255), "grey100" }, -
353 { QRGB( 28, 28, 28), "grey11" }, -
354 { QRGB( 31, 31, 31), "grey12" }, -
355 { QRGB( 33, 33, 33), "grey13" }, -
356 { QRGB( 36, 36, 36), "grey14" }, -
357 { QRGB( 38, 38, 38), "grey15" }, -
358 { QRGB( 41, 41, 41), "grey16" }, -
359 { QRGB( 43, 43, 43), "grey17" }, -
360 { QRGB( 46, 46, 46), "grey18" }, -
361 { QRGB( 48, 48, 48), "grey19" }, -
362 { QRGB( 5, 5, 5), "grey2" }, -
363 { QRGB( 51, 51, 51), "grey20" }, -
364 { QRGB( 54, 54, 54), "grey21" }, -
365 { QRGB( 56, 56, 56), "grey22" }, -
366 { QRGB( 59, 59, 59), "grey23" }, -
367 { QRGB( 61, 61, 61), "grey24" }, -
368 { QRGB( 64, 64, 64), "grey25" }, -
369 { QRGB( 66, 66, 66), "grey26" }, -
370 { QRGB( 69, 69, 69), "grey27" }, -
371 { QRGB( 71, 71, 71), "grey28" }, -
372 { QRGB( 74, 74, 74), "grey29" }, -
373 { QRGB( 8, 8, 8), "grey3" }, -
374 { QRGB( 77, 77, 77), "grey30" }, -
375 { QRGB( 79, 79, 79), "grey31" }, -
376 { QRGB( 82, 82, 82), "grey32" }, -
377 { QRGB( 84, 84, 84), "grey33" }, -
378 { QRGB( 87, 87, 87), "grey34" }, -
379 { QRGB( 89, 89, 89), "grey35" }, -
380 { QRGB( 92, 92, 92), "grey36" }, -
381 { QRGB( 94, 94, 94), "grey37" }, -
382 { QRGB( 97, 97, 97), "grey38" }, -
383 { QRGB( 99, 99, 99), "grey39" }, -
384 { QRGB( 10, 10, 10), "grey4" }, -
385 { QRGB(102,102,102), "grey40" }, -
386 { QRGB(105,105,105), "grey41" }, -
387 { QRGB(107,107,107), "grey42" }, -
388 { QRGB(110,110,110), "grey43" }, -
389 { QRGB(112,112,112), "grey44" }, -
390 { QRGB(115,115,115), "grey45" }, -
391 { QRGB(117,117,117), "grey46" }, -
392 { QRGB(120,120,120), "grey47" }, -
393 { QRGB(122,122,122), "grey48" }, -
394 { QRGB(125,125,125), "grey49" }, -
395 { QRGB( 13, 13, 13), "grey5" }, -
396 { QRGB(127,127,127), "grey50" }, -
397 { QRGB(130,130,130), "grey51" }, -
398 { QRGB(133,133,133), "grey52" }, -
399 { QRGB(135,135,135), "grey53" }, -
400 { QRGB(138,138,138), "grey54" }, -
401 { QRGB(140,140,140), "grey55" }, -
402 { QRGB(143,143,143), "grey56" }, -
403 { QRGB(145,145,145), "grey57" }, -
404 { QRGB(148,148,148), "grey58" }, -
405 { QRGB(150,150,150), "grey59" }, -
406 { QRGB( 15, 15, 15), "grey6" }, -
407 { QRGB(153,153,153), "grey60" }, -
408 { QRGB(156,156,156), "grey61" }, -
409 { QRGB(158,158,158), "grey62" }, -
410 { QRGB(161,161,161), "grey63" }, -
411 { QRGB(163,163,163), "grey64" }, -
412 { QRGB(166,166,166), "grey65" }, -
413 { QRGB(168,168,168), "grey66" }, -
414 { QRGB(171,171,171), "grey67" }, -
415 { QRGB(173,173,173), "grey68" }, -
416 { QRGB(176,176,176), "grey69" }, -
417 { QRGB( 18, 18, 18), "grey7" }, -
418 { QRGB(179,179,179), "grey70" }, -
419 { QRGB(181,181,181), "grey71" }, -
420 { QRGB(184,184,184), "grey72" }, -
421 { QRGB(186,186,186), "grey73" }, -
422 { QRGB(189,189,189), "grey74" }, -
423 { QRGB(191,191,191), "grey75" }, -
424 { QRGB(194,194,194), "grey76" }, -
425 { QRGB(196,196,196), "grey77" }, -
426 { QRGB(199,199,199), "grey78" }, -
427 { QRGB(201,201,201), "grey79" }, -
428 { QRGB( 20, 20, 20), "grey8" }, -
429 { QRGB(204,204,204), "grey80" }, -
430 { QRGB(207,207,207), "grey81" }, -
431 { QRGB(209,209,209), "grey82" }, -
432 { QRGB(212,212,212), "grey83" }, -
433 { QRGB(214,214,214), "grey84" }, -
434 { QRGB(217,217,217), "grey85" }, -
435 { QRGB(219,219,219), "grey86" }, -
436 { QRGB(222,222,222), "grey87" }, -
437 { QRGB(224,224,224), "grey88" }, -
438 { QRGB(227,227,227), "grey89" }, -
439 { QRGB( 23, 23, 23), "grey9" }, -
440 { QRGB(229,229,229), "grey90" }, -
441 { QRGB(232,232,232), "grey91" }, -
442 { QRGB(235,235,235), "grey92" }, -
443 { QRGB(237,237,237), "grey93" }, -
444 { QRGB(240,240,240), "grey94" }, -
445 { QRGB(242,242,242), "grey95" }, -
446 { QRGB(245,245,245), "grey96" }, -
447 { QRGB(247,247,247), "grey97" }, -
448 { QRGB(250,250,250), "grey98" }, -
449 { QRGB(252,252,252), "grey99" }, -
450 { QRGB(240,255,240), "honeydew" }, -
451 { QRGB(240,255,240), "honeydew1" }, -
452 { QRGB(224,238,224), "honeydew2" }, -
453 { QRGB(193,205,193), "honeydew3" }, -
454 { QRGB(131,139,131), "honeydew4" }, -
455 { QRGB(255,105,180), "hotpink" }, -
456 { QRGB(255,110,180), "hotpink1" }, -
457 { QRGB(238,106,167), "hotpink2" }, -
458 { QRGB(205, 96,144), "hotpink3" }, -
459 { QRGB(139, 58, 98), "hotpink4" }, -
460 { QRGB(205, 92, 92), "indianred" }, -
461 { QRGB(255,106,106), "indianred1" }, -
462 { QRGB(238, 99, 99), "indianred2" }, -
463 { QRGB(205, 85, 85), "indianred3" }, -
464 { QRGB(139, 58, 58), "indianred4" }, -
465 { QRGB(255,255,240), "ivory" }, -
466 { QRGB(255,255,240), "ivory1" }, -
467 { QRGB(238,238,224), "ivory2" }, -
468 { QRGB(205,205,193), "ivory3" }, -
469 { QRGB(139,139,131), "ivory4" }, -
470 { QRGB(240,230,140), "khaki" }, -
471 { QRGB(255,246,143), "khaki1" }, -
472 { QRGB(238,230,133), "khaki2" }, -
473 { QRGB(205,198,115), "khaki3" }, -
474 { QRGB(139,134, 78), "khaki4" }, -
475 { QRGB(230,230,250), "lavender" }, -
476 { QRGB(255,240,245), "lavenderblush" }, -
477 { QRGB(255,240,245), "lavenderblush1" }, -
478 { QRGB(238,224,229), "lavenderblush2" }, -
479 { QRGB(205,193,197), "lavenderblush3" }, -
480 { QRGB(139,131,134), "lavenderblush4" }, -
481 { QRGB(124,252, 0), "lawngreen" }, -
482 { QRGB(255,250,205), "lemonchiffon" }, -
483 { QRGB(255,250,205), "lemonchiffon1" }, -
484 { QRGB(238,233,191), "lemonchiffon2" }, -
485 { QRGB(205,201,165), "lemonchiffon3" }, -
486 { QRGB(139,137,112), "lemonchiffon4" }, -
487 { QRGB(173,216,230), "lightblue" }, -
488 { QRGB(191,239,255), "lightblue1" }, -
489 { QRGB(178,223,238), "lightblue2" }, -
490 { QRGB(154,192,205), "lightblue3" }, -
491 { QRGB(104,131,139), "lightblue4" }, -
492 { QRGB(240,128,128), "lightcoral" }, -
493 { QRGB(224,255,255), "lightcyan" }, -
494 { QRGB(224,255,255), "lightcyan1" }, -
495 { QRGB(209,238,238), "lightcyan2" }, -
496 { QRGB(180,205,205), "lightcyan3" }, -
497 { QRGB(122,139,139), "lightcyan4" }, -
498 { QRGB(238,221,130), "lightgoldenrod" }, -
499 { QRGB(255,236,139), "lightgoldenrod1" }, -
500 { QRGB(238,220,130), "lightgoldenrod2" }, -
501 { QRGB(205,190,112), "lightgoldenrod3" }, -
502 { QRGB(139,129, 76), "lightgoldenrod4" }, -
503 { QRGB(250,250,210), "lightgoldenrodyellow" }, -
504 { QRGB(211,211,211), "lightgray" }, -
505 { QRGB(144,238,144), "lightgreen" }, -
506 { QRGB(211,211,211), "lightgrey" }, -
507 { QRGB(255,182,193), "lightpink" }, -
508 { QRGB(255,174,185), "lightpink1" }, -
509 { QRGB(238,162,173), "lightpink2" }, -
510 { QRGB(205,140,149), "lightpink3" }, -
511 { QRGB(139, 95,101), "lightpink4" }, -
512 { QRGB(255,160,122), "lightsalmon" }, -
513 { QRGB(255,160,122), "lightsalmon1" }, -
514 { QRGB(238,149,114), "lightsalmon2" }, -
515 { QRGB(205,129, 98), "lightsalmon3" }, -
516 { QRGB(139, 87, 66), "lightsalmon4" }, -
517 { QRGB( 32,178,170), "lightseagreen" }, -
518 { QRGB(135,206,250), "lightskyblue" }, -
519 { QRGB(176,226,255), "lightskyblue1" }, -
520 { QRGB(164,211,238), "lightskyblue2" }, -
521 { QRGB(141,182,205), "lightskyblue3" }, -
522 { QRGB( 96,123,139), "lightskyblue4" }, -
523 { QRGB(132,112,255), "lightslateblue" }, -
524 { QRGB(119,136,153), "lightslategray" }, -
525 { QRGB(119,136,153), "lightslategrey" }, -
526 { QRGB(176,196,222), "lightsteelblue" }, -
527 { QRGB(202,225,255), "lightsteelblue1" }, -
528 { QRGB(188,210,238), "lightsteelblue2" }, -
529 { QRGB(162,181,205), "lightsteelblue3" }, -
530 { QRGB(110,123,139), "lightsteelblue4" }, -
531 { QRGB(255,255,224), "lightyellow" }, -
532 { QRGB(255,255,224), "lightyellow1" }, -
533 { QRGB(238,238,209), "lightyellow2" }, -
534 { QRGB(205,205,180), "lightyellow3" }, -
535 { QRGB(139,139,122), "lightyellow4" }, -
536 { QRGB( 50,205, 50), "limegreen" }, -
537 { QRGB(250,240,230), "linen" }, -
538 { QRGB(255, 0,255), "magenta" }, -
539 { QRGB(255, 0,255), "magenta1" }, -
540 { QRGB(238, 0,238), "magenta2" }, -
541 { QRGB(205, 0,205), "magenta3" }, -
542 { QRGB(139, 0,139), "magenta4" }, -
543 { QRGB(176, 48, 96), "maroon" }, -
544 { QRGB(255, 52,179), "maroon1" }, -
545 { QRGB(238, 48,167), "maroon2" }, -
546 { QRGB(205, 41,144), "maroon3" }, -
547 { QRGB(139, 28, 98), "maroon4" }, -
548 { QRGB(102,205,170), "mediumaquamarine" }, -
549 { QRGB( 0, 0,205), "mediumblue" }, -
550 { QRGB(186, 85,211), "mediumorchid" }, -
551 { QRGB(224,102,255), "mediumorchid1" }, -
552 { QRGB(209, 95,238), "mediumorchid2" }, -
553 { QRGB(180, 82,205), "mediumorchid3" }, -
554 { QRGB(122, 55,139), "mediumorchid4" }, -
555 { QRGB(147,112,219), "mediumpurple" }, -
556 { QRGB(171,130,255), "mediumpurple1" }, -
557 { QRGB(159,121,238), "mediumpurple2" }, -
558 { QRGB(137,104,205), "mediumpurple3" }, -
559 { QRGB( 93, 71,139), "mediumpurple4" }, -
560 { QRGB( 60,179,113), "mediumseagreen" }, -
561 { QRGB(123,104,238), "mediumslateblue" }, -
562 { QRGB( 0,250,154), "mediumspringgreen" }, -
563 { QRGB( 72,209,204), "mediumturquoise" }, -
564 { QRGB(199, 21,133), "mediumvioletred" }, -
565 { QRGB( 25, 25,112), "midnightblue" }, -
566 { QRGB(245,255,250), "mintcream" }, -
567 { QRGB(255,228,225), "mistyrose" }, -
568 { QRGB(255,228,225), "mistyrose1" }, -
569 { QRGB(238,213,210), "mistyrose2" }, -
570 { QRGB(205,183,181), "mistyrose3" }, -
571 { QRGB(139,125,123), "mistyrose4" }, -
572 { QRGB(255,228,181), "moccasin" }, -
573 { QRGB(255,222,173), "navajowhite" }, -
574 { QRGB(255,222,173), "navajowhite1" }, -
575 { QRGB(238,207,161), "navajowhite2" }, -
576 { QRGB(205,179,139), "navajowhite3" }, -
577 { QRGB(139,121, 94), "navajowhite4" }, -
578 { QRGB( 0, 0,128), "navy" }, -
579 { QRGB( 0, 0,128), "navyblue" }, -
580 { QRGB(253,245,230), "oldlace" }, -
581 { QRGB(107,142, 35), "olivedrab" }, -
582 { QRGB(192,255, 62), "olivedrab1" }, -
583 { QRGB(179,238, 58), "olivedrab2" }, -
584 { QRGB(154,205, 50), "olivedrab3" }, -
585 { QRGB(105,139, 34), "olivedrab4" }, -
586 { QRGB(255,165, 0), "orange" }, -
587 { QRGB(255,165, 0), "orange1" }, -
588 { QRGB(238,154, 0), "orange2" }, -
589 { QRGB(205,133, 0), "orange3" }, -
590 { QRGB(139, 90, 0), "orange4" }, -
591 { QRGB(255, 69, 0), "orangered" }, -
592 { QRGB(255, 69, 0), "orangered1" }, -
593 { QRGB(238, 64, 0), "orangered2" }, -
594 { QRGB(205, 55, 0), "orangered3" }, -
595 { QRGB(139, 37, 0), "orangered4" }, -
596 { QRGB(218,112,214), "orchid" }, -
597 { QRGB(255,131,250), "orchid1" }, -
598 { QRGB(238,122,233), "orchid2" }, -
599 { QRGB(205,105,201), "orchid3" }, -
600 { QRGB(139, 71,137), "orchid4" }, -
601 { QRGB(238,232,170), "palegoldenrod" }, -
602 { QRGB(152,251,152), "palegreen" }, -
603 { QRGB(154,255,154), "palegreen1" }, -
604 { QRGB(144,238,144), "palegreen2" }, -
605 { QRGB(124,205,124), "palegreen3" }, -
606 { QRGB( 84,139, 84), "palegreen4" }, -
607 { QRGB(175,238,238), "paleturquoise" }, -
608 { QRGB(187,255,255), "paleturquoise1" }, -
609 { QRGB(174,238,238), "paleturquoise2" }, -
610 { QRGB(150,205,205), "paleturquoise3" }, -
611 { QRGB(102,139,139), "paleturquoise4" }, -
612 { QRGB(219,112,147), "palevioletred" }, -
613 { QRGB(255,130,171), "palevioletred1" }, -
614 { QRGB(238,121,159), "palevioletred2" }, -
615 { QRGB(205,104,137), "palevioletred3" }, -
616 { QRGB(139, 71, 93), "palevioletred4" }, -
617 { QRGB(255,239,213), "papayawhip" }, -
618 { QRGB(255,218,185), "peachpuff" }, -
619 { QRGB(255,218,185), "peachpuff1" }, -
620 { QRGB(238,203,173), "peachpuff2" }, -
621 { QRGB(205,175,149), "peachpuff3" }, -
622 { QRGB(139,119,101), "peachpuff4" }, -
623 { QRGB(205,133, 63), "peru" }, -
624 { QRGB(255,192,203), "pink" }, -
625 { QRGB(255,181,197), "pink1" }, -
626 { QRGB(238,169,184), "pink2" }, -
627 { QRGB(205,145,158), "pink3" }, -
628 { QRGB(139, 99,108), "pink4" }, -
629 { QRGB(221,160,221), "plum" }, -
630 { QRGB(255,187,255), "plum1" }, -
631 { QRGB(238,174,238), "plum2" }, -
632 { QRGB(205,150,205), "plum3" }, -
633 { QRGB(139,102,139), "plum4" }, -
634 { QRGB(176,224,230), "powderblue" }, -
635 { QRGB(160, 32,240), "purple" }, -
636 { QRGB(155, 48,255), "purple1" }, -
637 { QRGB(145, 44,238), "purple2" }, -
638 { QRGB(125, 38,205), "purple3" }, -
639 { QRGB( 85, 26,139), "purple4" }, -
640 { QRGB(255, 0, 0), "red" }, -
641 { QRGB(255, 0, 0), "red1" }, -
642 { QRGB(238, 0, 0), "red2" }, -
643 { QRGB(205, 0, 0), "red3" }, -
644 { QRGB(139, 0, 0), "red4" }, -
645 { QRGB(188,143,143), "rosybrown" }, -
646 { QRGB(255,193,193), "rosybrown1" }, -
647 { QRGB(238,180,180), "rosybrown2" }, -
648 { QRGB(205,155,155), "rosybrown3" }, -
649 { QRGB(139,105,105), "rosybrown4" }, -
650 { QRGB( 65,105,225), "royalblue" }, -
651 { QRGB( 72,118,255), "royalblue1" }, -
652 { QRGB( 67,110,238), "royalblue2" }, -
653 { QRGB( 58, 95,205), "royalblue3" }, -
654 { QRGB( 39, 64,139), "royalblue4" }, -
655 { QRGB(139, 69, 19), "saddlebrown" }, -
656 { QRGB(250,128,114), "salmon" }, -
657 { QRGB(255,140,105), "salmon1" }, -
658 { QRGB(238,130, 98), "salmon2" }, -
659 { QRGB(205,112, 84), "salmon3" }, -
660 { QRGB(139, 76, 57), "salmon4" }, -
661 { QRGB(244,164, 96), "sandybrown" }, -
662 { QRGB( 46,139, 87), "seagreen" }, -
663 { QRGB( 84,255,159), "seagreen1" }, -
664 { QRGB( 78,238,148), "seagreen2" }, -
665 { QRGB( 67,205,128), "seagreen3" }, -
666 { QRGB( 46,139, 87), "seagreen4" }, -
667 { QRGB(255,245,238), "seashell" }, -
668 { QRGB(255,245,238), "seashell1" }, -
669 { QRGB(238,229,222), "seashell2" }, -
670 { QRGB(205,197,191), "seashell3" }, -
671 { QRGB(139,134,130), "seashell4" }, -
672 { QRGB(160, 82, 45), "sienna" }, -
673 { QRGB(255,130, 71), "sienna1" }, -
674 { QRGB(238,121, 66), "sienna2" }, -
675 { QRGB(205,104, 57), "sienna3" }, -
676 { QRGB(139, 71, 38), "sienna4" }, -
677 { QRGB(135,206,235), "skyblue" }, -
678 { QRGB(135,206,255), "skyblue1" }, -
679 { QRGB(126,192,238), "skyblue2" }, -
680 { QRGB(108,166,205), "skyblue3" }, -
681 { QRGB( 74,112,139), "skyblue4" }, -
682 { QRGB(106, 90,205), "slateblue" }, -
683 { QRGB(131,111,255), "slateblue1" }, -
684 { QRGB(122,103,238), "slateblue2" }, -
685 { QRGB(105, 89,205), "slateblue3" }, -
686 { QRGB( 71, 60,139), "slateblue4" }, -
687 { QRGB(112,128,144), "slategray" }, -
688 { QRGB(198,226,255), "slategray1" }, -
689 { QRGB(185,211,238), "slategray2" }, -
690 { QRGB(159,182,205), "slategray3" }, -
691 { QRGB(108,123,139), "slategray4" }, -
692 { QRGB(112,128,144), "slategrey" }, -
693 { QRGB(255,250,250), "snow" }, -
694 { QRGB(255,250,250), "snow1" }, -
695 { QRGB(238,233,233), "snow2" }, -
696 { QRGB(205,201,201), "snow3" }, -
697 { QRGB(139,137,137), "snow4" }, -
698 { QRGB( 0,255,127), "springgreen" }, -
699 { QRGB( 0,255,127), "springgreen1" }, -
700 { QRGB( 0,238,118), "springgreen2" }, -
701 { QRGB( 0,205,102), "springgreen3" }, -
702 { QRGB( 0,139, 69), "springgreen4" }, -
703 { QRGB( 70,130,180), "steelblue" }, -
704 { QRGB( 99,184,255), "steelblue1" }, -
705 { QRGB( 92,172,238), "steelblue2" }, -
706 { QRGB( 79,148,205), "steelblue3" }, -
707 { QRGB( 54,100,139), "steelblue4" }, -
708 { QRGB(210,180,140), "tan" }, -
709 { QRGB(255,165, 79), "tan1" }, -
710 { QRGB(238,154, 73), "tan2" }, -
711 { QRGB(205,133, 63), "tan3" }, -
712 { QRGB(139, 90, 43), "tan4" }, -
713 { QRGB(216,191,216), "thistle" }, -
714 { QRGB(255,225,255), "thistle1" }, -
715 { QRGB(238,210,238), "thistle2" }, -
716 { QRGB(205,181,205), "thistle3" }, -
717 { QRGB(139,123,139), "thistle4" }, -
718 { QRGB(255, 99, 71), "tomato" }, -
719 { QRGB(255, 99, 71), "tomato1" }, -
720 { QRGB(238, 92, 66), "tomato2" }, -
721 { QRGB(205, 79, 57), "tomato3" }, -
722 { QRGB(139, 54, 38), "tomato4" }, -
723 { QRGB( 64,224,208), "turquoise" }, -
724 { QRGB( 0,245,255), "turquoise1" }, -
725 { QRGB( 0,229,238), "turquoise2" }, -
726 { QRGB( 0,197,205), "turquoise3" }, -
727 { QRGB( 0,134,139), "turquoise4" }, -
728 { QRGB(238,130,238), "violet" }, -
729 { QRGB(208, 32,144), "violetred" }, -
730 { QRGB(255, 62,150), "violetred1" }, -
731 { QRGB(238, 58,140), "violetred2" }, -
732 { QRGB(205, 50,120), "violetred3" }, -
733 { QRGB(139, 34, 82), "violetred4" }, -
734 { QRGB(245,222,179), "wheat" }, -
735 { QRGB(255,231,186), "wheat1" }, -
736 { QRGB(238,216,174), "wheat2" }, -
737 { QRGB(205,186,150), "wheat3" }, -
738 { QRGB(139,126,102), "wheat4" }, -
739 { QRGB(255,255,255), "white" }, -
740 { QRGB(245,245,245), "whitesmoke" }, -
741 { QRGB(255,255, 0), "yellow" }, -
742 { QRGB(255,255, 0), "yellow1" }, -
743 { QRGB(238,238, 0), "yellow2" }, -
744 { QRGB(205,205, 0), "yellow3" }, -
745 { QRGB(139,139, 0), "yellow4" }, -
746 { QRGB(154,205, 50), "yellowgreen" } }; -
747 -
748inline bool operator<(const char *name, const XPMRGBData &data) -
749{ return qstrcmp(name, data.name) < 0; }
executed: return qstrcmp(name, data.name) < 0;
Execution Count:202
202
750inline bool operator<(const XPMRGBData &data, const char *name) -
751{ return qstrcmp(data.name, name) < 0; }
executed: return qstrcmp(data.name, name) < 0;
Execution Count:2020
2020
752 -
753static inline bool qt_get_named_xpm_rgb(const char *name_no_space, QRgb *rgb) -
754{ -
755 const XPMRGBData *r = qBinaryFind(xpmRgbTbl, xpmRgbTbl + xpmRgbTblSize, name_no_space);
executed (the execution status of this line is deduced): const XPMRGBData *r = qBinaryFind(xpmRgbTbl, xpmRgbTbl + xpmRgbTblSize, name_no_space);
-
756 if (r != xpmRgbTbl + xpmRgbTblSize) {
partially evaluated: r != xpmRgbTbl + xpmRgbTblSize
TRUEFALSE
yes
Evaluation Count:202
no
Evaluation Count:0
0-202
757 *rgb = r->value;
executed (the execution status of this line is deduced): *rgb = r->value;
-
758 return true;
executed: return true;
Execution Count:202
202
759 } else { -
760 return false;
never executed: return false;
0
761 } -
762} -
763 -
764/***************************************************************************** -
765 Misc. utility functions -
766 *****************************************************************************/ -
767static QString fbname(const QString &fileName) // get file basename (sort of) -
768{ -
769 QString s = fileName;
executed (the execution status of this line is deduced): QString s = fileName;
-
770 if (!s.isEmpty()) {
partially evaluated: !s.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:290
0-290
771 int i;
never executed (the execution status of this line is deduced): int i;
-
772 if ((i = s.lastIndexOf(QLatin1Char('/'))) >= 0)
never evaluated: (i = s.lastIndexOf(QLatin1Char('/'))) >= 0
0
773 s = s.mid(i);
never executed: s = s.mid(i);
0
774 if ((i = s.lastIndexOf(QLatin1Char('\\'))) >= 0)
never evaluated: (i = s.lastIndexOf(QLatin1Char('\\'))) >= 0
0
775 s = s.mid(i);
never executed: s = s.mid(i);
0
776 QRegExp r(QLatin1String("[a-zA-Z][a-zA-Z0-9_]*"));
never executed (the execution status of this line is deduced): QRegExp r(QLatin1String("[a-zA-Z][a-zA-Z0-9_]*"));
-
777 int p = r.indexIn(s);
never executed (the execution status of this line is deduced): int p = r.indexIn(s);
-
778 if (p == -1)
never evaluated: p == -1
0
779 s.clear();
never executed: s.clear();
0
780 else -
781 s = s.mid(p, r.matchedLength());
never executed: s = s.mid(p, r.matchedLength());
0
782 } -
783 if (s.isEmpty())
partially evaluated: s.isEmpty()
TRUEFALSE
yes
Evaluation Count:290
no
Evaluation Count:0
0-290
784 s = QString::fromLatin1("dummy");
executed: s = QString::fromLatin1("dummy");
Execution Count:290
290
785 return s;
executed: return s;
Execution Count:290
290
786} -
787 -
788// Skip until ", read until the next ", return the rest in *buf -
789// Returns false on error, true on success -
790 -
791static bool read_xpm_string(QByteArray &buf, QIODevice *d, const char * const *source, int &index, -
792 QByteArray &state) -
793{ -
794 if (source) {
evaluated: source
TRUEFALSE
yes
Evaluation Count:55281
yes
Evaluation Count:45309
45309-55281
795 buf = source[index++];
executed (the execution status of this line is deduced): buf = source[index++];
-
796 return true;
executed: return true;
Execution Count:55281
55281
797 } -
798 -
799 buf = "";
executed (the execution status of this line is deduced): buf = "";
-
800 bool gotQuote = false;
executed (the execution status of this line is deduced): bool gotQuote = false;
-
801 int offset = 0;
executed (the execution status of this line is deduced): int offset = 0;
-
802 forever {
executed (the execution status of this line is deduced): for(;;) {
-
803 if (offset == state.size() || state.isEmpty()) {
evaluated: offset == state.size()
TRUEFALSE
yes
Evaluation Count:3205
yes
Evaluation Count:6327911
partially evaluated: state.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:6327911
0-6327911
804 char buf[2048];
executed (the execution status of this line is deduced): char buf[2048];
-
805 qint64 bytesRead = d->read(buf, sizeof(buf));
executed (the execution status of this line is deduced): qint64 bytesRead = d->read(buf, sizeof(buf));
-
806 if (bytesRead <= 0)
evaluated: bytesRead <= 0
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:3192
13-3192
807 return false;
executed: return false;
Execution Count:13
13
808 state = QByteArray(buf, int(bytesRead));
executed (the execution status of this line is deduced): state = QByteArray(buf, int(bytesRead));
-
809 offset = 0;
executed (the execution status of this line is deduced): offset = 0;
-
810 }
executed: }
Execution Count:3192
3192
811 -
812 if (!gotQuote) {
evaluated: !gotQuote
TRUEFALSE
yes
Evaluation Count:154031
yes
Evaluation Count:6177072
154031-6177072
813 if (state.at(offset++) == '"')
evaluated: state.at(offset++) == '"'
TRUEFALSE
yes
Evaluation Count:45296
yes
Evaluation Count:108735
45296-108735
814 gotQuote = true;
executed: gotQuote = true;
Execution Count:45296
45296
815 } else {
executed: }
Execution Count:154031
154031
816 char c = state.at(offset++);
executed (the execution status of this line is deduced): char c = state.at(offset++);
-
817 if (c == '"')
evaluated: c == '"'
TRUEFALSE
yes
Evaluation Count:45296
yes
Evaluation Count:6131776
45296-6131776
818 break;
executed: break;
Execution Count:45296
45296
819 buf += c;
executed (the execution status of this line is deduced): buf += c;
-
820 }
executed: }
Execution Count:6131776
6131776
821 } -
822 state.remove(0, offset);
executed (the execution status of this line is deduced): state.remove(0, offset);
-
823 return true;
executed: return true;
Execution Count:45296
45296
824} -
825 -
826// Tests if the given prefix can be the start of an XPM color specification -
827 -
828static bool is_xpm_color_spec_prefix(const QByteArray& prefix) -
829{ -
830 return prefix == "c" ||
executed: return prefix == "c" || prefix == "g" || prefix == "g4" || prefix == "m" || prefix == "s";
Execution Count:58516
58516
831 prefix == "g" ||
executed: return prefix == "c" || prefix == "g" || prefix == "g4" || prefix == "m" || prefix == "s";
Execution Count:58516
58516
832 prefix == "g4" ||
executed: return prefix == "c" || prefix == "g" || prefix == "g4" || prefix == "m" || prefix == "s";
Execution Count:58516
58516
833 prefix == "m" ||
executed: return prefix == "c" || prefix == "g" || prefix == "g4" || prefix == "m" || prefix == "s";
Execution Count:58516
58516
834 prefix == "s";
executed: return prefix == "c" || prefix == "g" || prefix == "g4" || prefix == "m" || prefix == "s";
Execution Count:58516
58516
835} -
836 -
837// Reads XPM header. -
838 -
839static bool read_xpm_header( -
840 QIODevice *device, const char * const * source, int& index, QByteArray &state, -
841 int *cpp, int *ncols, int *w, int *h) -
842{ -
843 QByteArray buf(200, 0);
executed (the execution status of this line is deduced): QByteArray buf(200, 0);
-
844 -
845 if (!read_xpm_string(buf, device, source, index, state))
partially evaluated: !read_xpm_string(buf, device, source, index, state)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2237
0-2237
846 return false;
never executed: return false;
0
847 -
848#if defined(_MSC_VER) && _MSC_VER >= 1400 && !defined(Q_OS_WINCE) -
849 if (sscanf_s(buf, "%d %d %d %d", w, h, ncols, cpp) < 4) -
850#else -
851 if (sscanf(buf, "%d %d %d %d", w, h, ncols, cpp) < 4)
evaluated: sscanf(buf, "%d %d %d %d", w, h, ncols, cpp) < 4
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:2236
1-2236
852#endif -
853 return false; // < 4 numbers parsed
executed: return false;
Execution Count:1
1
854 -
855 return true;
executed: return true;
Execution Count:2236
2236
856} -
857 -
858// Reads XPM body (color information & pixels). -
859 -
860static bool read_xpm_body( -
861 QIODevice *device, const char * const * source, int& index, QByteArray& state, -
862 int cpp, int ncols, int w, int h, QImage& image) -
863{ -
864 QByteArray buf(200, 0);
executed (the execution status of this line is deduced): QByteArray buf(200, 0);
-
865 int i;
executed (the execution status of this line is deduced): int i;
-
866 -
867 if (cpp < 0 || cpp > 15)
evaluated: cpp < 0
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:2228
partially evaluated: cpp > 15
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2228
0-2228
868 return false;
executed: return false;
Execution Count:6
6
869 -
870 // For > 256 colors, we delay creation of the image until -
871 // after we have read the color specifications, so that we can -
872 // create it in correct format (Format_RGB32 vs Format_ARGB32, -
873 // depending on absence or presence of "c none", respectively) -
874 if (ncols <= 256) {
evaluated: ncols <= 256
TRUEFALSE
yes
Evaluation Count:2202
yes
Evaluation Count:26
26-2202
875 if (image.size() != QSize(w, h) || image.format() != QImage::Format_Indexed8) {
partially evaluated: image.size() != QSize(w, h)
TRUEFALSE
yes
Evaluation Count:2202
no
Evaluation Count:0
never evaluated: image.format() != QImage::Format_Indexed8
0-2202
876 image = QImage(w, h, QImage::Format_Indexed8);
executed (the execution status of this line is deduced): image = QImage(w, h, QImage::Format_Indexed8);
-
877 if (image.isNull())
partially evaluated: image.isNull()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2202
0-2202
878 return false;
never executed: return false;
0
879 }
executed: }
Execution Count:2202
2202
880 image.setColorCount(ncols);
executed (the execution status of this line is deduced): image.setColorCount(ncols);
-
881 }
executed: }
Execution Count:2202
2202
882 -
883 QMap<quint64, int> colorMap;
executed (the execution status of this line is deduced): QMap<quint64, int> colorMap;
-
884 int currentColor;
executed (the execution status of this line is deduced): int currentColor;
-
885 bool hasTransparency = false;
executed (the execution status of this line is deduced): bool hasTransparency = false;
-
886 -
887 for(currentColor=0; currentColor < ncols; ++currentColor) {
evaluated: currentColor < ncols
TRUEFALSE
yes
Evaluation Count:58241
yes
Evaluation Count:2215
2215-58241
888 if (!read_xpm_string(buf, device, source, index, state)) {
partially evaluated: !read_xpm_string(buf, device, source, index, state)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:58241
0-58241
889 qWarning("QImage: XPM color specification missing");
never executed (the execution status of this line is deduced): QMessageLogger("image/qxpmhandler.cpp", 889, __PRETTY_FUNCTION__).warning("QImage: XPM color specification missing");
-
890 return false;
never executed: return false;
0
891 } -
892 QByteArray index;
executed (the execution status of this line is deduced): QByteArray index;
-
893 index = buf.left(cpp);
executed (the execution status of this line is deduced): index = buf.left(cpp);
-
894 buf = buf.mid(cpp).simplified().trimmed().toLower();
executed (the execution status of this line is deduced): buf = buf.mid(cpp).simplified().trimmed().toLower();
-
895 QList<QByteArray> tokens = buf.split(' ');
executed (the execution status of this line is deduced): QList<QByteArray> tokens = buf.split(' ');
-
896 i = tokens.indexOf("c");
executed (the execution status of this line is deduced): i = tokens.indexOf("c");
-
897 if (i < 0)
evaluated: i < 0
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:58228
13-58228
898 i = tokens.indexOf("g");
executed: i = tokens.indexOf("g");
Execution Count:13
13
899 if (i < 0)
evaluated: i < 0
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:58228
13-58228
900 i = tokens.indexOf("g4");
executed: i = tokens.indexOf("g4");
Execution Count:13
13
901 if (i < 0)
evaluated: i < 0
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:58228
13-58228
902 i = tokens.indexOf("m");
executed: i = tokens.indexOf("m");
Execution Count:13
13
903 if (i < 0) {
evaluated: i < 0
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:58228
13-58228
904 qWarning("QImage: XPM color specification is missing: %s", buf.constData());
executed (the execution status of this line is deduced): QMessageLogger("image/qxpmhandler.cpp", 904, __PRETTY_FUNCTION__).warning("QImage: XPM color specification is missing: %s", buf.constData());
-
905 return false; // no c/g/g4/m specification at all
executed: return false;
Execution Count:13
13
906 } -
907 QByteArray color;
executed (the execution status of this line is deduced): QByteArray color;
-
908 while ((++i < tokens.size()) && !is_xpm_color_spec_prefix(tokens.at(i))) {
evaluated: (++i < tokens.size())
TRUEFALSE
yes
Evaluation Count:58516
yes
Evaluation Count:58018
evaluated: !is_xpm_color_spec_prefix(tokens.at(i))
TRUEFALSE
yes
Evaluation Count:58306
yes
Evaluation Count:210
210-58516
909 color.append(tokens.at(i));
executed (the execution status of this line is deduced): color.append(tokens.at(i));
-
910 }
executed: }
Execution Count:58306
58306
911 if (color.isEmpty()) {
partially evaluated: color.isEmpty()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:58228
0-58228
912 qWarning("QImage: XPM color value is missing from specification: %s", buf.constData());
never executed (the execution status of this line is deduced): QMessageLogger("image/qxpmhandler.cpp", 912, __PRETTY_FUNCTION__).warning("QImage: XPM color value is missing from specification: %s", buf.constData());
-
913 return false; // no color value
never executed: return false;
0
914 } -
915 buf = color;
executed (the execution status of this line is deduced): buf = color;
-
916 if (buf == "none") {
evaluated: buf == "none"
TRUEFALSE
yes
Evaluation Count:2152
yes
Evaluation Count:56076
2152-56076
917 hasTransparency = true;
executed (the execution status of this line is deduced): hasTransparency = true;
-
918 int transparentColor = currentColor;
executed (the execution status of this line is deduced): int transparentColor = currentColor;
-
919 if (ncols <= 256) {
evaluated: ncols <= 256
TRUEFALSE
yes
Evaluation Count:2139
yes
Evaluation Count:13
13-2139
920 image.setColor(transparentColor, 0);
executed (the execution status of this line is deduced): image.setColor(transparentColor, 0);
-
921 colorMap.insert(xpmHash(QLatin1String(index.constData())), transparentColor);
executed (the execution status of this line is deduced): colorMap.insert(xpmHash(QLatin1String(index.constData())), transparentColor);
-
922 } else {
executed: }
Execution Count:2139
2139
923 colorMap.insert(xpmHash(QLatin1String(index.constData())), 0);
executed (the execution status of this line is deduced): colorMap.insert(xpmHash(QLatin1String(index.constData())), 0);
-
924 }
executed: }
Execution Count:13
13
925 } else { -
926 QRgb c_rgb;
executed (the execution status of this line is deduced): QRgb c_rgb;
-
927 if (((buf.length()-1) % 3) && (buf[0] == '#')) {
evaluated: ((buf.length()-1) % 3)
TRUEFALSE
yes
Evaluation Count:131
yes
Evaluation Count:55945
partially evaluated: (buf[0] == '#')
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:131
0-55945
928 buf.truncate(((buf.length()-1) / 4 * 3) + 1); // remove alpha channel left by imagemagick
never executed (the execution status of this line is deduced): buf.truncate(((buf.length()-1) / 4 * 3) + 1);
-
929 }
never executed: }
0
930 if (buf[0] == '#') {
evaluated: buf[0] == '#'
TRUEFALSE
yes
Evaluation Count:55874
yes
Evaluation Count:202
202-55874
931 qt_get_hex_rgb(buf, &c_rgb);
executed (the execution status of this line is deduced): qt_get_hex_rgb(buf, &c_rgb);
-
932 } else {
executed: }
Execution Count:55874
55874
933 qt_get_named_xpm_rgb(buf, &c_rgb);
executed (the execution status of this line is deduced): qt_get_named_xpm_rgb(buf, &c_rgb);
-
934 }
executed: }
Execution Count:202
202
935 if (ncols <= 256) {
evaluated: ncols <= 256
TRUEFALSE
yes
Evaluation Count:35887
yes
Evaluation Count:20189
20189-35887
936 image.setColor(currentColor, 0xff000000 | c_rgb);
executed (the execution status of this line is deduced): image.setColor(currentColor, 0xff000000 | c_rgb);
-
937 colorMap.insert(xpmHash(QLatin1String(index.constData())), currentColor);
executed (the execution status of this line is deduced): colorMap.insert(xpmHash(QLatin1String(index.constData())), currentColor);
-
938 } else {
executed: }
Execution Count:35887
35887
939 colorMap.insert(xpmHash(QLatin1String(index.constData())), 0xff000000 | c_rgb);
executed (the execution status of this line is deduced): colorMap.insert(xpmHash(QLatin1String(index.constData())), 0xff000000 | c_rgb);
-
940 }
executed: }
Execution Count:20189
20189
941 } -
942 } -
943 -
944 if (ncols > 256) {
evaluated: ncols > 256
TRUEFALSE
yes
Evaluation Count:26
yes
Evaluation Count:2189
26-2189
945 // Now we can create 32-bit image of appropriate format -
946 QImage::Format format = hasTransparency ?
evaluated: hasTransparency
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:13
13
947 QImage::Format_ARGB32 : QImage::Format_RGB32;
executed (the execution status of this line is deduced): QImage::Format_ARGB32 : QImage::Format_RGB32;
-
948 if (image.size() != QSize(w, h) || image.format() != format) {
partially evaluated: image.size() != QSize(w, h)
TRUEFALSE
yes
Evaluation Count:26
no
Evaluation Count:0
never evaluated: image.format() != format
0-26
949 image = QImage(w, h, format);
executed (the execution status of this line is deduced): image = QImage(w, h, format);
-
950 if (image.isNull())
partially evaluated: image.isNull()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:26
0-26
951 return false;
never executed: return false;
0
952 }
executed: }
Execution Count:26
26
953 }
executed: }
Execution Count:26
26
954 -
955 // Read pixels -
956 for(int y=0; y<h; y++) {
evaluated: y<h
TRUEFALSE
yes
Evaluation Count:40112
yes
Evaluation Count:2202
2202-40112
957 if (!read_xpm_string(buf, device, source, index, state)) {
evaluated: !read_xpm_string(buf, device, source, index, state)
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:40099
13-40099
958 qWarning("QImage: XPM pixels missing on image line %d", y);
executed (the execution status of this line is deduced): QMessageLogger("image/qxpmhandler.cpp", 958, __PRETTY_FUNCTION__).warning("QImage: XPM pixels missing on image line %d", y);
-
959 return false;
executed: return false;
Execution Count:13
13
960 } -
961 if (image.depth() == 8) {
evaluated: image.depth() == 8
TRUEFALSE
yes
Evaluation Count:39891
yes
Evaluation Count:208
208-39891
962 uchar *p = image.scanLine(y);
executed (the execution status of this line is deduced): uchar *p = image.scanLine(y);
-
963 uchar *d = (uchar *)buf.data();
executed (the execution status of this line is deduced): uchar *d = (uchar *)buf.data();
-
964 uchar *end = d + buf.length();
executed (the execution status of this line is deduced): uchar *end = d + buf.length();
-
965 int x;
executed (the execution status of this line is deduced): int x;
-
966 if (cpp == 1) {
evaluated: cpp == 1
TRUEFALSE
yes
Evaluation Count:29811
yes
Evaluation Count:10080
10080-29811
967 char b[2];
executed (the execution status of this line is deduced): char b[2];
-
968 b[1] = '\0';
executed (the execution status of this line is deduced): b[1] = '\0';
-
969 for (x=0; x<w && d<end; x++) {
evaluated: x<w
TRUEFALSE
yes
Evaluation Count:1259023
yes
Evaluation Count:29798
evaluated: d<end
TRUEFALSE
yes
Evaluation Count:1259010
yes
Evaluation Count:13
13-1259023
970 b[0] = *d++;
executed (the execution status of this line is deduced): b[0] = *d++;
-
971 *p++ = (uchar)colorMap[xpmHash(b)];
executed (the execution status of this line is deduced): *p++ = (uchar)colorMap[xpmHash(b)];
-
972 }
executed: }
Execution Count:1259010
1259010
973 } else {
executed: }
Execution Count:29811
29811
974 char b[16];
executed (the execution status of this line is deduced): char b[16];
-
975 b[cpp] = '\0';
executed (the execution status of this line is deduced): b[cpp] = '\0';
-
976 for (x=0; x<w && d<end; x++) {
evaluated: x<w
TRUEFALSE
yes
Evaluation Count:2419200
yes
Evaluation Count:10080
partially evaluated: d<end
TRUEFALSE
yes
Evaluation Count:2419200
no
Evaluation Count:0
0-2419200
977 memcpy(b, (char *)d, cpp);
executed (the execution status of this line is deduced): memcpy(b, (char *)d, cpp);
-
978 *p++ = (uchar)colorMap[xpmHash(b)];
executed (the execution status of this line is deduced): *p++ = (uchar)colorMap[xpmHash(b)];
-
979 d += cpp;
executed (the execution status of this line is deduced): d += cpp;
-
980 }
executed: }
Execution Count:2419200
2419200
981 }
executed: }
Execution Count:10080
10080
982 // avoid uninitialized memory for malformed xpms -
983 if (x < w) {
evaluated: x < w
TRUEFALSE
yes
Evaluation Count:13
yes
Evaluation Count:39878
13-39878
984 qWarning("QImage: XPM pixels missing on image line %d (possibly a C++ trigraph).", y);
executed (the execution status of this line is deduced): QMessageLogger("image/qxpmhandler.cpp", 984, __PRETTY_FUNCTION__).warning("QImage: XPM pixels missing on image line %d (possibly a C++ trigraph).", y);
-
985 memset(p, 0, w - x);
executed (the execution status of this line is deduced): memset(p, 0, w - x);
-
986 }
executed: }
Execution Count:13
13
987 } else {
executed: }
Execution Count:39891
39891
988 QRgb *p = (QRgb*)image.scanLine(y);
executed (the execution status of this line is deduced): QRgb *p = (QRgb*)image.scanLine(y);
-
989 uchar *d = (uchar *)buf.data();
executed (the execution status of this line is deduced): uchar *d = (uchar *)buf.data();
-
990 uchar *end = d + buf.length();
executed (the execution status of this line is deduced): uchar *end = d + buf.length();
-
991 int x;
executed (the execution status of this line is deduced): int x;
-
992 char b[16];
executed (the execution status of this line is deduced): char b[16];
-
993 b[cpp] = '\0';
executed (the execution status of this line is deduced): b[cpp] = '\0';
-
994 for (x=0; x<w && d<end; x++) {
evaluated: x<w
TRUEFALSE
yes
Evaluation Count:1664
yes
Evaluation Count:208
partially evaluated: d<end
TRUEFALSE
yes
Evaluation Count:1664
no
Evaluation Count:0
0-1664
995 memcpy(b, (char *)d, cpp);
executed (the execution status of this line is deduced): memcpy(b, (char *)d, cpp);
-
996 *p++ = (QRgb)colorMap[xpmHash(b)];
executed (the execution status of this line is deduced): *p++ = (QRgb)colorMap[xpmHash(b)];
-
997 d += cpp;
executed (the execution status of this line is deduced): d += cpp;
-
998 }
executed: }
Execution Count:1664
1664
999 // avoid uninitialized memory for malformed xpms -
1000 if (x < w) {
partially evaluated: x < w
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:208
0-208
1001 qWarning("QImage: XPM pixels missing on image line %d (possibly a C++ trigraph).", y);
never executed (the execution status of this line is deduced): QMessageLogger("image/qxpmhandler.cpp", 1001, __PRETTY_FUNCTION__).warning("QImage: XPM pixels missing on image line %d (possibly a C++ trigraph).", y);
-
1002 memset(p, 0, (w - x)*4);
never executed (the execution status of this line is deduced): memset(p, 0, (w - x)*4);
-
1003 }
never executed: }
0
1004 }
executed: }
Execution Count:208
208
1005 } -
1006 -
1007 if (device) {
evaluated: device
TRUEFALSE
yes
Evaluation Count:132
yes
Evaluation Count:2070
132-2070
1008 // Rewind unused characters, and skip to the end of the XPM struct. -
1009 for (int i = state.size() - 1; i >= 0; --i)
evaluated: i >= 0
TRUEFALSE
yes
Evaluation Count:2851
yes
Evaluation Count:132
132-2851
1010 device->ungetChar(state[i]);
executed: device->ungetChar(state[i]);
Execution Count:2851
2851
1011 char c;
executed (the execution status of this line is deduced): char c;
-
1012 while (device->getChar(&c) && c != ';') {}
executed: }
Execution Count:182
partially evaluated: device->getChar(&c)
TRUEFALSE
yes
Evaluation Count:314
no
Evaluation Count:0
evaluated: c != ';'
TRUEFALSE
yes
Evaluation Count:182
yes
Evaluation Count:132
0-314
1013 while (device->getChar(&c) && c != '\n') {}
never executed: }
partially evaluated: device->getChar(&c)
TRUEFALSE
yes
Evaluation Count:132
no
Evaluation Count:0
partially evaluated: c != '\n'
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:132
0-132
1014 }
executed: }
Execution Count:132
132
1015 return true;
executed: return true;
Execution Count:2202
2202
1016} -
1017 -
1018// -
1019// INTERNAL -
1020// -
1021// Reads an .xpm from either the QImageIO or from the QString *. -
1022// One of the two HAS to be 0, the other one is used. -
1023// -
1024 -
1025bool qt_read_xpm_image_or_array(QIODevice *device, const char * const * source, QImage &image) -
1026{ -
1027 if (!source)
partially evaluated: !source
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2071
0-2071
1028 return true;
never executed: return true;
0
1029 -
1030 QByteArray buf(200, 0);
executed (the execution status of this line is deduced): QByteArray buf(200, 0);
-
1031 QByteArray state;
executed (the execution status of this line is deduced): QByteArray state;
-
1032 -
1033 int cpp, ncols, w, h, index = 0;
executed (the execution status of this line is deduced): int cpp, ncols, w, h, index = 0;
-
1034 -
1035 if (device) {
partially evaluated: device
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2071
0-2071
1036 // "/* XPM */" -
1037 int readBytes;
never executed (the execution status of this line is deduced): int readBytes;
-
1038 if ((readBytes = device->readLine(buf.data(), buf.size())) < 0)
never evaluated: (readBytes = device->readLine(buf.data(), buf.size())) < 0
0
1039 return false;
never executed: return false;
0
1040 -
1041 if (buf.indexOf("/* XPM") != 0) {
never evaluated: buf.indexOf("/* XPM") != 0
0
1042 while (readBytes > 0) {
never evaluated: readBytes > 0
0
1043 device->ungetChar(buf.at(readBytes - 1));
never executed (the execution status of this line is deduced): device->ungetChar(buf.at(readBytes - 1));
-
1044 --readBytes;
never executed (the execution status of this line is deduced): --readBytes;
-
1045 }
never executed: }
0
1046 return false;
never executed: return false;
0
1047 }// bad magic -
1048 }
never executed: }
0
1049 -
1050 if (!read_xpm_header(device, source, index, state, &cpp, &ncols, &w, &h))
evaluated: !read_xpm_header(device, source, index, state, &cpp, &ncols, &w, &h)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:2070
1-2070
1051 return false;
executed: return false;
Execution Count:1
1
1052 -
1053 return read_xpm_body(device, source, index, state, cpp, ncols, w, h, image);
executed: return read_xpm_body(device, source, index, state, cpp, ncols, w, h, image);
Execution Count:2070
2070
1054} -
1055 -
1056static const char* xpm_color_name(int cpp, int index) -
1057{ -
1058 static char returnable[5]; -
1059 static const char code[] = ".#abcdefghijklmnopqrstuvwxyzABCD" -
1060 "EFGHIJKLMNOPQRSTUVWXYZ0123456789"; -
1061 // cpp is limited to 4 and index is limited to 64^cpp -
1062 if (cpp > 1) {
evaluated: cpp > 1
TRUEFALSE
yes
Evaluation Count:230744
yes
Evaluation Count:325512
230744-325512
1063 if (cpp > 2) {
partially evaluated: cpp > 2
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:230744
0-230744
1064 if (cpp > 3) {
never evaluated: cpp > 3
0
1065 returnable[3] = code[index % 64];
never executed (the execution status of this line is deduced): returnable[3] = code[index % 64];
-
1066 index /= 64;
never executed (the execution status of this line is deduced): index /= 64;
-
1067 } else
never executed: }
0
1068 returnable[3] = '\0';
never executed: returnable[3] = '\0';
0
1069 returnable[2] = code[index % 64];
never executed (the execution status of this line is deduced): returnable[2] = code[index % 64];
-
1070 index /= 64;
never executed (the execution status of this line is deduced): index /= 64;
-
1071 } else
never executed: }
0
1072 returnable[2] = '\0';
executed: returnable[2] = '\0';
Execution Count:230744
230744
1073 // the following 4 lines are a joke! -
1074 if (index == 0)
evaluated: index == 0
TRUEFALSE
yes
Evaluation Count:19140
yes
Evaluation Count:211604
19140-211604
1075 index = 64*44+21;
executed: index = 64*44+21;
Execution Count:19140
19140
1076 else if (index == 64*44+21)
partially evaluated: index == 64*44+21
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:211604
0-211604
1077 index = 0;
never executed: index = 0;
0
1078 returnable[1] = code[index % 64];
executed (the execution status of this line is deduced): returnable[1] = code[index % 64];
-
1079 index /= 64;
executed (the execution status of this line is deduced): index /= 64;
-
1080 } else
executed: }
Execution Count:230744
230744
1081 returnable[1] = '\0';
executed: returnable[1] = '\0';
Execution Count:325512
325512
1082 returnable[0] = code[index];
executed (the execution status of this line is deduced): returnable[0] = code[index];
-
1083 -
1084 return returnable;
executed: return returnable;
Execution Count:556256
556256
1085} -
1086 -
1087 -
1088// write XPM image data -
1089static bool write_xpm_image(const QImage &sourceImage, QIODevice *device, const QString &fileName) -
1090{ -
1091 if (!device->isWritable())
partially evaluated: !device->isWritable()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:290
0-290
1092 return false;
never executed: return false;
0
1093 -
1094 QImage image;
executed (the execution status of this line is deduced): QImage image;
-
1095 if (sourceImage.depth() != 32)
evaluated: sourceImage.depth() != 32
TRUEFALSE
yes
Evaluation Count:194
yes
Evaluation Count:96
96-194
1096 image = sourceImage.convertToFormat(QImage::Format_RGB32);
executed: image = sourceImage.convertToFormat(QImage::Format_RGB32);
Execution Count:194
194
1097 else -
1098 image = sourceImage;
executed: image = sourceImage;
Execution Count:96
96
1099 -
1100 QMap<QRgb, int> colorMap;
executed (the execution status of this line is deduced): QMap<QRgb, int> colorMap;
-
1101 -
1102 int w = image.width(), h = image.height(), ncolors = 0;
executed (the execution status of this line is deduced): int w = image.width(), h = image.height(), ncolors = 0;
-
1103 int x, y;
executed (the execution status of this line is deduced): int x, y;
-
1104 -
1105 // build color table -
1106 for(y=0; y<h; y++) {
evaluated: y<h
TRUEFALSE
yes
Evaluation Count:10444
yes
Evaluation Count:290
290-10444
1107 QRgb * yp = (QRgb *)image.scanLine(y);
executed (the execution status of this line is deduced): QRgb * yp = (QRgb *)image.scanLine(y);
-
1108 for(x=0; x<w; x++) {
evaluated: x<w
TRUEFALSE
yes
Evaluation Count:555624
yes
Evaluation Count:10444
10444-555624
1109 QRgb color = *(yp + x);
executed (the execution status of this line is deduced): QRgb color = *(yp + x);
-
1110 if (!colorMap.contains(color))
evaluated: !colorMap.contains(color)
TRUEFALSE
yes
Evaluation Count:632
yes
Evaluation Count:554992
632-554992
1111 colorMap.insert(color, ncolors++);
executed: colorMap.insert(color, ncolors++);
Execution Count:632
632
1112 }
executed: }
Execution Count:555624
555624
1113 }
executed: }
Execution Count:10444
10444
1114 -
1115 // number of 64-bit characters per pixel needed to encode all colors -
1116 int cpp = 1;
executed (the execution status of this line is deduced): int cpp = 1;
-
1117 for (int k = 64; ncolors > k; k *= 64) {
evaluated: ncolors > k
TRUEFALSE
yes
Evaluation Count:4
yes
Evaluation Count:290
4-290
1118 ++cpp;
executed (the execution status of this line is deduced): ++cpp;
-
1119 // limit to 4 characters per pixel -
1120 // 64^4 colors is enough for a 4096x4096 image -
1121 if (cpp > 4)
partially evaluated: cpp > 4
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:4
0-4
1122 break;
never executed: break;
0
1123 }
executed: }
Execution Count:4
4
1124 -
1125 QString line;
executed (the execution status of this line is deduced): QString line;
-
1126 -
1127 // write header -
1128 QTextStream s(device);
executed (the execution status of this line is deduced): QTextStream s(device);
-
1129 s << "/* XPM */" << endl
executed (the execution status of this line is deduced): s << "/* XPM */" << endl
-
1130 << "static char *" << fbname(fileName) << "[]={" << endl
executed (the execution status of this line is deduced): << "static char *" << fbname(fileName) << "[]={" << endl
-
1131 << '\"' << w << ' ' << h << ' ' << ncolors << ' ' << cpp << '\"';
executed (the execution status of this line is deduced): << '\"' << w << ' ' << h << ' ' << ncolors << ' ' << cpp << '\"';
-
1132 -
1133 // write palette -
1134 QMap<QRgb, int>::Iterator c = colorMap.begin();
executed (the execution status of this line is deduced): QMap<QRgb, int>::Iterator c = colorMap.begin();
-
1135 while (c != colorMap.end()) {
evaluated: c != colorMap.end()
TRUEFALSE
yes
Evaluation Count:632
yes
Evaluation Count:290
290-632
1136 QRgb color = c.key();
executed (the execution status of this line is deduced): QRgb color = c.key();
-
1137 if (image.format() != QImage::Format_RGB32 && !qAlpha(color))
evaluated: image.format() != QImage::Format_RGB32
TRUEFALSE
yes
Evaluation Count:71
yes
Evaluation Count:561
evaluated: !qAlpha(color)
TRUEFALSE
yes
Evaluation Count:1
yes
Evaluation Count:70
1-561
1138 line.sprintf("\"%s c None\"",
executed: line.sprintf("\"%s c None\"", xpm_color_name(cpp, *c));
Execution Count:1
1
1139 xpm_color_name(cpp, *c));
executed: line.sprintf("\"%s c None\"", xpm_color_name(cpp, *c));
Execution Count:1
1
1140 else -
1141 line.sprintf("\"%s c #%02x%02x%02x\"",
executed: line.sprintf("\"%s c #%02x%02x%02x\"", xpm_color_name(cpp, *c), qRed(color), qGreen(color), qBlue(color));
Execution Count:631
631
1142 xpm_color_name(cpp, *c),
executed: line.sprintf("\"%s c #%02x%02x%02x\"", xpm_color_name(cpp, *c), qRed(color), qGreen(color), qBlue(color));
Execution Count:631
631
1143 qRed(color),
executed: line.sprintf("\"%s c #%02x%02x%02x\"", xpm_color_name(cpp, *c), qRed(color), qGreen(color), qBlue(color));
Execution Count:631
631
1144 qGreen(color),
executed: line.sprintf("\"%s c #%02x%02x%02x\"", xpm_color_name(cpp, *c), qRed(color), qGreen(color), qBlue(color));
Execution Count:631
631
1145 qBlue(color));
executed: line.sprintf("\"%s c #%02x%02x%02x\"", xpm_color_name(cpp, *c), qRed(color), qGreen(color), qBlue(color));
Execution Count:631
631
1146 ++c;
executed (the execution status of this line is deduced): ++c;
-
1147 s << ',' << endl << line;
executed (the execution status of this line is deduced): s << ',' << endl << line;
-
1148 }
executed: }
Execution Count:632
632
1149 -
1150 // write pixels, limit to 4 characters per pixel -
1151 line.truncate(cpp*w);
executed (the execution status of this line is deduced): line.truncate(cpp*w);
-
1152 for(y=0; y<h; y++) {
evaluated: y<h
TRUEFALSE
yes
Evaluation Count:10444
yes
Evaluation Count:290
290-10444
1153 QRgb * yp = (QRgb *) image.scanLine(y);
executed (the execution status of this line is deduced): QRgb * yp = (QRgb *) image.scanLine(y);
-
1154 int cc = 0;
executed (the execution status of this line is deduced): int cc = 0;
-
1155 for(x=0; x<w; x++) {
evaluated: x<w
TRUEFALSE
yes
Evaluation Count:555624
yes
Evaluation Count:10444
10444-555624
1156 int color = (int)(*(yp + x));
executed (the execution status of this line is deduced): int color = (int)(*(yp + x));
-
1157 QByteArray chars(xpm_color_name(cpp, colorMap[color]));
executed (the execution status of this line is deduced): QByteArray chars(xpm_color_name(cpp, colorMap[color]));
-
1158 line[cc++] = QLatin1Char(chars[0]);
executed (the execution status of this line is deduced): line[cc++] = QLatin1Char(chars[0]);
-
1159 if (cpp > 1) {
evaluated: cpp > 1
TRUEFALSE
yes
Evaluation Count:230400
yes
Evaluation Count:325224
230400-325224
1160 line[cc++] = QLatin1Char(chars[1]);
executed (the execution status of this line is deduced): line[cc++] = QLatin1Char(chars[1]);
-
1161 if (cpp > 2) {
partially evaluated: cpp > 2
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:230400
0-230400
1162 line[cc++] = QLatin1Char(chars[2]);
never executed (the execution status of this line is deduced): line[cc++] = QLatin1Char(chars[2]);
-
1163 if (cpp > 3) {
never evaluated: cpp > 3
0
1164 line[cc++] = QLatin1Char(chars[3]);
never executed (the execution status of this line is deduced): line[cc++] = QLatin1Char(chars[3]);
-
1165 }
never executed: }
0
1166 }
never executed: }
0
1167 }
executed: }
Execution Count:230400
230400
1168 }
executed: }
Execution Count:555624
555624
1169 s << ',' << endl << '\"' << line << '\"';
executed (the execution status of this line is deduced): s << ',' << endl << '\"' << line << '\"';
-
1170 }
executed: }
Execution Count:10444
10444
1171 s << "};" << endl;
executed (the execution status of this line is deduced): s << "};" << endl;
-
1172 return (s.status() == QTextStream::Ok);
executed: return (s.status() == QTextStream::Ok);
Execution Count:290
290
1173} -
1174 -
1175QXpmHandler::QXpmHandler() -
1176 : state(Ready), index(0) -
1177{ -
1178}
executed: }
Execution Count:462
462
1179 -
1180bool QXpmHandler::readHeader() -
1181{ -
1182 state = Error;
executed (the execution status of this line is deduced): state = Error;
-
1183 if (!read_xpm_header(device(), 0, index, buffer, &cpp, &ncols, &width, &height))
partially evaluated: !read_xpm_header(device(), 0, index, buffer, &cpp, &ncols, &width, &height)
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:166
0-166
1184 return false;
never executed: return false;
0
1185 state = ReadHeader;
executed (the execution status of this line is deduced): state = ReadHeader;
-
1186 return true;
executed: return true;
Execution Count:166
166
1187} -
1188 -
1189bool QXpmHandler::readImage(QImage *image) -
1190{ -
1191 if (state == Error)
partially evaluated: state == Error
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:164
0-164
1192 return false;
never executed: return false;
0
1193 -
1194 if (state == Ready && !readHeader()) {
evaluated: state == Ready
TRUEFALSE
yes
Evaluation Count:163
yes
Evaluation Count:1
partially evaluated: !readHeader()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:163
0-163
1195 state = Error;
never executed (the execution status of this line is deduced): state = Error;
-
1196 return false;
never executed: return false;
0
1197 } -
1198 -
1199 if (!read_xpm_body(device(), 0, index, buffer, cpp, ncols, width, height, *image)) {
evaluated: !read_xpm_body(device(), 0, index, buffer, cpp, ncols, width, height, *image)
TRUEFALSE
yes
Evaluation Count:32
yes
Evaluation Count:132
32-132
1200 state = Error;
executed (the execution status of this line is deduced): state = Error;
-
1201 return false;
executed: return false;
Execution Count:32
32
1202 } -
1203 -
1204 state = Ready;
executed (the execution status of this line is deduced): state = Ready;
-
1205 return true;
executed: return true;
Execution Count:132
132
1206} -
1207 -
1208bool QXpmHandler::canRead() const -
1209{ -
1210 if (state == Ready && !canRead(device()))
evaluated: state == Ready
TRUEFALSE
yes
Evaluation Count:195
yes
Evaluation Count:3
evaluated: !canRead(device())
TRUEFALSE
yes
Evaluation Count:6
yes
Evaluation Count:189
3-195
1211 return false;
executed: return false;
Execution Count:6
6
1212 -
1213 if (state != Error) {
partially evaluated: state != Error
TRUEFALSE
yes
Evaluation Count:192
no
Evaluation Count:0
0-192
1214 setFormat("xpm");
executed (the execution status of this line is deduced): setFormat("xpm");
-
1215 return true;
executed: return true;
Execution Count:192
192
1216 } -
1217 -
1218 return false;
never executed: return false;
0
1219} -
1220 -
1221bool QXpmHandler::canRead(QIODevice *device) -
1222{ -
1223 if (!device) {
partially evaluated: !device
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:224
0-224
1224 qWarning("QXpmHandler::canRead() called with no device");
never executed (the execution status of this line is deduced): QMessageLogger("image/qxpmhandler.cpp", 1224, __PRETTY_FUNCTION__).warning("QXpmHandler::canRead() called with no device");
-
1225 return false;
never executed: return false;
0
1226 } -
1227 -
1228 char head[6];
executed (the execution status of this line is deduced): char head[6];
-
1229 if (device->peek(head, sizeof(head)) != sizeof(head))
evaluated: device->peek(head, sizeof(head)) != sizeof(head)
TRUEFALSE
yes
Evaluation Count:7
yes
Evaluation Count:217
7-217
1230 return false;
executed: return false;
Execution Count:7
7
1231 -
1232 return qstrncmp(head, "/* XPM", 6) == 0;
executed: return qstrncmp(head, "/* XPM", 6) == 0;
Execution Count:217
217
1233} -
1234 -
1235bool QXpmHandler::read(QImage *image) -
1236{ -
1237 if (!canRead())
evaluated: !canRead()
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:164
2-164
1238 return false;
executed: return false;
Execution Count:2
2
1239 return readImage(image);
executed: return readImage(image);
Execution Count:164
164
1240} -
1241 -
1242bool QXpmHandler::write(const QImage &image) -
1243{ -
1244 return write_xpm_image(image, device(), fileName);
executed: return write_xpm_image(image, device(), fileName);
Execution Count:290
290
1245} -
1246 -
1247bool QXpmHandler::supportsOption(ImageOption option) const -
1248{ -
1249 return option == Name
executed: return option == Name || option == Size || option == ImageFormat;
Execution Count:1938
1938
1250 || option == Size
executed: return option == Name || option == Size || option == ImageFormat;
Execution Count:1938
1938
1251 || option == ImageFormat;
executed: return option == Name || option == Size || option == ImageFormat;
Execution Count:1938
1938
1252} -
1253 -
1254QVariant QXpmHandler::option(ImageOption option) const -
1255{ -
1256 if (option == Name) {
partially evaluated: option == Name
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:3
0-3
1257 return fileName;
never executed: return fileName;
0
1258 } else if (option == Size) {
evaluated: option == Size
TRUEFALSE
yes
Evaluation Count:2
yes
Evaluation Count:1
1-2
1259 if (state == Error)
partially evaluated: state == Error
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
1260 return QVariant();
never executed: return QVariant();
0
1261 if (state == Ready && !const_cast<QXpmHandler*>(this)->readHeader())
partially evaluated: state == Ready
TRUEFALSE
yes
Evaluation Count:2
no
Evaluation Count:0
partially evaluated: !const_cast<QXpmHandler*>(this)->readHeader()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:2
0-2
1262 return QVariant();
never executed: return QVariant();
0
1263 return QSize(width, height);
executed: return QSize(width, height);
Execution Count:2
2
1264 } else if (option == ImageFormat) {
partially evaluated: option == ImageFormat
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
1265 if (state == Error)
partially evaluated: state == Error
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1
0-1
1266 return QVariant();
never executed: return QVariant();
0
1267 if (state == Ready && !const_cast<QXpmHandler*>(this)->readHeader())
partially evaluated: state == Ready
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
partially evaluated: !const_cast<QXpmHandler*>(this)->readHeader()
TRUEFALSE
no
Evaluation Count:0
yes
Evaluation Count:1
0-1
1268 return QVariant();
never executed: return QVariant();
0
1269 // If we have more than 256 colors in the table, we need to -
1270 // figure out, if it contains transparency. That means reading -
1271 // the whole color table, which is too much work work pre-checking -
1272 // the image format -
1273 if (ncols <= 256)
partially evaluated: ncols <= 256
TRUEFALSE
yes
Evaluation Count:1
no
Evaluation Count:0
0-1
1274 return QImage::Format_Indexed8;
executed: return QImage::Format_Indexed8;
Execution Count:1
1
1275 else -
1276 return QImage::Format_Invalid;
never executed: return QImage::Format_Invalid;
0
1277 } -
1278 -
1279 return QVariant();
never executed: return QVariant();
0
1280} -
1281 -
1282void QXpmHandler::setOption(ImageOption option, const QVariant &value) -
1283{ -
1284 if (option == Name)
never evaluated: option == Name
0
1285 fileName = value.toString();
never executed: fileName = value.toString();
0
1286}
never executed: }
0
1287 -
1288QByteArray QXpmHandler::name() const -
1289{ -
1290 return "xpm";
never executed: return "xpm";
0
1291} -
1292 -
1293QT_END_NAMESPACE -
1294 -
1295#endif // QT_NO_IMAGEFORMAT_XPM -
1296 -
Source codeSwitch to Preprocessed file

Generated by Squish Coco Non-Commercial