Absolute File Name: | /home/opencoverage/opencoverage/guest-scripts/qtdeclarative/src/qtdeclarative/src/quick/util/qquicksvgparser.cpp |
Switch to Source code | Preprocessed file |
Line | Source | Count | ||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | - | |||||||||||||||||||||||||||||||
2 | - | |||||||||||||||||||||||||||||||
3 | - | |||||||||||||||||||||||||||||||
4 | - | |||||||||||||||||||||||||||||||
5 | - | |||||||||||||||||||||||||||||||
6 | __attribute__((visibility("default"))) double qstrtod(const char *s00, char const **se, bool *ok); | - | ||||||||||||||||||||||||||||||
7 | - | |||||||||||||||||||||||||||||||
8 | static inline bool isDigit(ushort ch) | - | ||||||||||||||||||||||||||||||
9 | { | - | ||||||||||||||||||||||||||||||
10 | static quint16 magic = 0x3ff; | - | ||||||||||||||||||||||||||||||
11 | return executed 19176 times by 3 tests: ((ch >> 4) == 3) && (magic >> (ch & 15));return ((ch >> 4) == 3) && (magic >> (ch & 15)); Executed by:
executed 19176 times by 3 tests: return ((ch >> 4) == 3) && (magic >> (ch & 15)); Executed by:
| 19176 | ||||||||||||||||||||||||||||||
12 | } | - | ||||||||||||||||||||||||||||||
13 | - | |||||||||||||||||||||||||||||||
14 | static qreal toDouble(const QChar *&str) | - | ||||||||||||||||||||||||||||||
15 | { | - | ||||||||||||||||||||||||||||||
16 | const int maxLen = 255; | - | ||||||||||||||||||||||||||||||
17 | char temp[maxLen+1]; | - | ||||||||||||||||||||||||||||||
18 | int pos = 0; | - | ||||||||||||||||||||||||||||||
19 | - | |||||||||||||||||||||||||||||||
20 | if (*
| 752-1212 | ||||||||||||||||||||||||||||||
21 | temp[pos++] = '-'; | - | ||||||||||||||||||||||||||||||
22 | ++str; | - | ||||||||||||||||||||||||||||||
23 | } executed 752 times by 1 test: else if (*end of block Executed by:
| 0-1212 | ||||||||||||||||||||||||||||||
24 | ++str; | - | ||||||||||||||||||||||||||||||
25 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
26 | while (isDigit(str->unicode())
| 0-3300 | ||||||||||||||||||||||||||||||
27 | temp[pos++] = str->toLatin1(); | - | ||||||||||||||||||||||||||||||
28 | ++str; | - | ||||||||||||||||||||||||||||||
29 | } executed 3300 times by 3 tests: end of block Executed by:
| 3300 | ||||||||||||||||||||||||||||||
30 | if (*
| 0-1944 | ||||||||||||||||||||||||||||||
31 | temp[pos++] = '.'; | - | ||||||||||||||||||||||||||||||
32 | ++str; | - | ||||||||||||||||||||||||||||||
33 | } executed 1944 times by 1 test: end of block Executed by:
| 1944 | ||||||||||||||||||||||||||||||
34 | while (isDigit(str->unicode())
| 0-9944 | ||||||||||||||||||||||||||||||
35 | temp[pos++] = str->toLatin1(); | - | ||||||||||||||||||||||||||||||
36 | ++str; | - | ||||||||||||||||||||||||||||||
37 | } executed 9944 times by 1 test: end of block Executed by:
| 9944 | ||||||||||||||||||||||||||||||
38 | bool exponent = false; | - | ||||||||||||||||||||||||||||||
39 | if ((*
| 0-1964 | ||||||||||||||||||||||||||||||
40 | exponent = true; | - | ||||||||||||||||||||||||||||||
41 | temp[pos++] = 'e'; | - | ||||||||||||||||||||||||||||||
42 | ++str; | - | ||||||||||||||||||||||||||||||
43 | if ((*
| 0 | ||||||||||||||||||||||||||||||
44 | temp[pos++] = str->toLatin1(); | - | ||||||||||||||||||||||||||||||
45 | ++str; | - | ||||||||||||||||||||||||||||||
46 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
47 | while (isDigit(str->unicode())
| 0 | ||||||||||||||||||||||||||||||
48 | temp[pos++] = str->toLatin1(); | - | ||||||||||||||||||||||||||||||
49 | ++str; | - | ||||||||||||||||||||||||||||||
50 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
51 | } never executed: end of block | 0 | ||||||||||||||||||||||||||||||
52 | - | |||||||||||||||||||||||||||||||
53 | temp[pos] = '\0'; | - | ||||||||||||||||||||||||||||||
54 | - | |||||||||||||||||||||||||||||||
55 | qreal val; | - | ||||||||||||||||||||||||||||||
56 | if (!exponent
| 0-1964 | ||||||||||||||||||||||||||||||
57 | int ival = 0; | - | ||||||||||||||||||||||||||||||
58 | const char *t = temp; | - | ||||||||||||||||||||||||||||||
59 | bool neg = false; | - | ||||||||||||||||||||||||||||||
60 | if(*
| 648-1192 | ||||||||||||||||||||||||||||||
61 | neg = true; | - | ||||||||||||||||||||||||||||||
62 | ++t; | - | ||||||||||||||||||||||||||||||
63 | } executed 648 times by 1 test: end of block Executed by:
| 648 | ||||||||||||||||||||||||||||||
64 | while(*
| 20-4876 | ||||||||||||||||||||||||||||||
65 | ival *= 10; | - | ||||||||||||||||||||||||||||||
66 | ival += (*t) - '0'; | - | ||||||||||||||||||||||||||||||
67 | ++t; | - | ||||||||||||||||||||||||||||||
68 | } executed 3056 times by 3 tests: end of block Executed by:
| 3056 | ||||||||||||||||||||||||||||||
69 | if(*
| 20-1820 | ||||||||||||||||||||||||||||||
70 | ++t; | - | ||||||||||||||||||||||||||||||
71 | int div = 1; | - | ||||||||||||||||||||||||||||||
72 | while(*
| 1820-9160 | ||||||||||||||||||||||||||||||
73 | ival *= 10; | - | ||||||||||||||||||||||||||||||
74 | ival += (*t) - '0'; | - | ||||||||||||||||||||||||||||||
75 | div *= 10; | - | ||||||||||||||||||||||||||||||
76 | ++t; | - | ||||||||||||||||||||||||||||||
77 | } executed 9160 times by 1 test: end of block Executed by:
| 9160 | ||||||||||||||||||||||||||||||
78 | val = ((qreal)ival)/((qreal)div); | - | ||||||||||||||||||||||||||||||
79 | } executed 1820 times by 1 test: else {end of block Executed by:
| 1820 | ||||||||||||||||||||||||||||||
80 | val = ival; | - | ||||||||||||||||||||||||||||||
81 | } executed 20 times by 2 tests: end of block Executed by:
| 20 | ||||||||||||||||||||||||||||||
82 | if (neg
| 648-1192 | ||||||||||||||||||||||||||||||
83 | val = -val; executed 648 times by 1 test: val = -val; Executed by:
| 648 | ||||||||||||||||||||||||||||||
84 | } executed 1840 times by 3 tests: else {end of block Executed by:
| 1840 | ||||||||||||||||||||||||||||||
85 | bool ok = false; | - | ||||||||||||||||||||||||||||||
86 | val = qstrtod(temp, nullptr, &ok); | - | ||||||||||||||||||||||||||||||
87 | } executed 124 times by 1 test: end of block Executed by:
| 124 | ||||||||||||||||||||||||||||||
88 | return executed 1964 times by 3 tests: val;return val; Executed by:
executed 1964 times by 3 tests: return val; Executed by:
| 1964 | ||||||||||||||||||||||||||||||
89 | - | |||||||||||||||||||||||||||||||
90 | } | - | ||||||||||||||||||||||||||||||
91 | static inline void parseNumbersArray(const QChar *&str, QVarLengthArray<qreal, 8> &points) | - | ||||||||||||||||||||||||||||||
92 | { | - | ||||||||||||||||||||||||||||||
93 | while (str->isSpace()
| 40-190 | ||||||||||||||||||||||||||||||
94 | ++ executed 190 times by 2 tests: str;++str; Executed by:
executed 190 times by 2 tests: ++str; Executed by:
| 190 | ||||||||||||||||||||||||||||||
95 | while (isDigit(str->unicode())
| 792-1212 | ||||||||||||||||||||||||||||||
96 | *
| 0-752 | ||||||||||||||||||||||||||||||
97 | *
| 0-40 | ||||||||||||||||||||||||||||||
98 | - | |||||||||||||||||||||||||||||||
99 | points.append(toDouble(str)); | - | ||||||||||||||||||||||||||||||
100 | - | |||||||||||||||||||||||||||||||
101 | while (str->isSpace()
| 1964-7140 | ||||||||||||||||||||||||||||||
102 | ++ executed 7140 times by 3 tests: str;++str; Executed by:
executed 7140 times by 3 tests: ++str; Executed by:
| 7140 | ||||||||||||||||||||||||||||||
103 | if (*
| 980-984 | ||||||||||||||||||||||||||||||
104 | ++ executed 980 times by 2 tests: str;++str; Executed by:
executed 980 times by 2 tests: ++str; Executed by:
| 980 | ||||||||||||||||||||||||||||||
105 | - | |||||||||||||||||||||||||||||||
106 | - | |||||||||||||||||||||||||||||||
107 | while (str->isSpace()
| 0-1964 | ||||||||||||||||||||||||||||||
108 | ++ never executed: str;++str; never executed: ++str; | 0 | ||||||||||||||||||||||||||||||
109 | } executed 1964 times by 3 tests: end of block Executed by:
| 1964 | ||||||||||||||||||||||||||||||
110 | } executed 40 times by 3 tests: end of block Executed by:
| 40 | ||||||||||||||||||||||||||||||
111 | - | |||||||||||||||||||||||||||||||
112 | static void pathArcSegment(QPainterPath &path, | - | ||||||||||||||||||||||||||||||
113 | qreal xc, qreal yc, | - | ||||||||||||||||||||||||||||||
114 | qreal th0, qreal th1, | - | ||||||||||||||||||||||||||||||
115 | qreal rx, qreal ry, qreal xAxisRotation) | - | ||||||||||||||||||||||||||||||
116 | { | - | ||||||||||||||||||||||||||||||
117 | qreal sinTh, cosTh; | - | ||||||||||||||||||||||||||||||
118 | qreal a00, a01, a10, a11; | - | ||||||||||||||||||||||||||||||
119 | qreal x1, y1, x2, y2, x3, y3; | - | ||||||||||||||||||||||||||||||
120 | qreal t; | - | ||||||||||||||||||||||||||||||
121 | qreal thHalf; | - | ||||||||||||||||||||||||||||||
122 | - | |||||||||||||||||||||||||||||||
123 | sinTh = qSin(qDegreesToRadians(xAxisRotation)); | - | ||||||||||||||||||||||||||||||
124 | cosTh = qCos(qDegreesToRadians(xAxisRotation)); | - | ||||||||||||||||||||||||||||||
125 | - | |||||||||||||||||||||||||||||||
126 | a00 = cosTh * rx; | - | ||||||||||||||||||||||||||||||
127 | a01 = -sinTh * ry; | - | ||||||||||||||||||||||||||||||
128 | a10 = sinTh * rx; | - | ||||||||||||||||||||||||||||||
129 | a11 = cosTh * ry; | - | ||||||||||||||||||||||||||||||
130 | - | |||||||||||||||||||||||||||||||
131 | thHalf = 0.5 * (th1 - th0); | - | ||||||||||||||||||||||||||||||
132 | t = (8.0 / 3.0) * qSin(thHalf * 0.5) * qSin(thHalf * 0.5) / qSin(thHalf); | - | ||||||||||||||||||||||||||||||
133 | x1 = xc + qCos(th0) - t * qSin(th0); | - | ||||||||||||||||||||||||||||||
134 | y1 = yc + qSin(th0) + t * qCos(th0); | - | ||||||||||||||||||||||||||||||
135 | x3 = xc + qCos(th1); | - | ||||||||||||||||||||||||||||||
136 | y3 = yc + qSin(th1); | - | ||||||||||||||||||||||||||||||
137 | x2 = x3 + t * qSin(th1); | - | ||||||||||||||||||||||||||||||
138 | y2 = y3 - t * qCos(th1); | - | ||||||||||||||||||||||||||||||
139 | - | |||||||||||||||||||||||||||||||
140 | path.cubicTo(a00 * x1 + a01 * y1, a10 * x1 + a11 * y1, | - | ||||||||||||||||||||||||||||||
141 | a00 * x2 + a01 * y2, a10 * x2 + a11 * y2, | - | ||||||||||||||||||||||||||||||
142 | a00 * x3 + a01 * y3, a10 * x3 + a11 * y3); | - | ||||||||||||||||||||||||||||||
143 | } executed 340 times by 3 tests: end of block Executed by:
| 340 | ||||||||||||||||||||||||||||||
144 | - | |||||||||||||||||||||||||||||||
145 | void QQuickSvgParser::pathArc(QPainterPath &path, | - | ||||||||||||||||||||||||||||||
146 | qreal rx, | - | ||||||||||||||||||||||||||||||
147 | qreal ry, | - | ||||||||||||||||||||||||||||||
148 | qreal x_axis_rotation, | - | ||||||||||||||||||||||||||||||
149 | int large_arc_flag, | - | ||||||||||||||||||||||||||||||
150 | int sweep_flag, | - | ||||||||||||||||||||||||||||||
151 | qreal x, | - | ||||||||||||||||||||||||||||||
152 | qreal y, | - | ||||||||||||||||||||||||||||||
153 | qreal curx, qreal cury) | - | ||||||||||||||||||||||||||||||
154 | { | - | ||||||||||||||||||||||||||||||
155 | qreal sin_th, cos_th; | - | ||||||||||||||||||||||||||||||
156 | qreal a00, a01, a10, a11; | - | ||||||||||||||||||||||||||||||
157 | qreal x0, y0, x1, y1, xc, yc; | - | ||||||||||||||||||||||||||||||
158 | qreal d, sfactor, sfactor_sq; | - | ||||||||||||||||||||||||||||||
159 | qreal th0, th1, th_arc; | - | ||||||||||||||||||||||||||||||
160 | int i, n_segs; | - | ||||||||||||||||||||||||||||||
161 | qreal dx, dy, dx1, dy1, Pr1, Pr2, Px, Py, check; | - | ||||||||||||||||||||||||||||||
162 | - | |||||||||||||||||||||||||||||||
163 | rx = qAbs(rx); | - | ||||||||||||||||||||||||||||||
164 | ry = qAbs(ry); | - | ||||||||||||||||||||||||||||||
165 | - | |||||||||||||||||||||||||||||||
166 | sin_th = qSin(qDegreesToRadians(x_axis_rotation)); | - | ||||||||||||||||||||||||||||||
167 | cos_th = qCos(qDegreesToRadians(x_axis_rotation)); | - | ||||||||||||||||||||||||||||||
168 | - | |||||||||||||||||||||||||||||||
169 | dx = (curx - x) / 2.0; | - | ||||||||||||||||||||||||||||||
170 | dy = (cury - y) / 2.0; | - | ||||||||||||||||||||||||||||||
171 | dx1 = cos_th * dx + sin_th * dy; | - | ||||||||||||||||||||||||||||||
172 | dy1 = -sin_th * dx + cos_th * dy; | - | ||||||||||||||||||||||||||||||
173 | Pr1 = rx * rx; | - | ||||||||||||||||||||||||||||||
174 | Pr2 = ry * ry; | - | ||||||||||||||||||||||||||||||
175 | Px = dx1 * dx1; | - | ||||||||||||||||||||||||||||||
176 | Py = dy1 * dy1; | - | ||||||||||||||||||||||||||||||
177 | - | |||||||||||||||||||||||||||||||
178 | check = Px / Pr1 + Py / Pr2; | - | ||||||||||||||||||||||||||||||
179 | if (check > 1
| 42-136 | ||||||||||||||||||||||||||||||
180 | rx = rx * qSqrt(check); | - | ||||||||||||||||||||||||||||||
181 | ry = ry * qSqrt(check); | - | ||||||||||||||||||||||||||||||
182 | } executed 136 times by 1 test: end of block Executed by:
| 136 | ||||||||||||||||||||||||||||||
183 | - | |||||||||||||||||||||||||||||||
184 | a00 = cos_th / rx; | - | ||||||||||||||||||||||||||||||
185 | a01 = sin_th / rx; | - | ||||||||||||||||||||||||||||||
186 | a10 = -sin_th / ry; | - | ||||||||||||||||||||||||||||||
187 | a11 = cos_th / ry; | - | ||||||||||||||||||||||||||||||
188 | x0 = a00 * curx + a01 * cury; | - | ||||||||||||||||||||||||||||||
189 | y0 = a10 * curx + a11 * cury; | - | ||||||||||||||||||||||||||||||
190 | x1 = a00 * x + a01 * y; | - | ||||||||||||||||||||||||||||||
191 | y1 = a10 * x + a11 * y; | - | ||||||||||||||||||||||||||||||
192 | - | |||||||||||||||||||||||||||||||
193 | - | |||||||||||||||||||||||||||||||
194 | - | |||||||||||||||||||||||||||||||
195 | - | |||||||||||||||||||||||||||||||
196 | - | |||||||||||||||||||||||||||||||
197 | d = (x1 - x0) * (x1 - x0) + (y1 - y0) * (y1 - y0); | - | ||||||||||||||||||||||||||||||
198 | sfactor_sq = 1.0 / d - 0.25; | - | ||||||||||||||||||||||||||||||
199 | if (sfactor_sq < 0
executed 24 times by 2 tests: sfactor_sq = 0; Executed by:
| 24-154 | ||||||||||||||||||||||||||||||
200 | sfactor = qSqrt(sfactor_sq); | - | ||||||||||||||||||||||||||||||
201 | if (sweep_flag == large_arc_flag
executed 142 times by 1 test: sfactor = -sfactor; Executed by:
| 36-142 | ||||||||||||||||||||||||||||||
202 | xc = 0.5 * (x0 + x1) - sfactor * (y1 - y0); | - | ||||||||||||||||||||||||||||||
203 | yc = 0.5 * (y0 + y1) + sfactor * (x1 - x0); | - | ||||||||||||||||||||||||||||||
204 | - | |||||||||||||||||||||||||||||||
205 | - | |||||||||||||||||||||||||||||||
206 | th0 = qAtan2(y0 - yc, x0 - xc); | - | ||||||||||||||||||||||||||||||
207 | th1 = qAtan2(y1 - yc, x1 - xc); | - | ||||||||||||||||||||||||||||||
208 | - | |||||||||||||||||||||||||||||||
209 | th_arc = th1 - th0; | - | ||||||||||||||||||||||||||||||
210 | if (th_arc < 0
| 8-92 | ||||||||||||||||||||||||||||||
211 | th_arc += 2 * executed 78 times by 2 tests: th_arc += 2 * 3.14159265358979323846 ; Executed by:
| 78 | ||||||||||||||||||||||||||||||
212 | 3.14159265358979323846 executed 78 times by 2 tests: th_arc += 2 * 3.14159265358979323846 ; Executed by:
| 78 | ||||||||||||||||||||||||||||||
213 | ; executed 78 times by 2 tests: th_arc += 2 * 3.14159265358979323846 ; Executed by:
| 78 | ||||||||||||||||||||||||||||||
214 | else if (th_arc > 0
| 0-92 | ||||||||||||||||||||||||||||||
215 | th_arc -= 2 * never executed: th_arc -= 2 * 3.14159265358979323846 ; | 0 | ||||||||||||||||||||||||||||||
216 | 3.14159265358979323846 never executed: th_arc -= 2 * 3.14159265358979323846 ; | 0 | ||||||||||||||||||||||||||||||
217 | ; never executed: th_arc -= 2 * 3.14159265358979323846 ; | 0 | ||||||||||||||||||||||||||||||
218 | - | |||||||||||||||||||||||||||||||
219 | n_segs = qCeil(qAbs(th_arc / ( | - | ||||||||||||||||||||||||||||||
220 | 3.14159265358979323846 | - | ||||||||||||||||||||||||||||||
221 | * 0.5 + 0.001))); | - | ||||||||||||||||||||||||||||||
222 | - | |||||||||||||||||||||||||||||||
223 | for (i = 0; i < n_segs
| 178-340 | ||||||||||||||||||||||||||||||
224 | pathArcSegment(path, xc, yc, | - | ||||||||||||||||||||||||||||||
225 | th0 + i * th_arc / n_segs, | - | ||||||||||||||||||||||||||||||
226 | th0 + (i + 1) * th_arc / n_segs, | - | ||||||||||||||||||||||||||||||
227 | rx, ry, x_axis_rotation); | - | ||||||||||||||||||||||||||||||
228 | } executed 340 times by 3 tests: end of block Executed by:
| 340 | ||||||||||||||||||||||||||||||
229 | } executed 178 times by 3 tests: end of block Executed by:
| 178 | ||||||||||||||||||||||||||||||
230 | - | |||||||||||||||||||||||||||||||
231 | - | |||||||||||||||||||||||||||||||
232 | bool QQuickSvgParser::parsePathDataFast(const QString &dataStr, QPainterPath &path) | - | ||||||||||||||||||||||||||||||
233 | { | - | ||||||||||||||||||||||||||||||
234 | qreal x0 = 0, y0 = 0; | - | ||||||||||||||||||||||||||||||
235 | qreal x = 0, y = 0; | - | ||||||||||||||||||||||||||||||
236 | char lastMode = 0; | - | ||||||||||||||||||||||||||||||
237 | QPointF ctrlPt; | - | ||||||||||||||||||||||||||||||
238 | const QChar *str = dataStr.constData(); | - | ||||||||||||||||||||||||||||||
239 | const QChar *end = str + dataStr.size(); | - | ||||||||||||||||||||||||||||||
240 | - | |||||||||||||||||||||||||||||||
241 | while (str != end
| 8-40 | ||||||||||||||||||||||||||||||
242 | while (str->isSpace()
| 0-40 | ||||||||||||||||||||||||||||||
243 | ++ never executed: str;++str; never executed: ++str; | 0 | ||||||||||||||||||||||||||||||
244 | QChar pathElem = *str; | - | ||||||||||||||||||||||||||||||
245 | ++str; | - | ||||||||||||||||||||||||||||||
246 | QVarLengthArray<qreal, 8> arg; | - | ||||||||||||||||||||||||||||||
247 | parseNumbersArray(str, arg); | - | ||||||||||||||||||||||||||||||
248 | if (pathElem == QLatin1Char('z')
| 4-36 | ||||||||||||||||||||||||||||||
249 | arg.append(0); executed 8 times by 1 test: arg.append(0); Executed by:
| 8 | ||||||||||||||||||||||||||||||
250 | const qreal *num = arg.constData(); | - | ||||||||||||||||||||||||||||||
251 | int count = arg.count(); | - | ||||||||||||||||||||||||||||||
252 | while (count > 0
| 40-348 | ||||||||||||||||||||||||||||||
253 | qreal offsetX = x; | - | ||||||||||||||||||||||||||||||
254 | qreal offsetY = y; | - | ||||||||||||||||||||||||||||||
255 | switch (pathElem.unicode()) { | - | ||||||||||||||||||||||||||||||
256 | case executed 8 times by 1 test: 'm':case 'm': Executed by:
executed 8 times by 1 test: {case 'm': Executed by:
| 8 | ||||||||||||||||||||||||||||||
257 | if (count < 2
| 0-8 | ||||||||||||||||||||||||||||||
258 | num++; | - | ||||||||||||||||||||||||||||||
259 | count--; | - | ||||||||||||||||||||||||||||||
260 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
261 | } | - | ||||||||||||||||||||||||||||||
262 | x = x0 = num[0] + offsetX; | - | ||||||||||||||||||||||||||||||
263 | y = y0 = num[1] + offsetY; | - | ||||||||||||||||||||||||||||||
264 | num += 2; | - | ||||||||||||||||||||||||||||||
265 | count -= 2; | - | ||||||||||||||||||||||||||||||
266 | path.moveTo(x0, y0); | - | ||||||||||||||||||||||||||||||
267 | - | |||||||||||||||||||||||||||||||
268 | - | |||||||||||||||||||||||||||||||
269 | - | |||||||||||||||||||||||||||||||
270 | - | |||||||||||||||||||||||||||||||
271 | pathElem = QLatin1Char('l'); | - | ||||||||||||||||||||||||||||||
272 | } | - | ||||||||||||||||||||||||||||||
273 | break; executed 8 times by 1 test: break; Executed by:
| 8 | ||||||||||||||||||||||||||||||
274 | case executed 4 times by 2 tests: 'M':case 'M': Executed by:
executed 4 times by 2 tests: {case 'M': Executed by:
| 4 | ||||||||||||||||||||||||||||||
275 | if (count < 2
| 0-4 | ||||||||||||||||||||||||||||||
276 | num++; | - | ||||||||||||||||||||||||||||||
277 | count--; | - | ||||||||||||||||||||||||||||||
278 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
279 | } | - | ||||||||||||||||||||||||||||||
280 | x = x0 = num[0]; | - | ||||||||||||||||||||||||||||||
281 | y = y0 = num[1]; | - | ||||||||||||||||||||||||||||||
282 | num += 2; | - | ||||||||||||||||||||||||||||||
283 | count -= 2; | - | ||||||||||||||||||||||||||||||
284 | path.moveTo(x0, y0); | - | ||||||||||||||||||||||||||||||
285 | - | |||||||||||||||||||||||||||||||
286 | - | |||||||||||||||||||||||||||||||
287 | - | |||||||||||||||||||||||||||||||
288 | - | |||||||||||||||||||||||||||||||
289 | pathElem = QLatin1Char('L'); | - | ||||||||||||||||||||||||||||||
290 | } | - | ||||||||||||||||||||||||||||||
291 | break; executed 4 times by 2 tests: break; Executed by:
| 4 | ||||||||||||||||||||||||||||||
292 | case executed 4 times by 1 test: 'z':case 'z': Executed by:
executed 4 times by 1 test: case 'z': Executed by:
| 4 | ||||||||||||||||||||||||||||||
293 | case executed 4 times by 1 test: 'Z':case 'Z': Executed by:
executed 4 times by 1 test: {case 'Z': Executed by:
| 4 | ||||||||||||||||||||||||||||||
294 | x = x0; | - | ||||||||||||||||||||||||||||||
295 | y = y0; | - | ||||||||||||||||||||||||||||||
296 | count--; | - | ||||||||||||||||||||||||||||||
297 | num++; | - | ||||||||||||||||||||||||||||||
298 | path.closeSubpath(); | - | ||||||||||||||||||||||||||||||
299 | } | - | ||||||||||||||||||||||||||||||
300 | break; executed 8 times by 1 test: break; Executed by:
| 8 | ||||||||||||||||||||||||||||||
301 | case executed 4 times by 1 test: 'l':case 'l': Executed by:
executed 4 times by 1 test: {case 'l': Executed by:
| 4 | ||||||||||||||||||||||||||||||
302 | if (count < 2
| 0-4 | ||||||||||||||||||||||||||||||
303 | num++; | - | ||||||||||||||||||||||||||||||
304 | count--; | - | ||||||||||||||||||||||||||||||
305 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
306 | } | - | ||||||||||||||||||||||||||||||
307 | x = num[0] + offsetX; | - | ||||||||||||||||||||||||||||||
308 | y = num[1] + offsetY; | - | ||||||||||||||||||||||||||||||
309 | num += 2; | - | ||||||||||||||||||||||||||||||
310 | count -= 2; | - | ||||||||||||||||||||||||||||||
311 | path.lineTo(x, y); | - | ||||||||||||||||||||||||||||||
312 | - | |||||||||||||||||||||||||||||||
313 | } | - | ||||||||||||||||||||||||||||||
314 | break; executed 4 times by 1 test: break; Executed by:
| 4 | ||||||||||||||||||||||||||||||
315 | case never executed: 'L':case 'L': never executed: {case 'L': | 0 | ||||||||||||||||||||||||||||||
316 | if (count < 2
| 0 | ||||||||||||||||||||||||||||||
317 | num++; | - | ||||||||||||||||||||||||||||||
318 | count--; | - | ||||||||||||||||||||||||||||||
319 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
320 | } | - | ||||||||||||||||||||||||||||||
321 | x = num[0]; | - | ||||||||||||||||||||||||||||||
322 | y = num[1]; | - | ||||||||||||||||||||||||||||||
323 | num += 2; | - | ||||||||||||||||||||||||||||||
324 | count -= 2; | - | ||||||||||||||||||||||||||||||
325 | path.lineTo(x, y); | - | ||||||||||||||||||||||||||||||
326 | } | - | ||||||||||||||||||||||||||||||
327 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
328 | case never executed: 'h':case 'h': never executed: {case 'h': | 0 | ||||||||||||||||||||||||||||||
329 | x = num[0] + offsetX; | - | ||||||||||||||||||||||||||||||
330 | num++; | - | ||||||||||||||||||||||||||||||
331 | count--; | - | ||||||||||||||||||||||||||||||
332 | path.lineTo(x, y); | - | ||||||||||||||||||||||||||||||
333 | } | - | ||||||||||||||||||||||||||||||
334 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
335 | case never executed: 'H':case 'H': never executed: {case 'H': | 0 | ||||||||||||||||||||||||||||||
336 | x = num[0]; | - | ||||||||||||||||||||||||||||||
337 | num++; | - | ||||||||||||||||||||||||||||||
338 | count--; | - | ||||||||||||||||||||||||||||||
339 | path.lineTo(x, y); | - | ||||||||||||||||||||||||||||||
340 | } | - | ||||||||||||||||||||||||||||||
341 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
342 | case never executed: 'v':case 'v': never executed: {case 'v': | 0 | ||||||||||||||||||||||||||||||
343 | y = num[0] + offsetY; | - | ||||||||||||||||||||||||||||||
344 | num++; | - | ||||||||||||||||||||||||||||||
345 | count--; | - | ||||||||||||||||||||||||||||||
346 | path.lineTo(x, y); | - | ||||||||||||||||||||||||||||||
347 | } | - | ||||||||||||||||||||||||||||||
348 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
349 | case never executed: 'V':case 'V': never executed: {case 'V': | 0 | ||||||||||||||||||||||||||||||
350 | y = num[0]; | - | ||||||||||||||||||||||||||||||
351 | num++; | - | ||||||||||||||||||||||||||||||
352 | count--; | - | ||||||||||||||||||||||||||||||
353 | path.lineTo(x, y); | - | ||||||||||||||||||||||||||||||
354 | } | - | ||||||||||||||||||||||||||||||
355 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
356 | case executed 288 times by 1 test: 'c':case 'c': Executed by:
executed 288 times by 1 test: {case 'c': Executed by:
| 288 | ||||||||||||||||||||||||||||||
357 | if (count < 6
| 0-288 | ||||||||||||||||||||||||||||||
358 | num += count; | - | ||||||||||||||||||||||||||||||
359 | count = 0; | - | ||||||||||||||||||||||||||||||
360 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
361 | } | - | ||||||||||||||||||||||||||||||
362 | QPointF c1(num[0] + offsetX, num[1] + offsetY); | - | ||||||||||||||||||||||||||||||
363 | QPointF c2(num[2] + offsetX, num[3] + offsetY); | - | ||||||||||||||||||||||||||||||
364 | QPointF e(num[4] + offsetX, num[5] + offsetY); | - | ||||||||||||||||||||||||||||||
365 | num += 6; | - | ||||||||||||||||||||||||||||||
366 | count -= 6; | - | ||||||||||||||||||||||||||||||
367 | path.cubicTo(c1, c2, e); | - | ||||||||||||||||||||||||||||||
368 | ctrlPt = c2; | - | ||||||||||||||||||||||||||||||
369 | x = e.x(); | - | ||||||||||||||||||||||||||||||
370 | y = e.y(); | - | ||||||||||||||||||||||||||||||
371 | break; executed 288 times by 1 test: break; Executed by:
| 288 | ||||||||||||||||||||||||||||||
372 | } | - | ||||||||||||||||||||||||||||||
373 | case executed 32 times by 1 test: 'C':case 'C': Executed by:
executed 32 times by 1 test: {case 'C': Executed by:
| 32 | ||||||||||||||||||||||||||||||
374 | if (count < 6
| 0-32 | ||||||||||||||||||||||||||||||
375 | num += count; | - | ||||||||||||||||||||||||||||||
376 | count = 0; | - | ||||||||||||||||||||||||||||||
377 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
378 | } | - | ||||||||||||||||||||||||||||||
379 | QPointF c1(num[0], num[1]); | - | ||||||||||||||||||||||||||||||
380 | QPointF c2(num[2], num[3]); | - | ||||||||||||||||||||||||||||||
381 | QPointF e(num[4], num[5]); | - | ||||||||||||||||||||||||||||||
382 | num += 6; | - | ||||||||||||||||||||||||||||||
383 | count -= 6; | - | ||||||||||||||||||||||||||||||
384 | path.cubicTo(c1, c2, e); | - | ||||||||||||||||||||||||||||||
385 | ctrlPt = c2; | - | ||||||||||||||||||||||||||||||
386 | x = e.x(); | - | ||||||||||||||||||||||||||||||
387 | y = e.y(); | - | ||||||||||||||||||||||||||||||
388 | break; executed 32 times by 1 test: break; Executed by:
| 32 | ||||||||||||||||||||||||||||||
389 | } | - | ||||||||||||||||||||||||||||||
390 | case never executed: 's':case 's': never executed: {case 's': | 0 | ||||||||||||||||||||||||||||||
391 | if (count < 4
| 0 | ||||||||||||||||||||||||||||||
392 | num += count; | - | ||||||||||||||||||||||||||||||
393 | count = 0; | - | ||||||||||||||||||||||||||||||
394 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
395 | } | - | ||||||||||||||||||||||||||||||
396 | QPointF c1; | - | ||||||||||||||||||||||||||||||
397 | if (lastMode == 'c'
| 0 | ||||||||||||||||||||||||||||||
398 | lastMode == 's'
| 0 | ||||||||||||||||||||||||||||||
399 | c1 = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); never executed: c1 = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); | 0 | ||||||||||||||||||||||||||||||
400 | else | - | ||||||||||||||||||||||||||||||
401 | c1 = QPointF(x, y); never executed: c1 = QPointF(x, y); | 0 | ||||||||||||||||||||||||||||||
402 | QPointF c2(num[0] + offsetX, num[1] + offsetY); | - | ||||||||||||||||||||||||||||||
403 | QPointF e(num[2] + offsetX, num[3] + offsetY); | - | ||||||||||||||||||||||||||||||
404 | num += 4; | - | ||||||||||||||||||||||||||||||
405 | count -= 4; | - | ||||||||||||||||||||||||||||||
406 | path.cubicTo(c1, c2, e); | - | ||||||||||||||||||||||||||||||
407 | ctrlPt = c2; | - | ||||||||||||||||||||||||||||||
408 | x = e.x(); | - | ||||||||||||||||||||||||||||||
409 | y = e.y(); | - | ||||||||||||||||||||||||||||||
410 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
411 | } | - | ||||||||||||||||||||||||||||||
412 | case never executed: 'S':case 'S': never executed: {case 'S': | 0 | ||||||||||||||||||||||||||||||
413 | if (count < 4
| 0 | ||||||||||||||||||||||||||||||
414 | num += count; | - | ||||||||||||||||||||||||||||||
415 | count = 0; | - | ||||||||||||||||||||||||||||||
416 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
417 | } | - | ||||||||||||||||||||||||||||||
418 | QPointF c1; | - | ||||||||||||||||||||||||||||||
419 | if (lastMode == 'c'
| 0 | ||||||||||||||||||||||||||||||
420 | lastMode == 's'
| 0 | ||||||||||||||||||||||||||||||
421 | c1 = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); never executed: c1 = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); | 0 | ||||||||||||||||||||||||||||||
422 | else | - | ||||||||||||||||||||||||||||||
423 | c1 = QPointF(x, y); never executed: c1 = QPointF(x, y); | 0 | ||||||||||||||||||||||||||||||
424 | QPointF c2(num[0], num[1]); | - | ||||||||||||||||||||||||||||||
425 | QPointF e(num[2], num[3]); | - | ||||||||||||||||||||||||||||||
426 | num += 4; | - | ||||||||||||||||||||||||||||||
427 | count -= 4; | - | ||||||||||||||||||||||||||||||
428 | path.cubicTo(c1, c2, e); | - | ||||||||||||||||||||||||||||||
429 | ctrlPt = c2; | - | ||||||||||||||||||||||||||||||
430 | x = e.x(); | - | ||||||||||||||||||||||||||||||
431 | y = e.y(); | - | ||||||||||||||||||||||||||||||
432 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
433 | } | - | ||||||||||||||||||||||||||||||
434 | case never executed: 'q':case 'q': never executed: {case 'q': | 0 | ||||||||||||||||||||||||||||||
435 | if (count < 4
| 0 | ||||||||||||||||||||||||||||||
436 | num += count; | - | ||||||||||||||||||||||||||||||
437 | count = 0; | - | ||||||||||||||||||||||||||||||
438 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
439 | } | - | ||||||||||||||||||||||||||||||
440 | QPointF c(num[0] + offsetX, num[1] + offsetY); | - | ||||||||||||||||||||||||||||||
441 | QPointF e(num[2] + offsetX, num[3] + offsetY); | - | ||||||||||||||||||||||||||||||
442 | num += 4; | - | ||||||||||||||||||||||||||||||
443 | count -= 4; | - | ||||||||||||||||||||||||||||||
444 | path.quadTo(c, e); | - | ||||||||||||||||||||||||||||||
445 | ctrlPt = c; | - | ||||||||||||||||||||||||||||||
446 | x = e.x(); | - | ||||||||||||||||||||||||||||||
447 | y = e.y(); | - | ||||||||||||||||||||||||||||||
448 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
449 | } | - | ||||||||||||||||||||||||||||||
450 | case executed 2 times by 1 test: 'Q':case 'Q': Executed by:
executed 2 times by 1 test: {case 'Q': Executed by:
| 2 | ||||||||||||||||||||||||||||||
451 | if (count < 4
| 0-2 | ||||||||||||||||||||||||||||||
452 | num += count; | - | ||||||||||||||||||||||||||||||
453 | count = 0; | - | ||||||||||||||||||||||||||||||
454 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
455 | } | - | ||||||||||||||||||||||||||||||
456 | QPointF c(num[0], num[1]); | - | ||||||||||||||||||||||||||||||
457 | QPointF e(num[2], num[3]); | - | ||||||||||||||||||||||||||||||
458 | num += 4; | - | ||||||||||||||||||||||||||||||
459 | count -= 4; | - | ||||||||||||||||||||||||||||||
460 | path.quadTo(c, e); | - | ||||||||||||||||||||||||||||||
461 | ctrlPt = c; | - | ||||||||||||||||||||||||||||||
462 | x = e.x(); | - | ||||||||||||||||||||||||||||||
463 | y = e.y(); | - | ||||||||||||||||||||||||||||||
464 | break; executed 2 times by 1 test: break; Executed by:
| 2 | ||||||||||||||||||||||||||||||
465 | } | - | ||||||||||||||||||||||||||||||
466 | case never executed: 't':case 't': never executed: {case 't': | 0 | ||||||||||||||||||||||||||||||
467 | if (count < 2
| 0 | ||||||||||||||||||||||||||||||
468 | num += count; | - | ||||||||||||||||||||||||||||||
469 | count = 0; | - | ||||||||||||||||||||||||||||||
470 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
471 | } | - | ||||||||||||||||||||||||||||||
472 | QPointF e(num[0] + offsetX, num[1] + offsetY); | - | ||||||||||||||||||||||||||||||
473 | num += 2; | - | ||||||||||||||||||||||||||||||
474 | count -= 2; | - | ||||||||||||||||||||||||||||||
475 | QPointF c; | - | ||||||||||||||||||||||||||||||
476 | if (lastMode == 'q'
| 0 | ||||||||||||||||||||||||||||||
477 | lastMode == 't'
| 0 | ||||||||||||||||||||||||||||||
478 | c = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); never executed: c = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); | 0 | ||||||||||||||||||||||||||||||
479 | else | - | ||||||||||||||||||||||||||||||
480 | c = QPointF(x, y); never executed: c = QPointF(x, y); | 0 | ||||||||||||||||||||||||||||||
481 | path.quadTo(c, e); | - | ||||||||||||||||||||||||||||||
482 | ctrlPt = c; | - | ||||||||||||||||||||||||||||||
483 | x = e.x(); | - | ||||||||||||||||||||||||||||||
484 | y = e.y(); | - | ||||||||||||||||||||||||||||||
485 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
486 | } | - | ||||||||||||||||||||||||||||||
487 | case executed 2 times by 1 test: 'T':case 'T': Executed by:
executed 2 times by 1 test: {case 'T': Executed by:
| 2 | ||||||||||||||||||||||||||||||
488 | if (count < 2
| 0-2 | ||||||||||||||||||||||||||||||
489 | num += count; | - | ||||||||||||||||||||||||||||||
490 | count = 0; | - | ||||||||||||||||||||||||||||||
491 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
492 | } | - | ||||||||||||||||||||||||||||||
493 | QPointF e(num[0], num[1]); | - | ||||||||||||||||||||||||||||||
494 | num += 2; | - | ||||||||||||||||||||||||||||||
495 | count -= 2; | - | ||||||||||||||||||||||||||||||
496 | QPointF c; | - | ||||||||||||||||||||||||||||||
497 | if (lastMode == 'q'
| 0-2 | ||||||||||||||||||||||||||||||
498 | lastMode == 't'
| 0 | ||||||||||||||||||||||||||||||
499 | c = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); executed 2 times by 1 test: c = QPointF(2*x-ctrlPt.x(), 2*y-ctrlPt.y()); Executed by:
| 2 | ||||||||||||||||||||||||||||||
500 | else | - | ||||||||||||||||||||||||||||||
501 | c = QPointF(x, y); never executed: c = QPointF(x, y); | 0 | ||||||||||||||||||||||||||||||
502 | path.quadTo(c, e); | - | ||||||||||||||||||||||||||||||
503 | ctrlPt = c; | - | ||||||||||||||||||||||||||||||
504 | x = e.x(); | - | ||||||||||||||||||||||||||||||
505 | y = e.y(); | - | ||||||||||||||||||||||||||||||
506 | break; executed 2 times by 1 test: break; Executed by:
| 2 | ||||||||||||||||||||||||||||||
507 | } | - | ||||||||||||||||||||||||||||||
508 | case never executed: 'a':case 'a': never executed: {case 'a': | 0 | ||||||||||||||||||||||||||||||
509 | if (count < 7
| 0 | ||||||||||||||||||||||||||||||
510 | num += count; | - | ||||||||||||||||||||||||||||||
511 | count = 0; | - | ||||||||||||||||||||||||||||||
512 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
513 | } | - | ||||||||||||||||||||||||||||||
514 | qreal rx = (*num++); | - | ||||||||||||||||||||||||||||||
515 | qreal ry = (*num++); | - | ||||||||||||||||||||||||||||||
516 | qreal xAxisRotation = (*num++); | - | ||||||||||||||||||||||||||||||
517 | qreal largeArcFlag = (*num++); | - | ||||||||||||||||||||||||||||||
518 | qreal sweepFlag = (*num++); | - | ||||||||||||||||||||||||||||||
519 | qreal ex = (*num++) + offsetX; | - | ||||||||||||||||||||||||||||||
520 | qreal ey = (*num++) + offsetY; | - | ||||||||||||||||||||||||||||||
521 | count -= 7; | - | ||||||||||||||||||||||||||||||
522 | qreal curx = x; | - | ||||||||||||||||||||||||||||||
523 | qreal cury = y; | - | ||||||||||||||||||||||||||||||
524 | pathArc(path, rx, ry, xAxisRotation, int(largeArcFlag), | - | ||||||||||||||||||||||||||||||
525 | int(sweepFlag), ex, ey, curx, cury); | - | ||||||||||||||||||||||||||||||
526 | - | |||||||||||||||||||||||||||||||
527 | x = ex; | - | ||||||||||||||||||||||||||||||
528 | y = ey; | - | ||||||||||||||||||||||||||||||
529 | } | - | ||||||||||||||||||||||||||||||
530 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
531 | case never executed: 'A':case 'A': never executed: {case 'A': | 0 | ||||||||||||||||||||||||||||||
532 | if (count < 7
| 0 | ||||||||||||||||||||||||||||||
533 | num += count; | - | ||||||||||||||||||||||||||||||
534 | count = 0; | - | ||||||||||||||||||||||||||||||
535 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
536 | } | - | ||||||||||||||||||||||||||||||
537 | qreal rx = (*num++); | - | ||||||||||||||||||||||||||||||
538 | qreal ry = (*num++); | - | ||||||||||||||||||||||||||||||
539 | qreal xAxisRotation = (*num++); | - | ||||||||||||||||||||||||||||||
540 | qreal largeArcFlag = (*num++); | - | ||||||||||||||||||||||||||||||
541 | qreal sweepFlag = (*num++); | - | ||||||||||||||||||||||||||||||
542 | qreal ex = (*num++); | - | ||||||||||||||||||||||||||||||
543 | qreal ey = (*num++); | - | ||||||||||||||||||||||||||||||
544 | count -= 7; | - | ||||||||||||||||||||||||||||||
545 | qreal curx = x; | - | ||||||||||||||||||||||||||||||
546 | qreal cury = y; | - | ||||||||||||||||||||||||||||||
547 | pathArc(path, rx, ry, xAxisRotation, int(largeArcFlag), | - | ||||||||||||||||||||||||||||||
548 | int(sweepFlag), ex, ey, curx, cury); | - | ||||||||||||||||||||||||||||||
549 | - | |||||||||||||||||||||||||||||||
550 | x = ex; | - | ||||||||||||||||||||||||||||||
551 | y = ey; | - | ||||||||||||||||||||||||||||||
552 | } | - | ||||||||||||||||||||||||||||||
553 | break; never executed: break; | 0 | ||||||||||||||||||||||||||||||
554 | default never executed: :default: never executed: default: | 0 | ||||||||||||||||||||||||||||||
555 | return never executed: false;return false; never executed: return false; | 0 | ||||||||||||||||||||||||||||||
556 | } | - | ||||||||||||||||||||||||||||||
557 | lastMode = pathElem.toLatin1(); | - | ||||||||||||||||||||||||||||||
558 | } executed 348 times by 3 tests: end of block Executed by:
| 348 | ||||||||||||||||||||||||||||||
559 | } executed 40 times by 3 tests: end of block Executed by:
| 40 | ||||||||||||||||||||||||||||||
560 | return executed 8 times by 3 tests: true;return true; Executed by:
executed 8 times by 3 tests: return true; Executed by:
| 8 | ||||||||||||||||||||||||||||||
561 | } | - | ||||||||||||||||||||||||||||||
562 | - | |||||||||||||||||||||||||||||||
563 | - | |||||||||||||||||||||||||||||||
Switch to Source code | Preprocessed file |