blob: 84f2310f9697df6abb719353740ccceda31ea5e7 [file] [log] [blame]
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7#include "PathOpsExtendedTest.h"
caryclarke4097e32014-06-18 07:24:19 -07008#include "PathOpsTestCommon.h"
caryclark@google.com818b0cc2013-04-08 11:50:46 +00009
caryclark624637c2015-05-11 07:21:27 -070010class PathTest_Private {
11public:
12 PathTest_Private(SkPath* path)
13 : fPath(path) {}
14
15 void setPt(int index, SkScalar x, SkScalar y) {
16 fPath->setPt(index, x, y);
17 }
18
19 SkPath* fPath;
20};
21
22static void path_edit(const SkPoint& from, const SkPoint& to, SkPath* path) {
23 PathTest_Private testPath(path);
24 for (int index = 0; index < path->countPoints(); ++index) {
25 if (SkDPoint::ApproximatelyEqual(path->getPoint(index), from)) {
26 testPath.setPt(index, to.fX, to.fY);
27 return;
28 }
29 }
30}
caryclark@google.com818b0cc2013-04-08 11:50:46 +000031
commit-bot@chromium.org4431e772014-04-14 17:08:59 +000032static void cubicOp1d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +000033 SkPath path, pathB;
34 path.setFillType(SkPath::kWinding_FillType);
35 path.moveTo(0,1);
36 path.cubicTo(0,2, 1,0, 1,0);
37 path.close();
38 pathB.setFillType(SkPath::kWinding_FillType);
39 pathB.moveTo(0,1);
40 pathB.cubicTo(0,1, 1,0, 2,0);
41 pathB.close();
caryclark54359292015-03-26 07:52:43 -070042 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +000043}
44
commit-bot@chromium.org4431e772014-04-14 17:08:59 +000045static void cubicOp2d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +000046 SkPath path, pathB;
47 path.setFillType(SkPath::kWinding_FillType);
48 path.moveTo(0,2);
49 path.cubicTo(0,1, 1,0, 1,0);
50 path.close();
51 pathB.setFillType(SkPath::kWinding_FillType);
52 pathB.moveTo(0,1);
53 pathB.cubicTo(0,1, 2,0, 1,0);
54 pathB.close();
caryclark54359292015-03-26 07:52:43 -070055 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +000056}
57
commit-bot@chromium.org4431e772014-04-14 17:08:59 +000058static void cubicOp3d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +000059 SkPath path, pathB;
60 path.setFillType(SkPath::kWinding_FillType);
61 path.moveTo(0,1);
62 path.cubicTo(2,3, 1,0, 1,0);
63 path.close();
64 pathB.setFillType(SkPath::kWinding_FillType);
65 pathB.moveTo(0,1);
66 pathB.cubicTo(0,1, 1,0, 3,2);
67 pathB.close();
caryclark54359292015-03-26 07:52:43 -070068 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +000069}
70
commit-bot@chromium.org4431e772014-04-14 17:08:59 +000071static void cubicOp5d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +000072 SkPath path, pathB;
73 path.setFillType(SkPath::kWinding_FillType);
74 path.moveTo(0,1);
75 path.cubicTo(0,2, 1,0, 2,0);
76 path.close();
77 pathB.setFillType(SkPath::kWinding_FillType);
78 pathB.moveTo(0,1);
79 pathB.cubicTo(0,2, 1,0, 2,0);
80 pathB.close();
caryclark54359292015-03-26 07:52:43 -070081 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +000082}
83
commit-bot@chromium.org4431e772014-04-14 17:08:59 +000084static void cubicOp6d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +000085 SkPath path, pathB;
86 path.setFillType(SkPath::kWinding_FillType);
87 path.moveTo(0,1);
88 path.cubicTo(0,6, 1,0, 3,0);
89 path.close();
90 pathB.setFillType(SkPath::kWinding_FillType);
91 pathB.moveTo(0,1);
92 pathB.cubicTo(0,3, 1,0, 6,0);
93 pathB.close();
caryclark54359292015-03-26 07:52:43 -070094 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +000095}
96
commit-bot@chromium.org4431e772014-04-14 17:08:59 +000097static void cubicOp7d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +000098 SkPath path, pathB;
99 path.setFillType(SkPath::kWinding_FillType);
100 path.moveTo(0,1);
101 path.cubicTo(3,4, 1,0, 3,0);
102 path.close();
103 pathB.setFillType(SkPath::kWinding_FillType);
104 pathB.moveTo(0,1);
105 pathB.cubicTo(0,3, 1,0, 4,3);
106 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700107 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000108}
109
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000110static void cubicOp8d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000111 SkPath path, pathB;
112 path.setFillType(SkPath::kWinding_FillType);
113 path.moveTo(0,1);
114 path.cubicTo(0,5, 1,0, 4,0);
115 path.close();
116 pathB.setFillType(SkPath::kWinding_FillType);
117 pathB.moveTo(0,1);
118 pathB.cubicTo(0,4, 1,0, 5,0);
119 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700120 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000121}
122
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000123static void cubicOp9d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000124 SkPath path, pathB;
125 path.setFillType(SkPath::kWinding_FillType);
126 path.moveTo(0,1);
127 path.cubicTo(1,6, 1,0, 2,1);
128 path.close();
129 pathB.setFillType(SkPath::kWinding_FillType);
130 pathB.moveTo(0,1);
131 pathB.cubicTo(1,2, 1,0, 6,1);
132 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700133 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000134}
135
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000136static void quadOp9d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000137 SkPath path, pathB;
138 path.setFillType(SkPath::kWinding_FillType);
139 path.moveTo(0,1);
140 path.quadTo(1,6, 1.5f,1);
141 path.quadTo(1.5f,0.5f, 2,1);
142 path.close();
143 pathB.setFillType(SkPath::kWinding_FillType);
144 pathB.moveTo(0,1);
145 pathB.quadTo(1,2, 1.4f,1);
146 pathB.quadTo(3,0.4f, 6,1);
147 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700148 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000149}
150
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000151static void lineOp9d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000152 SkPath path, pathB;
153 path.setFillType(SkPath::kWinding_FillType);
154 path.moveTo(0,1);
155 path.lineTo(1,6);
156 path.lineTo(1.5f,1);
157 path.lineTo(1.8f,0.8f);
158 path.lineTo(2,1);
159 path.close();
160 pathB.setFillType(SkPath::kWinding_FillType);
161 pathB.moveTo(0,1);
162 pathB.lineTo(1,2);
163 pathB.lineTo(1.4f,1);
164 pathB.lineTo(3,0.4f);
165 pathB.lineTo(6,1);
166 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700167 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000168}
169
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000170static void cubicOp1i(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000171 SkPath path, pathB;
172 path.setFillType(SkPath::kWinding_FillType);
173 path.moveTo(0,1);
174 path.cubicTo(1,2, 1,0, 2,1);
175 path.close();
176 pathB.setFillType(SkPath::kWinding_FillType);
177 pathB.moveTo(0,1);
178 pathB.cubicTo(1,2, 1,0, 2,1);
179 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700180 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000181}
182
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000183static void cubicOp10d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000184 SkPath path, pathB;
185 path.setFillType(SkPath::kWinding_FillType);
186 path.moveTo(0,1);
187 path.cubicTo(1,3, 1,0, 4,1);
188 path.close();
189 pathB.setFillType(SkPath::kWinding_FillType);
190 pathB.moveTo(0,1);
191 pathB.cubicTo(1,4, 1,0, 3,1);
192 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700193 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000194}
195
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000196static void cubicOp11d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000197 SkPath path, pathB;
198 path.setFillType(SkPath::kWinding_FillType);
199 path.moveTo(0,1);
200 path.cubicTo(3,4, 1,0, 5,1);
201 path.close();
202 pathB.setFillType(SkPath::kWinding_FillType);
203 pathB.moveTo(0,1);
204 pathB.cubicTo(1,5, 1,0, 4,3);
205 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700206 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000207}
208
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000209static void cubicOp12d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000210 SkPath path, pathB;
211 path.setFillType(SkPath::kWinding_FillType);
212 path.moveTo(0,1);
213 path.cubicTo(1,6, 1,0, 1,0);
214 path.close();
215 pathB.setFillType(SkPath::kWinding_FillType);
216 pathB.moveTo(0,1);
217 pathB.cubicTo(0,1, 1,0, 6,1);
218 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700219 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000220}
221
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000222static void cubicOp13d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000223 SkPath path, pathB;
224 path.setFillType(SkPath::kWinding_FillType);
225 path.moveTo(0,1);
226 path.cubicTo(4,5, 1,0, 5,3);
227 path.close();
228 pathB.setFillType(SkPath::kWinding_FillType);
229 pathB.moveTo(0,1);
230 pathB.cubicTo(3,5, 1,0, 5,4);
231 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700232 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000233}
234
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000235static void cubicOp14d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000236 SkPath path, pathB;
237 path.setFillType(SkPath::kWinding_FillType);
238 path.moveTo(0,1);
239 path.cubicTo(0,2, 2,0, 2,1);
240 path.close();
241 pathB.setFillType(SkPath::kWinding_FillType);
242 pathB.moveTo(0,2);
243 pathB.cubicTo(1,2, 1,0, 2,0);
244 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700245 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000246}
247
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000248static void cubicOp15d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000249 SkPath path, pathB;
250 path.setFillType(SkPath::kWinding_FillType);
251 path.moveTo(0,1);
252 path.cubicTo(3,6, 2,0, 2,1);
253 path.close();
254 pathB.setFillType(SkPath::kWinding_FillType);
255 pathB.moveTo(0,2);
256 pathB.cubicTo(1,2, 1,0, 6,3);
257 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700258 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000259}
260
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000261static void cubicOp16d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000262 SkPath path, pathB;
263 path.setFillType(SkPath::kWinding_FillType);
264 path.moveTo(0,2);
265 path.cubicTo(0,1, 3,0, 1,0);
266 path.close();
267 pathB.setFillType(SkPath::kWinding_FillType);
268 pathB.moveTo(0,3);
269 pathB.cubicTo(0,1, 2,0, 1,0);
270 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700271 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000272}
273
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000274static void cubicOp17d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000275 SkPath path, pathB;
276 path.setFillType(SkPath::kWinding_FillType);
277 path.moveTo(0,2);
278 path.cubicTo(0,2, 4,0, 2,1);
279 path.close();
280 pathB.setFillType(SkPath::kWinding_FillType);
281 pathB.moveTo(0,4);
282 pathB.cubicTo(1,2, 2,0, 2,0);
283 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700284 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000285}
286
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000287static void cubicOp18d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000288 SkPath path, pathB;
289 path.setFillType(SkPath::kWinding_FillType);
290 path.moveTo(0,1);
291 path.cubicTo(3,5, 2,0, 2,1);
292 path.close();
293 pathB.setFillType(SkPath::kWinding_FillType);
294 pathB.moveTo(0,2);
295 pathB.cubicTo(1,2, 1,0, 5,3);
296 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700297 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000298}
299
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000300static void cubicOp19i(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000301 SkPath path, pathB;
302 path.setFillType(SkPath::kWinding_FillType);
303 path.moveTo(0,2);
304 path.cubicTo(0,1, 2,1, 6,2);
305 path.close();
306 pathB.setFillType(SkPath::kWinding_FillType);
307 pathB.moveTo(1,2);
308 pathB.cubicTo(2,6, 2,0, 1,0);
309 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700310 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000311}
312
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000313static void cubicOp20d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000314 SkPath path, pathB;
315 path.setFillType(SkPath::kWinding_FillType);
316 path.moveTo(0,1);
317 path.cubicTo(0,1, 6,0, 2,1);
318 path.close();
319 pathB.setFillType(SkPath::kWinding_FillType);
320 pathB.moveTo(0,6);
321 pathB.cubicTo(1,2, 1,0, 1,0);
322 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700323 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000324}
325
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000326static void cubicOp21d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000327 SkPath path, pathB;
328 path.setFillType(SkPath::kWinding_FillType);
329 path.moveTo(0,1);
330 path.cubicTo(0,1, 2,1, 6,5);
331 path.close();
332 pathB.setFillType(SkPath::kWinding_FillType);
333 pathB.moveTo(1,2);
334 pathB.cubicTo(5,6, 1,0, 1,0);
335 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700336 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000337}
338
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000339static void cubicOp22d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000340 SkPath path, pathB;
341 path.setFillType(SkPath::kWinding_FillType);
342 path.moveTo(0,1);
343 path.cubicTo(2,3, 3,0, 2,1);
344 path.close();
345 pathB.setFillType(SkPath::kWinding_FillType);
346 pathB.moveTo(0,3);
347 pathB.cubicTo(1,2, 1,0, 3,2);
348 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700349 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000350}
351
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000352static void cubicOp23d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000353 SkPath path, pathB;
354 path.setFillType(SkPath::kWinding_FillType);
355 path.moveTo(0,1);
356 path.cubicTo(1,2, 4,0, 2,1);
357 path.close();
358 pathB.setFillType(SkPath::kWinding_FillType);
359 pathB.moveTo(0,4);
360 pathB.cubicTo(1,2, 1,0, 2,1);
361 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700362 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000363}
364
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000365static void cubicOp24d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000366 SkPath path, pathB;
367 path.setFillType(SkPath::kWinding_FillType);
368 path.moveTo(0,1);
369 path.cubicTo(1,2, 2,0, 3,2);
370 path.close();
371 pathB.setFillType(SkPath::kWinding_FillType);
372 pathB.moveTo(0,2);
373 pathB.cubicTo(2,3, 1,0, 2,1);
374 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700375 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000376}
377
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000378static void testIntersect1(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000379 SkPath one, two;
380 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
381 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700382 testPathOp(reporter, one, two, kIntersect_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000383}
384
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000385static void testUnion1(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000386 SkPath one, two;
387 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
388 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700389 testPathOp(reporter, one, two, kUnion_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000390}
391
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000392static void testDiff1(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000393 SkPath one, two;
394 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
395 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700396 testPathOp(reporter, one, two, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000397}
398
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000399static void testXor1(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000400 SkPath one, two;
401 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
402 two.addRect(3, 3, 9, 9, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700403 testPathOp(reporter, one, two, kXOR_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000404}
405
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000406static void testIntersect2(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000407 SkPath one, two;
408 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
409 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700410 testPathOp(reporter, one, two, kIntersect_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000411}
412
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000413static void testUnion2(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000414 SkPath one, two;
415 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
416 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700417 testPathOp(reporter, one, two, kUnion_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000418}
419
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000420static void testDiff2(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000421 SkPath one, two;
422 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
423 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700424 testPathOp(reporter, one, two, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000425}
426
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000427static void testXor2(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000428 SkPath one, two;
429 one.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
430 two.addRect(0, 3, 9, 9, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700431 testPathOp(reporter, one, two, kXOR_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000432}
433
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000434static void testOp1d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000435 SkPath path, pathB;
436 path.setFillType(SkPath::kWinding_FillType);
437 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
438 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
439 pathB.setFillType(SkPath::kWinding_FillType);
440 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
441 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700442 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000443}
444
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000445static void testOp2d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000446 SkPath path, pathB;
447 path.setFillType(SkPath::kWinding_FillType);
448 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
449 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
450 pathB.setFillType(SkPath::kEvenOdd_FillType);
451 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
452 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700453 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000454}
455
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000456static void testOp3d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000457 SkPath path, pathB;
458 path.setFillType(SkPath::kWinding_FillType);
459 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
460 path.addRect(1, 1, 2, 2, SkPath::kCW_Direction);
461 pathB.setFillType(SkPath::kWinding_FillType);
462 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
463 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700464 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000465}
466
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000467static void testOp1u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000468 SkPath path, pathB;
469 path.setFillType(SkPath::kWinding_FillType);
470 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
471 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
472 pathB.setFillType(SkPath::kWinding_FillType);
473 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
474 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700475 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000476}
477
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000478static void testOp4d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000479 SkPath path, pathB;
480 path.setFillType(SkPath::kWinding_FillType);
481 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
482 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
483 pathB.setFillType(SkPath::kWinding_FillType);
484 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
485 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700486 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000487}
488
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000489static void testOp5d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000490 SkPath path, pathB;
491 path.setFillType(SkPath::kEvenOdd_FillType);
492 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
493 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
494 pathB.setFillType(SkPath::kEvenOdd_FillType);
495 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
496 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700497 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000498}
499
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000500static void testOp6d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000501 SkPath path, pathB;
502 path.setFillType(SkPath::kEvenOdd_FillType);
503 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
504 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
505 pathB.setFillType(SkPath::kWinding_FillType);
506 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
507 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700508 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000509}
510
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000511static void testOp7d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000512 SkPath path, pathB;
513 path.setFillType(SkPath::kEvenOdd_FillType);
514 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
515 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
516 pathB.setFillType(SkPath::kEvenOdd_FillType);
517 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
518 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700519 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000520}
521
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000522static void testOp2u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000523 SkPath path, pathB;
524 path.setFillType(SkPath::kEvenOdd_FillType);
525 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
526 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
527 pathB.setFillType(SkPath::kWinding_FillType);
528 pathB.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
529 pathB.addRect(1, 1, 2, 2, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -0700530 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000531}
532
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000533static void testOp8d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000534 SkPath path, pathB;
535 path.addRect(0, 0, 640, 480);
536 pathB.moveTo(577330, 1971.72f);
537 pathB.cubicTo(10.7082f, -116.596f, 262.057f, 45.6468f, 294.694f, 1.96237f);
538 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700539 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000540}
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000541static void cubicOp25i(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000542 SkPath path, pathB;
543 path.setFillType(SkPath::kWinding_FillType);
544 path.moveTo(0,1);
545 path.cubicTo(2,4, 5,0, 3,2);
546 path.close();
547 pathB.setFillType(SkPath::kWinding_FillType);
548 pathB.moveTo(0,5);
549 pathB.cubicTo(2,3, 1,0, 4,2);
550 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700551 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000552}
553
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000554static void cubicOp26d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000555 SkPath path, pathB;
556 path.setFillType(SkPath::kWinding_FillType);
557 path.moveTo(0,1);
558 path.cubicTo(3,4, 4,0, 3,2);
559 path.close();
560 pathB.setFillType(SkPath::kWinding_FillType);
561 pathB.moveTo(0,4);
562 pathB.cubicTo(2,3, 1,0, 4,3);
563 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700564 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000565}
566
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000567static void cubicOp27d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000568 SkPath path, pathB;
569 path.setFillType(SkPath::kWinding_FillType);
570 path.moveTo(0,1);
571 path.cubicTo(3,6, 1,0, 5,2);
572 path.close();
573 pathB.setFillType(SkPath::kWinding_FillType);
574 pathB.moveTo(0,1);
575 pathB.cubicTo(2,5, 1,0, 6,3);
576 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700577 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000578}
579
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000580static void cubicOp28u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000581 SkPath path, pathB;
582 path.setFillType(SkPath::kWinding_FillType);
583 path.moveTo(0,1);
584 path.cubicTo(1,4, 6,0, 3,2);
585 path.close();
586 pathB.setFillType(SkPath::kWinding_FillType);
587 pathB.moveTo(0,6);
588 pathB.cubicTo(2,3, 1,0, 4,1);
589 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700590 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000591}
592
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000593static void cubicOp29d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000594 SkPath path, pathB;
595 path.setFillType(SkPath::kWinding_FillType);
596 path.moveTo(0,1);
597 path.cubicTo(2,5, 6,0, 4,2);
598 path.close();
599 pathB.setFillType(SkPath::kWinding_FillType);
600 pathB.moveTo(0,6);
601 pathB.cubicTo(2,4, 1,0, 5,2);
602 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700603 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000604}
605
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000606static void cubicOp30d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000607 SkPath path, pathB;
608 path.setFillType(SkPath::kWinding_FillType);
609 path.moveTo(0,1);
610 path.cubicTo(2,5, 6,0, 5,3);
611 path.close();
612 pathB.setFillType(SkPath::kWinding_FillType);
613 pathB.moveTo(0,6);
614 pathB.cubicTo(3,5, 1,0, 5,2);
615 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700616 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000617}
618
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000619static void cubicOp31d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000620 SkPath path, pathB;
621 path.setFillType(SkPath::kWinding_FillType);
622 path.moveTo(0,2);
623 path.cubicTo(0,3, 2,1, 4,0);
624 path.close();
625 pathB.setFillType(SkPath::kWinding_FillType);
626 pathB.moveTo(1,2);
627 pathB.cubicTo(0,4, 2,0, 3,0);
628 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700629 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000630}
631
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000632static void cubicOp31u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000633 SkPath path, pathB;
634 path.setFillType(SkPath::kWinding_FillType);
635 path.moveTo(0,2);
636 path.cubicTo(0,3, 2,1, 4,0);
637 path.close();
638 pathB.setFillType(SkPath::kWinding_FillType);
639 pathB.moveTo(1,2);
640 pathB.cubicTo(0,4, 2,0, 3,0);
641 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700642 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000643}
644
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000645static void cubicOp31x(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000646 SkPath path, pathB;
647 path.setFillType(SkPath::kWinding_FillType);
648 path.moveTo(0,2);
649 path.cubicTo(0,3, 2,1, 4,0);
650 path.close();
651 pathB.setFillType(SkPath::kWinding_FillType);
652 pathB.moveTo(1,2);
653 pathB.cubicTo(0,4, 2,0, 3,0);
654 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700655 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000656}
657
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000658static void cubicOp32d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000659 SkPath path, pathB;
660 path.setFillType(SkPath::kWinding_FillType);
661 path.moveTo(0,1);
662 path.cubicTo(1,2, 6,0, 3,1);
663 path.close();
664 pathB.setFillType(SkPath::kWinding_FillType);
665 pathB.moveTo(0,6);
666 pathB.cubicTo(1,3, 1,0, 2,1);
667 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700668 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000669}
670
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000671static void cubicOp33i(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000672 SkPath path, pathB;
673 path.setFillType(SkPath::kWinding_FillType);
674 path.moveTo(0,1);
675 path.cubicTo(1,2, 6,0, 3,1);
676 path.close();
677 pathB.setFillType(SkPath::kWinding_FillType);
678 pathB.moveTo(0,6);
679 pathB.cubicTo(1,3, 1,0, 2,1);
680 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700681 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000682}
683
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000684static void cubicOp34d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000685 SkPath path, pathB;
686 path.setFillType(SkPath::kWinding_FillType);
687 path.moveTo(0,1);
688 path.cubicTo(3,5, 2,1, 3,1);
689 path.close();
690 pathB.setFillType(SkPath::kWinding_FillType);
691 pathB.moveTo(1,2);
692 pathB.cubicTo(1,3, 1,0, 5,3);
693 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700694 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000695}
696
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000697static void cubicOp35d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000698 SkPath path, pathB;
699 path.setFillType(SkPath::kWinding_FillType);
700 path.moveTo(0,1);
701 path.cubicTo(1,5, 2,1, 4,0);
702 path.close();
703 pathB.setFillType(SkPath::kWinding_FillType);
704 pathB.moveTo(1,2);
705 pathB.cubicTo(0,4, 1,0, 5,1);
706 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700707 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000708}
709
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000710static void cubicOp36u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000711 SkPath path, pathB;
712 path.setFillType(SkPath::kWinding_FillType);
713 path.moveTo(0,1);
714 path.cubicTo(1,6, 2,0, 5,1);
715 path.close();
716 pathB.setFillType(SkPath::kWinding_FillType);
717 pathB.moveTo(0,2);
718 pathB.cubicTo(1,5, 1,0, 6,1);
719 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700720 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000721}
722
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000723static void cubicOp37d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000724 SkPath path, pathB;
725 path.setFillType(SkPath::kWinding_FillType);
726 path.moveTo(0,1);
727 path.cubicTo(2,6, 6,1, 4,3);
728 path.close();
729 pathB.setFillType(SkPath::kWinding_FillType);
730 pathB.moveTo(1,6);
731 pathB.cubicTo(3,4, 1,0, 6,2);
732 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700733 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000734}
735
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000736static void cubicOp38d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000737 SkPath path, pathB;
738 path.setFillType(SkPath::kWinding_FillType);
739 path.moveTo(0,1);
740 path.cubicTo(0,6, 3,2, 4,1);
741 path.close();
742 pathB.setFillType(SkPath::kWinding_FillType);
743 pathB.moveTo(2,3);
744 pathB.cubicTo(1,4, 1,0, 6,0);
745 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700746 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000747}
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000748
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000749static void cubicOp39d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000750 SkPath path, pathB;
751 path.setFillType(SkPath::kWinding_FillType);
752 path.moveTo(0,1);
753 path.cubicTo(2,3, 5,1, 4,3);
754 path.close();
755 pathB.setFillType(SkPath::kWinding_FillType);
756 pathB.moveTo(1,5);
757 pathB.cubicTo(3,4, 1,0, 3,2);
758 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700759 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000760}
761
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000762static void cubicOp40d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000763 SkPath path, pathB;
764 path.setFillType(SkPath::kWinding_FillType);
765 path.moveTo(0,1);
766 path.cubicTo(1,5, 3,2, 4,2);
767 path.close();
768 pathB.setFillType(SkPath::kWinding_FillType);
769 pathB.moveTo(2,3);
770 pathB.cubicTo(2,4, 1,0, 5,1);
771 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700772 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000773}
774
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000775static void cubicOp41i(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000776 SkPath path, pathB;
777 path.setFillType(SkPath::kWinding_FillType);
778 path.moveTo(0,1);
779 path.cubicTo(2,6, 4,3, 6,4);
780 path.close();
781 pathB.setFillType(SkPath::kWinding_FillType);
782 pathB.moveTo(3,4);
783 pathB.cubicTo(4,6, 1,0, 6,2);
784 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700785 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000786}
787
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000788static void cubicOp42d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000789 SkPath path, pathB;
790 path.setFillType(SkPath::kWinding_FillType);
791 path.moveTo(0,1);
792 path.cubicTo(1,2, 6,5, 5,4);
793 path.close();
794 pathB.setFillType(SkPath::kWinding_FillType);
795 pathB.moveTo(5,6);
796 pathB.cubicTo(4,5, 1,0, 2,1);
797 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700798 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000799}
800
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000801static void cubicOp43d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000802 SkPath path, pathB;
803 path.setFillType(SkPath::kWinding_FillType);
804 path.moveTo(0,2);
805 path.cubicTo(1,2, 4,0, 3,1);
806 path.close();
807 pathB.setFillType(SkPath::kWinding_FillType);
808 pathB.moveTo(0,4);
809 pathB.cubicTo(1,3, 2,0, 2,1);
810 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700811 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000812}
813
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000814static void cubicOp44d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000815 SkPath path, pathB;
816 path.setFillType(SkPath::kWinding_FillType);
817 path.moveTo(0,2);
818 path.cubicTo(3,6, 4,0, 3,2);
819 path.close();
820 pathB.setFillType(SkPath::kWinding_FillType);
821 pathB.moveTo(0,4);
822 pathB.cubicTo(2,3, 2,0, 6,3);
823 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700824 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000825}
826
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000827static void cubicOp45d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000828 SkPath path, pathB;
829 path.setFillType(SkPath::kWinding_FillType);
830 path.moveTo(0,2);
831 path.cubicTo(2,4, 4,0, 3,2);
832 path.close();
833 pathB.setFillType(SkPath::kWinding_FillType);
834 pathB.moveTo(0,4);
835 pathB.cubicTo(2,3, 2,0, 4,2);
836 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700837 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000838}
839
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000840static void cubicOp46d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000841 SkPath path, pathB;
842 path.setFillType(SkPath::kWinding_FillType);
843 path.moveTo(0,2);
844 path.cubicTo(3,5, 5,0, 4,2);
845 path.close();
846 pathB.setFillType(SkPath::kWinding_FillType);
847 pathB.moveTo(0,5);
848 pathB.cubicTo(2,4, 2,0, 5,3);
849 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700850 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000851}
852
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000853static void cubicOp47d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000854 SkPath path, pathB;
855 path.setFillType(SkPath::kWinding_FillType);
856 path.moveTo(0,1);
857 path.cubicTo(1,6, 6,2, 5,4);
858 path.close();
859 pathB.setFillType(SkPath::kWinding_FillType);
860 pathB.moveTo(2,6);
861 pathB.cubicTo(4,5, 1,0, 6,1);
862 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700863 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000864}
865
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000866static void cubicOp48d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000867 SkPath path, pathB;
868 path.setFillType(SkPath::kWinding_FillType);
869 path.moveTo(0,2);
870 path.cubicTo(2,3, 5,1, 3,2);
871 path.close();
872 pathB.setFillType(SkPath::kWinding_FillType);
873 pathB.moveTo(1,5);
874 pathB.cubicTo(2,3, 2,0, 3,2);
875 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700876 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000877}
878
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000879static void cubicOp49d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000880 SkPath path, pathB;
881 path.setFillType(SkPath::kWinding_FillType);
882 path.moveTo(0,2);
883 path.cubicTo(1,5, 3,2, 4,1);
884 path.close();
885 pathB.setFillType(SkPath::kWinding_FillType);
886 pathB.moveTo(2,3);
887 pathB.cubicTo(1,4, 2,0, 5,1);
888 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700889 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000890}
891
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000892static void cubicOp50d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000893 SkPath path, pathB;
894 path.setFillType(SkPath::kWinding_FillType);
895 path.moveTo(0,3);
896 path.cubicTo(1,6, 5,0, 5,1);
897 path.close();
898 pathB.setFillType(SkPath::kWinding_FillType);
899 pathB.moveTo(0,5);
900 pathB.cubicTo(1,5, 3,0, 6,1);
901 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700902 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000903}
904
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000905static void cubicOp51d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000906 SkPath path, pathB;
907 path.setFillType(SkPath::kWinding_FillType);
908 path.moveTo(0,3);
909 path.cubicTo(1,2, 4,1, 6,0);
910 path.close();
911 pathB.setFillType(SkPath::kWinding_FillType);
912 pathB.moveTo(1,4);
913 pathB.cubicTo(0,6, 3,0, 2,1);
914 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700915 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000916}
917
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000918static void cubicOp52d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000919 SkPath path, pathB;
920 path.setFillType(SkPath::kWinding_FillType);
921 path.moveTo(0,2);
922 path.cubicTo(1,2, 5,4, 4,3);
923 path.close();
924 pathB.setFillType(SkPath::kWinding_FillType);
925 pathB.moveTo(4,5);
926 pathB.cubicTo(3,4, 2,0, 2,1);
927 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700928 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000929}
930
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000931static void cubicOp53d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000932 SkPath path, pathB;
933 path.setFillType(SkPath::kWinding_FillType);
934 path.moveTo(0,3);
935 path.cubicTo(1,2, 5,3, 2,1);
936 path.close();
937 pathB.setFillType(SkPath::kWinding_FillType);
938 pathB.moveTo(3,5);
939 pathB.cubicTo(1,2, 3,0, 2,1);
940 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700941 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000942}
943
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000944static void cubicOp54d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000945 SkPath path, pathB;
946 path.setFillType(SkPath::kWinding_FillType);
947 path.moveTo(0,4);
948 path.cubicTo(1,3, 5,4, 4,2);
949 path.close();
950 pathB.setFillType(SkPath::kWinding_FillType);
951 pathB.moveTo(4,5);
952 pathB.cubicTo(2,4, 4,0, 3,1);
953 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700954 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000955}
956
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000957static void cubicOp55d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000958 SkPath path, pathB;
959 path.setFillType(SkPath::kWinding_FillType);
960 path.moveTo(0,5);
961 path.cubicTo(1,3, 3,2, 5,0);
962 path.close();
963 pathB.setFillType(SkPath::kWinding_FillType);
964 pathB.moveTo(2,3);
965 pathB.cubicTo(0,5, 5,0, 3,1);
966 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700967 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000968}
969
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000970static void cubicOp56d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000971 SkPath path, pathB;
972 path.setFillType(SkPath::kWinding_FillType);
973 path.moveTo(0,1);
974 path.cubicTo(2,6, 5,0, 2,1);
975 path.close();
976 pathB.setFillType(SkPath::kWinding_FillType);
977 pathB.moveTo(0,5);
978 pathB.cubicTo(1,2, 1,0, 6,2);
979 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700980 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000981}
982
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000983static void cubicOp57d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000984 SkPath path, pathB;
985 path.setFillType(SkPath::kWinding_FillType);
986 path.moveTo(0,5);
987 path.cubicTo(0,5, 5,4, 6,4);
988 path.close();
989 pathB.setFillType(SkPath::kWinding_FillType);
990 pathB.moveTo(4,5);
991 pathB.cubicTo(4,6, 5,0, 5,0);
992 pathB.close();
caryclark54359292015-03-26 07:52:43 -0700993 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000994}
995
commit-bot@chromium.org4431e772014-04-14 17:08:59 +0000996static void cubicOp58d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +0000997 SkPath path, pathB;
998 path.setFillType(SkPath::kWinding_FillType);
999 path.moveTo(0,5);
1000 path.cubicTo(3,4, 6,5, 5,3);
1001 path.close();
1002 pathB.setFillType(SkPath::kWinding_FillType);
1003 pathB.moveTo(5,6);
1004 pathB.cubicTo(3,5, 5,0, 4,3);
1005 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001006 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001007}
1008
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001009static void cubicOp59d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001010 SkPath path, pathB;
1011 path.setFillType(SkPath::kWinding_FillType);
1012 path.moveTo(0,1);
1013 path.cubicTo(5,6, 4,0, 4,1);
1014 path.close();
1015 pathB.setFillType(SkPath::kWinding_FillType);
1016 pathB.moveTo(0,4);
1017 pathB.cubicTo(1,4, 1,0, 6,5);
1018 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001019 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001020}
1021
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001022static void cubicOp60d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001023 SkPath path, pathB;
1024 path.setFillType(SkPath::kWinding_FillType);
1025 path.moveTo(0,2);
1026 path.cubicTo(4,6, 6,0, 5,2);
1027 path.close();
1028 pathB.setFillType(SkPath::kWinding_FillType);
1029 pathB.moveTo(0,6);
1030 pathB.cubicTo(2,5, 2,0, 6,4);
1031 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001032 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001033}
1034
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001035static void cubicOp61d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001036 SkPath path, pathB;
1037 path.setFillType(SkPath::kWinding_FillType);
1038 path.moveTo(1,2);
1039 path.cubicTo(0,5, 3,2, 6,1);
1040 path.close();
1041 pathB.setFillType(SkPath::kWinding_FillType);
1042 pathB.moveTo(2,3);
1043 pathB.cubicTo(1,6, 2,1, 5,0);
1044 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001045 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001046}
1047
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001048static void cubicOp62d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001049 SkPath path, pathB;
1050 path.setFillType(SkPath::kWinding_FillType);
1051 path.moveTo(1,3);
1052 path.cubicTo(5,6, 5,3, 5,4);
1053 path.close();
1054 pathB.setFillType(SkPath::kWinding_FillType);
1055 pathB.moveTo(3,5);
1056 pathB.cubicTo(4,5, 3,1, 6,5);
1057 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001058 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001059}
1060
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001061static void cubicOp63d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001062 SkPath path, pathB;
1063 path.setFillType(SkPath::kWinding_FillType);
1064 path.moveTo(2,3);
1065 path.cubicTo(0,4, 3,2, 5,3);
1066 path.close();
1067 pathB.setFillType(SkPath::kWinding_FillType);
1068 pathB.moveTo(2,3);
1069 pathB.cubicTo(3,5, 3,2, 4,0);
1070 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001071 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001072}
1073
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001074static void cubicOp64d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001075 SkPath path, pathB;
1076 path.moveTo(0,1);
1077 path.cubicTo(0,1, 1,0, 3,0);
1078 path.lineTo(0,1);
1079 path.close();
1080 pathB.moveTo(0,1);
1081 pathB.cubicTo(0,3, 1,0, 1,0);
1082 pathB.lineTo(0,1);
1083 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001084 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001085}
1086
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001087static void cubicOp65d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001088 SkPath path, pathB;
1089 path.moveTo(0,1);
1090 path.cubicTo(1,5, 1,0, 1,0);
1091 path.lineTo(0,1);
1092 path.close();
1093 pathB.moveTo(0,1);
1094 pathB.cubicTo(0,1, 1,0, 5,1);
1095 pathB.lineTo(0,1);
1096 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001097 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001098}
1099
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001100static void rectOp1d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001101 SkPath path, pathB;
1102 path.moveTo(0,1);
1103 path.cubicTo(0,1, 1,0, 3,0);
1104 path.lineTo(0,1);
1105 path.close();
1106 pathB.moveTo(0,1);
1107 pathB.cubicTo(0,3, 1,0, 1,0);
1108 pathB.lineTo(0,1);
1109 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001110 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00001111}
1112
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001113static void cubicOp66u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.comb3f09212013-04-17 15:49:16 +00001114 SkPath path, pathB;
1115 path.setFillType(SkPath::kWinding_FillType);
1116 path.moveTo(0,1);
1117 path.cubicTo(2,6, 4,2, 5,3);
1118 path.close();
1119 pathB.setFillType(SkPath::kWinding_FillType);
1120 pathB.moveTo(2,4);
1121 pathB.cubicTo(3,5, 1,0, 6,2);
1122 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001123 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.comb3f09212013-04-17 15:49:16 +00001124}
1125
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001126static void cubicOp67u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.comb3f09212013-04-17 15:49:16 +00001127 SkPath path, pathB;
1128 path.moveTo(3,5);
1129 path.cubicTo(1,6, 5,0, 3,1);
1130 path.lineTo(3,5);
1131 path.close();
1132 pathB.moveTo(0,5);
1133 pathB.cubicTo(1,3, 5,3, 6,1);
1134 pathB.lineTo(0,5);
1135 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001136 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.comb3f09212013-04-17 15:49:16 +00001137}
1138
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001139static void cubicOp68u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com03610322013-04-18 15:58:21 +00001140 SkPath path, pathB;
1141 path.moveTo(0,5);
1142 path.cubicTo(4,5, 4,1, 5,0);
1143 path.close();
1144 pathB.moveTo(1,4);
1145 pathB.cubicTo(0,5, 5,0, 5,4);
1146 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001147 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.com03610322013-04-18 15:58:21 +00001148}
1149
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001150static void cubicOp69d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com03610322013-04-18 15:58:21 +00001151 SkPath path, pathB;
1152 path.moveTo(1,3);
1153 path.cubicTo(0,1, 3,1, 2,0);
1154 path.close();
1155 pathB.moveTo(1,3);
1156 pathB.cubicTo(0,2, 3,1, 1,0);
1157 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001158 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com03610322013-04-18 15:58:21 +00001159}
1160
caryclark@google.com6dc7df62013-04-25 11:51:54 +00001161SkPathOp ops[] = {
caryclark54359292015-03-26 07:52:43 -07001162 kUnion_SkPathOp,
1163 kXOR_SkPathOp,
1164 kReverseDifference_SkPathOp,
1165 kXOR_SkPathOp,
1166 kReverseDifference_SkPathOp,
caryclark@google.com6dc7df62013-04-25 11:51:54 +00001167};
1168
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001169static void rRect1(skiatest::Reporter* reporter, const char* filename) {
commit-bot@chromium.org4b413c82013-11-25 19:44:07 +00001170 SkScalar xA = 0.65f;
1171 SkScalar xB = 10.65f;
1172 SkScalar xC = 20.65f;
1173 SkScalar xD = 30.65f;
1174 SkScalar xE = 40.65f;
1175 SkScalar xF = 50.65f;
caryclark@google.com6dc7df62013-04-25 11:51:54 +00001176
commit-bot@chromium.org4b413c82013-11-25 19:44:07 +00001177 SkScalar yA = 0.65f;
1178 SkScalar yB = 10.65f;
1179 SkScalar yC = 20.65f;
1180 SkScalar yD = 30.65f;
1181 SkScalar yE = 40.65f;
1182 SkScalar yF = 50.65f;
caryclark@google.coma5e55922013-05-07 18:51:31 +00001183 SkPath paths[5];
1184 SkRect rects[5];
1185 rects[0].set(xB, yB, xE, yE);
1186 paths[0].addRoundRect(rects[0], SkIntToScalar(5), SkIntToScalar(5)); // red
1187 rects[1].set(xA, yA, xD, yD);
1188 paths[1].addRoundRect(rects[1], SkIntToScalar(5), SkIntToScalar(5)); // green
1189 rects[2].set(xC, yA, xF, yD);
1190 paths[2].addRoundRect(rects[2], SkIntToScalar(5), SkIntToScalar(5)); // blue
1191 rects[3].set(xA, yC, xD, yF);
1192 paths[3].addRoundRect(rects[3], SkIntToScalar(5), SkIntToScalar(5)); // yellow
1193 rects[4].set(xC, yC, xF, yF);
1194 paths[4].addRoundRect(rects[4], SkIntToScalar(5), SkIntToScalar(5)); // cyan
1195 SkPath path;
1196 path.setFillType(SkPath::kInverseEvenOdd_FillType);
1197 for (int index = 0; index < 5; ++index) {
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001198 testPathOp(reporter, path, paths[index], ops[index], filename);
caryclark55888e42016-07-18 10:01:36 -07001199 REPORTER_ASSERT(reporter, Op(path, paths[index], ops[index], &path));
caryclark@google.coma5e55922013-05-07 18:51:31 +00001200 }
1201}
1202
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001203static void skp1(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma5e55922013-05-07 18:51:31 +00001204 SkPath path;
1205 path.setFillType(SkPath::kEvenOdd_FillType);
1206 path.moveTo(189,7);
1207 path.cubicTo(189,5.34314585f, 190.34314f,4, 192,4);
1208 path.lineTo(243,4);
1209 path.cubicTo(244.65686f,4, 246,5.34314585f, 246,7);
1210 path.lineTo(246,21);
1211 path.cubicTo(246,22.6568546f, 244.65686f,24, 243,24);
1212 path.lineTo(192,24);
1213 path.cubicTo(190.34314f,24, 189,22.6568546f, 189,21);
1214 path.lineTo(189,7);
1215 path.close();
1216 path.moveTo(191,8);
1217 path.cubicTo(191,6.89543009f, 191.895432f,6, 193,6);
1218 path.lineTo(242,6);
1219 path.cubicTo(243.104568f,6, 244,6.89543009f, 244,8);
1220 path.lineTo(244,20);
1221 path.cubicTo(244,21.1045704f, 243.104568f,22, 242,22);
1222 path.lineTo(193,22);
1223 path.cubicTo(191.895432f,22, 191,21.1045704f, 191,20);
1224 path.lineTo(191,8);
1225 path.close();
1226 SkPath pathB;
1227 pathB.setFillType(SkPath::kWinding_FillType);
1228 pathB.moveTo(189,4);
1229 pathB.lineTo(199,14);
1230 pathB.lineTo(236,14);
1231 pathB.lineTo(246,4);
1232 pathB.lineTo(189,4);
1233 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001234 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.coma5e55922013-05-07 18:51:31 +00001235}
1236
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001237static void skp2(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma5e55922013-05-07 18:51:31 +00001238 SkPath path;
1239 path.setFillType(SkPath::kEvenOdd_FillType);
1240 path.moveTo(253.000000f, 11757.0000f);
1241 path.lineTo(253.000000f, 222.000000f);
1242 path.lineTo(823.000000f, 222.000000f);
1243 path.lineTo(823.000000f, 11757.0000f);
1244 path.lineTo(253.000000f, 11757.0000f);
1245 path.close();
1246 SkPath pathB;
1247 pathB.setFillType(SkPath::kWinding_FillType);
1248 pathB.moveTo(258.000000f, 1028.00000f);
1249 pathB.lineTo(258.000000f, 1027.00000f);
1250 pathB.lineTo(823.000000f, 1027.00000f);
1251 pathB.lineTo(823.000000f, 1028.00000f);
1252 pathB.lineTo(258.000000f, 1028.00000f);
1253 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001254 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.coma5e55922013-05-07 18:51:31 +00001255}
1256
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001257static void skp3(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma5e55922013-05-07 18:51:31 +00001258 SkPath path;
1259 path.setFillType(SkPath::kEvenOdd_FillType);
1260 path.moveTo(717.000000f, 507.000000f);
1261 path.lineTo(717.000000f, 425.000000f);
1262 path.lineTo(973.000000f, 425.000000f);
1263 path.lineTo(973.000000f, 507.000000f);
1264 path.quadTo(973.000000f, 508.242645f, 972.121582f, 509.121613f);
1265 path.quadTo(971.242615f, 510.000000f, 970.000000f, 510.000000f);
1266 path.lineTo(720.000000f, 510.000000f);
1267 path.quadTo(718.757385f, 510.000000f, 717.878418f, 509.121613f);
1268 path.quadTo(717.000000f, 508.242645f, 717.000000f, 507.000000f);
1269 path.close();
1270 path.moveTo(719.000000f, 426.000000f);
1271 path.lineTo(971.000000f, 426.000000f);
1272 path.lineTo(971.000000f, 506.000000f);
1273 path.cubicTo(971.000000f, 507.104584f, 970.104553f, 508.000000f, 969.000000f, 508.000000f);
1274 path.lineTo(721.000000f, 508.000000f);
1275 path.cubicTo(719.895447f, 508.000000f, 719.000000f, 507.104584f, 719.000000f, 506.000000f);
1276 path.lineTo(719.000000f, 426.000000f);
1277 path.close();
1278 SkPath pathB;
1279 pathB.setFillType(SkPath::kWinding_FillType);
1280 pathB.moveTo(717.000000f, 510.000000f);
1281 pathB.lineTo(760.000000f, 467.000000f);
1282 pathB.lineTo(930.000000f, 467.000000f);
1283 pathB.lineTo(973.000000f, 510.000000f);
1284 pathB.lineTo(717.000000f, 510.000000f);
1285 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001286 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.coma5e55922013-05-07 18:51:31 +00001287}
1288
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001289static void skp4(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma5e55922013-05-07 18:51:31 +00001290 SkPath path;
1291 path.setFillType(SkPath::kEvenOdd_FillType);
1292 path.moveTo(230.756805f, 591.756775f);
1293 path.quadTo(232.514725f, 590.000000f, 235.000000f, 590.000000f);
1294 path.lineTo(300.000000f, 590.000000f);
1295 path.quadTo(302.485291f, 590.000000f, 304.243195f, 591.756775f);
1296 path.quadTo(306.000000f, 593.514709f, 306.000000f, 596.000000f);
1297 path.lineTo(306.000000f, 617.000000f);
1298 path.lineTo(229.000000f, 617.000000f);
1299 path.lineTo(229.000000f, 596.000000f);
1300 path.quadTo(229.000000f, 593.514709f, 230.756805f, 591.756775f);
1301 path.close();
1302 path.moveTo(231.000000f, 597.000000f);
1303 path.cubicTo(231.000000f, 594.238586f, 233.238571f, 592.000000f, 236.000000f, 592.000000f);
1304 path.lineTo(299.000000f, 592.000000f);
1305 path.cubicTo(301.761414f, 592.000000f, 304.000000f, 594.238586f, 304.000000f, 597.000000f);
1306 path.lineTo(304.000000f, 616.000000f);
1307 path.lineTo(231.000000f, 616.000000f);
1308 path.lineTo(231.000000f, 597.000000f);
1309 path.close();
1310 SkPath pathB;
1311 pathB.setFillType(SkPath::kWinding_FillType);
1312 pathB.moveTo(306.000000f, 590.000000f);
1313 pathB.lineTo(292.000000f, 604.000000f);
1314 pathB.lineTo(305.000000f, 617.000000f);
1315 pathB.lineTo(306.000000f, 617.000000f);
1316 pathB.lineTo(306.000000f, 590.000000f);
1317 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001318 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.coma5e55922013-05-07 18:51:31 +00001319}
1320
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001321static void skp5(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma5e55922013-05-07 18:51:31 +00001322 SkPath path;
1323 path.setFillType(SkPath::kEvenOdd_FillType);
1324 path.moveTo(18.0000000f, 226.000000f);
1325 path.quadTo(14.6862917f, 226.000000f, 12.3423996f, 228.342407f);
1326 path.quadTo(10.0000000f, 230.686295f, 10.0000000f, 234.000000f);
1327 path.lineTo(10.0000000f, 253.000000f);
1328 path.lineTo(1247.00000f, 253.000000f);
1329 path.lineTo(1247.00000f, 234.000000f);
1330 path.quadTo(1247.00000f, 230.686295f, 1244.65759f, 228.342407f);
1331 path.quadTo(1242.31372f, 226.000000f, 1239.00000f, 226.000000f);
1332 path.lineTo(18.0000000f, 226.000000f);
1333 path.close();
1334 SkPath pathB;
1335 pathB.setFillType(SkPath::kInverseWinding_FillType);
1336 pathB.moveTo(18.0000000f, 226.000000f);
1337 pathB.lineTo(1239.00000f, 226.000000f);
1338 pathB.cubicTo(1243.41833f, 226.000000f, 1247.00000f, 229.581726f, 1247.00000f, 234.000000f);
1339 pathB.lineTo(1247.00000f, 252.000000f);
1340 pathB.lineTo(10.0000000f, 252.000000f);
1341 pathB.lineTo(10.0000000f, 234.000000f);
1342 pathB.cubicTo(10.0000000f, 229.581726f, 13.5817204f, 226.000000f, 18.0000000f, 226.000000f);
1343 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001344 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.coma5e55922013-05-07 18:51:31 +00001345}
1346
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001347static void cubicOp70d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.coma5e55922013-05-07 18:51:31 +00001348 SkPath path, pathB;
1349 path.setFillType(SkPath::kWinding_FillType);
1350 path.moveTo(0,1);
1351 path.cubicTo(0,5, 4,0, 5,0);
1352 path.close();
1353 pathB.setFillType(SkPath::kWinding_FillType);
1354 pathB.moveTo(0,4);
1355 pathB.cubicTo(0,5, 1,0, 5,0);
1356 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001357 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com6dc7df62013-04-25 11:51:54 +00001358}
1359
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001360static void cubicOp71d(skiatest::Reporter* reporter, const char* filename) {
reed@google.com277c3f82013-05-31 15:17:50 +00001361 SkPath path, pathB;
1362 path.setFillType(SkPath::kWinding_FillType);
1363 path.moveTo(0,1);
1364 path.cubicTo(0,5, 4,1, 6,4);
1365 path.close();
1366 pathB.setFillType(SkPath::kWinding_FillType);
1367 pathB.moveTo(1,4);
1368 pathB.cubicTo(4,6, 1,0, 5,0);
1369 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001370 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
reed@google.com277c3f82013-05-31 15:17:50 +00001371}
1372
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001373static void cubicOp72i(skiatest::Reporter* reporter, const char* filename) {
reed@google.com277c3f82013-05-31 15:17:50 +00001374 SkPath path, pathB;
1375 path.setFillType(SkPath::kWinding_FillType);
1376 path.moveTo(0,1);
1377 path.cubicTo(0,5, 5,2, 5,4);
1378 path.close();
1379 pathB.setFillType(SkPath::kWinding_FillType);
1380 pathB.moveTo(2,5);
1381 pathB.cubicTo(4,5, 1,0, 5,0);
1382 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001383 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
reed@google.com277c3f82013-05-31 15:17:50 +00001384}
1385
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001386static void cubicOp73d(skiatest::Reporter* reporter, const char* filename) {
reed@google.com277c3f82013-05-31 15:17:50 +00001387 SkPath path, pathB;
1388 path.setFillType(SkPath::kWinding_FillType);
1389 path.moveTo(0,1);
1390 path.cubicTo(3,4, 4,0, 6,4);
1391 path.lineTo(0,1);
1392 path.close();
1393 pathB.setFillType(SkPath::kWinding_FillType);
1394 pathB.moveTo(0,4);
1395 pathB.cubicTo(4,6, 1,0, 4,3);
1396 pathB.lineTo(0,4);
1397 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001398 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
reed@google.com277c3f82013-05-31 15:17:50 +00001399}
1400
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001401static void cubicOp74d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001402 SkPath path, pathB;
1403 path.setFillType(SkPath::kWinding_FillType);
1404 path.moveTo(0,1);
1405 path.cubicTo(1,5, 5,1, 5,1);
1406 path.lineTo(0,1);
1407 path.close();
1408 pathB.setFillType(SkPath::kWinding_FillType);
1409 pathB.moveTo(1,5);
1410 pathB.cubicTo(1,5, 1,0, 5,1);
1411 pathB.lineTo(1,5);
1412 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001413 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001414}
1415
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001416static void cubicOp75d(skiatest::Reporter* reporter, const char* filename) {
reed@google.com277c3f82013-05-31 15:17:50 +00001417 SkPath path, pathB;
1418 path.setFillType(SkPath::kWinding_FillType);
1419 path.moveTo(0,1);
1420 path.cubicTo(0,4, 5,1, 6,4);
1421 path.lineTo(0,1);
1422 path.close();
1423 pathB.setFillType(SkPath::kWinding_FillType);
1424 pathB.moveTo(1,5);
1425 pathB.cubicTo(4,6, 1,0, 4,0);
1426 pathB.lineTo(1,5);
1427 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001428 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
reed@google.com277c3f82013-05-31 15:17:50 +00001429}
1430
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001431static void cubicOp76u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001432 SkPath path, pathB;
1433 path.setFillType(SkPath::kWinding_FillType);
1434 path.moveTo(0,1);
1435 path.cubicTo(0,2, 2,0, 5,3);
1436 path.close();
1437 pathB.setFillType(SkPath::kWinding_FillType);
1438 pathB.moveTo(0,2);
1439 pathB.cubicTo(3,5, 1,0, 2,0);
1440 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001441 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001442}
1443
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001444static void cubicOp77i(skiatest::Reporter* reporter, const char* filename) {
reed@google.com277c3f82013-05-31 15:17:50 +00001445 SkPath path, pathB;
1446 path.setFillType(SkPath::kEvenOdd_FillType);
1447 path.moveTo(0,1);
1448 path.cubicTo(1,3, 2,0, 3,2);
1449 path.lineTo(0,1);
1450 path.close();
1451 pathB.setFillType(SkPath::kEvenOdd_FillType);
1452 pathB.moveTo(0,2);
1453 pathB.cubicTo(2,3, 1,0, 3,1);
1454 pathB.lineTo(0,2);
1455 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001456 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
reed@google.com277c3f82013-05-31 15:17:50 +00001457}
1458
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001459static void cubicOp78u(skiatest::Reporter* reporter, const char* filename) {
reed@google.com277c3f82013-05-31 15:17:50 +00001460 SkPath path, pathB;
1461 path.setFillType(SkPath::kEvenOdd_FillType);
1462 path.moveTo(1,6);
1463 path.cubicTo(1,6, 5,0, 6,1);
1464 path.lineTo(1,6);
1465 path.close();
1466 pathB.setFillType(SkPath::kEvenOdd_FillType);
1467 pathB.moveTo(0,5);
1468 pathB.cubicTo(1,6, 6,1, 6,1);
1469 pathB.lineTo(0,5);
1470 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001471 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
reed@google.com277c3f82013-05-31 15:17:50 +00001472}
1473
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001474static void cubicOp79u(skiatest::Reporter* reporter, const char* filename) {
reed@google.com277c3f82013-05-31 15:17:50 +00001475 SkPath path, pathB;
1476 path.setFillType(SkPath::kWinding_FillType);
1477 path.moveTo(0,1);
1478 path.cubicTo(1,3, 1,0, 6,4);
1479 path.close();
1480 pathB.setFillType(SkPath::kWinding_FillType);
1481 pathB.moveTo(0,1);
1482 pathB.cubicTo(4,6, 1,0, 3,1);
1483 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001484 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
reed@google.com277c3f82013-05-31 15:17:50 +00001485}
1486
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001487static void cubicOp80i(skiatest::Reporter* reporter, const char* filename) {
reed@google.com277c3f82013-05-31 15:17:50 +00001488 SkPath path, pathB;
1489 path.setFillType(SkPath::kWinding_FillType);
1490 path.moveTo(0,1);
1491 path.cubicTo(2,3, 2,1, 4,3);
1492 path.lineTo(0,1);
1493 path.close();
1494 pathB.setFillType(SkPath::kWinding_FillType);
1495 pathB.moveTo(1,2);
1496 pathB.cubicTo(3,4, 1,0, 3,2);
1497 pathB.lineTo(1,2);
1498 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001499 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
reed@google.com277c3f82013-05-31 15:17:50 +00001500}
1501
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001502static void cubicOp81d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001503 SkPath path, pathB;
1504 path.setFillType(SkPath::kWinding_FillType);
1505 path.moveTo(0,1);
1506 path.cubicTo(4,6, 4,3, 5,4);
1507 path.close();
1508 pathB.setFillType(SkPath::kWinding_FillType);
1509 pathB.moveTo(3,4);
1510 pathB.cubicTo(4,5, 1,0, 6,4);
1511 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001512 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001513}
1514
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001515static void cubicOp82i(skiatest::Reporter* reporter, const char* filename) {
reed@google.com277c3f82013-05-31 15:17:50 +00001516 SkPath path, pathB;
1517 path.setFillType(SkPath::kEvenOdd_FillType);
1518 path.moveTo(0,1);
1519 path.cubicTo(2,3, 5,2, 3,0);
1520 path.lineTo(0,1);
1521 path.close();
1522 pathB.setFillType(SkPath::kWinding_FillType);
1523 pathB.moveTo(2,5);
1524 pathB.cubicTo(0,3, 1,0, 3,2);
1525 pathB.lineTo(2,5);
1526 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001527 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
reed@google.com277c3f82013-05-31 15:17:50 +00001528}
1529
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001530static void cubicOp83i(skiatest::Reporter* reporter, const char* filename) {
reed@google.com277c3f82013-05-31 15:17:50 +00001531 SkPath path, pathB;
1532 path.setFillType(SkPath::kWinding_FillType);
1533 path.moveTo(0,1);
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001534 path.cubicTo(0,3, 2,1, 4,1);
1535 path.lineTo(0,1);
reed@google.com277c3f82013-05-31 15:17:50 +00001536 path.close();
1537 pathB.setFillType(SkPath::kWinding_FillType);
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001538 pathB.moveTo(1,2);
1539 pathB.cubicTo(1,4, 1,0, 3,0);
1540 pathB.lineTo(1,2);
1541 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001542 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001543}
1544
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001545static void cubicOp84d(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001546 SkPath path, pathB;
1547 path.setFillType(SkPath::kWinding_FillType);
1548 path.moveTo(0,4);
1549 path.cubicTo(2,3, 6,3, 3,2);
1550 path.close();
1551 pathB.setFillType(SkPath::kWinding_FillType);
1552 pathB.moveTo(3,6);
1553 pathB.cubicTo(2,3, 4,0, 3,2);
reed@google.com277c3f82013-05-31 15:17:50 +00001554 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001555 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
reed@google.com277c3f82013-05-31 15:17:50 +00001556}
1557
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001558static void skpClip1(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001559 SkPath path;
1560 path.setFillType(SkPath::kEvenOdd_FillType);
1561 path.moveTo(1126.17114f, 877.171204f);
1562 path.quadTo(1127.34314f, 876.000000f, 1129.00000f, 876.000000f);
1563 path.lineTo(1243.00000f, 876.000000f);
1564 path.quadTo(1244.65686f, 876.000000f, 1245.82886f, 877.171204f);
1565 path.quadTo(1247.00000f, 878.343140f, 1247.00000f, 880.000000f);
1566 path.lineTo(1247.00000f, 907.000000f);
1567 path.lineTo(1246.00000f, 907.000000f);
1568 path.lineTo(1246.00000f, 880.000000f);
1569 path.cubicTo(1246.00000f, 878.343140f, 1244.65686f, 877.000000f, 1243.00000f, 877.000000f);
1570 path.lineTo(1129.00000f, 877.000000f);
1571 path.cubicTo(1127.34314f, 877.000000f, 1126.00000f, 878.343140f, 1126.00000f, 880.000000f);
1572 path.lineTo(1126.00000f, 907.000000f);
1573 path.lineTo(1125.00000f, 907.000000f);
1574 path.lineTo(1125.00000f, 880.000000f);
1575 path.quadTo(1125.00000f, 878.343140f, 1126.17114f, 877.171204f);
1576 path.close();
1577 SkPath pathB;
1578 pathB.setFillType(SkPath::kWinding_FillType);
1579 pathB.moveTo(1247.00000f, 876.000000f);
1580 pathB.lineTo(1231.00000f, 892.000000f);
1581 pathB.lineTo(1246.00000f, 907.000000f);
1582 pathB.lineTo(1247.00000f, 907.000000f);
1583 pathB.lineTo(1247.00000f, 876.000000f);
1584 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001585 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001586}
1587
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001588static void skpClip2(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001589 SkPath path;
1590 path.setFillType(SkPath::kEvenOdd_FillType);
1591 path.moveTo(134.000000f, 11414.0000f);
1592 path.cubicTo(131.990234f, 11414.0000f, 130.326660f, 11415.4824f, 130.042755f, 11417.4131f);
1593 path.cubicTo(130.233124f, 11418.3193f, 131.037079f, 11419.0000f, 132.000000f, 11419.0000f);
1594 path.lineTo(806.000000f, 11419.0000f);
1595 path.cubicTo(806.962891f, 11419.0000f, 807.766907f, 11418.3193f, 807.957275f, 11417.4131f);
1596 path.cubicTo(807.673401f, 11415.4824f, 806.009766f, 11414.0000f, 804.000000f, 11414.0000f);
1597 path.lineTo(134.000000f, 11414.0000f);
1598 path.close();
1599 SkPath pathB;
1600 pathB.setFillType(SkPath::kInverseWinding_FillType);
1601 pathB.moveTo(132.000000f, 11415.0000f);
1602 pathB.lineTo(806.000000f, 11415.0000f);
1603 pathB.cubicTo(807.104553f, 11415.0000f, 808.000000f, 11415.4473f, 808.000000f, 11416.0000f);
1604 pathB.lineTo(808.000000f, 11417.0000f);
1605 pathB.cubicTo(808.000000f, 11418.1045f, 807.104553f, 11419.0000f, 806.000000f, 11419.0000f);
1606 pathB.lineTo(132.000000f, 11419.0000f);
1607 pathB.cubicTo(130.895432f, 11419.0000f, 130.000000f, 11418.1045f, 130.000000f, 11417.0000f);
1608 pathB.lineTo(130.000000f, 11416.0000f);
1609 pathB.cubicTo(130.000000f, 11415.4473f, 130.895432f, 11415.0000f, 132.000000f, 11415.0000f);
1610 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001611 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001612}
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001613
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001614static void skp96prezzi1(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001615 SkPath path;
1616 path.setFillType(SkPath::kEvenOdd_FillType);
1617 path.moveTo(157.464005f, 670.463989f);
1618 path.quadTo(158.928925f, 669.000000f, 161.000000f, 669.000000f);
1619 path.lineTo(248.000000f, 669.000000f);
1620 path.quadTo(250.071075f, 669.000000f, 251.535995f, 670.463989f);
1621 path.quadTo(253.000000f, 671.928955f, 253.000000f, 674.000000f);
1622 path.lineTo(253.000000f, 706.000000f);
1623 path.lineTo(251.000000f, 706.000000f);
1624 path.lineTo(251.000000f, 675.000000f);
1625 path.cubicTo(251.000000f, 672.790833f, 249.209137f, 671.000000f, 247.000000f, 671.000000f);
1626 path.lineTo(162.000000f, 671.000000f);
1627 path.cubicTo(159.790863f, 671.000000f, 158.000000f, 672.790833f, 158.000000f, 675.000000f);
1628 path.lineTo(158.000000f, 706.000000f);
1629 path.lineTo(156.000000f, 706.000000f);
1630 path.lineTo(156.000000f, 674.000000f);
1631 path.quadTo(156.000000f, 671.928955f, 157.464005f, 670.463989f);
1632 path.close();
1633 SkPath pathB;
1634 pathB.setFillType(SkPath::kWinding_FillType);
1635 pathB.moveTo(156.000000f, 669.000000f);
1636 pathB.lineTo(178.500000f, 691.500000f);
1637 pathB.lineTo(230.500000f, 691.500000f);
1638 pathB.lineTo(253.000000f, 669.000000f);
1639 pathB.lineTo(156.000000f, 669.000000f);
1640 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001641 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001642}
1643
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001644static void skpancestry_com1(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001645 SkPath path;
1646 path.setFillType(SkPath::kEvenOdd_FillType);
1647 path.moveTo(161.000000f, 925.000000f);
1648 path.cubicTo(159.874390f, 925.000000f, 158.835663f, 925.371948f, 158.000000f, 925.999634f);
1649 path.lineTo(158.000000f, 926.000000f);
1650 path.lineTo(1108.00000f, 926.000000f);
1651 path.lineTo(1108.00000f, 925.999634f);
1652 path.cubicTo(1107.16443f, 925.371948f, 1106.12561f, 925.000000f, 1105.00000f, 925.000000f);
1653 path.lineTo(161.000000f, 925.000000f);
1654 path.close();
1655 SkPath pathB;
1656 pathB.setFillType(SkPath::kEvenOdd_FillType);
1657 pathB.moveTo(161.000000f, 926.000000f);
1658 pathB.lineTo(1105.00000f, 926.000000f);
1659 pathB.cubicTo(1107.20911f, 926.000000f, 1109.00000f, 927.790833f, 1109.00000f, 930.000000f);
1660 pathB.lineTo(1109.00000f, 956.000000f);
1661 pathB.cubicTo(1109.00000f, 958.209167f, 1107.20911f, 960.000000f, 1105.00000f, 960.000000f);
1662 pathB.lineTo(161.000000f, 960.000000f);
1663 pathB.cubicTo(158.790863f, 960.000000f, 157.000000f, 958.209167f, 157.000000f, 956.000000f);
1664 pathB.lineTo(157.000000f, 930.000000f);
1665 pathB.cubicTo(157.000000f, 927.790833f, 158.790863f, 926.000000f, 161.000000f, 926.000000f);
1666 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001667 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001668}
1669
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001670static void skpeldorado_com_ua1(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001671 SkPath path;
1672 path.setFillType(SkPath::kEvenOdd_FillType);
1673 path.moveTo(286.695129f, 291.000000f);
1674 path.lineTo(229.304855f, 561.000000f);
1675 path.lineTo(979.304871f, 561.000000f);
1676 path.lineTo(1036.69507f, 291.000000f);
1677 path.lineTo(286.695129f, 291.000000f);
1678 path.close();
1679 SkPath pathB;
1680 pathB.setFillType(SkPath::kWinding_FillType);
1681 pathB.moveTo(1006.69513f, 291.000000f);
1682 pathB.cubicTo(1023.26367f, 291.000000f, 1033.84021f, 304.431458f, 1030.31836f, 321.000000f);
1683 pathB.lineTo(985.681519f, 531.000000f);
1684 pathB.cubicTo(982.159790f, 547.568542f, 965.873413f, 561.000000f, 949.304871f, 561.000000f);
1685 pathB.lineTo(259.304871f, 561.000000f);
1686 pathB.cubicTo(242.736313f, 561.000000f, 232.159805f, 547.568542f, 235.681549f, 531.000000f);
1687 pathB.lineTo(280.318420f, 321.000000f);
1688 pathB.cubicTo(283.840179f, 304.431458f, 300.126587f, 291.000000f, 316.695129f, 291.000000f);
1689 pathB.lineTo(1006.69513f, 291.000000f);
1690 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001691 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001692}
1693
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001694static void skpbyte_com1(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001695 SkPath path;
1696 path.setFillType(SkPath::kEvenOdd_FillType);
1697 path.moveTo(968.000000f, 14.0000000f);
1698 path.cubicTo(965.238586f, 14.0000000f, 963.000000f, 16.2385769f, 963.000000f, 19.0000000f);
1699 path.lineTo(963.000000f, 32.0000000f);
1700 path.cubicTo(963.000000f, 34.7614250f, 965.238586f, 37.0000000f, 968.000000f, 37.0000000f);
1701 path.lineTo(1034.00000f, 37.0000000f);
1702 path.cubicTo(1036.76147f, 37.0000000f, 1039.00000f, 34.7614250f, 1039.00000f, 32.0000000f);
1703 path.lineTo(1039.00000f, 19.0000000f);
1704 path.cubicTo(1039.00000f, 16.2385769f, 1036.76147f, 14.0000000f, 1034.00000f, 14.0000000f);
1705 path.lineTo(968.000000f, 14.0000000f);
1706 path.close();
1707 SkPath pathB;
1708 pathB.setFillType(SkPath::kInverseWinding_FillType);
1709 pathB.moveTo(968.000000f, 14.0000000f);
1710 pathB.lineTo(1034.00000f, 14.0000000f);
1711 pathB.cubicTo(1036.76147f, 14.0000000f, 1039.00000f, 16.2385750f, 1039.00000f, 19.0000000f);
1712 pathB.lineTo(1039.00000f, 32.0000000f);
1713 pathB.cubicTo(1039.00000f, 34.2091408f, 1036.76147f, 36.0000000f, 1034.00000f, 36.0000000f);
1714 pathB.lineTo(968.000000f, 36.0000000f);
1715 pathB.cubicTo(965.238586f, 36.0000000f, 963.000000f, 34.2091408f, 963.000000f, 32.0000000f);
1716 pathB.lineTo(963.000000f, 19.0000000f);
1717 pathB.cubicTo(963.000000f, 16.2385750f, 965.238586f, 14.0000000f, 968.000000f, 14.0000000f);
1718 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001719 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001720}
1721
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001722static void skphealth_com76(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001723 SkPath path;
1724 path.setFillType(SkPath::kEvenOdd_FillType);
1725 path.moveTo(708.099182f, 7.09919119f);
1726 path.lineTo(708.099182f, 7.09920025f);
1727 path.quadTo(704.000000f, 11.2010098f, 704.000000f, 17.0000000f);
1728 path.lineTo(704.000000f, 33.0000000f);
1729 path.lineTo(705.000000f, 33.0000000f);
1730 path.lineTo(705.000000f, 17.0000000f);
1731 path.cubicTo(705.000000f, 13.4101496f, 706.455078f, 10.1601505f, 708.807617f, 7.80761385f);
1732 path.lineTo(708.099182f, 7.09919119f);
1733 path.close();
1734 SkPath pathB;
1735 pathB.setFillType(SkPath::kWinding_FillType);
1736 pathB.moveTo(704.000000f, 3.00000000f);
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001737 pathB.lineTo(704.000000f, 33.0000000f);
1738 pathB.lineTo(705.000000f, 33.0000000f);
1739 pathB.lineTo(719.500000f, 3.00000000f);
caryclark54359292015-03-26 07:52:43 -07001740 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com07e97fc2013-07-08 17:17:02 +00001741}
caryclark@google.comcffbcc32013-06-04 17:59:42 +00001742
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001743static void skpahrefs_com88(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.com977409a2013-07-16 07:00:56 +00001744 SkPath path;
1745 path.setFillType(SkPath::kEvenOdd_FillType);
1746 path.moveTo(1099.82886f, 7.17117119f);
1747 path.lineTo(1099.12134f, 7.87867832f);
1748 path.cubicTo(1099.66418f, 8.42157173f, 1100.00000f, 9.17157173f, 1100.00000f, 10.0000000f);
1749 path.lineTo(1100.00000f, 28.0000000f);
1750 path.cubicTo(1100.00000f, 29.6568546f, 1098.65686f, 31.0000000f, 1097.00000f, 31.0000000f);
1751 path.lineTo(1088.00000f, 31.0000000f);
1752 path.lineTo(1088.00000f, 32.0000000f);
1753 path.lineTo(1097.00000f, 32.0000000f);
1754 path.quadTo(1098.65686f, 32.0000000f, 1099.82886f, 30.8288002f);
1755 path.quadTo(1101.00000f, 29.6568546f, 1101.00000f, 28.0000000f);
1756 path.lineTo(1101.00000f, 10.0000000f);
1757 path.quadTo(1101.00000f, 8.34314537f, 1099.82886f, 7.17119980f);
1758 path.lineTo(1099.82886f, 7.17117119f);
1759 path.close();
1760 SkPath pathB;
1761 pathB.setFillType(SkPath::kWinding_FillType);
1762 pathB.moveTo(1101.00000f, 6.00000000f);
1763 pathB.lineTo(1088.00000f, 6.00000000f);
1764 pathB.lineTo(1088.00000f, 19.0000000f);
1765 pathB.lineTo(1101.00000f, 32.0000000f);
caryclark54359292015-03-26 07:52:43 -07001766 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.com977409a2013-07-16 07:00:56 +00001767}
caryclark@google.comfa2aeee2013-07-15 13:29:13 +00001768
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001769static void skpahrefs_com29(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.com977409a2013-07-16 07:00:56 +00001770 SkPath path;
1771 path.setFillType(SkPath::kEvenOdd_FillType);
1772 path.moveTo(1037.17114f, 7.17119980f);
1773 path.quadTo(1038.34314f, 6.00000000f, 1040.00000f, 6.00000000f);
1774 path.lineTo(1074.00000f, 6.00000000f);
1775 path.lineTo(1074.00000f, 32.0000000f);
1776 path.lineTo(1040.00000f, 32.0000000f);
1777 path.quadTo(1038.34314f, 32.0000000f, 1037.17114f, 30.8288002f);
1778 path.quadTo(1036.00000f, 29.6568546f, 1036.00000f, 28.0000000f);
1779 path.lineTo(1036.00000f, 10.0000000f);
1780 path.quadTo(1036.00000f, 8.34314537f, 1037.17114f, 7.17119980f);
1781 path.close();
1782 path.moveTo(1037.00000f, 10.0000000f);
1783 path.cubicTo(1037.00000f, 8.34314537f, 1038.34314f, 7.00000000f, 1040.00000f, 7.00000000f);
1784 path.lineTo(1073.00000f, 7.00000000f);
1785 path.lineTo(1073.00000f, 31.0000000f);
1786 path.lineTo(1040.00000f, 31.0000000f);
1787 path.cubicTo(1038.34314f, 31.0000000f, 1037.00000f, 29.6568546f, 1037.00000f, 28.0000000f);
1788 path.lineTo(1037.00000f, 10.0000000f);
1789 path.close();
1790 SkPath pathB;
1791 pathB.setFillType(SkPath::kWinding_FillType);
1792 pathB.moveTo(1036.00000f, 32.0000000f);
1793 pathB.lineTo(1049.00000f, 19.0000000f);
1794 pathB.lineTo(1073.00000f, 31.0000000f);
1795 pathB.lineTo(1074.00000f, 32.0000000f);
caryclark54359292015-03-26 07:52:43 -07001796 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.com977409a2013-07-16 07:00:56 +00001797}
caryclark@google.comfa2aeee2013-07-15 13:29:13 +00001798
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001799static void cubicOp85d(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.com977409a2013-07-16 07:00:56 +00001800 SkPath path;
1801 path.setFillType(SkPath::kWinding_FillType);
1802 path.moveTo(0,1);
1803 path.cubicTo(1,6, 1,0, 6,2);
1804 path.close();
1805 SkPath pathB;
1806 pathB.setFillType(SkPath::kWinding_FillType);
1807 pathB.moveTo(0,1);
1808 pathB.cubicTo(2,6, 1,0, 6,1);
1809 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001810 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.comfa2aeee2013-07-15 13:29:13 +00001811}
1812
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001813static void skpkkiste_to98(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.com977409a2013-07-16 07:00:56 +00001814 SkPath path;
1815 path.setFillType(SkPath::kEvenOdd_FillType);
1816 path.moveTo(96, 122);
1817 path.cubicTo(94.6192932f, 122, 93.3692932f, 122.559647f, 92.4644699f, 123.46447f);
1818 path.lineTo(94.1715698f, 125.17157f);
1819 path.cubicTo(94.8954315f, 124.447708f, 95.8954315f, 124, 97, 124);
1820 path.lineTo(257, 124);
1821 path.cubicTo(258.104553f, 124, 259.104584f, 124.447708f, 259.82843f, 125.17157f);
1822 path.lineTo(261.535522f, 123.46447f);
1823 path.cubicTo(260.630707f, 122.559647f, 259.380707f, 122, 258, 122);
1824 path.lineTo(96, 122);
1825 path.close();
1826 SkPath pathB;
1827 pathB.setFillType(SkPath::kWinding_FillType);
1828 pathB.moveTo(258, 122);
1829 pathB.cubicTo(260.761414f, 122, 263, 124.238579f, 263, 127);
1830 pathB.lineTo(263, 284);
1831 pathB.cubicTo(263, 286.761414f, 260.761414f, 289, 258, 289);
1832 pathB.lineTo(96, 289);
1833 pathB.cubicTo(93.2385788f, 289, 91, 286.761414f, 91, 284);
1834 pathB.lineTo(91, 127);
1835 pathB.cubicTo(91, 124.238579f, 93.2385788f, 122, 96, 122);
1836 pathB.lineTo(258, 122);
1837 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001838 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.com977409a2013-07-16 07:00:56 +00001839}
caryclark@google.comfa2aeee2013-07-15 13:29:13 +00001840
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001841static void issue1417(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.com7f1af502013-07-24 07:01:12 +00001842 SkPath path1;
1843 path1.moveTo(122.58908843994140625f, 82.2836456298828125f);
1844 path1.quadTo(129.8215789794921875f, 80, 138, 80);
1845 path1.quadTo(147.15692138671875f, 80, 155.1280364990234375f, 82.86279296875f);
1846 path1.lineTo(161.1764678955078125f, 100);
1847 path1.lineTo(161.1764678955078125f, 100);
1848 path1.lineTo(115.29412078857421875f, 100);
1849 path1.lineTo(115.29412078857421875f, 100);
1850 path1.lineTo(122.58908843994140625f, 82.2836456298828125f);
1851 path1.lineTo(122.58908843994140625f, 82.2836456298828125f);
1852 path1.close();
1853 path1.moveTo(98.68194580078125f, 140.343841552734375f);
1854 path1.lineTo(115.29412078857421875f, 100);
1855 path1.lineTo(115.29412078857421875f, 100);
1856 path1.lineTo(97.9337615966796875f, 100);
1857 path1.lineTo(97.9337615966796875f, 100);
1858 path1.quadTo(88, 112.94264984130859375f, 88, 130);
1859 path1.quadTo(88, 131.544830322265625f, 88.08148956298828125f, 133.0560302734375f);
1860 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1861 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1862 path1.close();
1863 path1.moveTo(136.969696044921875f, 166.6666717529296875f);
1864 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1865 path1.lineTo(98.68194580078125f, 140.343841552734375f);
1866 path1.lineTo(93.45894622802734375f, 153.02825927734375f);
1867 path1.lineTo(93.45894622802734375f, 153.02825927734375f);
1868 path1.quadTo(96.94116973876953125f, 159.65185546875f, 102.64466094970703125f, 165.3553466796875f);
1869 path1.quadTo(110.7924652099609375f, 173.503143310546875f, 120.8179779052734375f, 177.1177825927734375f);
1870 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1871 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1872 path1.close();
1873 path1.moveTo(175.8309783935546875f, 141.5211334228515625f);
1874 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1875 path1.lineTo(136.969696044921875f, 166.6666717529296875f);
1876 path1.lineTo(153.15728759765625f, 177.7956390380859375f);
1877 path1.lineTo(153.15728759765625f, 177.7956390380859375f);
1878 path1.quadTo(164.392425537109375f, 174.318267822265625f, 173.3553466796875f, 165.3553466796875f);
1879 path1.quadTo(177.805816650390625f, 160.9048614501953125f, 180.90380859375f, 155.8941650390625f);
1880 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1881 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1882 path1.close();
1883 path1.moveTo(175.8309783935546875f, 141.5211334228515625f);
1884 path1.lineTo(187.8782806396484375f, 133.7258148193359375f);
1885 path1.lineTo(187.8782806396484375f, 133.7258148193359375f);
1886 path1.quadTo(188, 131.8880615234375f, 188, 130);
1887 path1.quadTo(188, 112.942657470703125f, 178.0662384033203125f, 100);
1888 path1.lineTo(161.1764678955078125f, 100);
1889 path1.lineTo(161.1764678955078125f, 100);
1890 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1891 path1.lineTo(175.8309783935546875f, 141.5211334228515625f);
1892 path1.close();
1893
1894 SkPath path2;
1895 path2.moveTo(174.117645263671875f, 100);
1896 path2.lineTo(161.1764678955078125f, 100);
1897 path2.lineTo(161.1764678955078125f, 100);
1898 path2.lineTo(155.1280364990234375f, 82.86279296875f);
1899 path2.lineTo(155.1280364990234375f, 82.86279296875f);
1900 path2.quadTo(153.14971923828125f, 82.15229034423828125f, 151.098419189453125f, 81.618133544921875f);
1901 path2.lineTo(143.5294189453125f, 100);
1902 path2.lineTo(143.5294189453125f, 100);
1903 path2.lineTo(161.1764678955078125f, 100);
1904 path2.lineTo(161.1764678955078125f, 100);
1905 path2.lineTo(168.23529052734375f, 120);
1906 path2.lineTo(168.23529052734375f, 120);
1907 path2.lineTo(181.1764678955078125f, 120);
1908 path2.lineTo(181.1764678955078125f, 120);
1909 path2.lineTo(186.3661956787109375f, 134.7042236328125f);
1910 path2.lineTo(186.3661956787109375f, 134.7042236328125f);
1911 path2.lineTo(187.8782806396484375f, 133.7258148193359375f);
1912 path2.lineTo(187.8782806396484375f, 133.7258148193359375f);
1913 path2.quadTo(188, 131.8880615234375f, 188, 130);
1914 path2.quadTo(188, 124.80947113037109375f, 187.080169677734375f, 120);
1915 path2.lineTo(181.1764678955078125f, 120);
1916 path2.lineTo(181.1764678955078125f, 120);
1917 path2.lineTo(174.117645263671875f, 100);
1918 path2.lineTo(174.117645263671875f, 100);
1919 path2.close();
1920 path2.moveTo(88.91983795166015625f, 120);
1921 path2.lineTo(107.0588226318359375f, 120);
1922 path2.lineTo(107.0588226318359375f, 120);
1923 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1924 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1925 path2.lineTo(88.08148956298828125f, 133.0560302734375f);
1926 path2.lineTo(88.08148956298828125f, 133.0560302734375f);
1927 path2.quadTo(88, 131.544830322265625f, 88, 130);
1928 path2.quadTo(88, 124.80951690673828125f, 88.91983795166015625f, 120);
1929 path2.close();
1930 path2.moveTo(96.67621612548828125f, 145.21490478515625f);
1931 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1932 path2.lineTo(98.68194580078125f, 140.343841552734375f);
1933 path2.lineTo(120.68767547607421875f, 155.4727783203125f);
1934 path2.lineTo(120.68767547607421875f, 155.4727783203125f);
1935 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1936 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1937 path2.lineTo(96.67621612548828125f, 145.21490478515625f);
1938 path2.lineTo(96.67621612548828125f, 145.21490478515625f);
1939 path2.close();
1940 path2.moveTo(113.232177734375f, 173.5789947509765625f);
1941 path2.quadTo(116.8802642822265625f, 175.69805908203125f, 120.8179779052734375f, 177.1177825927734375f);
1942 path2.lineTo(132.2864990234375f, 169.6969757080078125f);
1943 path2.lineTo(132.2864990234375f, 169.6969757080078125f);
1944 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1945 path2.lineTo(118.68194580078125f, 160.343841552734375f);
1946 path2.lineTo(113.232177734375f, 173.5789947509765625f);
1947 path2.lineTo(113.232177734375f, 173.5789947509765625f);
1948 path2.close();
caryclark54359292015-03-26 07:52:43 -07001949 // FIXME : difficult data, circle back later
1950 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
skia.committer@gmail.com977409a2013-07-16 07:00:56 +00001951}
caryclark@google.com3dd27842013-07-15 15:00:58 +00001952
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001953static void issue1418(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.com7f1af502013-07-24 07:01:12 +00001954 SkPath path1;
1955 path1.moveTo(0, 0);
1956 path1.lineTo(1, 0);
1957 path1.lineTo(1, 0);
1958 path1.lineTo(1, 1);
1959 path1.lineTo(1, 1);
1960 path1.lineTo(0, 1);
1961 path1.lineTo(0, 1);
1962 path1.lineTo(0, 0);
1963 path1.lineTo(0, 0);
1964 path1.close();
1965
1966 SkPath path2;
1967 path2.moveTo(0.64644664525985717773f, -0.35355341434478759766f);
1968 path2.quadTo(0.79289329051971435547f, -0.50000005960464477539f, 1.0000001192092895508f, -0.50000005960464477539f);
1969 path2.quadTo(1.2071068286895751953f, -0.50000005960464477539f, 1.3535535335540771484f, -0.35355341434478759766f);
1970 path2.quadTo(1.5000001192092895508f, -0.20710679888725280762f, 1.5000001192092895508f, 0);
1971 path2.quadTo(1.5000001192092895508f, 0.20710679888725280762f, 1.3535535335540771484f, 0.35355341434478759766f);
1972 path2.quadTo(1.2071068286895751953f, 0.50000005960464477539f, 1.0000001192092895508f, 0.50000005960464477539f);
1973 path2.quadTo(0.79289329051971435547f, 0.50000005960464477539f, 0.64644664525985717773f, 0.35355341434478759766f);
1974 path2.quadTo(0.50000005960464477539f, 0.20710679888725280762f, 0.50000005960464477539f, 0);
caryclark@google.com4fdbb222013-07-23 15:27:41 +00001975 path2.quadTo(0.50000005960464477539f, -0.20710679888725280762f, 0.64644664525985717773f, -0.35355341434478759766f);
caryclark54359292015-03-26 07:52:43 -07001976 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
skia.committer@gmail.com977409a2013-07-16 07:00:56 +00001977}
caryclark@google.com4fdbb222013-07-23 15:27:41 +00001978
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001979static void cubicOp85i(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.com7f1af502013-07-24 07:01:12 +00001980 SkPath path, pathB;
1981 path.setFillType(SkPath::kWinding_FillType);
1982 path.moveTo(3, 4);
1983 path.cubicTo(1, 5, 4, 3, 6, 4);
1984 path.close();
1985 pathB.setFillType(SkPath::kWinding_FillType);
1986 pathB.moveTo(3, 4);
1987 pathB.cubicTo(4, 6, 4, 3, 5, 1);
1988 pathB.close();
caryclark54359292015-03-26 07:52:43 -07001989 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com4fdbb222013-07-23 15:27:41 +00001990}
1991
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00001992static void issue1418b(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00001993 SkPath path1;
1994 path1.moveTo(0, 0);
1995 path1.lineTo(1, 0);
1996 path1.lineTo(1, 1);
1997 path1.lineTo(0, 1);
1998 path1.lineTo(0, 0);
1999 path1.close();
2000 path1.setFillType(SkPath::kWinding_FillType);
2001 SkPath path2;
2002 path2.moveTo(0.646446645f, -0.353553414f);
2003 path2.quadTo(0.792893291f, -0.50000006f, 1.00000012f, -0.50000006f);
2004 path2.quadTo(1.20710683f, -0.50000006f, 1.35355353f, -0.353553414f);
2005 path2.quadTo(1.50000012f, -0.207106799f, 1.50000012f, 0);
2006 path2.quadTo(1.50000012f, 0.207106799f, 1.35355353f, 0.353553414f);
2007 path2.quadTo(1.20710683f, 0.50000006f, 1.00000012f, 0.50000006f);
2008 path2.quadTo(0.792893291f, 0.50000006f, 0.646446645f, 0.353553414f);
2009 path2.quadTo(0.50000006f, 0.207106799f, 0.50000006f, 0);
2010 path2.quadTo(0.50000006f, -0.207106799f, 0.646446645f, -0.353553414f);
2011 path2.close();
2012 path2.moveTo(1.00000012f, 0.50000006f);
2013 path2.lineTo(1.00000012f, 1.00000012f);
2014 path2.lineTo(0.50000006f, 1.00000012f);
2015 path2.quadTo(0.50000006f, 0.792893291f, 0.646446645f, 0.646446645f);
2016 path2.quadTo(0.792893291f, 0.50000006f, 1.00000012f, 0.50000006f);
2017 path2.close();
2018 path2.setFillType(SkPath::kEvenOdd_FillType);
caryclark54359292015-03-26 07:52:43 -07002019 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002020}
2021
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002022static void rectOp1i(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002023 SkPath path, pathB;
2024 path.setFillType(SkPath::kWinding_FillType);
2025 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
2026 path.addRect(2, 2, 4, 4, SkPath::kCW_Direction);
2027 pathB.setFillType(SkPath::kWinding_FillType);
2028 pathB.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
2029 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -07002030 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002031}
2032
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002033static void rectOp2i(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002034 SkPath path, pathB;
2035 path.setFillType(SkPath::kEvenOdd_FillType);
2036 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
2037 path.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
2038 pathB.setFillType(SkPath::kWinding_FillType);
2039 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
2040 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -07002041 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002042}
2043
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002044static void rectOp3x(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002045 SkPath path, pathB;
2046 path.setFillType(SkPath::kEvenOdd_FillType);
2047 path.moveTo(0, 0);
2048 path.lineTo(3, 0);
2049 path.lineTo(3, 3);
2050 path.lineTo(0, 3);
2051 path.close();
2052 path.moveTo(2, 2);
2053 path.lineTo(3, 2);
2054 path.lineTo(3, 3);
2055 path.lineTo(2, 3);
2056 path.close();
2057 pathB.setFillType(SkPath::kWinding_FillType);
2058 pathB.moveTo(1, 1);
2059 pathB.lineTo(3, 1);
2060 pathB.lineTo(3, 3);
2061 pathB.lineTo(1, 3);
2062 pathB.close();
2063 pathB.moveTo(2, 2);
2064 pathB.lineTo(3, 2);
2065 pathB.lineTo(3, 3);
2066 pathB.lineTo(2, 3);
2067 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002068 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002069}
2070
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002071static void issue1435(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002072 SkPath path1;
2073 path1.moveTo(160, 60);
2074 path1.lineTo(220, 230);
2075 path1.lineTo(60, 120);
2076 path1.lineTo(260, 120);
2077 path1.lineTo(90, 230);
2078 path1.lineTo(160, 60);
2079 path1.close();
2080 path1.setFillType(SkPath::kEvenOdd_FillType);
2081
caryclark@google.com570863f2013-09-16 15:55:01 +00002082 SkPath path2;
2083 path2.moveTo(142.589081f, 102.283646f);
2084 path2.quadTo(149.821579f, 100, 158, 100);
2085 path2.quadTo(167.156921f, 100, 175.128036f, 102.862793f);
2086 path2.lineTo(181.176468f, 120);
2087 path2.lineTo(135.294128f, 120);
2088 path2.lineTo(142.589081f, 102.283646f);
2089 path2.close();
2090 path2.moveTo(118.681946f, 160.343842f);
2091 path2.lineTo(135.294128f, 120);
2092 path2.lineTo(117.933762f, 120);
2093 path2.quadTo(108, 132.942657f, 108, 150);
2094 path2.quadTo(108, 151.54483f, 108.08149f, 153.05603f);
2095 path2.lineTo(118.681946f, 160.343842f);
2096 path2.close();
2097 path2.moveTo(156.969696f, 186.666672f);
2098 path2.lineTo(118.681946f, 160.343842f);
2099 path2.lineTo(113.458946f, 173.028259f);
2100 path2.quadTo(116.94117f, 179.651855f, 122.644661f, 185.355347f);
2101 path2.quadTo(130.792465f, 193.503143f, 140.817978f, 197.117783f);
2102 path2.lineTo(156.969696f, 186.666672f);
2103 path2.close();
2104 path2.moveTo(195.830978f, 161.521133f);
2105 path2.lineTo(156.969696f, 186.666672f);
2106 path2.lineTo(173.157288f, 197.795639f);
2107 path2.quadTo(184.392426f, 194.318268f, 193.355347f, 185.355347f);
2108 path2.quadTo(197.805817f, 180.904861f, 200.903809f, 175.894165f);
2109 path2.lineTo(195.830978f, 161.521133f);
2110 path2.close();
2111 path2.moveTo(195.830978f, 161.521133f);
2112 path2.lineTo(207.878281f, 153.725815f);
2113 path2.quadTo(208, 151.888062f, 208, 150);
2114 path2.quadTo(208, 132.942657f, 198.066238f, 120);
2115 path2.lineTo(181.176468f, 120);
2116 path2.lineTo(195.830978f, 161.521133f);
2117 path2.close();
2118 path2.setFillType(SkPath::kEvenOdd_FillType);
caryclark54359292015-03-26 07:52:43 -07002119 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002120}
caryclark@google.com570863f2013-09-16 15:55:01 +00002121
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002122static void skpkkiste_to716(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.com7f1af502013-07-24 07:01:12 +00002123 SkPath path;
2124 path.setFillType(SkPath::kEvenOdd_FillType);
2125 path.moveTo(1173, 284);
2126 path.cubicTo(1173, 285.125824f, 1173.37207f, 286.164734f, 1174, 287.000488f);
2127 path.lineTo(1174, 123.999496f);
2128 path.cubicTo(1173.37207f, 124.835243f, 1173, 125.874168f, 1173, 127);
2129 path.lineTo(1173, 284);
2130 path.close();
2131 SkPath pathB;
2132 pathB.setFillType(SkPath::kWinding_FillType);
2133 pathB.moveTo(1340, 122);
2134 pathB.cubicTo(1342.76147f, 122, 1345, 124.238579f, 1345, 127);
2135 pathB.lineTo(1345, 284);
2136 pathB.cubicTo(1345, 286.761414f, 1342.76147f, 289, 1340, 289);
2137 pathB.lineTo(1178, 289);
2138 pathB.cubicTo(1175.23853f, 289, 1173, 286.761414f, 1173, 284);
2139 pathB.lineTo(1173, 127);
2140 pathB.cubicTo(1173, 124.238579f, 1175.23853f, 122, 1178, 122);
2141 pathB.lineTo(1340, 122);
2142 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002143 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.com7f1af502013-07-24 07:01:12 +00002144}
caryclark@google.com3dd27842013-07-15 15:00:58 +00002145
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002146static void loopEdge1(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002147 SkPath path;
2148 path.setFillType(SkPath::kEvenOdd_FillType);
2149 path.moveTo(0,0);
2150 path.lineTo(3,0);
2151 path.lineTo(3,2);
2152 path.lineTo(1,2);
2153 path.lineTo(1,1);
2154 path.lineTo(2,1);
2155 path.lineTo(2,3);
2156 path.lineTo(0,3);
2157 path.close();
2158 SkPath pathB;
2159 pathB.setFillType(SkPath::kEvenOdd_FillType);
2160 pathB.moveTo(1,2);
2161 pathB.lineTo(2,2);
2162 pathB.lineTo(2,4);
2163 pathB.lineTo(1,4);
2164 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002165 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002166}
2167
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002168static void loopEdge2(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002169 SkPath path;
2170 path.setFillType(SkPath::kEvenOdd_FillType);
2171 path.moveTo(0,0);
2172 path.lineTo(3,0);
2173 path.lineTo(3,2);
2174 path.lineTo(1,2);
2175 path.lineTo(1,1);
2176 path.lineTo(2,1);
2177 path.lineTo(2,3);
2178 path.lineTo(0,3);
2179 path.close();
2180 SkPath pathB;
2181 pathB.setFillType(SkPath::kEvenOdd_FillType);
2182 pathB.moveTo(1 - 1e-6f,2);
2183 pathB.lineTo(2 - 1e-6f,2);
2184 pathB.lineTo(2 - 1e-6f,4);
2185 pathB.lineTo(1 - 1e-6f,4);
2186 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002187 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002188}
2189
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002190static void cubicOp86i(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002191 SkPath path, pathB;
2192 path.setFillType(SkPath::kWinding_FillType);
2193 path.moveTo(0, 4);
2194 path.cubicTo(3, 4, 6, 2, 5, 2);
2195 path.close();
2196 pathB.setFillType(SkPath::kEvenOdd_FillType);
2197 pathB.moveTo(2, 6);
2198 pathB.cubicTo(2, 5, 4, 0, 4, 3);
2199 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002200 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002201}
2202
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002203static void cubicOp87u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002204 SkPath path, pathB;
2205 path.setFillType(SkPath::kWinding_FillType);
2206 path.moveTo(0,1);
2207 path.cubicTo(0,2, 2,0, 6,4);
2208 path.close();
2209 pathB.setFillType(SkPath::kWinding_FillType);
2210 pathB.moveTo(0,2);
2211 pathB.cubicTo(4,6, 1,0, 2,0);
2212 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002213 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002214}
2215
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002216static void cubicOp88u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002217 SkPath path, pathB;
2218 path.setFillType(SkPath::kWinding_FillType);
2219 path.moveTo(0,1);
2220 path.cubicTo(2,5, 5,0, 6,4);
2221 path.close();
2222 pathB.setFillType(SkPath::kWinding_FillType);
2223 pathB.moveTo(0,5);
2224 pathB.cubicTo(4,6, 1,0, 5,2);
2225 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002226 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002227}
2228
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002229static void cubicOp89u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002230 SkPath path, pathB;
2231 path.setFillType(SkPath::kWinding_FillType);
2232 path.moveTo(0, 3);
2233 path.cubicTo(1, 6, 5, 0, 6, 3);
2234 path.close();
2235 pathB.setFillType(SkPath::kWinding_FillType);
2236 pathB.moveTo(0, 5);
2237 pathB.cubicTo(3, 6, 3, 0, 6, 1);
2238 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002239 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002240}
2241
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002242static void cubicOp90u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002243 SkPath path, pathB;
2244 path.setFillType(SkPath::kEvenOdd_FillType);
2245 path.moveTo(0, 5);
2246 path.cubicTo(1, 2, 5, 2, 4, 1);
2247 path.close();
2248 pathB.setFillType(SkPath::kEvenOdd_FillType);
2249 pathB.moveTo(2, 5);
2250 pathB.cubicTo(1, 4, 5, 0, 2, 1);
2251 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002252 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002253}
2254
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002255static void cubicOp91u(skiatest::Reporter* reporter, const char* filename) {
caryclark@google.com570863f2013-09-16 15:55:01 +00002256 SkPath path, pathB;
2257 path.setFillType(SkPath::kWinding_FillType);
2258 path.moveTo(1, 6);
2259 path.cubicTo(0, 3, 6, 3, 5, 0);
2260 path.close();
2261 pathB.setFillType(SkPath::kWinding_FillType);
2262 pathB.moveTo(3, 6);
2263 pathB.cubicTo(0, 5, 6, 1, 3, 0);
2264 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002265 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark@google.com570863f2013-09-16 15:55:01 +00002266}
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002267
caryclark54359292015-03-26 07:52:43 -07002268static void skpaaalgarve_org53(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002269 SkPath path;
2270 path.setFillType(SkPath::kEvenOdd_FillType);
2271 path.moveTo(-1.24344979e-014f, 348);
2272 path.lineTo(258, 348);
2273 path.lineTo(258, 322);
2274 path.quadTo(258, 317.857849f, 255.072006f, 314.928009f);
2275 path.quadTo(252.142136f, 312, 248, 312);
2276 path.lineTo(1.77635684e-015f, 312);
2277 path.lineTo(-1.24344979e-014f, 348);
2278 path.close();
2279 SkPath pathB;
2280 pathB.setFillType(SkPath::kWinding_FillType);
2281 pathB.moveTo(0, 312);
2282 pathB.lineTo(258, 312);
2283 pathB.lineTo(258, 348);
2284 pathB.lineTo(0, 348);
2285 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002286 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002287}
2288
caryclark54359292015-03-26 07:52:43 -07002289static void skpabcspark_ca103(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002290 SkPath path;
2291 path.setFillType(SkPath::kEvenOdd_FillType);
2292 path.moveTo(1.99840144e-015f, 494);
2293 path.lineTo(97, 494);
2294 path.quadTo(100.313705f, 494, 102.6576f, 491.657593f);
2295 path.quadTo(105, 489.313721f, 105, 486);
2296 path.lineTo(105, 425);
2297 path.quadTo(105, 421.686279f, 102.6576f, 419.342407f);
2298 path.quadTo(100.313705f, 417, 97, 417);
2299 path.lineTo(2.22044605e-016f, 417);
2300 path.lineTo(1.99840144e-015f, 494);
2301 path.close();
2302 SkPath pathB;
2303 pathB.setFillType(SkPath::kWinding_FillType);
2304 pathB.moveTo(0, 417);
2305 pathB.lineTo(105, 417);
2306 pathB.lineTo(105, 494);
2307 pathB.lineTo(0, 494);
2308 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002309 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002310}
2311
caryclark54359292015-03-26 07:52:43 -07002312static void skpacesoftech_com47(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002313 SkPath path;
2314 path.setFillType(SkPath::kEvenOdd_FillType);
2315 path.moveTo(670.537415f, 285);
2316 path.lineTo(670.387451f, 285);
2317 path.lineTo(596.315186f, 314.850708f);
2318 path.lineTo(626.19696f, 389);
2319 path.lineTo(626.346863f, 389);
2320 path.lineTo(700.419189f, 359.149261f);
2321 path.lineTo(670.537415f, 285);
2322 path.close();
2323 SkPath pathB;
2324 pathB.setFillType(SkPath::kWinding_FillType);
2325 pathB.moveTo(663.318542f, 374.100616f);
2326 pathB.quadTo(647.950989f, 380.293671f, 632.705322f, 373.806305f);
2327 pathB.quadTo(617.459595f, 367.318909f, 611.266541f, 351.951355f);
2328 pathB.quadTo(605.073486f, 336.58374f, 611.560913f, 321.338074f);
2329 pathB.quadTo(618.048279f, 306.092407f, 633.415833f, 299.899353f);
2330 pathB.quadTo(648.783447f, 293.706299f, 664.029114f, 300.193665f);
2331 pathB.quadTo(679.27478f, 306.68103f, 685.467834f, 322.048645f);
2332 pathB.quadTo(691.660889f, 337.416199f, 685.173523f, 352.661896f);
2333 pathB.quadTo(678.686157f, 367.907562f, 663.318542f, 374.100616f);
2334 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002335 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002336}
2337
caryclark54359292015-03-26 07:52:43 -07002338static void skpact_com43(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002339 SkPath path;
2340 path.setFillType(SkPath::kEvenOdd_FillType);
2341 path.moveTo(1.45716772e-016f, 924.336121f);
2342 path.lineTo(-1.11022302e-016f, 920);
2343 path.lineTo(6, 920);
2344 path.lineTo(6, 926);
2345 path.lineTo(1.66389287f, 926);
2346 path.quadTo(1.18842196f, 925.674561f, 0.756800175f, 925.243225f);
2347 path.quadTo(0.325406998f, 924.811523f, 1.45716772e-016f, 924.336121f);
2348 path.close();
2349 path.moveTo(1, 921);
2350 path.lineTo(5, 921);
2351 path.lineTo(5, 925);
2352 path.cubicTo(2.79086018f, 925, 1, 923.209167f, 1, 921);
2353 path.close();
2354 SkPath pathB;
2355 pathB.setFillType(SkPath::kWinding_FillType);
2356 pathB.moveTo(-1, 920);
2357 pathB.lineTo(0, 920);
2358 pathB.lineTo(3, 927);
2359 pathB.lineTo(-1, 927);
caryclark54359292015-03-26 07:52:43 -07002360 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002361}
2362
caryclark54359292015-03-26 07:52:43 -07002363static void skpadbox_lt8(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002364 SkPath path;
2365 path.setFillType(SkPath::kEvenOdd_FillType);
2366 path.moveTo(320.097229f, 628.573669f);
2367 path.lineTo(610.227173f, 85.7786865f);
2368 path.lineTo(946.652588f, 265.601807f);
2369 path.lineTo(656.522644f, 808.39679f);
2370 path.lineTo(320.097229f, 628.573669f);
2371 path.close();
2372 SkPath pathB;
2373 pathB.setFillType(SkPath::kInverseWinding_FillType);
2374 pathB.moveTo(333.866608f, 623.496155f);
2375 pathB.lineTo(613.368042f, 100.585754f);
2376 pathB.cubicTo(613.685303f, 99.9921265f, 614.423767f, 99.7681885f, 615.017395f, 100.085449f);
2377 pathB.lineTo(932.633057f, 269.854553f);
2378 pathB.cubicTo(933.226685f, 270.171875f, 933.450623f, 270.910278f, 933.133301f, 271.503906f);
2379 pathB.lineTo(653.631897f, 794.414307f);
2380 pathB.cubicTo(653.314636f, 795.007935f, 652.576172f, 795.231934f, 651.982544f, 794.914612f);
2381 pathB.lineTo(334.366943f, 625.145508f);
2382 pathB.cubicTo(333.773315f, 624.828247f, 333.549286f, 624.089783f, 333.866608f, 623.496155f);
2383 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002384 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002385}
2386
caryclark54359292015-03-26 07:52:43 -07002387static void skpadindex_de4(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002388 SkPath path;
2389 path.setFillType(SkPath::kEvenOdd_FillType);
2390 path.moveTo(0, 926);
2391 path.lineTo(0, 0);
2392 path.lineTo(1280, 0);
2393 path.lineTo(1280, 926);
2394 path.lineTo(0, 926);
2395 path.close();
2396 SkPath pathB;
2397 pathB.setFillType(SkPath::kWinding_FillType);
2398 pathB.moveTo(0, 312);
2399 pathB.lineTo(8.20486257e-015f, 178);
2400 pathB.lineTo(49, 178);
2401 pathB.lineTo(49, 312);
2402 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002403 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002404}
2405
caryclark54359292015-03-26 07:52:43 -07002406static void skpadithya_putr4_blogspot_com551(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002407 SkPath path;
2408 path.setFillType(SkPath::kEvenOdd_FillType);
2409 path.moveTo(205.605804f, 142.334625f);
2410 path.lineTo(254.665359f, 85.6058044f);
2411 path.lineTo(311.394196f, 134.665359f);
2412 path.lineTo(262.334625f, 191.39418f);
2413 path.lineTo(205.605804f, 142.334625f);
2414 path.close();
2415 SkPath pathB;
2416 pathB.setFillType(SkPath::kWinding_FillType);
2417 pathB.moveTo(283.407959f, 110.462646f);
2418 pathB.cubicTo(298.864319f, 123.829437f, 300.558258f, 147.195221f, 287.191467f, 162.651581f);
2419 pathB.lineTo(286.537354f, 163.407959f);
2420 pathB.cubicTo(273.170563f, 178.864334f, 249.804779f, 180.558258f, 234.348419f, 167.191467f);
2421 pathB.lineTo(233.592026f, 166.537338f);
2422 pathB.cubicTo(218.135666f, 153.170547f, 216.441727f, 129.804779f, 229.808517f, 114.348412f);
2423 pathB.lineTo(230.462646f, 113.592026f);
2424 pathB.cubicTo(243.829437f, 98.1356659f, 267.195221f, 96.4417267f, 282.651581f, 109.808517f);
2425 pathB.lineTo(283.407959f, 110.462646f);
2426 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002427 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002428}
2429
caryclark54359292015-03-26 07:52:43 -07002430static void skpadspert_de11(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002431 SkPath path;
2432 path.setFillType(SkPath::kEvenOdd_FillType);
2433 path.moveTo(-4.4408921e-016f, 682.5f);
2434 path.lineTo(30.5f, 682.5f);
2435 path.cubicTo(32.709137f, 682.5f, 34.5f, 680.709167f, 34.5f, 678.5f);
2436 path.lineTo(34.5f, 486.5f);
2437 path.cubicTo(34.5f, 484.290863f, 32.709137f, 482.5f, 30.5f, 482.5f);
2438 path.lineTo(0, 482.5f);
2439 path.lineTo(-4.4408921e-016f, 682.5f);
2440 path.close();
2441 SkPath pathB;
2442 pathB.setFillType(SkPath::kWinding_FillType);
2443 pathB.moveTo(0, 482);
2444 pathB.lineTo(35, 482);
2445 pathB.lineTo(35, 683);
2446 pathB.lineTo(0, 683);
2447 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002448 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002449}
2450
caryclark54359292015-03-26 07:52:43 -07002451static void skpaiaigames_com870(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002452 SkPath path;
2453 path.setFillType(SkPath::kEvenOdd_FillType);
2454 path.moveTo(324.071075f, 845.071045f);
2455 path.cubicTo(324.405151f, 844.737f, 324.715668f, 844.379395f, 325, 844.000977f);
2456 path.lineTo(325, 842.127197f);
2457 path.cubicTo(324.571411f, 842.956238f, 324.017761f, 843.710144f, 323.363953f, 844.363953f);
2458 path.lineTo(324.071075f, 845.071045f);
2459 path.close();
2460 path.moveTo(323.363953f, 714.636047f);
2461 path.lineTo(324.071075f, 713.928955f);
2462 path.cubicTo(324.405151f, 714.263f, 324.715668f, 714.620605f, 325, 714.999023f);
2463 path.lineTo(325, 716.872803f);
2464 path.cubicTo(324.571411f, 716.043762f, 324.017761f, 715.289856f, 323.363953f, 714.636047f);
2465 path.close();
2466 SkPath pathB;
2467 pathB.setFillType(SkPath::kWinding_FillType);
2468 pathB.moveTo(317, 711);
2469 pathB.cubicTo(322.522858f, 711, 327, 715.477173f, 327, 721);
2470 pathB.lineTo(327, 838);
2471 pathB.cubicTo(327, 843.522827f, 322.522858f, 848, 317, 848);
2472 pathB.lineTo(155, 848);
2473 pathB.cubicTo(149.477158f, 848, 145, 843.522827f, 145, 838);
2474 pathB.lineTo(145, 721);
2475 pathB.cubicTo(145, 715.477173f, 149.477158f, 711, 155, 711);
2476 pathB.lineTo(317, 711);
2477 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07002478 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002479}
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002480
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002481static void cubicOp92i(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002482 SkPath path, pathB;
2483 path.setFillType(SkPath::kWinding_FillType);
2484 path.moveTo(0, 1);
2485 path.cubicTo(2, 6, 4, 1, 5, 4);
2486 path.close();
2487 pathB.setFillType(SkPath::kWinding_FillType);
2488 pathB.moveTo(1, 4);
2489 pathB.cubicTo(4, 5, 1, 0, 6, 2);
2490 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002491 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002492}
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002493
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002494static void cubicOp93d(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002495 SkPath path, pathB;
2496 path.setFillType(SkPath::kWinding_FillType);
2497 path.moveTo(0, 1);
2498 path.cubicTo(1, 6, 4, 1, 4, 3);
2499 path.close();
2500 pathB.setFillType(SkPath::kWinding_FillType);
2501 pathB.moveTo(1, 4);
2502 pathB.cubicTo(3, 4, 1, 0, 6, 1);
2503 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002504 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002505}
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002506
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002507static void cubicOp94u(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002508 SkPath path, pathB;
2509 path.setFillType(SkPath::kEvenOdd_FillType);
2510 path.moveTo(0, 3);
2511 path.cubicTo(2, 3, 5, 0, 5, 3);
2512 path.close();
2513 pathB.setFillType(SkPath::kEvenOdd_FillType);
2514 pathB.moveTo(0, 5);
2515 pathB.cubicTo(3, 5, 3, 0, 3, 2);
2516 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002517 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002518}
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002519
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002520static void skpadbox_lt15(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002521 SkPath path;
2522 path.setFillType(SkPath::kEvenOdd_FillType);
2523 path.moveTo(333.292084f, 624.570984f);
2524 path.lineTo(614.229797f, 98.9735107f);
2525 path.lineTo(933.457764f, 269.604431f);
2526 path.lineTo(652.52002f, 795.201904f);
2527 path.lineTo(333.292084f, 624.570984f);
2528 path.close();
2529 SkPath pathB;
2530 pathB.setFillType(SkPath::kWinding_FillType);
2531 pathB.moveTo(613.368042f, 100.585754f);
2532 pathB.cubicTo(613.685303f, 99.9921265f, 614.423767f, 99.7681885f, 615.017395f, 100.085449f);
2533 pathB.lineTo(932.633057f, 269.854553f);
2534 pathB.cubicTo(933.226685f, 270.171875f, 933.450623f, 270.910278f, 933.133301f, 271.503906f);
2535 pathB.lineTo(653.631897f, 794.414307f);
2536 pathB.cubicTo(653.314636f, 795.007935f, 652.576172f, 795.231934f, 651.982544f, 794.914612f);
2537 pathB.lineTo(334.366943f, 625.145508f);
2538 pathB.cubicTo(333.773315f, 624.828247f, 333.549286f, 624.089783f, 333.866608f, 623.496155f);
2539 pathB.lineTo(613.368042f, 100.585754f);
2540 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002541 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002542}
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002543
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002544static void skpadoption_org196(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002545 SkPath path;
2546 path.setFillType(SkPath::kEvenOdd_FillType);
2547 path.moveTo(802, 367);
2548 path.lineTo(802, 324);
2549 path.lineTo(956, 324);
2550 path.lineTo(956, 371);
2551 path.quadTo(956, 373.071075f, 954.536011f, 374.536011f);
2552 path.quadTo(953.071045f, 376, 951, 376);
2553 path.lineTo(811, 376);
2554 path.cubicTo(806.029419f, 376, 802, 371.970551f, 802, 367);
2555 path.close();
2556 SkPath pathB;
2557 pathB.setFillType(SkPath::kInverseWinding_FillType);
2558 pathB.moveTo(803, 326);
2559 pathB.lineTo(955, 326);
2560 pathB.lineTo(955, 370);
2561 pathB.cubicTo(955, 372.761414f, 952.761414f, 375, 950, 375);
2562 pathB.lineTo(808, 375);
2563 pathB.cubicTo(805.238586f, 375, 803, 372.761414f, 803, 370);
2564 pathB.lineTo(803, 326);
2565 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002566 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002567}
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002568
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002569static void skpadspert_net23(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002570 SkPath path;
2571 path.setFillType(SkPath::kEvenOdd_FillType);
2572 path.moveTo(-2.220446e-018f, 483.5f);
2573 path.lineTo(0, 482.5f);
2574 path.lineTo(30.5f, 482.5f);
2575 path.cubicTo(32.709137f, 482.5f, 34.5f, 484.290863f, 34.5f, 486.5f);
2576 path.lineTo(34.5f, 678.5f);
2577 path.cubicTo(34.5f, 680.709167f, 32.709137f, 682.5f, 30.5f, 682.5f);
2578 path.lineTo(-4.4408921e-016f, 682.5f);
2579 path.lineTo(-4.41868766e-016f, 681.5f);
2580 path.lineTo(30.5f, 681.5f);
2581 path.cubicTo(32.1568565f, 681.5f, 33.5f, 680.15686f, 33.5f, 678.5f);
2582 path.lineTo(33.5f, 486.5f);
2583 path.cubicTo(33.5f, 484.84314f, 32.1568565f, 483.5f, 30.5f, 483.5f);
2584 path.lineTo(-2.220446e-018f, 483.5f);
2585 path.close();
2586 SkPath pathB;
2587 pathB.setFillType(SkPath::kWinding_FillType);
2588 pathB.moveTo(0, 482);
2589 pathB.lineTo(35, 482);
2590 pathB.lineTo(35, 683);
2591 pathB.lineTo(0, 683);
2592 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002593 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002594}
2595
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002596static void skpadventistmission_org572(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002597 SkPath path;
2598 path.setFillType(SkPath::kEvenOdd_FillType);
2599 path.moveTo(1182.00037f, 926);
2600 path.cubicTo(1181.08813f, 924.785583f, 1179.63586f, 924, 1178, 924);
2601 path.lineTo(938, 924);
2602 path.cubicTo(936.364197f, 924, 934.911865f, 924.785583f, 933.999634f, 926);
2603 path.lineTo(1182.00037f, 926);
2604 path.close();
2605 SkPath pathB;
2606 pathB.setFillType(SkPath::kWinding_FillType);
2607 pathB.moveTo(934, 924);
2608 pathB.lineTo(1182, 924);
2609 pathB.lineTo(1182, 926);
2610 pathB.lineTo(934, 926);
2611 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002612 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002613}
2614
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002615static void skpagentxsites_com55(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002616 SkPath path;
2617 path.setFillType(SkPath::kEvenOdd_FillType);
2618 path.moveTo(925, 27);
2619 path.cubicTo(924.447693f, 27, 924, 27.4477158f, 924, 28);
2620 path.lineTo(924, 55);
2621 path.cubicTo(924, 55.5522842f, 924.447693f, 56, 925, 56);
2622 path.lineTo(1103, 56);
2623 path.cubicTo(1103.55225f, 56, 1104, 55.5522842f, 1104, 55);
2624 path.lineTo(1104, 28);
2625 path.cubicTo(1104, 27.4477158f, 1103.55225f, 27, 1103, 27);
2626 path.lineTo(925, 27);
2627 path.close();
2628 SkPath pathB;
2629 pathB.setFillType(SkPath::kWinding_FillType);
2630 pathB.moveTo(1103, 27);
2631 pathB.cubicTo(1104.10461f, 27, 1105, 27.8954315f, 1105, 29);
2632 pathB.lineTo(1105, 54);
2633 pathB.cubicTo(1105, 55.1045685f, 1104.10461f, 56, 1103, 56);
2634 pathB.lineTo(926, 56);
2635 pathB.cubicTo(924.895447f, 56, 924, 55.1045685f, 924, 54);
2636 pathB.lineTo(924, 29);
2637 pathB.cubicTo(924, 27.8954315f, 924.895447f, 27, 926, 27);
2638 pathB.lineTo(1103, 27);
2639 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002640 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002641}
2642
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002643static void skpbakosoft_com10(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002644 SkPath path;
2645 path.setFillType(SkPath::kEvenOdd_FillType);
2646 path.moveTo(190, 170);
2647 path.cubicTo(178.9543f, 170, 170, 178.9543f, 170, 190);
2648 path.cubicTo(170, 201.0457f, 178.9543f, 210, 190, 210);
2649 path.lineTo(370, 210);
2650 path.cubicTo(381.045685f, 210, 390, 201.0457f, 390, 190);
2651 path.cubicTo(390, 178.9543f, 381.045685f, 170, 370, 170);
2652 path.lineTo(190, 170);
2653 path.close();
2654 SkPath pathB;
2655 pathB.setFillType(SkPath::kWinding_FillType);
2656 pathB.moveTo(210, 190);
2657 pathB.quadTo(210, 198.284271f, 204.142136f, 204.142136f);
2658 pathB.quadTo(198.284271f, 210, 190, 210);
2659 pathB.quadTo(181.715729f, 210, 175.857864f, 204.142136f);
2660 pathB.quadTo(170, 198.284271f, 170, 190);
2661 pathB.quadTo(170, 181.715729f, 175.857864f, 175.857864f);
2662 pathB.quadTo(181.715729f, 170, 190, 170);
2663 pathB.quadTo(198.284271f, 170, 204.142136f, 175.857864f);
2664 pathB.quadTo(210, 181.715729f, 210, 190);
2665 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002666 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002667}
2668
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002669static void skpbambootheme_com12(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002670 SkPath path;
2671 path.setFillType(SkPath::kEvenOdd_FillType);
2672 path.moveTo(47.8780937f, 58);
2673 path.lineTo(0, 58);
2674 path.lineTo(-8.65973959e-015f, 96.9914017f);
2675 path.quadTo(20.0654926f, 96.6451874f, 34.3553391f, 82.3553391f);
2676 path.quadTo(44.9466133f, 71.764061f, 47.8780937f, 58);
2677 path.close();
2678 SkPath pathB;
2679 pathB.setFillType(SkPath::kEvenOdd_FillType);
2680 pathB.moveTo(-1, -3);
2681 pathB.lineTo(-1, -3);
2682 pathB.cubicTo(26.6142502f, -3, 49, 19.3857498f, 49, 47);
2683 pathB.lineTo(49, 47);
2684 pathB.cubicTo(49, 74.6142502f, 26.6142502f, 97, -1, 97);
2685 pathB.lineTo(-1, 97);
2686 pathB.cubicTo(-28.6142502f, 97, -51, 74.6142502f, -51, 47);
2687 pathB.lineTo(-51, 47);
2688 pathB.cubicTo(-51, 19.3857498f, -28.6142502f, -3, -1, -3);
2689 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002690 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002691}
2692
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002693static void skpakmmos_ru100(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002694 SkPath path;
2695 path.setFillType(SkPath::kEvenOdd_FillType);
2696 path.moveTo(693.000488f, 926);
2697 path.cubicTo(692.164734f, 925.37207f, 691.125793f, 925, 690, 925);
2698 path.lineTo(578, 925);
2699 path.cubicTo(576.874207f, 925, 575.835266f, 925.37207f, 574.999512f, 926);
2700 path.lineTo(693.000488f, 926);
2701 path.close();
2702 SkPath pathB;
2703 pathB.setFillType(SkPath::kWinding_FillType);
2704 pathB.moveTo(575, 925);
2705 pathB.lineTo(693, 925);
2706 pathB.lineTo(693, 926);
2707 pathB.lineTo(575, 926);
2708 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002709 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002710}
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002711
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002712static void skpcarpetplanet_ru22(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002713 SkPath path;
2714 path.setFillType(SkPath::kEvenOdd_FillType);
2715 path.moveTo(195, 785);
2716 path.cubicTo(124.307556f, 785, 67, 841.859863f, 67, 912);
2717 path.lineTo(67, 913);
2718 path.cubicTo(67, 917.388916f, 67.2243805f, 921.725769f, 67.662384f, 926);
2719 path.lineTo(322, 926);
2720 path.lineTo(322, 896.048035f);
2721 path.cubicTo(314.09201f, 833.437622f, 260.247131f, 785, 195, 785);
2722 path.close();
2723 SkPath pathB;
2724 pathB.setFillType(SkPath::kWinding_FillType);
2725 pathB.moveTo(195, 785);
2726 pathB.cubicTo(265.140167f, 785, 322, 842.307556f, 322, 913);
2727 pathB.cubicTo(322, 983.692444f, 265.140167f, 1041, 195, 1041);
2728 pathB.lineTo(194, 1041);
2729 pathB.cubicTo(123.85984f, 1041, 67, 983.692444f, 67, 913);
2730 pathB.cubicTo(67, 842.307556f, 123.85984f, 785, 194, 785);
2731 pathB.lineTo(195, 785);
2732 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002733 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002734}
2735
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002736static void skpcarrot_is24(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002737 SkPath path;
2738 path.setFillType(SkPath::kEvenOdd_FillType);
2739 path.moveTo(945, 597);
2740 path.quadTo(913.93396f, 597, 891.96698f, 618.96698f);
2741 path.quadTo(870, 640.93396f, 870, 672);
2742 path.quadTo(870, 703.06604f, 891.96698f, 725.03302f);
2743 path.quadTo(913.93396f, 747, 945, 747);
2744 path.quadTo(976.06604f, 747, 998.03302f, 725.03302f);
2745 path.quadTo(1020, 703.06604f, 1020, 672);
2746 path.quadTo(1020, 640.93396f, 998.03302f, 618.96698f);
2747 path.quadTo(976.06604f, 597, 945, 597);
2748 path.close();
2749 SkPath pathB;
2750 pathB.setFillType(SkPath::kWinding_FillType);
2751 pathB.moveTo(945.080994f, 597.161987f);
2752 pathB.cubicTo(903.659973f, 597.161987f, 870.080994f, 630.73999f, 870.080994f, 672.161987f);
2753 pathB.cubicTo(870.080994f, 676.096008f, 870.387024f, 679.957031f, 870.971008f, 683.726013f);
2754 pathB.cubicTo(876.53302f, 719.656006f, 907.593994f, 747.161987f, 945.080994f, 747.161987f);
2755 pathB.cubicTo(982.567993f, 747.161987f, 1013.62903f, 719.656006f, 1019.19104f, 683.726013f);
2756 pathB.cubicTo(1019.77502f, 679.955017f, 1020.08099f, 676.094971f, 1020.08099f, 672.161987f);
2757 pathB.cubicTo(1020.08002f, 630.73999f, 986.502014f, 597.161987f, 945.080994f, 597.161987f);
2758 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002759 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002760}
2761
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002762static void skpbangalorenest_com4(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002763 SkPath path;
2764 path.setFillType(SkPath::kEvenOdd_FillType);
2765 path.moveTo(0, 926);
2766 path.lineTo(0, 0);
2767 path.lineTo(1265, 0);
2768 path.lineTo(1265, 926);
2769 path.lineTo(0, 926);
2770 path.close();
2771 SkPath pathB;
2772 pathB.setFillType(SkPath::kWinding_FillType);
2773 pathB.moveTo(0, 290);
2774 pathB.lineTo(-2.64514972e-014f, 146);
2775 pathB.lineTo(30, 146);
2776 pathB.lineTo(30, 290);
2777 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002778 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002779}
2780
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002781static void skpbenzoteh_ru152(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002782 SkPath path;
2783 path.setFillType(SkPath::kEvenOdd_FillType);
2784 path.moveTo(883, 23);
2785 path.lineTo(883, 0);
2786 path.lineTo(1122.5f, 0);
2787 path.lineTo(1122.5f, 25.2136822f);
2788 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2789 path.quadTo(1120.07104f, 28, 1118, 28);
2790 path.lineTo(888, 28);
2791 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2792 path.quadTo(883, 25.0710678f, 883, 23);
2793 path.close();
2794 SkPath pathB;
2795 pathB.setFillType(SkPath::kWinding_FillType);
2796 pathB.moveTo(883, 0);
2797 pathB.lineTo(1123, 0);
2798 pathB.lineTo(1123, 23);
2799 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2800 pathB.quadTo(1120.07104f, 28, 1118, 28);
2801 pathB.lineTo(888, 28);
2802 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2803 pathB.quadTo(883, 25.0710678f, 883, 23);
2804 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002805 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002806}
2807
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002808static void skpbestred_ru37(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002809 SkPath path;
2810 path.setFillType(SkPath::kEvenOdd_FillType);
2811 path.moveTo(883, 23);
2812 path.lineTo(883, 0);
2813 path.lineTo(1122.5f, 0);
2814 path.lineTo(1122.5f, 25.2136822f);
2815 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2816 path.quadTo(1120.07104f, 28, 1118, 28);
2817 path.lineTo(888, 28);
2818 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2819 path.quadTo(883, 25.0710678f, 883, 23);
2820 path.close();
2821 SkPath pathB;
2822 pathB.setFillType(SkPath::kWinding_FillType);
2823 pathB.moveTo(883, 0);
2824 pathB.lineTo(1123, 0);
2825 pathB.lineTo(1123, 23);
2826 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2827 pathB.quadTo(1120.07104f, 28, 1118, 28);
2828 pathB.lineTo(888, 28);
2829 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2830 pathB.quadTo(883, 25.0710678f, 883, 23);
2831 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002832 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002833}
2834
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002835static void skpbingoentertainment_net189(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002836 SkPath path;
2837 path.setFillType(SkPath::kEvenOdd_FillType);
2838 path.moveTo(896, 745.38678f);
2839 path.lineTo(896, 873.38678f);
2840 path.lineTo(922.567993f, 876.683716f);
2841 path.lineTo(922.567993f, 748.683716f);
2842 path.lineTo(896, 745.38678f);
2843 path.close();
2844 SkPath pathB;
2845 pathB.setFillType(SkPath::kWinding_FillType);
2846 pathB.moveTo(899.200928f, 745.783997f);
2847 pathB.cubicTo(897.119385f, 745.525696f, 895.432007f, 752.031982f, 895.432007f, 760.316284f);
2848 pathB.lineTo(895.432007f, 858.316284f);
2849 pathB.cubicTo(895.432007f, 866.600586f, 897.119385f, 873.525696f, 899.200928f, 873.783997f);
2850 pathB.lineTo(918.799133f, 876.216003f);
2851 pathB.cubicTo(920.880615f, 876.474304f, 922.567993f, 869.968018f, 922.567993f, 861.683716f);
2852 pathB.lineTo(922.567993f, 763.683716f);
2853 pathB.cubicTo(922.567993f, 755.399414f, 920.880615f, 748.474304f, 918.799133f, 748.216003f);
2854 pathB.lineTo(899.200928f, 745.783997f);
2855 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002856 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002857}
2858
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002859static void skpcarrefour_ro62(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002860 SkPath path;
2861 path.setFillType(SkPath::kEvenOdd_FillType);
2862 path.moveTo(1104, 453);
2863 path.lineTo(399, 453);
2864 path.lineTo(399, 657);
2865 path.cubicTo(399, 661.970581f, 403.029449f, 666, 408, 666);
2866 path.lineTo(1095, 666);
2867 path.cubicTo(1099.97058f, 666, 1104, 661.970581f, 1104, 657);
2868 path.lineTo(1104, 453);
2869 path.close();
2870 SkPath pathB;
2871 pathB.setFillType(SkPath::kInverseWinding_FillType);
2872 pathB.moveTo(400, 453);
2873 pathB.lineTo(1103, 453);
2874 pathB.lineTo(1103, 666);
2875 pathB.lineTo(406, 666);
2876 pathB.cubicTo(402.686279f, 666, 400, 663.313721f, 400, 660);
2877 pathB.lineTo(400, 453);
2878 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002879 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002880}
2881
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002882static void skpcaffelavazzait_com_ua21(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002883 SkPath path;
2884 path.setFillType(SkPath::kEvenOdd_FillType);
2885 path.moveTo(883, 23);
2886 path.lineTo(883, 0);
2887 path.lineTo(1122.5f, 0);
2888 path.lineTo(1122.5f, 25.2136822f);
2889 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2890 path.quadTo(1120.07104f, 28, 1118, 28);
2891 path.lineTo(888, 28);
2892 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2893 path.quadTo(883, 25.0710678f, 883, 23);
2894 path.close();
2895 SkPath pathB;
2896 pathB.setFillType(SkPath::kWinding_FillType);
2897 pathB.moveTo(883, 0);
2898 pathB.lineTo(1123, 0);
2899 pathB.lineTo(1123, 23);
2900 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2901 pathB.quadTo(1120.07104f, 28, 1118, 28);
2902 pathB.lineTo(888, 28);
2903 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2904 pathB.quadTo(883, 25.0710678f, 883, 23);
2905 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002906 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002907}
2908
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002909static void skpcamcorder_kz21(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002910 SkPath path;
2911 path.setFillType(SkPath::kEvenOdd_FillType);
2912 path.moveTo(883, 23);
2913 path.lineTo(883, 0);
2914 path.lineTo(1122.5f, 0);
2915 path.lineTo(1122.5f, 25.2136822f);
2916 path.quadTo(1122.14441f, 25.9271851f, 1121.53601f, 26.5359993f);
2917 path.quadTo(1120.07104f, 28, 1118, 28);
2918 path.lineTo(888, 28);
2919 path.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2920 path.quadTo(883, 25.0710678f, 883, 23);
2921 path.close();
2922 SkPath pathB;
2923 pathB.setFillType(SkPath::kWinding_FillType);
2924 pathB.moveTo(883, 0);
2925 pathB.lineTo(1123, 0);
2926 pathB.lineTo(1123, 23);
2927 pathB.quadTo(1123, 25.0710678f, 1121.53601f, 26.5359993f);
2928 pathB.quadTo(1120.07104f, 28, 1118, 28);
2929 pathB.lineTo(888, 28);
2930 pathB.quadTo(885.928955f, 28, 884.463989f, 26.5359993f);
2931 pathB.quadTo(883, 25.0710678f, 883, 23);
2932 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002933 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002934}
2935
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002936static void skpcavablar_net563(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002937 SkPath path;
2938 path.setFillType(SkPath::kEvenOdd_FillType);
2939 path.moveTo(160.000488f, 918);
2940 path.cubicTo(159.164749f, 917.37207f, 158.125824f, 917, 157, 917);
2941 path.lineTo(94, 917);
2942 path.cubicTo(92.874176f, 917, 91.8352661f, 917.37207f, 90.9995193f, 918);
2943 path.lineTo(160.000488f, 918);
2944 path.close();
2945 SkPath pathB;
2946 pathB.setFillType(SkPath::kWinding_FillType);
2947 pathB.moveTo(91, 917);
2948 pathB.lineTo(160, 917);
2949 pathB.lineTo(160, 918);
2950 pathB.lineTo(91, 918);
2951 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002952 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002953}
2954
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002955static void skpinsomnia_gr72(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002956 SkPath path;
2957 path.setFillType(SkPath::kEvenOdd_FillType);
2958 path.moveTo(1138, 231);
2959 path.lineTo(1137, 243.625748f);
2960 path.lineTo(1137, 926);
2961 path.lineTo(1139, 926);
2962 path.lineTo(1139, 231);
2963 path.lineTo(1138, 231);
2964 path.close();
2965 SkPath pathB;
2966 pathB.setFillType(SkPath::kWinding_FillType);
2967 pathB.moveTo(1139, 231);
2968 pathB.lineTo(1138, 231);
2969 pathB.lineTo(633, 6101);
2970 pathB.lineTo(1139, 6607);
caryclark54359292015-03-26 07:52:43 -07002971 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002972}
2973
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002974static void cubicOp95u(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002975 SkPath path, pathB;
2976 path.setFillType(SkPath::kEvenOdd_FillType);
2977 path.moveTo(0, 2);
2978 path.cubicTo(2, 3, 5, 1, 3, 2);
2979 path.close();
2980 pathB.setFillType(SkPath::kEvenOdd_FillType);
2981 pathB.moveTo(1, 5);
2982 pathB.cubicTo(2, 3, 2, 0, 3, 2);
2983 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002984 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002985}
2986
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00002987static void cubicOp96d(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comb0a05892013-10-03 07:01:37 +00002988 SkPath path, pathB;
2989 path.setFillType(SkPath::kEvenOdd_FillType);
2990 path.moveTo(1, 6);
2991 path.cubicTo(0, 3, 6, 3, 5, 0);
2992 path.close();
2993 pathB.setFillType(SkPath::kEvenOdd_FillType);
2994 pathB.moveTo(3, 6);
2995 pathB.cubicTo(0, 5, 6, 1, 3, 0);
2996 pathB.close();
caryclark54359292015-03-26 07:52:43 -07002997 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00002998}
2999
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003000static void cubicOp97x(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00003001 SkPath path, pathB;
3002 path.setFillType(SkPath::kEvenOdd_FillType);
3003 path.moveTo(0, 2);
3004 path.cubicTo(0, 6, 2, 1, 2, 1);
3005 path.close();
3006 pathB.setFillType(SkPath::kEvenOdd_FillType);
3007 pathB.moveTo(1, 2);
3008 pathB.cubicTo(1, 2, 2, 0, 6, 0);
3009 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003010 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00003011}
3012
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003013static void cubicOp98x(skiatest::Reporter* reporter, const char* filename) {
skia.committer@gmail.comf54ad6f2013-11-02 07:02:02 +00003014 SkPath path, pathB;
3015 path.setFillType(SkPath::kEvenOdd_FillType);
3016 path.moveTo(0, 3);
3017 path.cubicTo(3, 6, 4, 1, 6, 3);
3018 path.close();
3019 pathB.setFillType(SkPath::kEvenOdd_FillType);
3020 pathB.moveTo(1, 4);
3021 pathB.cubicTo(3, 6, 3, 0, 6, 3);
3022 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003023 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00003024}
3025
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003026static void cubicOp99(skiatest::Reporter* reporter, const char* filename) {
commit-bot@chromium.org866f4e32013-11-21 17:04:29 +00003027 SkPath path, pathB;
3028 path.setFillType(SkPath::kWinding_FillType);
3029 path.moveTo(3,6);
3030 path.cubicTo(0,3, 6,5, 5,4);
3031 path.close();
3032 pathB.setFillType(SkPath::kWinding_FillType);
3033 pathB.moveTo(5,6);
3034 pathB.cubicTo(4,5, 6,3, 3,0);
3035 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003036 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
commit-bot@chromium.org866f4e32013-11-21 17:04:29 +00003037}
3038
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003039static void cubicOp100(skiatest::Reporter* reporter, const char* filename) {
commit-bot@chromium.org866f4e32013-11-21 17:04:29 +00003040 SkPath path, pathB;
3041 path.setFillType(SkPath::kWinding_FillType);
3042 path.moveTo(0,1);
3043 path.cubicTo(0,2, 2,1, 4,2);
3044 path.close();
3045 pathB.setFillType(SkPath::kWinding_FillType);
3046 pathB.moveTo(1,2);
3047 pathB.cubicTo(2,4, 1,0, 2,0);
3048 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003049 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
commit-bot@chromium.org866f4e32013-11-21 17:04:29 +00003050}
3051
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003052static void cubicOp101(skiatest::Reporter* reporter, const char* filename) {
commit-bot@chromium.org866f4e32013-11-21 17:04:29 +00003053 SkPath path, pathB;
3054 path.setFillType(SkPath::kWinding_FillType);
3055 path.moveTo(0, 1);
3056 path.cubicTo(2, 3, 2, 1, 5, 3);
3057 path.close();
3058 pathB.setFillType(SkPath::kWinding_FillType);
3059 pathB.moveTo(1, 2);
3060 pathB.cubicTo(3, 5, 1, 0, 3, 2);
3061 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003062 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
commit-bot@chromium.org866f4e32013-11-21 17:04:29 +00003063}
3064
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003065static void cubicOp102(skiatest::Reporter* reporter, const char* filename) {
3066 SkPath path, pathB;
3067 path.setFillType(SkPath::kWinding_FillType);
3068 path.moveTo(0,1);
3069 path.cubicTo(1,2, 1,0, 3,0);
3070 path.close();
3071 pathB.setFillType(SkPath::kWinding_FillType);
3072 pathB.moveTo(0,1);
3073 pathB.cubicTo(0,3, 1,0, 2,1);
3074 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003075 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003076}
3077
3078static void cubicOp103(skiatest::Reporter* reporter, const char* filename) {
3079 SkPath path, pathB;
3080 path.setFillType(SkPath::kWinding_FillType);
3081 path.moveTo(0,1);
3082 path.cubicTo(1,5, 2,0, 2,1);
3083 path.close();
3084 pathB.setFillType(SkPath::kWinding_FillType);
3085 pathB.moveTo(0,2);
3086 pathB.cubicTo(1,2, 1,0, 5,1);
3087 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003088 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003089}
3090
3091static void cubicOp104(skiatest::Reporter* reporter, const char* filename) {
3092 SkPath path, pathB;
3093 path.setFillType(SkPath::kWinding_FillType);
3094 path.moveTo(0,1);
3095 path.cubicTo(0,6, 4,0, 6,1);
3096 path.close();
3097 pathB.setFillType(SkPath::kWinding_FillType);
3098 pathB.moveTo(0,4);
3099 pathB.cubicTo(1,6, 1,0, 6,0);
3100 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003101 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003102}
3103
3104static void cubicOp105(skiatest::Reporter* reporter, const char* filename) {
3105 SkPath path, pathB;
3106 path.setFillType(SkPath::kWinding_FillType);
3107 path.moveTo(0,1);
3108 path.cubicTo(0,4, 6,5, 2,0);
3109 path.close();
3110 pathB.setFillType(SkPath::kWinding_FillType);
3111 pathB.moveTo(5,6);
3112 pathB.cubicTo(0,2, 1,0, 4,0);
3113 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003114 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003115}
3116
3117static void cubicOp106(skiatest::Reporter* reporter, const char* filename) {
3118 SkPath path, pathB;
3119 path.setFillType(SkPath::kWinding_FillType);
3120 path.moveTo(0, 1);
3121 path.cubicTo(4, 6, 2, 1, 2, 0);
3122 path.close();
3123 pathB.setFillType(SkPath::kWinding_FillType);
3124 pathB.moveTo(1, 2);
3125 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3126 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003127 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003128}
3129
3130static void cubicOp107(skiatest::Reporter* reporter, const char* filename) {
3131 SkPath path, pathB;
3132 path.setFillType(SkPath::kWinding_FillType);
3133 path.moveTo(0, 1);
3134 path.cubicTo(4, 6, 2, 1, 2, 0);
3135 path.close();
3136 pathB.setFillType(SkPath::kWinding_FillType);
3137 pathB.moveTo(1, 2);
3138 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3139 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003140 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003141}
3142
3143static void cubicOp108(skiatest::Reporter* reporter, const char* filename) {
3144 SkPath path, pathB;
3145 path.setFillType(SkPath::kWinding_FillType);
3146 path.moveTo(0, 1);
3147 path.cubicTo(4, 6, 2, 1, 2, 0);
3148 path.close();
3149 pathB.setFillType(SkPath::kWinding_FillType);
3150 pathB.moveTo(1, 2);
3151 pathB.cubicTo(0, 2, 1, 0, 6, 4);
3152 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003153 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003154}
3155
3156static void cubicOp109(skiatest::Reporter* reporter, const char* filename) {
3157 SkPath path, pathB;
3158 path.setFillType(SkPath::kWinding_FillType);
3159 path.moveTo(0,1);
3160 path.cubicTo(4,5, 6,3, 5,4);
3161 path.close();
3162 pathB.setFillType(SkPath::kWinding_FillType);
3163 pathB.moveTo(3,6);
3164 pathB.cubicTo(4,5, 1,0, 5,4);
3165 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003166 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003167}
3168
3169static void cubicOp110(skiatest::Reporter* reporter, const char* filename) {
3170 SkPath path, pathB;
3171 path.setFillType(SkPath::kEvenOdd_FillType);
3172 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3173 path.addRect(0, 0, 4, 4, SkPath::kCW_Direction);
3174 pathB.setFillType(SkPath::kEvenOdd_FillType);
3175 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3176 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -07003177 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003178}
3179
3180static void cubicOp111(skiatest::Reporter* reporter, const char* filename) {
3181 SkPath path, pathB;
3182 path.setFillType(SkPath::kWinding_FillType);
3183 path.moveTo(1,4);
3184 path.cubicTo(0,5, 4,1, 3,1);
3185 path.close();
3186 pathB.setFillType(SkPath::kWinding_FillType);
3187 pathB.moveTo(1,4);
3188 pathB.cubicTo(1,3, 4,1, 5,0);
3189 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003190 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003191}
3192
3193static void xOp1u(skiatest::Reporter* reporter, const char* filename) {
3194 SkPath path, pathB;
3195 path.setFillType(SkPath::kEvenOdd_FillType);
3196 path.moveTo(1, 4);
3197 path.cubicTo(4, 5, 3, 2, 6, 3);
3198 path.close();
3199 pathB.setFillType(SkPath::kEvenOdd_FillType);
3200 pathB.moveTo(2, 3);
3201 pathB.cubicTo(3, 6, 4, 1, 5, 4);
3202 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003203 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003204}
3205
3206static void xOp1i(skiatest::Reporter* reporter, const char* filename) {
3207 SkPath path, pathB;
3208 path.setFillType(SkPath::kEvenOdd_FillType);
3209 path.moveTo(1, 4);
3210 path.cubicTo(1, 5, 6, 0, 5, 1);
3211 path.close();
3212 pathB.setFillType(SkPath::kEvenOdd_FillType);
3213 pathB.moveTo(0, 6);
3214 pathB.cubicTo(1, 5, 4, 1, 5, 1);
3215 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003216 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003217}
3218
3219static void xOp2i(skiatest::Reporter* reporter, const char* filename) {
3220 SkPath path, pathB;
3221 path.setFillType(SkPath::kEvenOdd_FillType);
3222 path.moveTo(1, 5);
3223 path.cubicTo(0, 4, 3, 2, 6, 1);
3224 path.close();
3225 pathB.setFillType(SkPath::kEvenOdd_FillType);
3226 pathB.moveTo(2, 3);
3227 pathB.cubicTo(1, 6, 5, 1, 4, 0);
3228 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003229 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003230}
3231
3232static void xOp3i(skiatest::Reporter* reporter, const char* filename) {
3233 SkPath path, pathB;
3234 path.setFillType(SkPath::kWinding_FillType);
3235 path.moveTo(1,4);
3236 path.cubicTo(0,5, 4,1, 3,1);
3237 path.close();
3238 pathB.setFillType(SkPath::kWinding_FillType);
3239 pathB.moveTo(1,4);
3240 pathB.cubicTo(1,3, 4,1, 5,0);
3241 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003242 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003243}
3244
3245static void findFirst1(skiatest::Reporter* reporter, const char* filename) {
3246 SkPath path, pathB;
3247 path.setFillType(SkPath::kWinding_FillType);
3248 path.moveTo(0,1);
3249 path.cubicTo(1,6, 5,0, 2,1);
3250 path.close();
3251 pathB.setFillType(SkPath::kWinding_FillType);
3252 pathB.moveTo(0,5);
3253 pathB.cubicTo(1,2, 1,0, 6,1);
3254 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003255 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00003256}
3257
commit-bot@chromium.org8cb1daa2014-04-25 12:59:11 +00003258static void cubicOp112(skiatest::Reporter* reporter, const char* filename) {
3259 SkPath path, pathB;
3260 path.setFillType(SkPath::kWinding_FillType);
3261 path.moveTo(2,4);
3262 path.cubicTo(2,3, 6,4, 1,0);
3263 path.close();
3264 pathB.setFillType(SkPath::kWinding_FillType);
3265 pathB.moveTo(4,6);
3266 pathB.cubicTo(0,1, 4,2, 3,2);
3267 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003268 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
commit-bot@chromium.org8cb1daa2014-04-25 12:59:11 +00003269}
3270
commit-bot@chromium.org8cb1daa2014-04-25 12:59:11 +00003271static void cubicOp113(skiatest::Reporter* reporter, const char* filename) {
3272 SkPath path, pathB;
3273 path.moveTo(2,4);
3274 path.cubicTo(3,5, 2.33333325f,4.33333349f, 3.83333325f,3.83333349f);
3275 path.close();
3276 pathB.moveTo(3,5);
3277 pathB.cubicTo(2.33333325f,4.33333349f, 3.83333325f,3.83333349f, 2,4);
3278 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003279 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
commit-bot@chromium.org8cb1daa2014-04-25 12:59:11 +00003280}
commit-bot@chromium.org8cb1daa2014-04-25 12:59:11 +00003281
3282static void cubicOp114(skiatest::Reporter* reporter, const char* filename) {
3283 SkPath path, pathB;
3284 path.setFillType(SkPath::kWinding_FillType);
3285 path.moveTo(0, 1);
3286 path.cubicTo(1, 3, -1, 2, 3.5f, 1.33333337f);
3287 path.close();
3288 pathB.setFillType(SkPath::kWinding_FillType);
3289 pathB.moveTo(1, 3);
3290 pathB.cubicTo(-1, 2, 3.5f, 1.33333337f, 0, 1);
3291 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003292 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
commit-bot@chromium.org8cb1daa2014-04-25 12:59:11 +00003293}
caryclarke4097e32014-06-18 07:24:19 -07003294
3295static void cubicOp114asQuad(skiatest::Reporter* reporter, const char* filename) {
3296 SkPath path, pathB;
3297 path.setFillType(SkPath::kWinding_FillType);
3298 path.moveTo(0, 1);
3299 path.cubicTo(1, 3, -1, 2, 3.5f, 1.33333337f);
3300 path.close();
3301 pathB.setFillType(SkPath::kWinding_FillType);
3302 pathB.moveTo(1, 3);
3303 pathB.cubicTo(-1, 2, 3.5f, 1.33333337f, 0, 1);
3304 pathB.close();
3305 SkPath qPath, qPathB;
3306 CubicPathToQuads(path, &qPath);
3307 CubicPathToQuads(pathB, &qPathB);
caryclark54359292015-03-26 07:52:43 -07003308 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
caryclarke4097e32014-06-18 07:24:19 -07003309}
commit-bot@chromium.org8cb1daa2014-04-25 12:59:11 +00003310
3311static void quadOp10i(skiatest::Reporter* reporter, const char* filename) {
3312 SkPath path, pathB;
3313 path.moveTo(0, 0);
3314 path.quadTo(1, 8, 3, 5);
3315 path.lineTo(8, 1);
3316 path.close();
3317 pathB.moveTo(0, 0);
3318 pathB.quadTo(8, 1, 4, 8);
3319 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003320 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
commit-bot@chromium.org8cb1daa2014-04-25 12:59:11 +00003321}
3322
commit-bot@chromium.org91fc81c2014-04-30 13:37:48 +00003323static void kari1(skiatest::Reporter* reporter, const char* filename) {
3324 SkPath path1;
3325 path1.moveTo(39.9375, -5.8359375);
3326 path1.lineTo(40.625, -5.7890625);
3327 path1.lineTo(37.7109375, 1.3515625);
3328 path1.lineTo(37.203125, 0.9609375);
3329 path1.close();
3330
3331 SkPath path2;
3332 path2.moveTo(37.52734375f, -1.44140625f);
3333 path2.cubicTo(37.8736991882324f, -1.69921875f, 38.1640625f, -2.140625f, 38.3984375f, -2.765625f);
3334 path2.lineTo(38.640625f, -2.609375f);
3335 path2.cubicTo(38.53125f, -1.89583337306976f, 38.0664443969727f, -0.154893040657043f, 38.0664443969727f, -0.154893040657043f);
3336 path2.cubicTo(38.0664443969727f, -0.154893040657043f, 37.1809883117676f, -1.18359375f, 37.52734375, -1.44140625f);
3337 path2.close();
3338
caryclark54359292015-03-26 07:52:43 -07003339 testPathOp(reporter, path1, path2, kDifference_SkPathOp, filename);
commit-bot@chromium.org91fc81c2014-04-30 13:37:48 +00003340}
3341
commit-bot@chromium.org2db7fe72014-05-07 15:31:40 +00003342static void issue2504(skiatest::Reporter* reporter, const char* filename) {
3343 SkPath path1;
3344 path1.moveTo(34.2421875, -5.976562976837158203125);
3345 path1.lineTo(35.453121185302734375, 0);
3346 path1.lineTo(31.9375, 0);
3347 path1.close();
3348
3349 SkPath path2;
3350 path2.moveTo(36.71843719482421875, 0.8886508941650390625);
3351 path2.cubicTo(36.71843719482421875, 0.8886508941650390625,
3352 35.123386383056640625, 0.554015457630157470703125,
3353 34.511409759521484375, -0.1152553558349609375);
3354 path2.cubicTo(33.899425506591796875, -0.7845261096954345703125,
3355 34.53484344482421875, -5.6777553558349609375,
3356 34.53484344482421875, -5.6777553558349609375);
3357 path2.close();
caryclark54359292015-03-26 07:52:43 -07003358 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
commit-bot@chromium.org2db7fe72014-05-07 15:31:40 +00003359}
3360
caryclarkdac1d172014-06-17 05:15:38 -07003361static void issue2540(skiatest::Reporter* reporter, const char* filename) {
3362 SkPath path1;
3363 path1.moveTo(26.5054988861083984375, 85.73960113525390625);
3364 path1.cubicTo(84.19739532470703125, 17.77140045166015625, 16.93920135498046875, 101.86199951171875, 12.631000518798828125, 105.24700164794921875);
3365 path1.cubicTo(11.0819997787475585937500000, 106.46399688720703125, 11.5260000228881835937500000, 104.464996337890625, 11.5260000228881835937500000, 104.464996337890625);
3366 path1.lineTo(23.1654987335205078125, 89.72879791259765625);
3367 path1.cubicTo(23.1654987335205078125, 89.72879791259765625, -10.1713008880615234375, 119.9160003662109375, -17.1620006561279296875, 120.8249969482421875);
3368 path1.cubicTo(-19.1149997711181640625, 121.07900238037109375, -18.0380001068115234375, 119.79299163818359375, -18.0380001068115234375, 119.79299163818359375);
3369 path1.cubicTo(-18.0380001068115234375, 119.79299163818359375, 14.22100067138671875, 90.60700225830078125, 26.5054988861083984375, 85.73960113525390625);
3370 path1.close();
3371
3372 SkPath path2;
3373 path2.moveTo(-25.077999114990234375, 124.9120025634765625);
3374 path2.cubicTo(-25.077999114990234375, 124.9120025634765625, -25.9509983062744140625, 125.95400238037109375, -24.368999481201171875, 125.7480010986328125);
3375 path2.cubicTo(-16.06999969482421875, 124.66899871826171875, 1.2680000066757202148437500, 91.23999786376953125, 37.264003753662109375, 95.35400390625);
3376 path2.cubicTo(37.264003753662109375, 95.35400390625, 11.3710002899169921875, 83.7339935302734375, -25.077999114990234375, 124.9120025634765625);
3377 path2.close();
caryclark54359292015-03-26 07:52:43 -07003378 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
caryclarkdac1d172014-06-17 05:15:38 -07003379}
caryclarkdac1d172014-06-17 05:15:38 -07003380
3381static void rects1(skiatest::Reporter* reporter, const char* filename) {
3382 SkPath path, pathB;
3383 path.setFillType(SkPath::kEvenOdd_FillType);
3384 path.moveTo(0, 0);
3385 path.lineTo(1, 0);
3386 path.lineTo(1, 1);
3387 path.lineTo(0, 1);
3388 path.close();
3389 path.moveTo(0, 0);
3390 path.lineTo(6, 0);
3391 path.lineTo(6, 6);
3392 path.lineTo(0, 6);
3393 path.close();
3394 pathB.setFillType(SkPath::kEvenOdd_FillType);
3395 pathB.moveTo(0, 0);
3396 pathB.lineTo(1, 0);
3397 pathB.lineTo(1, 1);
3398 pathB.lineTo(0, 1);
3399 pathB.close();
3400 pathB.moveTo(0, 0);
3401 pathB.lineTo(2, 0);
3402 pathB.lineTo(2, 2);
3403 pathB.lineTo(0, 2);
3404 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003405 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclarkdac1d172014-06-17 05:15:38 -07003406}
3407
3408static void rects2(skiatest::Reporter* reporter, const char* filename) {
3409 SkPath path, pathB;
3410 path.setFillType(SkPath::kEvenOdd_FillType);
3411 path.moveTo(0, 0);
3412 path.lineTo(4, 0);
3413 path.lineTo(4, 4);
3414 path.lineTo(0, 4);
3415 path.close();
3416 path.moveTo(3, 3);
3417 path.lineTo(4, 3);
3418 path.lineTo(4, 4);
3419 path.lineTo(3, 4);
3420 path.close();
3421 pathB.setFillType(SkPath::kWinding_FillType);
3422 pathB.moveTo(3, 3);
3423 pathB.lineTo(6, 3);
3424 pathB.lineTo(6, 6);
3425 pathB.lineTo(3, 6);
3426 pathB.close();
3427 pathB.moveTo(3, 3);
3428 pathB.lineTo(4, 3);
3429 pathB.lineTo(4, 4);
3430 pathB.lineTo(3, 4);
3431 pathB.close();
caryclark54359292015-03-26 07:52:43 -07003432 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclarkdac1d172014-06-17 05:15:38 -07003433}
3434
3435static void rects3(skiatest::Reporter* reporter, const char* filename) {
3436 SkPath path, pathB;
3437 path.setFillType(SkPath::kEvenOdd_FillType);
3438 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3439 path.addRect(0, 0, 4, 4, SkPath::kCW_Direction);
3440 pathB.setFillType(SkPath::kWinding_FillType);
3441 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3442 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -07003443 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclarkdac1d172014-06-17 05:15:38 -07003444}
3445
3446static void rects4(skiatest::Reporter* reporter, const char* filename) {
3447 SkPath path, pathB;
3448 path.setFillType(SkPath::kEvenOdd_FillType);
3449 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3450 path.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3451 pathB.setFillType(SkPath::kWinding_FillType);
3452 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3453 pathB.addRect(0, 0, 3, 3, SkPath::kCW_Direction);
caryclark54359292015-03-26 07:52:43 -07003454 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclarkdac1d172014-06-17 05:15:38 -07003455}
3456
caryclark19eb3b22014-07-18 05:08:14 -07003457static void issue2753(skiatest::Reporter* reporter, const char* filename) {
3458 SkPath path1;
3459 path1.moveTo(142.701f, 110.568f);
3460 path1.lineTo(142.957f, 100);
3461 path1.lineTo(153.835f, 100);
3462 path1.lineTo(154.592f, 108.188f);
3463 path1.cubicTo(154.592f, 108.188f, 153.173f, 108.483f, 152.83f, 109.412f);
3464 path1.cubicTo(152.83f, 109.412f, 142.701f, 110.568f, 142.701f, 110.568f);
3465 path1.close();
3466
3467 SkPath path2;
3468 path2.moveTo(39, 124.001f);
3469 path2.cubicTo(39, 124.001f, 50.6f, 117.001f, 50.6f, 117.001f);
3470 path2.cubicTo(50.6f, 117.001f, 164.601f, 85.2f, 188.201f, 117.601f);
3471 path2.cubicTo(188.201f, 117.601f, 174.801f, 93, 39, 124.001f);
3472 path2.close();
3473
caryclark54359292015-03-26 07:52:43 -07003474 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
caryclark19eb3b22014-07-18 05:08:14 -07003475}
caryclark19eb3b22014-07-18 05:08:14 -07003476
caryclark80a83ad2014-08-12 05:49:37 -07003477static void issue2808(skiatest::Reporter* reporter, const char* filename) {
3478 SkPath path1, path2;
3479
caryclark55888e42016-07-18 10:01:36 -07003480 path1.moveTo(509.20300293f, 385.601989746f);
3481 path1.quadTo(509.20300293f, 415.68838501f, 487.928710938f, 436.96270752f);
3482 path1.quadTo(466.654388428f, 458.236999512f, 436.567993164f, 458.236999512f);
3483 path1.quadTo(406.4815979f, 458.236999512f, 385.207275391f, 436.96270752f);
3484 path1.quadTo(363.932983398f, 415.68838501f, 363.932983398f, 385.601989746f);
3485 path1.quadTo(363.932983398f, 355.515594482f, 385.207275391f, 334.241271973f);
3486 path1.quadTo(406.4815979f, 312.96697998f, 436.567993164f, 312.96697998f);
3487 path1.quadTo(466.654388428f, 312.96697998f, 487.928710938f, 334.241271973f);
3488 path1.quadTo(509.20300293f, 355.515594482f, 509.20300293f, 385.601989746f);
3489 path1.close();
caryclark80a83ad2014-08-12 05:49:37 -07003490
caryclark55888e42016-07-18 10:01:36 -07003491 path2.moveTo(449.033996582f, 290.87298584f);
3492 path2.quadTo(449.033996582f, 301.028259277f, 441.853149414f, 308.209106445f);
3493 path2.quadTo(434.672271729f, 315.389984131f, 424.516998291f, 315.389984131f);
3494 path2.quadTo(414.361724854f, 315.389984131f, 407.180847168f, 308.209106445f);
3495 path2.quadTo(400, 301.028259277f, 400, 290.87298584f);
3496 path2.quadTo(400, 280.717712402f, 407.180847168f, 273.536865234f);
3497 path2.quadTo(414.361724854f, 266.355987549f, 424.516998291f, 266.355987549f);
3498 path2.quadTo(434.672271729f, 266.355987549f, 441.853149414f, 273.536865234f);
3499 path2.quadTo(449.033996582f, 280.717712402f, 449.033996582f, 290.87298584f);
3500 path2.close();
caryclark80a83ad2014-08-12 05:49:37 -07003501
caryclark54359292015-03-26 07:52:43 -07003502 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
caryclark80a83ad2014-08-12 05:49:37 -07003503}
3504
caryclark65f55312014-11-13 06:58:52 -08003505static void cubicOp115(skiatest::Reporter* reporter, const char* filename) {
3506 SkPath path, pathB;
3507 path.setFillType(SkPath::kWinding_FillType);
3508 path.moveTo(0,1);
3509 path.cubicTo(3,4, 2,1, 5,3);
3510 path.close();
3511 pathB.setFillType(SkPath::kWinding_FillType);
3512 pathB.moveTo(1,2);
3513 pathB.cubicTo(3,5, 1,0, 4,3);
3514 pathB.close();
3515 SkPath path2(path);
caryclark54359292015-03-26 07:52:43 -07003516 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark65f55312014-11-13 06:58:52 -08003517}
3518
caryclark54359292015-03-26 07:52:43 -07003519static void testRect1(skiatest::Reporter* reporter, const char* filename) {
3520 SkPath path, path2;
3521 path.addRect(0, 0, 60, 60, SkPath::kCCW_Direction);
3522 path.addRect(30, 20, 50, 50, SkPath::kCCW_Direction);
3523 path.addRect(24, 20, 36, 30, SkPath::kCCW_Direction);
3524// path.addRect(32, 24, 36, 41, SkPath::kCCW_Direction);
3525 testPathOp(reporter, path, path2, kUnion_SkPathOp, filename);
3526}
3527
3528static void testRect2(skiatest::Reporter* reporter, const char* filename) {
3529 SkPath path, pathB;
3530 path.setFillType(SkPath::kWinding_FillType);
3531 path.addRect(0, 0, 1, 1, SkPath::kCW_Direction);
3532 path.addRect(4, 4, 5, 5, SkPath::kCW_Direction);
3533 pathB.setFillType(SkPath::kEvenOdd_FillType);
3534 pathB.addRect(0, 0, 2, 2, SkPath::kCW_Direction);
3535 pathB.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
3536 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3537}
3538
3539static void cubicOp116(skiatest::Reporter* reporter, const char* filename) {
3540 SkPath path, pathB;
3541 path.setFillType(SkPath::kWinding_FillType);
3542 path.moveTo(0,1);
3543 path.cubicTo(4,6, 2,0, 2,0);
3544 path.close();
3545 pathB.setFillType(SkPath::kWinding_FillType);
3546 pathB.moveTo(0,2);
3547 pathB.cubicTo(0,2, 1,0, 6,4);
3548 pathB.close();
3549 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3550}
3551
3552static void cubicOp117(skiatest::Reporter* reporter, const char* filename) {
3553 SkPath path, pathB;
3554 path.setFillType(SkPath::kWinding_FillType);
3555 path.moveTo(0,1);
3556 path.cubicTo(4,5, 6,0, 1,0);
3557 path.close();
3558 pathB.setFillType(SkPath::kWinding_FillType);
3559 pathB.moveTo(0,6);
3560 pathB.cubicTo(0,1, 1,0, 5,4);
3561 pathB.close();
3562 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3563}
3564
3565static void cubicOp118(skiatest::Reporter* reporter, const char* filename) {
3566 SkPath path, pathB;
3567 path.setFillType(SkPath::kWinding_FillType);
3568 path.moveTo(0,1);
3569 path.cubicTo(4,6, 5,1, 6,2);
3570 path.close();
3571 pathB.setFillType(SkPath::kWinding_FillType);
3572 pathB.moveTo(1,5);
3573 pathB.cubicTo(2,6, 1,0, 6,4);
3574 pathB.close();
3575 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3576}
3577
3578static void loop1(skiatest::Reporter* reporter, const char* filename) {
3579 SkPath path, pathB;
3580 path.moveTo(0,1);
3581 path.cubicTo(1,5, -5.66666651f,3.33333349f, 8.83333302f,2.33333349f);
3582 path.close();
3583 pathB.moveTo(1,5);
3584 pathB.cubicTo(-5.66666651f,3.33333349f, 8.83333302f,2.33333349f, 0,1);
3585 pathB.close();
3586 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3587}
3588
3589#include "SkPathOpsCubic.h"
3590
3591static void loop1asQuad(skiatest::Reporter* reporter, const char* filename) {
3592 SkDCubic c1 = {{{0,1}, {1,5}, {-5.66666651f,3.33333349f}, {8.83333302f,2.33333349f}}};
3593 SkDCubic c2 = {{{1,5}, {-5.66666651f,3.33333349f}, {8.83333302f,2.33333349f}, {0,1}}};
3594 double c1InflectionTs[2], c2InflectionTs[2];
3595 SkDEBUGCODE(int c1InfTCount =) c1.findInflections(c1InflectionTs);
3596 SkASSERT(c1InfTCount == 2);
3597 SkDEBUGCODE(int c2InfTCount =) c2.findInflections(c2InflectionTs);
3598 SkASSERT(c2InfTCount == 1);
3599 SkASSERT(c1InflectionTs[0] > c1InflectionTs[1]);
3600 SkDCubicPair c1pair = c1.chopAt(c1InflectionTs[0]);
3601 SkDCubicPair c1apair = c1pair.first().chopAt(c1InflectionTs[1]);
3602 SkDCubicPair c2pair = c2.chopAt(c2InflectionTs[0]);
3603 SkDQuad q1[2] = { c1pair.first().toQuad(), c1pair.second().toQuad() };
3604 SkDQuad q1a[2] = { c1apair.first().toQuad(), c1apair.second().toQuad() };
3605 SkDQuad q2[2] = { c2pair.first().toQuad(), c2pair.second().toQuad() };
3606 SkPath path, pathB;
3607 path.moveTo(q1a[0].fPts[0].asSkPoint());
3608 path.quadTo(q1a[0].fPts[1].asSkPoint(), q1a[0].fPts[2].asSkPoint());
3609 path.quadTo(q1a[1].fPts[1].asSkPoint(), q1a[1].fPts[2].asSkPoint());
3610 path.quadTo(q1[1].fPts[1].asSkPoint(), q1[1].fPts[2].asSkPoint());
3611 path.close();
3612 pathB.moveTo(q2[0].fPts[0].asSkPoint());
3613 pathB.quadTo(q2[0].fPts[1].asSkPoint(), q2[0].fPts[2].asSkPoint());
3614 pathB.quadTo(q2[1].fPts[1].asSkPoint(), q2[1].fPts[2].asSkPoint());
3615 pathB.close();
3616 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3617}
3618
3619static void loop2(skiatest::Reporter* reporter, const char* filename) {
3620 SkPath path, pathB;
3621 path.moveTo(0,1);
3622 path.cubicTo(3,4, 3.f,4.f, 4.5f,1.5f);
3623 path.close();
3624 pathB.moveTo(3,4);
3625 pathB.cubicTo(3.f,4.f, 4.5f,1.5f, 0,1);
3626 pathB.close();
3627 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3628}
3629
3630static void loop3(skiatest::Reporter* reporter, const char* filename) {
3631 SkPath path, pathB;
3632 path.moveTo(0,1);
3633 path.cubicTo(3,5, -3.66666651f,0, 10.5f,-1.66666651f);
3634 path.close();
3635 pathB.moveTo(3,5);
3636 pathB.cubicTo(-3.66666651f,0, 10.5f,-1.66666651f, 0,1);
3637 pathB.close();
3638 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3639}
3640
3641static void loop4(skiatest::Reporter* reporter, const char* filename) {
3642 SkPath path, pathB;
3643 path.moveTo(0,5);
3644 path.cubicTo(1,5, 1,4, 0.833333313f,3);
3645 path.close();
3646 pathB.moveTo(1,5);
3647 pathB.cubicTo(1,4, 0.833333313f,3, 0,5);
3648 pathB.close();
3649 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3650}
3651
3652#include "SkParsePath.h"
3653
3654static void issue3517(skiatest::Reporter* reporter, const char* filename) {
3655 SkPath path, pathB;
3656
3657 const char str[] = "M31.35 57.75L31.35 57.75C31.9 57.7486 32.45 57.7948 33 57.7413C33.55 57.6878 34.1 57.5014 34.65 57.4291C35.2 57.3569 35.75 57.3223 36.3 57.3079C36.85 57.2935 37.4 57.3143 37.95 57.3428C38.5 57.3712 39.05 57.4112 39.6 57.4786C40.15 57.546 40.7 57.7029 41.25 57.7472C41.8 57.7916 42.35 57.7962 42.9 57.7445C43.45 57.6928 44 57.5345 44.55 57.4373C45.1 57.34 45.65 57.2115 46.2 57.1611C46.75 57.1107 47.3 57.1371 47.85 57.1349C48.4 57.1327 48.95 57.144 49.5 57.1478C50.05 57.1516 50.6 57.1553 51.15 57.1579C51.7 57.1605 52.25 57.1601 52.8 57.1634C53.35 57.1667 53.9 57.1731 54.45 57.1776C55 57.182 55.55 57.1916 56.1 57.19C56.65 57.1884 57.2 57.178 57.75 57.168C58.3 57.158 58.85 57.1355 59.4 57.1299C59.95 57.1243 60.5 57.1338 61.05 57.1345C61.6 57.1352 62.15 57.124 62.7 57.134C63.25 57.1441 63.8 57.1731 64.35 57.195C64.9 57.2169 65.45 57.2532 66 57.2655C66.55 57.2778 67.1 57.2647 67.65 57.2687C68.2 57.2728 68.75 57.267 69.3 57.2896C69.85 57.3122 70.4 57.371 70.95 57.4044C71.5 57.4377 72.05 57.4668 72.6 57.4896C73.15 57.5123 73.7 57.545 74.25 57.5408C74.8 57.5365 75.35 57.5068 75.9 57.4641C76.45 57.4213 77 57.3244 77.55 57.2842C78.1 57.244 78.65 57.2163 79.2 57.2228C79.75 57.2293 80.3 57.29 80.85 57.3232C81.4 57.3563 81.95 57.396 82.5 57.4219C83.05 57.4478 83.6 57.4637 84.15 57.4787C84.7 57.4937 85.25 57.5011 85.8 57.5121C86.35 57.523 86.9 57.5411 87.45 57.5444C88 57.5477 88.55 57.5663 89.1 57.5318C89.65 57.4972 90.2 57.3126 90.75 57.337C91.3 57.3613 91.85 57.6088 92.4 57.6776C92.95 57.7465 93.5 57.7379 94.05 57.75C94.6 57.7621 95.15 57.75 95.7 57.75L95.7 57.75L31.35 57.75Z";
3658 SkParsePath::FromSVGString(str, &path);
3659
3660 const char strB[] = "M31.35 57.75L31.35 57.75C31.9 57.7514 32.45 57.7052 33 57.7587C33.55 57.8122 34.1 57.9986 34.65 58.0709C35.2 58.1431 35.75 58.1777 36.3 58.1921C36.85 58.2065 37.4 58.1857 37.95 58.1572C38.5 58.1288 39.05 58.0888 39.6 58.0214C40.15 57.954 40.7 57.7971 41.25 57.7528C41.8 57.7084 42.35 57.7038 42.9 57.7555C43.45 57.8072 44 57.9655 44.55 58.0627C45.1 58.16 45.65 58.2885 46.2 58.3389C46.75 58.3893 47.3 58.3629 47.85 58.3651C48.4 58.3673 48.95 58.356 49.5 58.3522C50.05 58.3484 50.6 58.3447 51.15 58.3421C51.7 58.3395 52.25 58.3399 52.8 58.3366C53.35 58.3333 53.9 58.3269 54.45 58.3224C55 58.318 55.55 58.3084 56.1 58.31C56.65 58.3116 57.2 58.322 57.75 58.332C58.3 58.342 58.85 58.3645 59.4 58.3701C59.95 58.3757 60.5 58.3662 61.05 58.3655C61.6 58.3648 62.15 58.376 62.7 58.366C63.25 58.3559 63.8 58.3269 64.35 58.305C64.9 58.2831 65.45 58.2468 66 58.2345C66.55 58.2222 67.1 58.2353 67.65 58.2313C68.2 58.2272 68.75 58.233 69.3 58.2104C69.85 58.1878 70.4 58.129 70.95 58.0956C71.5 58.0623 72.05 58.0332 72.6 58.0104C73.15 57.9877 73.7 57.955 74.25 57.9592C74.8 57.9635 75.35 57.9932 75.9 58.0359C76.45 58.0787 77 58.1756 77.55 58.2158C78.1 58.256 78.65 58.2837 79.2 58.2772C79.75 58.2707 80.3 58.21 80.85 58.1768C81.4 58.1437 81.95 58.104 82.5 58.0781C83.05 58.0522 83.6 58.0363 84.15 58.0213C84.7 58.0063 85.25 57.9989 85.8 57.9879C86.35 57.977 86.9 57.9589 87.45 57.9556C88 57.9523 88.55 57.9337 89.1 57.9682C89.65 58.0028 90.2 58.1874 90.75 58.163C91.3 58.1387 91.85 57.8912 92.4 57.8224C92.95 57.7535 93.5 57.7621 94.05 57.75C94.6 57.7379 95.15 57.75 95.7 57.75L95.7 57.75L31.35 57.75Z";
3661 SkParsePath::FromSVGString(strB, &pathB);
caryclarkbca19f72015-05-13 08:23:48 -07003662 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark54359292015-03-26 07:52:43 -07003663}
3664
3665static void cubicOp119(skiatest::Reporter* reporter, const char* filename) {
3666 SkPath path, pathB;
3667 path.setFillType(SkPath::kWinding_FillType);
3668 path.moveTo(0,1);
3669 path.cubicTo(3,5, 2,1, 3,1);
3670 path.close();
3671 pathB.setFillType(SkPath::kWinding_FillType);
3672 pathB.moveTo(1,2);
3673 pathB.cubicTo(1,3, 1,0, 5,3);
3674 pathB.close();
3675 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3676}
3677
3678static void cubicOp120(skiatest::Reporter* reporter, const char* filename) {
3679 SkPath path, pathB;
3680 path.setFillType(SkPath::kWinding_FillType);
3681 path.moveTo(0,1);
3682 path.cubicTo(2,4, 2,1, 4,0);
3683 path.close();
3684 pathB.setFillType(SkPath::kWinding_FillType);
3685 pathB.moveTo(1,2);
3686 pathB.cubicTo(0,4, 1,0, 4,2);
3687 pathB.close();
3688 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3689}
3690
3691static void cubicOp121(skiatest::Reporter* reporter, const char* filename) {
3692 SkPath path, pathB;
3693 path.setFillType(SkPath::kWinding_FillType);
3694 path.moveTo(0,1);
3695 path.cubicTo(3,4, 3,2, 4,3);
3696 path.close();
3697 pathB.setFillType(SkPath::kWinding_FillType);
3698 pathB.moveTo(2,3);
3699 pathB.cubicTo(3,4, 1,0, 4,3);
3700 pathB.close();
3701 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3702}
3703
3704// FIXME : haven't debugged this failure yet
3705static void cubicOp122(skiatest::Reporter* reporter, const char* filename) {
3706 SkPath path, pathB;
3707 path.setFillType(SkPath::kWinding_FillType);
3708 path.moveTo(0,1);
3709 path.cubicTo(3,5, 4,1, 4,0);
3710 path.close();
3711 pathB.setFillType(SkPath::kWinding_FillType);
3712 pathB.moveTo(1,4);
3713 pathB.cubicTo(0,4, 1,0, 5,3);
3714 pathB.close();
3715 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3716}
3717
3718static void cubicOp123(skiatest::Reporter* reporter, const char* filename) {
3719 SkPath path, pathB;
3720 path.setFillType(SkPath::kWinding_FillType);
3721 path.moveTo(0,1);
3722 path.cubicTo(1,5, 2,0, 6,0);
3723 path.close();
3724 pathB.setFillType(SkPath::kWinding_FillType);
3725 pathB.moveTo(0,2);
3726 pathB.cubicTo(0,6, 1,0, 5,1);
3727 pathB.close();
3728 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3729}
3730
3731static void loop5(skiatest::Reporter* reporter, const char* filename) {
3732 SkPath path, pathB;
3733 path.moveTo(0,2);
3734 path.cubicTo(1,2, 1,1.66666663f, 0.833333313f,1.33333325f);
3735 path.close();
3736 pathB.moveTo(1,2);
3737 pathB.cubicTo(1,1.66666663f, 0.833333313f,1.33333325f, 0,2);
3738 pathB.close();
3739 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3740}
3741
3742static void loop6(skiatest::Reporter* reporter, const char* filename) {
3743 SkPath path, pathB;
3744 path.moveTo(0,1);
3745 path.cubicTo(1,3, -1.66666675f,1.66666663f, 4.16666651f,1.00000012f);
3746 path.close();
3747 pathB.moveTo(1,3);
3748 pathB.cubicTo(-1.66666675f,1.66666663f, 4.16666651f,1.00000012f, 0,1);
3749 pathB.close();
3750 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3751}
3752
3753static void cubicOp124(skiatest::Reporter* reporter, const char* filename) {
3754 SkPath path, pathB;
3755 path.setFillType(SkPath::kWinding_FillType);
3756 path.moveTo(0,1);
3757 path.cubicTo(1,5, 6,0, 3,0);
3758 path.close();
3759 pathB.setFillType(SkPath::kWinding_FillType);
3760 pathB.moveTo(0,6);
3761 pathB.cubicTo(0,3, 1,0, 5,1);
3762 pathB.close();
3763 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3764}
3765
3766static void cubicOp125(skiatest::Reporter* reporter, const char* filename) {
3767 SkPath path, pathB;
3768 path.setFillType(SkPath::kWinding_FillType);
3769 path.moveTo(0,1);
3770 path.cubicTo(3,6, 3,1, 6,2);
3771 path.close();
3772 pathB.setFillType(SkPath::kWinding_FillType);
3773 pathB.moveTo(1,3);
3774 pathB.cubicTo(2,6, 1,0, 6,3);
3775 pathB.close();
3776 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3777}
3778
3779static void cubicOp126(skiatest::Reporter* reporter, const char* filename) {
3780 SkPath path, pathB;
3781 path.setFillType(SkPath::kWinding_FillType);
3782 path.moveTo(0,1);
3783 path.cubicTo(0,3, 6,0, 2,1);
3784 path.close();
3785 pathB.setFillType(SkPath::kWinding_FillType);
3786 pathB.moveTo(0,6);
3787 pathB.cubicTo(1,2, 1,0, 3,0);
3788 pathB.close();
3789 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3790}
3791
3792static void cubicOp127(skiatest::Reporter* reporter, const char* filename) {
3793 SkPath path, pathB;
3794 path.setFillType(SkPath::kWinding_FillType);
3795 path.moveTo(0,1);
3796 path.cubicTo(1,5, 6,0, 3,0);
3797 path.close();
3798 pathB.setFillType(SkPath::kWinding_FillType);
3799 pathB.moveTo(0,6);
3800 pathB.cubicTo(0,3, 1,0, 5,1);
3801 pathB.close();
3802 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3803}
3804
3805static void cubicOp128(skiatest::Reporter* reporter, const char* filename) {
3806 SkPath path, pathB;
3807 path.setFillType(SkPath::kWinding_FillType);
3808 path.moveTo(0,1);
3809 path.cubicTo(0,3, 3,2, 5,2);
3810 path.close();
3811 pathB.setFillType(SkPath::kWinding_FillType);
3812 pathB.moveTo(2,3);
3813 pathB.cubicTo(2,5, 1,0, 3,0);
3814 pathB.close();
3815 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3816}
3817
caryclark1049f122015-04-20 08:31:59 -07003818static void cubicOp129(skiatest::Reporter* reporter, const char* filename) {
3819 SkPath path, pathB;
3820 path.setFillType(SkPath::kWinding_FillType);
3821 path.moveTo(5,6);
3822 path.cubicTo(3,4, 2,0, 2,1);
3823 path.close();
3824 pathB.setFillType(SkPath::kWinding_FillType);
3825 pathB.moveTo(0,2);
3826 pathB.cubicTo(1,2, 6,5, 4,3);
3827 pathB.close();
3828 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3829}
3830
3831static void cubicOp130(skiatest::Reporter* reporter, const char* filename) {
3832 SkPath path, pathB;
3833 path.setFillType(SkPath::kWinding_FillType);
3834 path.moveTo(5,6);
3835 path.cubicTo(4,6, 3,0, 2,1);
3836 path.close();
3837 pathB.setFillType(SkPath::kWinding_FillType);
3838 pathB.moveTo(0,3);
3839 pathB.cubicTo(1,2, 6,5, 6,4);
3840 pathB.close();
3841 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3842}
3843
3844#include "SkGeometry.h"
3845
3846static void complex_to_quads(const SkPoint pts[], SkPath* path) {
3847 SkScalar loopT;
caryclark6ff734b2015-09-04 05:00:15 -07003848 if (SkDCubic::ComplexBreak(pts, &loopT)) {
halcanary9d524f22016-03-29 09:03:52 -07003849 SkPoint cubicPair[7];
caryclark1049f122015-04-20 08:31:59 -07003850 SkChopCubicAt(pts, cubicPair, loopT);
3851 SkDCubic c1, c2;
3852 c1.set(cubicPair);
3853 c2.set(&cubicPair[3]);
3854 SkDQuad q1 = c1.toQuad();
3855 SkDQuad q2 = c2.toQuad();
3856 path->quadTo(q1[1].asSkPoint(), q1[2].asSkPoint());
3857 path->quadTo(q2[1].asSkPoint(), q2[2].asSkPoint());
3858 } else {
3859 path->cubicTo(pts[1], pts[2], pts[3]);
3860 }
3861}
3862
3863static void cubicOp130a(skiatest::Reporter* reporter, const char* filename) {
3864 SkPath path, pathB;
3865 path.setFillType(SkPath::kWinding_FillType);
3866 path.moveTo(5,6);
3867 SkPoint pts[] = { {5,6}, {4,6}, {3,0}, {2,1} };
3868 complex_to_quads(pts, &path);
3869 path.close();
3870 pathB.setFillType(SkPath::kWinding_FillType);
3871 pathB.moveTo(0,3);
3872 SkPoint pts2[] = { {0,3}, {1,2}, {6,5}, {6,4} };
3873 complex_to_quads(pts2, &path);
3874 pathB.close();
3875 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3876}
3877
3878static void cubicOp131(skiatest::Reporter* reporter, const char* filename) {
3879 SkPath path, pathB;
3880 path.setFillType(SkPath::kWinding_FillType);
3881 path.moveTo(0,1);
3882 path.cubicTo(3,4, 3,0, 6,2);
3883 path.close();
3884 pathB.setFillType(SkPath::kWinding_FillType);
3885 pathB.moveTo(0,3);
3886 pathB.cubicTo(2,6, 1,0, 4,3);
3887 pathB.close();
3888 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3889}
3890
3891static void circlesOp1(skiatest::Reporter* reporter, const char* filename) {
3892 SkPath path, pathB;
3893 path.setFillType(SkPath::kWinding_FillType);
3894 path.addCircle(0, 1, 2, SkPath::kCCW_Direction);
3895 pathB.setFillType(SkPath::kWinding_FillType);
3896 pathB.addCircle(0, 1, 1, SkPath::kCW_Direction);
3897 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3898}
3899
3900static void circlesOp2(skiatest::Reporter* reporter, const char* filename) {
3901 SkPath path, pathB;
3902 path.setFillType(SkPath::kWinding_FillType);
3903 path.addCircle(0, 1, 4, SkPath::kCCW_Direction);
3904 pathB.setFillType(SkPath::kWinding_FillType);
3905 pathB.addCircle(0, 4, 3, SkPath::kCW_Direction);
3906 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3907}
3908
3909static void rRect1x(skiatest::Reporter* reporter, const char* filename) {
3910 SkPath path, pathB;
3911 path.setFillType(SkPath::kEvenOdd_FillType);
3912 path.moveTo(20.65f, 5.65f);
3913 path.conicTo(20.65f, 1.13612f, 25.1404f, 0.65f, 0.888488f);
3914 path.lineTo(25.65f, 0.65f);
3915 path.lineTo(26.1596f, 0.67604f);
3916 path.conicTo(30.65f, 1.13612f, 30.65f, 5.65f, 0.888488f);
3917 path.lineTo(30.65f, 25.65f);
3918 path.conicTo(30.65f, 20.65f, 25.65f, 20.65f, 0.707107f);
3919 path.lineTo(20.65f, 20.65f);
3920 path.lineTo(20.65f, 5.65f);
3921 path.close();
3922 path.moveTo(20.65f, 20.65f);
3923 path.lineTo(5.65f, 20.65f);
3924 path.conicTo(0.65f, 20.65f, 0.65f, 25.65f, 0.707107f);
3925 path.lineTo(0.65f, 45.65f);
3926 path.conicTo(0.65f, 50.65f, 5.65f, 50.65f, 0.707107f);
3927 path.lineTo(25.65f, 50.65f);
3928 path.conicTo(30.65f, 50.65f, 30.65f, 45.65f, 0.707107f);
3929 path.lineTo(30.65f, 25.65f);
3930 path.conicTo(30.65f, 30.65f, 25.65f, 30.65f, 0.707107f);
3931 path.conicTo(20.65f, 30.65f, 20.65f, 25.65f, 0.707107f);
3932 path.lineTo(20.65f, 20.65f);
3933 path.close();
3934 SkPath path1(path);
3935
3936 path.reset();
3937 path.setFillType(SkPath::kWinding_FillType);
3938 path.moveTo(20.65f, 45.65f);
3939 path.lineTo(20.65f, 25.65f);
3940 path.conicTo(20.65f, 20.65f, 25.65f, 20.65f, 0.707107f);
3941 path.lineTo(45.65f, 20.65f);
3942 path.conicTo(50.65f, 20.65f, 50.65f, 25.65f, 0.707107f);
3943 path.lineTo(50.65f, 45.65f);
3944 path.conicTo(50.65f, 50.65f, 45.65f, 50.65f, 0.707107f);
3945 path.lineTo(25.65f, 50.65f);
3946 path.conicTo(20.65f, 50.65f, 20.65f, 45.65f, 0.707107f);
3947 path.close();
3948 SkPath path2(path);
3949
3950 testPathOp(reporter, path1, path2, kDifference_SkPathOp, filename);
3951}
3952
3953static void loop7(skiatest::Reporter* reporter, const char* filename) {
3954 SkPath path, pathB;
3955 path.moveTo(0,1);
3956 path.cubicTo(3,4, -1,0, 8.5f,-2.5f);
3957 path.close();
3958 pathB.moveTo(3,4);
3959 pathB.cubicTo(-1,0, 8.5f,-2.5f, 0,1);
3960 pathB.close();
3961 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3962}
3963
3964static void rects5(skiatest::Reporter* reporter, const char* filename) {
3965 SkPath path, pathB;
3966 path.setFillType(SkPath::kWinding_FillType);
3967 path.addRect(5, 5, 6, 6, SkPath::kCW_Direction);
3968 path.addRect(5, 5, 6, 6, SkPath::kCW_Direction);
3969 pathB.setFillType(SkPath::kEvenOdd_FillType);
3970 pathB.addRect(0, 0, 6, 6, SkPath::kCW_Direction);
3971 pathB.addRect(5, 5, 6, 6, SkPath::kCW_Direction);
3972 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
3973}
3974
3975static void loop8(skiatest::Reporter* reporter, const char* filename) {
3976 SkPath path, pathB;
3977 path.moveTo(0,1);
3978 path.cubicTo(1,4, -3.83333325f,0.166666627f, 6,-1);
3979 path.close();
3980 pathB.moveTo(1,4);
3981 pathB.cubicTo(-3.83333325f,0.166666627f, 6,-1, 0,1);
3982 pathB.close();
3983 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3984}
3985
3986static void loop9(skiatest::Reporter* reporter, const char* filename) {
3987 SkPath path, pathB;
3988 path.moveTo(0,1);
3989 path.cubicTo(1,3, -2.5f,0, 3.33333325f,-0.666666627f);
3990 path.close();
3991 pathB.moveTo(1,3);
3992 pathB.cubicTo(-2.5f,0, 3.33333325f,-0.666666627f, 0,1);
3993 pathB.close();
3994 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
3995}
3996
3997static void circlesOp3(skiatest::Reporter* reporter, const char* filename) {
3998 SkPath path, pathB;
3999 path.setFillType(SkPath::kWinding_FillType);
4000 path.addCircle(0, 1, 2, SkPath::kCCW_Direction);
4001 pathB.setFillType(SkPath::kWinding_FillType);
4002 pathB.addCircle(3, 5, 3, SkPath::kCW_Direction);
4003 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4004}
4005
4006static void loop10(skiatest::Reporter* reporter, const char* filename) {
4007 SkPath path, pathB;
4008 path.moveTo(5,6);
4009 path.cubicTo(1,2, 1,2, -3.66666651f,13.333334f);
4010 path.close();
4011 pathB.moveTo(1,2);
4012 pathB.cubicTo(1,2, -3.66666651f,13.333334f, 5,6);
4013 pathB.close();
4014 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4015}
4016
4017static void loop11(skiatest::Reporter* reporter, const char* filename) {
4018 SkPath path, pathB;
4019 path.moveTo(0,1);
4020 path.cubicTo(1,3, -1.83333349f,1.33333337f, 4,-1);
4021 path.close();
4022 pathB.moveTo(1,3);
4023 pathB.cubicTo(-1.83333349f,1.33333337f, 4,-1, 0,1);
4024 pathB.close();
4025 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4026}
4027
4028static void cubicOp132(skiatest::Reporter* reporter, const char* filename) {
4029 SkPath path, pathB;
4030 path.setFillType(SkPath::kWinding_FillType);
4031 path.moveTo(5,6);
4032 path.cubicTo(3,4, 3,0, 3,2);
4033 path.close();
4034 pathB.setFillType(SkPath::kWinding_FillType);
4035 pathB.moveTo(0,3);
4036 pathB.cubicTo(2,3, 6,5, 4,3);
4037 pathB.close();
4038 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4039}
4040
caryclark03b03ca2015-04-23 09:13:37 -07004041static void loop12(skiatest::Reporter* reporter, const char* filename) {
4042 SkPath path, pathB;
4043 path.moveTo(1,2);
4044 path.cubicTo(0,6, -3.16666675f,3.66666675f, 6.33333349f,3.33333349f);
4045 path.close();
4046 pathB.moveTo(0,6);
4047 pathB.cubicTo(-3.16666675f,3.66666675f, 6.33333349f,3.33333349f, 1,2);
4048 pathB.close();
4049 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4050}
4051
caryclark03b03ca2015-04-23 09:13:37 -07004052static void cubicOp133(skiatest::Reporter* reporter, const char* filename) {
4053 SkPath path, pathB;
4054 path.setFillType(SkPath::kWinding_FillType);
4055 path.moveTo(5,6);
4056 path.cubicTo(5,6, 5,0, 4,1);
4057 path.close();
4058 pathB.setFillType(SkPath::kWinding_FillType);
4059 pathB.moveTo(0,5);
4060 pathB.cubicTo(1,4, 6,5, 6,5);
4061 pathB.close();
4062 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4063}
4064
4065static void cubicOp134(skiatest::Reporter* reporter, const char* filename) {
4066 SkPath path, pathB;
4067 path.setFillType(SkPath::kWinding_FillType);
4068 path.moveTo(5,6);
4069 path.cubicTo(5,6, 6,0, 3,1);
4070 path.close();
4071 pathB.setFillType(SkPath::kWinding_FillType);
4072 pathB.moveTo(0,6);
4073 pathB.cubicTo(1,3, 6,5, 6,5);
4074 pathB.close();
4075 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4076}
4077
4078static void cubicOp135(skiatest::Reporter* reporter, const char* filename) {
4079 SkPath path, pathB;
4080 path.setFillType(SkPath::kWinding_FillType);
4081 path.moveTo(5,6);
4082 path.cubicTo(5,6, 6,0, 4,1);
4083 path.close();
4084 pathB.setFillType(SkPath::kWinding_FillType);
4085 pathB.moveTo(0,6);
4086 pathB.cubicTo(1,4, 6,5, 6,5);
4087 pathB.close();
4088 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4089}
4090
4091static void cubicOp136(skiatest::Reporter* reporter, const char* filename) {
4092 SkPath path, pathB;
4093 path.setFillType(SkPath::kWinding_FillType);
4094 path.moveTo(5,6);
4095 path.cubicTo(5,6, 5,0, 3,1);
4096 path.close();
4097 pathB.setFillType(SkPath::kWinding_FillType);
4098 pathB.moveTo(0,5);
4099 pathB.cubicTo(1,3, 6,5, 6,5);
4100 pathB.close();
4101 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4102}
4103
4104static void cubicOp136a(skiatest::Reporter* reporter, const char* filename) {
4105 SkPath path, pathB;
4106 path.setFillType(SkPath::kWinding_FillType);
4107 path.moveTo(5,6);
4108 path.quadTo(5,0, 3,1);
4109 path.close();
4110 pathB.setFillType(SkPath::kWinding_FillType);
4111 pathB.moveTo(0,5);
4112 pathB.cubicTo(1,3, 6,5, 6,5);
4113 pathB.close();
4114 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4115}
4116
4117static void cubics137(skiatest::Reporter* reporter, const char* filename) {
4118 SkPath path, pathB;
4119 path.setFillType(SkPath::kWinding_FillType);
4120 path.moveTo(0, 5);
4121 path.cubicTo(3, 6, 1, 0, 3, 2);
4122 path.close();
4123 pathB.setFillType(SkPath::kWinding_FillType);
4124 pathB.moveTo(0, 1);
4125 pathB.cubicTo(2, 3, 5, 0, 6, 3);
4126 pathB.close();
4127 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4128}
4129
4130static void cubics138(skiatest::Reporter* reporter, const char* filename) {
4131 SkPath path, pathB;
4132 path.setFillType(SkPath::kWinding_FillType);
4133 path.moveTo(0, 5);
4134 path.cubicTo(3, 6, 1, 0, 4, 2);
4135 path.close();
4136 pathB.setFillType(SkPath::kWinding_FillType);
4137 pathB.moveTo(0, 1);
4138 pathB.cubicTo(2, 4, 5, 0, 6, 3);
4139 pathB.close();
4140 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4141}
4142
4143// three curves intersect successfully nearby -- the angle only gets 2 of the 3 pts
4144static void cubicOp139(skiatest::Reporter* reporter, const char* filename) {
4145 SkPath path, pathB;
4146 path.setFillType(SkPath::kWinding_FillType);
4147 path.moveTo(0,2);
4148 path.cubicTo(0,4, 3,1, 5,1);
4149 path.close();
4150 pathB.setFillType(SkPath::kWinding_FillType);
4151 pathB.moveTo(1,3);
4152 pathB.cubicTo(1,5, 2,0, 4,0);
4153 pathB.close();
caryclark08bc8482015-04-24 09:08:57 -07004154 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark03b03ca2015-04-23 09:13:37 -07004155}
4156
4157static void cubicOp140(skiatest::Reporter* reporter, const char* filename) {
4158 SkPath path, pathB;
4159 path.setFillType(SkPath::kWinding_FillType);
4160 path.moveTo(0,2);
4161 path.cubicTo(1,2, 5,4, 3,2);
4162 path.close();
4163 pathB.setFillType(SkPath::kWinding_FillType);
4164 pathB.moveTo(4,5);
4165 pathB.cubicTo(2,3, 2,0, 2,1);
4166 pathB.close();
4167 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4168}
4169
4170static void cubicOp141(skiatest::Reporter* reporter, const char* filename) {
4171 SkPath path, pathB;
4172 path.setFillType(SkPath::kWinding_FillType);
4173 path.moveTo(0,2);
4174 path.cubicTo(1,2, 6,4, 3,2);
4175 path.close();
4176 pathB.setFillType(SkPath::kWinding_FillType);
4177 pathB.moveTo(4,6);
4178 pathB.cubicTo(2,3, 2,0, 2,1);
4179 pathB.close();
4180 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4181}
4182
4183static void quadRect1(skiatest::Reporter* reporter, const char* filename) {
4184 SkPath path, pathB;
4185 path.moveTo(6,15);
4186 path.quadTo(16,0, 8,4);
4187 path.quadTo(2,7, 12,12);
4188 path.close();
4189 pathB.addRect(4,11, 13,16);
4190 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4191}
4192
4193static void quadRect2(skiatest::Reporter* reporter, const char* filename) {
4194 SkPath path, pathB;
4195 path.moveTo(5,12);
4196 path.quadTo(15,7, 9,4);
4197 path.quadTo(1,0, 11,15);
4198 path.close();
4199 pathB.addRect(4,11, 13,16);
4200 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4201}
4202
4203static void quadRect3(skiatest::Reporter* reporter, const char* filename) {
4204 SkPath path, pathB;
4205 path.moveTo(12,12);
4206 path.quadTo(2,7, 8,4);
4207 path.quadTo(16,0, 6,15);
4208 path.close();
4209 pathB.addRect(4,11, 13,16);
4210 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4211}
4212
4213static void quadRect4(skiatest::Reporter* reporter, const char* filename) {
4214 SkPath path, pathB;
4215 path.moveTo(11,15);
4216 path.quadTo(1,0, 9,4);
4217 path.quadTo(15,7, 5,12);
4218 path.close();
4219 pathB.addRect(4,11, 13,16);
4220 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4221}
4222
4223static void quadRect5(skiatest::Reporter* reporter, const char* filename) {
4224 SkPath path, pathB;
4225 path.moveTo(11,13);
4226 path.quadTo(4,4, 8,4);
4227 path.quadTo(12,4, 5,13);
4228 path.close();
4229 pathB.addRect(4,11, 13,16);
4230 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4231}
4232
4233static void quadRect6(skiatest::Reporter* reporter, const char* filename) {
4234 SkPath path, pathB;
4235 path.moveTo(5,13);
4236 path.quadTo(12,4, 8,4);
4237 path.quadTo(4,4, 11,13);
4238 path.close();
4239 pathB.addRect(4,11, 13,16);
4240 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4241}
4242
4243static void loops4i(skiatest::Reporter* reporter, const char* filename) {
4244 SkPath path, pathB;
4245 path.setFillType(SkPath::kWinding_FillType);
4246 path.moveTo(0, 3);
4247 path.cubicTo(0, 2, 0, 2, -1.66666663f, 2.16666675f);
4248 path.close();
4249 pathB.setFillType(SkPath::kWinding_FillType);
4250 pathB.moveTo(0, 2);
4251 pathB.cubicTo(0, 2, -1.66666663f, 2.16666675f, 0, 3);
4252 pathB.close();
4253 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4254}
4255
4256static void loops5i(skiatest::Reporter* reporter, const char* filename) {
4257 SkPath path, pathB;
4258 path.setFillType(SkPath::kWinding_FillType);
4259 path.moveTo(1, 2);
4260 path.cubicTo(0, 2, 0, 2, 0.166666672f, 2.66666675f);
4261 path.close();
4262 pathB.setFillType(SkPath::kWinding_FillType);
4263 pathB.moveTo(0, 2);
4264 pathB.cubicTo(0, 2, 0.166666672f, 2.66666675f, 1, 2);
4265 pathB.close();
4266 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4267}
4268
caryclark08bc8482015-04-24 09:08:57 -07004269static void cubicOp142(skiatest::Reporter* reporter, const char* filename) {
4270 SkPath path, pathB;
4271 path.setFillType(SkPath::kWinding_FillType);
4272 path.moveTo(5,6);
4273 path.cubicTo(2,5, 2,1, 1,0);
4274 path.close();
4275 pathB.setFillType(SkPath::kWinding_FillType);
4276 pathB.moveTo(1,2);
4277 pathB.cubicTo(0,1, 6,5, 5,2);
4278 pathB.close();
4279 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4280}
4281
4282static void cubics6d(skiatest::Reporter* reporter, const char* filename) {
4283 SkPath path, pathB;
4284 path.setFillType(SkPath::kWinding_FillType);
4285 path.moveTo(3, 5);
4286 path.cubicTo(1, 5, 4, 2, 4, 0);
4287 path.close();
4288 pathB.setFillType(SkPath::kWinding_FillType);
4289 pathB.moveTo(2, 4);
4290 pathB.cubicTo(0, 4, 5, 3, 5, 1);
4291 pathB.close();
4292 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4293}
4294
4295static void cubics7d(skiatest::Reporter* reporter, const char* filename) {
4296 SkPath path, pathB;
4297 path.setFillType(SkPath::kWinding_FillType);
4298 path.moveTo(2, 6);
4299 path.cubicTo(2, 4, 5, 1, 3, 1);
4300 path.close();
4301 pathB.setFillType(SkPath::kWinding_FillType);
4302 pathB.moveTo(1, 5);
4303 pathB.cubicTo(1, 3, 6, 2, 4, 2);
4304 pathB.close();
4305 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4306}
4307
4308static void cubics8d(skiatest::Reporter* reporter, const char* filename) {
4309 SkPath path, pathB;
4310 path.setFillType(SkPath::kWinding_FillType);
4311 path.moveTo(2, 5);
4312 path.cubicTo(2, 4, 5, 1, 3, 2);
4313 path.close();
4314 pathB.setFillType(SkPath::kWinding_FillType);
4315 pathB.moveTo(1, 5);
4316 pathB.cubicTo(2, 3, 5, 2, 4, 2);
4317 pathB.close();
4318 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4319}
4320
4321static void cubics9d(skiatest::Reporter* reporter, const char* filename) {
4322 SkPath path, pathB;
4323 path.setFillType(SkPath::kWinding_FillType);
4324 path.moveTo(2, 4);
4325 path.cubicTo(2, 6, 3, 1, 5, 1);
4326 path.close();
4327 pathB.setFillType(SkPath::kWinding_FillType);
4328 pathB.moveTo(1, 3);
4329 pathB.cubicTo(1, 5, 4, 2, 6, 2);
4330 pathB.close();
4331 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4332}
4333
4334static void cubics10u(skiatest::Reporter* reporter, const char* filename) {
4335 SkPath path, pathB;
4336 path.setFillType(SkPath::kWinding_FillType);
4337 path.moveTo(2, 4);
4338 path.cubicTo(1, 6, 4, 1, 5, 1);
4339 path.close();
4340 pathB.setFillType(SkPath::kWinding_FillType);
4341 pathB.moveTo(1, 4);
4342 pathB.cubicTo(1, 5, 4, 2, 6, 1);
4343 pathB.close();
4344 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
4345}
4346
4347static void cubics11i(skiatest::Reporter* reporter, const char* filename) {
4348 SkPath path, pathB;
4349 path.setFillType(SkPath::kWinding_FillType);
4350 path.moveTo(2, 4);
4351 path.cubicTo(2, 5, 3, 2, 5, 1);
4352 path.close();
4353 pathB.setFillType(SkPath::kWinding_FillType);
4354 pathB.moveTo(2, 3);
4355 pathB.cubicTo(1, 5, 4, 2, 5, 2);
4356 pathB.close();
4357 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4358}
4359
4360static void cubics12d(skiatest::Reporter* reporter, const char* filename) {
4361 SkPath path, pathB;
4362 path.setFillType(SkPath::kWinding_FillType);
4363 path.moveTo(2, 4);
4364 path.cubicTo(0, 4, 5, 3, 5, 1);
4365 path.close();
4366 pathB.setFillType(SkPath::kWinding_FillType);
4367 pathB.moveTo(3, 5);
4368 pathB.cubicTo(1, 5, 4, 2, 4, 0);
4369 pathB.close();
4370 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4371}
4372
4373static void cubics13d(skiatest::Reporter* reporter, const char* filename) {
4374 SkPath path, pathB;
4375 path.setFillType(SkPath::kWinding_FillType);
4376 path.moveTo(2, 3);
4377 path.cubicTo(1, 5, 4, 2, 5, 2);
4378 path.close();
4379 pathB.setFillType(SkPath::kWinding_FillType);
4380 pathB.moveTo(2, 4);
4381 pathB.cubicTo(2, 5, 3, 2, 5, 1);
4382 pathB.close();
4383 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4384}
4385
4386static void cubics14d(skiatest::Reporter* reporter, const char* filename) {
4387 SkPath path, pathB;
4388 path.setFillType(SkPath::kWinding_FillType);
4389 path.moveTo(2, 3);
4390 path.cubicTo(0, 4, 3, 1, 3, 0);
4391 path.close();
4392 pathB.setFillType(SkPath::kWinding_FillType);
4393 pathB.moveTo(1, 3);
4394 pathB.cubicTo(0, 3, 3, 2, 4, 0);
4395 pathB.close();
4396 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4397}
4398
4399static void cubics15d(skiatest::Reporter* reporter, const char* filename) {
4400 SkPath path, pathB;
4401 path.setFillType(SkPath::kWinding_FillType);
4402 path.moveTo(1, 5);
4403 path.cubicTo(3, 5, 4, 0, 4, 2);
4404 path.close();
4405 pathB.setFillType(SkPath::kWinding_FillType);
4406 pathB.moveTo(0, 4);
4407 pathB.cubicTo(2, 4, 5, 1, 5, 3);
4408 pathB.close();
4409 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4410}
4411
4412static void cubics16i(skiatest::Reporter* reporter, const char* filename) {
4413 SkPath path, pathB;
4414 path.setFillType(SkPath::kWinding_FillType);
4415 path.moveTo(1, 5);
4416 path.cubicTo(2, 5, 5, 0, 4, 2);
4417 path.close();
4418 pathB.setFillType(SkPath::kWinding_FillType);
4419 pathB.moveTo(0, 5);
4420 pathB.cubicTo(2, 4, 5, 1, 5, 2);
4421 pathB.close();
4422 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4423}
4424
4425static void cubics17d(skiatest::Reporter* reporter, const char* filename) {
4426 SkPath path, pathB;
4427 path.setFillType(SkPath::kWinding_FillType);
4428 path.moveTo(1, 5);
4429 path.cubicTo(3, 4, 4, 1, 4, 2);
4430 path.close();
4431 pathB.setFillType(SkPath::kWinding_FillType);
4432 pathB.moveTo(1, 4);
4433 pathB.cubicTo(2, 4, 5, 1, 4, 3);
4434 pathB.close();
4435 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4436}
4437
4438static void cubics18d(skiatest::Reporter* reporter, const char* filename) {
4439 SkPath path, pathB;
4440 path.setFillType(SkPath::kWinding_FillType);
4441 path.moveTo(1, 5);
4442 path.cubicTo(1, 3, 4, 0, 2, 0);
4443 path.close();
4444 pathB.setFillType(SkPath::kWinding_FillType);
4445 pathB.moveTo(0, 4);
4446 pathB.cubicTo(0, 2, 5, 1, 3, 1);
4447 pathB.close();
4448 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4449}
4450
4451static void cubics19d(skiatest::Reporter* reporter, const char* filename) {
4452 SkPath path, pathB;
4453 path.setFillType(SkPath::kWinding_FillType);
4454 path.moveTo(1, 5);
4455 path.cubicTo(2, 3, 5, 2, 4, 2);
4456 path.close();
4457 pathB.setFillType(SkPath::kWinding_FillType);
4458 pathB.moveTo(2, 5);
4459 pathB.cubicTo(2, 4, 5, 1, 3, 2);
4460 pathB.close();
4461 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4462}
4463
4464static void cubicOp157(skiatest::Reporter* reporter, const char* filename) {
4465 SkPath path, pathB;
4466 path.setFillType(SkPath::kWinding_FillType);
4467 path.moveTo(1,5);
4468 path.cubicTo(1,3, 6,2, 4,2);
4469 path.close();
4470 pathB.setFillType(SkPath::kWinding_FillType);
4471 pathB.moveTo(2,6);
4472 pathB.cubicTo(2,4, 5,1, 3,1);
4473 pathB.close();
4474 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4475}
4476
caryclarkaec25102015-04-29 08:28:30 -07004477static void cubics20d(skiatest::Reporter* reporter, const char* filename) {
4478 SkPath path, pathB;
4479 path.setFillType(SkPath::kWinding_FillType);
4480 path.moveTo(1, 2);
4481 path.cubicTo(0, 3, 6, 0, 3, 2);
4482 path.close();
4483 pathB.setFillType(SkPath::kWinding_FillType);
4484 pathB.moveTo(0, 6);
4485 pathB.cubicTo(2, 3, 2, 1, 3, 0);
4486 pathB.close();
4487 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
4488}
4489
4490static void loops20i(skiatest::Reporter* reporter, const char* filename) {
4491 SkPath path, pathB;
4492 path.setFillType(SkPath::kWinding_FillType);
4493 path.moveTo(1, 2);
4494 path.cubicTo(0, 2, 0.833333313f, 2, 1, 3.66666651f);
4495 path.close();
4496 pathB.setFillType(SkPath::kWinding_FillType);
4497 pathB.moveTo(0, 2);
4498 pathB.cubicTo(0.833333313f, 2, 1, 3.66666651f, 1, 2);
4499 pathB.close();
4500 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4501}
4502
4503static void loops21i(skiatest::Reporter* reporter, const char* filename) {
4504 SkPath path, pathB;
4505 path.setFillType(SkPath::kWinding_FillType);
4506 path.moveTo(1, 2);
4507 path.cubicTo(0, 2, 0.833333313f, 2, 1, 4);
4508 path.close();
4509 pathB.setFillType(SkPath::kWinding_FillType);
4510 pathB.moveTo(0, 2);
4511 pathB.cubicTo(0.833333313f, 2, 1, 4, 1, 2);
4512 pathB.close();
4513 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4514}
4515
4516static void loops22i(skiatest::Reporter* reporter, const char* filename) {
4517 SkPath path, pathB;
4518 path.setFillType(SkPath::kWinding_FillType);
4519 path.moveTo(1, 3);
4520 path.cubicTo(0, 3, 0.833333313f, 3, 1, 4.66666651f);
4521 path.close();
4522 pathB.setFillType(SkPath::kWinding_FillType);
4523 pathB.moveTo(0, 3);
4524 pathB.cubicTo(0.833333313f, 3, 1, 4.66666651f, 1, 3);
4525 pathB.close();
4526 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4527}
4528
4529static void loops23i(skiatest::Reporter* reporter, const char* filename) {
4530 SkPath path, pathB;
4531 path.setFillType(SkPath::kWinding_FillType);
4532 path.moveTo(1, 5);
4533 path.cubicTo(0, 1, 6.16666698f, 5.66666698f, -5.66666651f, 6.66666651f);
4534 path.close();
4535 pathB.setFillType(SkPath::kWinding_FillType);
4536 pathB.moveTo(0, 1);
4537 pathB.cubicTo(6.16666698f, 5.66666698f, -5.66666651f, 6.66666651f, 1, 5);
4538 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004539 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004540}
4541
4542static void loops24i(skiatest::Reporter* reporter, const char* filename) {
4543 SkPath path, pathB;
4544 path.setFillType(SkPath::kWinding_FillType);
4545 path.moveTo(1, 2);
4546 path.cubicTo(0, 2, 0.833333313f, 2, 1, 3);
4547 path.close();
4548 pathB.setFillType(SkPath::kWinding_FillType);
4549 pathB.moveTo(0, 2);
4550 pathB.cubicTo(0.833333313f, 2, 1, 3, 1, 2);
4551 pathB.close();
4552 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4553}
4554
4555static void loops25i(skiatest::Reporter* reporter, const char* filename) {
4556 SkPath path, pathB;
4557 path.setFillType(SkPath::kWinding_FillType);
4558 path.moveTo(1, 5);
4559 path.cubicTo(0, 5, 0.833333313f, 5, 1, 7);
4560 path.close();
4561 pathB.setFillType(SkPath::kWinding_FillType);
4562 pathB.moveTo(0, 5);
4563 pathB.cubicTo(0.833333313f, 5, 1, 7, 1, 5);
4564 pathB.close();
4565 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4566}
4567
4568static void loops26i(skiatest::Reporter* reporter, const char* filename) {
4569 SkPath path, pathB;
4570 path.setFillType(SkPath::kWinding_FillType);
4571 path.moveTo(1, 6);
4572 path.cubicTo(0, 2, 6.16666698f, 6.66666698f, -5.66666651f, 7.66666651f);
4573 path.close();
4574 pathB.setFillType(SkPath::kWinding_FillType);
4575 pathB.moveTo(0, 2);
4576 pathB.cubicTo(6.16666698f, 6.66666698f, -5.66666651f, 7.66666651f, 1, 6);
4577 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004578 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004579}
4580
4581static void loops27i(skiatest::Reporter* reporter, const char* filename) {
4582 SkPath path, pathB;
4583 path.setFillType(SkPath::kWinding_FillType);
4584 path.moveTo(1, 3);
4585 path.cubicTo(0, 3, 0.833333313f, 3, 1, 4.33333349f);
4586 path.close();
4587 pathB.setFillType(SkPath::kWinding_FillType);
4588 pathB.moveTo(0, 3);
4589 pathB.cubicTo(0.833333313f, 3, 1, 4.33333349f, 1, 3);
4590 pathB.close();
4591 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4592}
4593
4594static void loops28i(skiatest::Reporter* reporter, const char* filename) {
4595 SkPath path, pathB;
4596 path.setFillType(SkPath::kWinding_FillType);
4597 path.moveTo(2, 3);
4598 path.cubicTo(1, 3, 1.83333337f, 3, 2, 4.66666651f);
4599 path.close();
4600 pathB.setFillType(SkPath::kWinding_FillType);
4601 pathB.moveTo(1, 3);
4602 pathB.cubicTo(1.83333337f, 3, 2, 4.66666651f, 2, 3);
4603 pathB.close();
4604 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4605}
4606
4607static void loops29i(skiatest::Reporter* reporter, const char* filename) {
4608 SkPath path, pathB;
4609 path.setFillType(SkPath::kWinding_FillType);
4610 path.moveTo(2, 4);
4611 path.cubicTo(0, 4, 1.66666663f, 4, 2, 7.33333302f);
4612 path.close();
4613 pathB.setFillType(SkPath::kWinding_FillType);
4614 pathB.moveTo(0, 4);
4615 pathB.cubicTo(1.66666663f, 4, 2, 7.33333302f, 2, 4);
4616 pathB.close();
4617 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4618}
4619
4620static void loops30i(skiatest::Reporter* reporter, const char* filename) {
4621 SkPath path, pathB;
4622 path.setFillType(SkPath::kWinding_FillType);
4623 path.moveTo(2, 4);
4624 path.cubicTo(0, 4, 1.66666663f, 4, 2, 8);
4625 path.close();
4626 pathB.setFillType(SkPath::kWinding_FillType);
4627 pathB.moveTo(0, 4);
4628 pathB.cubicTo(1.66666663f, 4, 2, 8, 2, 4);
4629 pathB.close();
4630 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4631}
4632
4633static void loops31i(skiatest::Reporter* reporter, const char* filename) {
4634 SkPath path, pathB;
4635 path.setFillType(SkPath::kWinding_FillType);
4636 path.moveTo(2, 5);
4637 path.cubicTo(1, 5, 1.83333337f, 5, 2, 6.66666651f);
4638 path.close();
4639 pathB.setFillType(SkPath::kWinding_FillType);
4640 pathB.moveTo(1, 5);
4641 pathB.cubicTo(1.83333337f, 5, 2, 6.66666651f, 2, 5);
4642 pathB.close();
4643 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4644}
4645
4646static void loops32i(skiatest::Reporter* reporter, const char* filename) {
4647 SkPath path, pathB;
4648 path.setFillType(SkPath::kWinding_FillType);
4649 path.moveTo(2, 6);
4650 path.cubicTo(1, 6, 1.83333337f, 6, 2, 8);
4651 path.close();
4652 pathB.setFillType(SkPath::kWinding_FillType);
4653 pathB.moveTo(1, 6);
4654 pathB.cubicTo(1.83333337f, 6, 2, 8, 2, 6);
4655 pathB.close();
4656 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4657}
4658
4659static void loops33i(skiatest::Reporter* reporter, const char* filename) {
4660 SkPath path, pathB;
4661 path.setFillType(SkPath::kWinding_FillType);
4662 path.moveTo(2, 6);
4663 path.cubicTo(1, 2, 7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f);
4664 path.close();
4665 pathB.setFillType(SkPath::kWinding_FillType);
4666 pathB.moveTo(1, 2);
4667 pathB.cubicTo(7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f, 2, 6);
4668 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004669 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004670}
4671
4672static void loops33iMod(skiatest::Reporter* reporter, const char* filename) {
4673 SkPoint pts[] = {{2, 6}, {1, 2}, {7.16666698f, 6.66666698f}, {-4.66666651f, 7.66666651f},
4674 {1, 2}, {7.16666698f, 6.66666698f}, {-4.66666651f, 7.66666651f}, {2, 6}};
4675 bool up = false;
4676 float offset = 0.0380172729f;
4677 float step = 7.62939453e-006f;
4678 bool lastResult = true;
4679 // for (int i = 0; i < 30; ++i) {
4680 SkString name(filename);
4681 // name.appendS32(i);
4682 // if (i > 0) {
4683 // SkDebugf("\n\n<div id=\"%s\">\n", name.c_str());
4684 // }
4685 pts[5].fY = 6.66666698f + offset;
4686 SkPath path, pathB;
4687 path.setFillType(SkPath::kWinding_FillType);
4688 path.moveTo(pts[0]);
4689 path.cubicTo(pts[1], pts[2], pts[3]);
4690 path.close();
4691 pathB.setFillType(SkPath::kWinding_FillType);
4692 pathB.moveTo(pts[4]);
4693 pathB.cubicTo(pts[5], pts[6], pts[7]);
4694 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004695 bool result = testPathOp(reporter, path, pathB, kIntersect_SkPathOp, name.c_str());
caryclarkaec25102015-04-29 08:28:30 -07004696 if (lastResult != result) {
4697 up = !up;
4698 }
4699 step /= 2;
4700 offset += up ? step : -step;
4701 lastResult = result;
4702 // }
4703}
4704
4705
4706static void loops33iAsQuads(skiatest::Reporter* reporter, const char* filename) {
4707 SkPath path, pathB;
4708 path.setFillType(SkPath::kWinding_FillType);
4709 path.moveTo(2, 6);
4710 path.cubicTo(1, 2, 7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f);
4711 path.close();
4712 pathB.setFillType(SkPath::kWinding_FillType);
4713 pathB.moveTo(1, 2);
4714 pathB.cubicTo(7.16666698f, 6.66666698f, -4.66666651f, 7.66666651f, 2, 6);
4715 pathB.close();
4716 SkPath qPath, qPathB;
4717 CubicPathToQuads(path, &qPath);
4718 CubicPathToQuads(pathB, &qPathB);
4719 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
4720}
4721
4722static void loops34i(skiatest::Reporter* reporter, const char* filename) {
4723 SkPath path, pathB;
4724 path.setFillType(SkPath::kWinding_FillType);
4725 path.moveTo(3, 4);
4726 path.cubicTo(0, 4, 2.5f, 4, 3, 9);
4727 path.close();
4728 pathB.setFillType(SkPath::kWinding_FillType);
4729 pathB.moveTo(0, 4);
4730 pathB.cubicTo(2.5f, 4, 3, 9, 3, 4);
4731 pathB.close();
4732 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4733}
4734
4735static void loops35i(skiatest::Reporter* reporter, const char* filename) {
4736 SkPath path, pathB;
4737 path.setFillType(SkPath::kWinding_FillType);
4738 path.moveTo(3, 4);
4739 path.cubicTo(0, 4, 2.5f, 4, 3, 10);
4740 path.close();
4741 pathB.setFillType(SkPath::kWinding_FillType);
4742 pathB.moveTo(0, 4);
4743 pathB.cubicTo(2.5f, 4, 3, 10, 3, 4);
4744 pathB.close();
4745 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4746}
4747
4748static void loops36i(skiatest::Reporter* reporter, const char* filename) {
4749 SkPath path, pathB;
4750 path.setFillType(SkPath::kWinding_FillType);
4751 path.moveTo(3, 4);
4752 path.cubicTo(1, 4, 2.66666675f, 4, 3, 8);
4753 path.close();
4754 pathB.setFillType(SkPath::kWinding_FillType);
4755 pathB.moveTo(1, 4);
4756 pathB.cubicTo(2.66666675f, 4, 3, 8, 3, 4);
4757 pathB.close();
4758 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4759}
4760
4761static void loops37i(skiatest::Reporter* reporter, const char* filename) {
4762 SkPath path, pathB;
4763 path.setFillType(SkPath::kWinding_FillType);
4764 path.moveTo(2, 4);
4765 path.cubicTo(1, 4, 1.83333337f, 4, 2, 5.33333349f);
4766 path.close();
4767 pathB.setFillType(SkPath::kWinding_FillType);
4768 pathB.moveTo(1, 4);
4769 pathB.cubicTo(1.83333337f, 4, 2, 5.33333349f, 2, 4);
4770 pathB.close();
4771 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4772}
4773
4774static void loops38i(skiatest::Reporter* reporter, const char* filename) {
4775 SkPath path, pathB;
4776 path.setFillType(SkPath::kWinding_FillType);
4777 path.moveTo(3, 4);
4778 path.cubicTo(2, 4, 2.83333325f, 4, 3, 6);
4779 path.close();
4780 pathB.setFillType(SkPath::kWinding_FillType);
4781 pathB.moveTo(2, 4);
4782 pathB.cubicTo(2.83333325f, 4, 3, 6, 3, 4);
4783 pathB.close();
4784 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4785}
4786
4787static void loops39i(skiatest::Reporter* reporter, const char* filename) {
4788 SkPath path, pathB;
4789 path.setFillType(SkPath::kWinding_FillType);
4790 path.moveTo(3, 5);
4791 path.cubicTo(0, 5, 2.5f, 5, 3, 10);
4792 path.close();
4793 pathB.setFillType(SkPath::kWinding_FillType);
4794 pathB.moveTo(0, 5);
4795 pathB.cubicTo(2.5f, 5, 3, 10, 3, 5);
4796 pathB.close();
4797 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4798}
4799
4800static void loops40i(skiatest::Reporter* reporter, const char* filename) {
4801 SkPath path, pathB;
4802 path.setFillType(SkPath::kWinding_FillType);
4803 path.moveTo(3, 5);
4804 path.cubicTo(0, 5, 2.5f, 5, 3, 11);
4805 path.close();
4806 pathB.setFillType(SkPath::kWinding_FillType);
4807 pathB.moveTo(0, 5);
4808 pathB.cubicTo(2.5f, 5, 3, 11, 3, 5);
4809 pathB.close();
4810 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4811}
4812
4813static void loops40iAsQuads(skiatest::Reporter* reporter, const char* filename) {
4814 SkPath path, pathB;
4815 path.setFillType(SkPath::kWinding_FillType);
4816 path.moveTo(3, 5);
4817 path.cubicTo(0, 5, 2.5f, 5, 3, 11);
4818 path.close();
4819 pathB.setFillType(SkPath::kWinding_FillType);
4820 pathB.moveTo(0, 5);
4821 pathB.cubicTo(2.5f, 5, 3, 11, 3, 5);
4822 pathB.close();
4823 SkPath qPath, qPathB;
4824 CubicPathToQuads(path, &qPath);
4825 CubicPathToQuads(pathB, &qPathB);
4826 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
4827}
4828
caryclarkaec25102015-04-29 08:28:30 -07004829static void loops44i(skiatest::Reporter* reporter, const char* filename) {
4830 SkPath path, pathB;
4831 path.setFillType(SkPath::kWinding_FillType);
4832 path.moveTo(1, 5);
4833 path.cubicTo(0, 1, 7.33333302f, 5.33333349f, -7, 7);
4834 path.close();
4835 pathB.setFillType(SkPath::kWinding_FillType);
4836 pathB.moveTo(0, 1);
4837 pathB.cubicTo(7.33333302f, 5.33333349f, -7, 7, 1, 5);
4838 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004839 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004840}
4841
caryclarkaec25102015-04-29 08:28:30 -07004842static void loops45i(skiatest::Reporter* reporter, const char* filename) {
4843 SkPath path, pathB;
4844 path.setFillType(SkPath::kWinding_FillType);
4845 path.moveTo(1, 6);
4846 path.cubicTo(0, 2, 7.33333302f, 6.33333302f, -7, 8);
4847 path.close();
4848 pathB.setFillType(SkPath::kWinding_FillType);
4849 pathB.moveTo(0, 2);
4850 pathB.cubicTo(7.33333302f, 6.33333302f, -7, 8, 1, 6);
4851 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004852 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004853}
4854
caryclarkaec25102015-04-29 08:28:30 -07004855static void loops46i(skiatest::Reporter* reporter, const char* filename) {
4856 SkPath path, pathB;
4857 path.setFillType(SkPath::kWinding_FillType);
4858 path.moveTo(2, 6);
4859 path.cubicTo(1, 2, 8.33333302f, 6.33333302f, -6, 8);
4860 path.close();
4861 pathB.setFillType(SkPath::kWinding_FillType);
4862 pathB.moveTo(1, 2);
4863 pathB.cubicTo(8.33333302f, 6.33333302f, -6, 8, 2, 6);
4864 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004865 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004866}
4867
4868/*
caryclark55888e42016-07-18 10:01:36 -07004869FAILED: d:\cygwin\puregit\tests\pathopsextendedtest.cpp:346 0 */
caryclarkaec25102015-04-29 08:28:30 -07004870static void loops47i(skiatest::Reporter* reporter, const char* filename) {
4871 SkPath path, pathB;
4872 path.setFillType(SkPath::kWinding_FillType);
4873 path.moveTo(2, 4);
4874 path.cubicTo(0, 1, 6, 5.83333302f, -4, 8);
4875 path.close();
4876 pathB.setFillType(SkPath::kWinding_FillType);
4877 pathB.moveTo(0, 1);
4878 pathB.cubicTo(6, 5.83333302f, -4, 8, 2, 4);
4879 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004880 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004881}
4882
caryclarkaec25102015-04-29 08:28:30 -07004883static void loops48i(skiatest::Reporter* reporter, const char* filename) {
4884 SkPath path, pathB;
4885 path.setFillType(SkPath::kWinding_FillType);
4886 path.moveTo(2, 6);
4887 path.cubicTo(0, 1, 9.33333302f, 6.83333302f, -8.33333302f, 9.16666603f);
4888 path.close();
4889 pathB.setFillType(SkPath::kWinding_FillType);
4890 pathB.moveTo(0, 1);
4891 pathB.cubicTo(9.33333302f, 6.83333302f, -8.33333302f, 9.16666603f, 2, 6);
4892 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004893 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004894}
4895
caryclarkaec25102015-04-29 08:28:30 -07004896static void loops49i(skiatest::Reporter* reporter, const char* filename) {
4897 SkPath path, pathB;
4898 path.setFillType(SkPath::kWinding_FillType);
4899 path.moveTo(0, 2);
4900 path.cubicTo(1, 4, -0.166666687f, 2.66666675f, 1.66666675f, 2);
4901 path.close();
4902 pathB.setFillType(SkPath::kWinding_FillType);
4903 pathB.moveTo(1, 4);
4904 pathB.cubicTo(-0.166666687f, 2.66666675f, 1.66666675f, 2, 0, 2);
4905 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004906 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004907}
4908
caryclarkaec25102015-04-29 08:28:30 -07004909static void loops50i(skiatest::Reporter* reporter, const char* filename) {
4910 SkPath path, pathB;
4911 path.setFillType(SkPath::kWinding_FillType);
4912 path.moveTo(0, 3);
4913 path.cubicTo(1, 5, -0.166666687f, 3.66666675f, 1.66666675f, 3);
4914 path.close();
4915 pathB.setFillType(SkPath::kWinding_FillType);
4916 pathB.moveTo(1, 5);
4917 pathB.cubicTo(-0.166666687f, 3.66666675f, 1.66666675f, 3, 0, 3);
4918 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004919 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004920}
4921
caryclarkaec25102015-04-29 08:28:30 -07004922static void loops51i(skiatest::Reporter* reporter, const char* filename) {
4923 SkPath path, pathB;
4924 path.setFillType(SkPath::kWinding_FillType);
4925 path.moveTo(1, 2);
4926 path.cubicTo(2, 4, 0.833333313f, 2.66666675f, 2.66666675f, 2);
4927 path.close();
4928 pathB.setFillType(SkPath::kWinding_FillType);
4929 pathB.moveTo(2, 4);
4930 pathB.cubicTo(0.833333313f, 2.66666675f, 2.66666675f, 2, 1, 2);
4931 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004932 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004933}
4934
caryclarkaec25102015-04-29 08:28:30 -07004935static void loops52i(skiatest::Reporter* reporter, const char* filename) {
4936 SkPath path, pathB;
4937 path.setFillType(SkPath::kWinding_FillType);
4938 path.moveTo(1, 3);
4939 path.cubicTo(2, 5, 0.833333313f, 3.66666675f, 2.66666675f, 3);
4940 path.close();
4941 pathB.setFillType(SkPath::kWinding_FillType);
4942 pathB.moveTo(2, 5);
4943 pathB.cubicTo(0.833333313f, 3.66666675f, 2.66666675f, 3, 1, 3);
4944 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004945 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004946}
4947
caryclarkaec25102015-04-29 08:28:30 -07004948static void loops53i(skiatest::Reporter* reporter, const char* filename) {
4949 SkPath path, pathB;
4950 path.setFillType(SkPath::kWinding_FillType);
4951 path.moveTo(2, 3);
4952 path.cubicTo(3, 5, 1.83333325f, 3.66666675f, 3.66666651f, 3);
4953 path.close();
4954 pathB.setFillType(SkPath::kWinding_FillType);
4955 pathB.moveTo(3, 5);
4956 pathB.cubicTo(1.83333325f, 3.66666675f, 3.66666651f, 3, 2, 3);
4957 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004958 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004959}
4960
caryclarkaec25102015-04-29 08:28:30 -07004961static void loops54i(skiatest::Reporter* reporter, const char* filename) {
4962 SkPath path, pathB;
4963 path.setFillType(SkPath::kWinding_FillType);
4964 path.moveTo(0, 2);
4965 path.cubicTo(1, 4, 0, 3, 1.66666675f, 2);
4966 path.close();
4967 pathB.setFillType(SkPath::kWinding_FillType);
4968 pathB.moveTo(1, 4);
4969 pathB.cubicTo(0, 3, 1.66666675f, 2, 0, 2);
4970 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004971 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004972}
4973
caryclarkaec25102015-04-29 08:28:30 -07004974static void loops55i(skiatest::Reporter* reporter, const char* filename) {
4975 SkPath path, pathB;
4976 path.setFillType(SkPath::kWinding_FillType);
4977 path.moveTo(0, 3);
4978 path.cubicTo(1, 5, 0, 4, 1.66666675f, 3);
4979 path.close();
4980 pathB.setFillType(SkPath::kWinding_FillType);
4981 pathB.moveTo(1, 5);
4982 pathB.cubicTo(0, 4, 1.66666675f, 3, 0, 3);
4983 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004984 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004985}
4986
caryclarkaec25102015-04-29 08:28:30 -07004987static void loops56i(skiatest::Reporter* reporter, const char* filename) {
4988 SkPath path, pathB;
4989 path.setFillType(SkPath::kWinding_FillType);
4990 path.moveTo(1, 2);
4991 path.cubicTo(2, 4, 0.99999994f, 3, 2.66666675f, 2);
4992 path.close();
4993 pathB.setFillType(SkPath::kWinding_FillType);
4994 pathB.moveTo(2, 4);
4995 pathB.cubicTo(0.99999994f, 3, 2.66666675f, 2, 1, 2);
4996 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07004997 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07004998}
4999
caryclarkaec25102015-04-29 08:28:30 -07005000static void loops57i(skiatest::Reporter* reporter, const char* filename) {
5001 SkPath path, pathB;
5002 path.setFillType(SkPath::kWinding_FillType);
5003 path.moveTo(1, 3);
5004 path.cubicTo(2, 5, 0.99999994f, 4, 2.66666675f, 3);
5005 path.close();
5006 pathB.setFillType(SkPath::kWinding_FillType);
5007 pathB.moveTo(2, 5);
5008 pathB.cubicTo(0.99999994f, 4, 2.66666675f, 3, 1, 3);
5009 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07005010 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07005011}
5012
caryclarkaec25102015-04-29 08:28:30 -07005013static void loops58i(skiatest::Reporter* reporter, const char* filename) {
5014 SkPath path, pathB;
5015 path.setFillType(SkPath::kWinding_FillType);
5016 path.moveTo(2, 3);
5017 path.cubicTo(3, 5, 2, 4, 3.66666651f, 3);
5018 path.close();
5019 pathB.setFillType(SkPath::kWinding_FillType);
5020 pathB.moveTo(3, 5);
5021 pathB.cubicTo(2, 4, 3.66666651f, 3, 2, 3);
5022 pathB.close();
caryclark624637c2015-05-11 07:21:27 -07005023 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclarkaec25102015-04-29 08:28:30 -07005024}
5025
caryclark624637c2015-05-11 07:21:27 -07005026static void loops58iAsQuads(skiatest::Reporter* reporter, const char* filename) {
5027 SkPath path, pathB;
5028 path.setFillType(SkPath::kWinding_FillType);
5029 path.moveTo(2, 3);
5030 path.cubicTo(3, 5, 2, 4, 3.66666651f, 3);
5031 path.close();
5032 pathB.setFillType(SkPath::kWinding_FillType);
5033 pathB.moveTo(3, 5);
5034 pathB.cubicTo(2, 4, 3.66666651f, 3, 2, 3);
5035 pathB.close();
5036 SkPath qPath, qPathB;
5037 CubicPathToQuads(path, &qPath);
5038 CubicPathToQuads(pathB, &qPathB);
5039// SkPoint from = {2.61714339f,1.90228665f};
5040// SkPoint to = {2.617045833359139f,1.9013528935803314f};
5041// path_edit(from, to, &qPathB);
5042 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
5043}
5044
caryclarkaec25102015-04-29 08:28:30 -07005045static void loops59i(skiatest::Reporter* reporter, const char* filename) {
5046 SkPath path, pathB;
5047 path.setFillType(SkPath::kWinding_FillType);
5048 path.moveTo(0, 6);
5049 path.cubicTo(1, 2, 7.33333302f, 1.66666663f, -7.5f, 2);
5050 path.close();
5051 pathB.setFillType(SkPath::kWinding_FillType);
5052 pathB.moveTo(1, 2);
5053 pathB.cubicTo(7.33333302f, 1.66666663f, -7.5f, 2, 0, 6);
5054 pathB.close();
5055 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5056}
5057
caryclarkaec25102015-04-29 08:28:30 -07005058static void loops59iasQuads(skiatest::Reporter* reporter, const char* filename) {
5059 SkPath path, pathB;
5060 path.setFillType(SkPath::kWinding_FillType);
5061 path.moveTo(0, 6);
5062 path.cubicTo(1, 2, 7.33333302f, 1.66666663f, -7.5f, 2);
5063 path.close();
5064 pathB.setFillType(SkPath::kWinding_FillType);
5065 pathB.moveTo(1, 2);
5066 pathB.cubicTo(7.33333302f, 1.66666663f, -7.5f, 2, 0, 6);
5067 pathB.close();
5068 SkPath qPath, qPathB;
5069 CubicPathToQuads(path, &qPath);
5070 CubicPathToQuads(pathB, &qPathB);
5071 SkPoint from = {2.61714339f,1.90228665f};
5072 SkPoint to = {2.617045833359139f,1.9013528935803314f};
5073 path_edit(from, to, &qPathB);
5074 testPathOp(reporter, qPath, qPathB, kIntersect_SkPathOp, filename);
5075}
5076
5077static void cubics41d(skiatest::Reporter* reporter, const char* filename) {
5078 SkPath path, pathB;
5079 path.setFillType(SkPath::kWinding_FillType);
5080 path.moveTo(0, 1);
5081 path.cubicTo(1, 4, 3, 0, 3, 1);
5082 path.close();
5083 pathB.setFillType(SkPath::kWinding_FillType);
5084 pathB.moveTo(0, 3);
5085 pathB.cubicTo(1, 3, 1, 0, 4, 1);
5086 pathB.close();
5087 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5088}
5089
caryclark624637c2015-05-11 07:21:27 -07005090void loops61i(skiatest::Reporter* reporter, const char* filename) {
5091 SkPath path, pathB;
5092 path.setFillType(SkPath::kWinding_FillType);
5093 path.moveTo(0, 1);
5094 path.cubicTo(1, 5, -6.33333302f, 0.666666627f, 8, -1);
5095 path.close();
5096 pathB.setFillType(SkPath::kWinding_FillType);
5097 pathB.moveTo(1, 5);
5098 pathB.cubicTo(-6.33333302f, 0.666666627f, 8, -1, 0, 1);
5099 pathB.close();
caryclarkbca19f72015-05-13 08:23:48 -07005100 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark624637c2015-05-11 07:21:27 -07005101}
5102
5103static void loops62i(skiatest::Reporter* reporter, const char* filename) {
5104 SkPath path, pathB;
5105 path.setFillType(SkPath::kWinding_FillType);
5106 path.moveTo(0, 2);
5107 path.cubicTo(1, 6, -6.33333302f, 1.66666663f, 8, 0);
5108 path.close();
5109 pathB.setFillType(SkPath::kWinding_FillType);
5110 pathB.moveTo(1, 6);
5111 pathB.cubicTo(-6.33333302f, 1.66666663f, 8, 0, 0, 2);
5112 pathB.close();
caryclarkbca19f72015-05-13 08:23:48 -07005113 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark624637c2015-05-11 07:21:27 -07005114}
5115
5116static void loops63i(skiatest::Reporter* reporter, const char* filename) {
5117 SkPath path, pathB;
5118 path.setFillType(SkPath::kWinding_FillType);
5119 path.moveTo(0, 1);
5120 path.cubicTo(2, 4, -4, -0.833333254f, 6, -3);
5121 path.close();
5122 pathB.setFillType(SkPath::kWinding_FillType);
5123 pathB.moveTo(2, 4);
5124 pathB.cubicTo(-4, -0.833333254f, 6, -3, 0, 1);
5125 pathB.close();
caryclarkbca19f72015-05-13 08:23:48 -07005126 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
caryclark624637c2015-05-11 07:21:27 -07005127}
5128
5129static void cubics44d(skiatest::Reporter* reporter, const char* filename) {
5130 SkPath path, pathB;
5131 path.setFillType(SkPath::kWinding_FillType);
5132 path.moveTo(3, 4);
5133 path.cubicTo(2, 5, 3, 1, 6, 2);
5134 path.close();
5135 pathB.setFillType(SkPath::kWinding_FillType);
5136 pathB.moveTo(1, 3);
5137 pathB.cubicTo(2, 6, 4, 3, 5, 2);
5138 pathB.close();
caryclarkbca19f72015-05-13 08:23:48 -07005139 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark624637c2015-05-11 07:21:27 -07005140}
5141
5142static void cubics45u(skiatest::Reporter* reporter, const char* filename) {
5143 SkPath path, pathB;
5144 path.setFillType(SkPath::kWinding_FillType);
5145 path.moveTo(1, 3);
5146 path.cubicTo(2, 6, 4, 3, 5, 2);
5147 path.close();
5148 pathB.setFillType(SkPath::kWinding_FillType);
5149 pathB.moveTo(3, 4);
5150 pathB.cubicTo(2, 5, 3, 1, 6, 2);
5151 pathB.close();
caryclarkbca19f72015-05-13 08:23:48 -07005152 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename);
caryclark624637c2015-05-11 07:21:27 -07005153}
5154
caryclark94c902e2015-08-18 07:12:43 -07005155static void fuzz38(skiatest::Reporter* reporter, const char* filename) {
5156 SkPath path, pathB;
5157 path.moveTo(100.34f, 303.312f);
5158 path.lineTo(-1e+08, 303.312f);
5159 path.lineTo(102, 310.156f);
5160 path.lineTo(100.34f, 310.156f);
5161 path.lineTo(100.34f, 303.312f);
5162 path.close();
caryclark55888e42016-07-18 10:01:36 -07005163 testPathOpCheck(reporter, path, pathB, kUnion_SkPathOp, filename, true);
caryclark94c902e2015-08-18 07:12:43 -07005164}
5165
caryclark580c40a2015-09-01 06:22:36 -07005166static void crbug_526025(skiatest::Reporter* reporter, const char* filename) {
caryclarkae576b72015-08-31 09:46:20 -07005167 SkPath path;
5168 path.setFillType((SkPath::FillType) 1);
5169path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.14748e+09f
5170path.cubicTo(SkBits2Float(0x4e0d628f), SkBits2Float(0xceffffff), SkBits2Float(0x4e800003), SkBits2Float(0xcec6b143), SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffc)); // 5.93012e+08f, -2.14748e+09f, 1.07374e+09f, -1.66675e+09f, 1.07374e+09f, -1.07374e+09f
5171path.cubicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcde53aee), SkBits2Float(0x4e0d6292), SkBits2Float(0xc307820e), SkBits2Float(0x44627d00), SkBits2Float(0x437ffff2)); // 1.07374e+09f, -4.80731e+08f, 5.93012e+08f, -135.508f, 905.953f, 256
5172path.lineTo(SkBits2Float(0x444bf3bc), SkBits2Float(0x4460537e)); // 815.808f, 897.305f
5173path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
5174path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
5175path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
5176path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
5177path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
5178path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
5179
5180 SkPath path1(path);
5181 path.reset();
5182 path.setFillType((SkPath::FillType) 0);
5183path.moveTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
5184path.lineTo(SkBits2Float(0x45d5c000), SkBits2Float(0x43870000)); // 6840, 270
5185path.lineTo(SkBits2Float(0xd0a00000), SkBits2Float(0x4cbebc20)); // -2.14748e+10f, 1e+08
5186path.lineTo(SkBits2Float(0x451f7000), SkBits2Float(0x42800000)); // 2551, 64
5187path.lineTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
5188path.close();
5189
5190 SkPath path2(path);
5191 testPathOp(reporter, path1, path2, (SkPathOp) 2, filename);
5192}
5193
caryclark2bec26a2016-05-26 09:01:47 -07005194static void fuzzX_392(skiatest::Reporter* reporter, const char* filename) {
5195 SkPath path;
5196 path.setFillType(SkPath::kEvenOdd_FillType);
5197path.moveTo(SkBits2Float(0x41e80000), SkBits2Float(0x43bde212)); // 29, 379.766f
5198path.lineTo(SkBits2Float(0x41e80000), SkBits2Float(0x43bdc7ef)); // 29, 379.562f
5199path.conicTo(SkBits2Float(0x42a5861e), SkBits2Float(0x43c61f86), SkBits2Float(0x430b0610), SkBits2Float(0x43c61f86), SkBits2Float(0x3f7d23f3)); // 82.7619f, 396.246f, 139.024f, 396.246f, 0.98883f
5200path.conicTo(SkBits2Float(0x42a58e20), SkBits2Float(0x43c61f86), SkBits2Float(0x41e80000), SkBits2Float(0x43bde212), SkBits2Float(0x3f7d2cf5)); // 82.7776f, 396.246f, 29, 379.766f, 0.988967f
5201path.close();
5202
5203 SkPath path1(path);
5204 path.setFillType(SkPath::kWinding_FillType);
5205path.moveTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0xc3a31d72)); // -236.484f, -326.23f
5206path.lineTo(SkBits2Float(0xc367a4ae), SkBits2Float(0xc3a31d72)); // -231.643f, -326.23f
5207path.lineTo(SkBits2Float(0x430b0610), SkBits2Float(0x43c61f86)); // 139.024f, 396.246f
5208path.lineTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0x43c61f86)); // -236.484f, 396.246f
5209
5210 SkPath path2(path);
5211 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
5212}
5213
caryclark55888e42016-07-18 10:01:36 -07005214static void dean2(skiatest::Reporter* reporter, const char* filename) {
5215 SkPath path;
5216 path.setFillType((SkPath::FillType) 0);
5217path.moveTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5218path.cubicTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b), SkBits2Float(0x41531912), SkBits2Float(0x3f130322), SkBits2Float(0x4154a02b), SkBits2Float(0x3f2b74b3)); // 0.669749f, 13.2891f, 13.1936f, 0.574267f, 13.2891f, 0.669749f
5219path.cubicTo(SkBits2Float(0x414a835a), SkBits2Float(0x3ec07ba6), SkBits2Float(0x413fcc0d), SkBits2Float(0x3e193319), SkBits2Float(0x4134a02b), SkBits2Float(0x00000000)); // 12.6571f, 0.375943f, 11.9873f, 0.149609f, 11.2891f, 0
5220path.lineTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5221path.close();
5222 SkPath path1(path);
5223
5224 path.reset();
5225 path.setFillType((SkPath::FillType) 0);
5226path.moveTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5227path.cubicTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b), SkBits2Float(0x41531912), SkBits2Float(0x3f130322), SkBits2Float(0x4154a02b), SkBits2Float(0x3f2b74b3)); // 0.669749f, 13.2891f, 13.1936f, 0.574267f, 13.2891f, 0.669749f
5228path.lineTo(SkBits2Float(0x417ab74b), SkBits2Float(0x4154a02b)); // 15.6697f, 13.2891f
5229path.lineTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 13.2891f
5230path.close();
5231 SkPath path2(path);
5232 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
5233}
5234
5235static void cubics_d(skiatest::Reporter* reporter, const char* filename) {
5236 SkPath path, pathB;
5237 path.setFillType(SkPath::kWinding_FillType);
5238 path.moveTo(0, 1);
5239 path.cubicTo(3, 5, 1, 0, 3, 0);
5240 path.close();
5241 pathB.setFillType(SkPath::kWinding_FillType);
5242 pathB.moveTo(0, 1);
5243 pathB.cubicTo(0, 3, 1, 0, 5, 3);
5244 pathB.close();
5245 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5246}
5247
5248static void cubics_d2(skiatest::Reporter* reporter, const char* filename) {
5249 SkPath path, pathB;
5250 path.setFillType(SkPath::kWinding_FillType);
5251 path.moveTo(0, 1);
5252 path.cubicTo(2, 5, 2, 0, 2, 1);
5253 path.close();
5254 pathB.setFillType(SkPath::kWinding_FillType);
5255 pathB.moveTo(0, 2);
5256 pathB.cubicTo(1, 2, 1, 0, 5, 2);
5257 pathB.close();
5258 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5259}
5260
5261static void loops_i1(skiatest::Reporter* reporter, const char* filename) {
5262 SkPath path, pathB;
5263 path.setFillType(SkPath::kWinding_FillType);
5264 path.moveTo(2, 3);
5265 path.cubicTo(0, 4, -0.333333343f, 4.66666651f, 3, 5.83333349f);
5266 path.close();
5267 pathB.setFillType(SkPath::kWinding_FillType);
5268 pathB.moveTo(0, 4);
5269 pathB.cubicTo(-0.333333343f, 4.66666651f, 3, 5.83333349f, 2, 3);
5270 pathB.close();
5271 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5272}
5273
5274static void loops_i2(skiatest::Reporter* reporter, const char* filename) {
5275 SkPath path, pathB;
5276 path.setFillType(SkPath::kWinding_FillType);
5277 path.moveTo(2, 4);
5278 path.cubicTo(0, 5, -0.333333343f, 5.66666651f, 3, 6.83333302f);
5279 path.close();
5280 pathB.setFillType(SkPath::kWinding_FillType);
5281 pathB.moveTo(0, 5);
5282 pathB.cubicTo(-0.333333343f, 5.66666651f, 3, 6.83333302f, 2, 4);
5283 pathB.close();
5284 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5285}
5286
5287static void loops_i3(skiatest::Reporter* reporter, const char* filename) {
5288 SkPath path, pathB;
5289 path.setFillType(SkPath::kWinding_FillType);
5290 path.moveTo(2, 5);
5291 path.cubicTo(0, 6, -0.333333343f, 6.66666651f, 3, 7.83333302f);
5292 path.close();
5293 pathB.setFillType(SkPath::kWinding_FillType);
5294 pathB.moveTo(0, 6);
5295 pathB.cubicTo(-0.333333343f, 6.66666651f, 3, 7.83333302f, 2, 5);
5296 pathB.close();
5297 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5298}
5299
5300static void loops_i4(skiatest::Reporter* reporter, const char* filename) {
5301 SkPath path, pathB;
5302 path.setFillType(SkPath::kWinding_FillType);
5303 path.moveTo(3, 4);
5304 path.cubicTo(1, 5, 0.666666627f, 5.66666651f, 4, 6.83333302f);
5305 path.close();
5306 pathB.setFillType(SkPath::kWinding_FillType);
5307 pathB.moveTo(1, 5);
5308 pathB.cubicTo(0.666666627f, 5.66666651f, 4, 6.83333302f, 3, 4);
5309 pathB.close();
5310 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5311}
5312
5313static void loops_i5(skiatest::Reporter* reporter, const char* filename) {
5314 SkPath path, pathB;
5315 path.setFillType(SkPath::kWinding_FillType);
5316 path.moveTo(3, 5);
5317 path.cubicTo(1, 6, 0.666666627f, 6.66666651f, 4, 7.83333302f);
5318 path.close();
5319 pathB.setFillType(SkPath::kWinding_FillType);
5320 pathB.moveTo(1, 6);
5321 pathB.cubicTo(0.666666627f, 6.66666651f, 4, 7.83333302f, 3, 5);
5322 pathB.close();
5323 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5324}
5325
5326static void loops_i6(skiatest::Reporter* reporter, const char* filename) {
5327 SkPath path, pathB;
5328 path.setFillType(SkPath::kWinding_FillType);
5329 path.moveTo(4, 5);
5330 path.cubicTo(2, 6, 1.66666663f, 6.66666651f, 5, 7.83333302f);
5331 path.close();
5332 pathB.setFillType(SkPath::kWinding_FillType);
5333 pathB.moveTo(2, 6);
5334 pathB.cubicTo(1.66666663f, 6.66666651f, 5, 7.83333302f, 4, 5);
5335 pathB.close();
5336 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5337}
5338
5339static void cubics_d3(skiatest::Reporter* reporter, const char* filename) {
5340 SkPath path, pathB;
5341 path.setFillType(SkPath::kWinding_FillType);
5342 path.moveTo(3, 4);
5343 path.cubicTo(0, 6, 6, 1, 4, 2);
5344 path.close();
5345 pathB.setFillType(SkPath::kWinding_FillType);
5346 pathB.moveTo(1, 6);
5347 pathB.cubicTo(2, 4, 4, 3, 6, 0);
5348 pathB.close();
caryclark81681942016-07-21 10:44:07 -07005349 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
caryclark55888e42016-07-18 10:01:36 -07005350}
5351
5352static void cubics_o(skiatest::Reporter* reporter, const char* filename) {
5353 SkPath path, pathB;
5354 path.setFillType(SkPath::kWinding_FillType);
5355 path.moveTo(1, 4);
5356 path.cubicTo(2, 6, 5, 0, 5, 3);
5357 path.close();
5358 pathB.setFillType(SkPath::kWinding_FillType);
5359 pathB.moveTo(0, 5);
5360 pathB.cubicTo(3, 5, 4, 1, 6, 2);
5361 pathB.close();
5362 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
5363}
5364
caryclark30b9fdd2016-08-31 14:36:29 -07005365static void cubicOp158(skiatest::Reporter* reporter, const char* filename) {
5366 SkPath path, pathB;
5367 path.setFillType(SkPath::kWinding_FillType);
5368 path.moveTo(0,1);
5369 path.cubicTo(2,4, 2,0, 2,0);
5370 path.close();
5371 pathB.setFillType(SkPath::kWinding_FillType);
5372 pathB.moveTo(0,2);
5373 pathB.cubicTo(0,2, 1,0, 4,2);
5374 pathB.close();
5375 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5376}
caryclarkfc560e02016-07-27 08:46:10 -07005377
caryclark27c015d2016-09-23 05:47:20 -07005378static void loop17(skiatest::Reporter* reporter, const char* filename) {
5379 SkPath path, pathB;
5380 path.moveTo(1, 2);
5381 path.cubicTo(0, 3, -0.333333343f, 3.33333325f, 0.833333373f, 3.5f);
5382 path.close();
5383 pathB.moveTo(0, 3);
5384 pathB.cubicTo(-0.333333343f, 3.33333325f, 0.833333373f, 3.5f, 1, 2);
5385 pathB.close();
5386 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
5387}
5388
5389static void circlesOp4(skiatest::Reporter* reporter, const char* filename) {
5390 SkPath path, pathB;
5391 path.setFillType(SkPath::kWinding_FillType);
5392 path.addCircle(0, 1, 5, SkPath::kCW_Direction);
5393 pathB.setFillType(SkPath::kWinding_FillType);
5394 pathB.addCircle(0, 1, 0, SkPath::kCW_Direction);
5395 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename);
5396}
5397
caryclarke3a4e992016-09-28 09:22:17 -07005398static void bug5240(skiatest::Reporter* reporter, const char* filename) {
5399 SkPath path;
5400path.moveTo(815, 82);
5401path.cubicTo(814.4794311523438f, 82.7868881225586f, 814.5330810546875f,
540282.6266555786133f, 814.5291137695312f, 82.6252212524414f);
5403path.cubicTo(814.5229492187500f, 82.6230010986328f, 814.3790283203125f,
540483.0008087158203f, 813.8533935546875f, 82.7072601318359f);
5405path.close();
5406 testPathOp(reporter, path, path, kUnion_SkPathOp, filename);
5407}
5408
caryclark54359292015-03-26 07:52:43 -07005409static void (*skipTest)(skiatest::Reporter* , const char* filename) = 0;
caryclark30b9fdd2016-08-31 14:36:29 -07005410static void (*firstTest)(skiatest::Reporter* , const char* filename) = 0;
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00005411static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0;
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005412
caryclark624637c2015-05-11 07:21:27 -07005413#define TEST(name) { name, #name }
5414
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005415static struct TestDesc tests[] = {
caryclarke3a4e992016-09-28 09:22:17 -07005416 TEST(bug5240),
caryclark27c015d2016-09-23 05:47:20 -07005417 TEST(circlesOp4),
5418 TEST(loop17),
caryclark30b9fdd2016-08-31 14:36:29 -07005419 TEST(cubicOp158),
caryclark55888e42016-07-18 10:01:36 -07005420 TEST(loops_i1),
5421 TEST(loops_i2),
5422 TEST(loops_i3),
5423 TEST(loops_i4),
5424 TEST(loops_i5),
5425 TEST(loops_i6),
5426 TEST(cubics_d3),
5427 TEST(cubics_o),
5428 TEST(cubics_d2),
5429 TEST(cubics_d),
5430 TEST(dean2),
caryclark2bec26a2016-05-26 09:01:47 -07005431 TEST(fuzzX_392),
caryclark580c40a2015-09-01 06:22:36 -07005432 TEST(crbug_526025),
caryclark94c902e2015-08-18 07:12:43 -07005433 TEST(fuzz38),
caryclark624637c2015-05-11 07:21:27 -07005434 TEST(cubics44d),
5435 TEST(cubics45u),
5436 TEST(loops61i),
5437 TEST(loops62i),
5438 TEST(loops63i),
5439 TEST(loops58iAsQuads),
caryclarkaec25102015-04-29 08:28:30 -07005440 TEST(cubics41d),
5441 TEST(loops59iasQuads),
5442 TEST(loops59i),
caryclarkaec25102015-04-29 08:28:30 -07005443 TEST(loops44i),
5444 TEST(loops45i),
5445 TEST(loops46i),
5446 TEST(loops47i),
5447 TEST(loops48i),
5448 TEST(loops49i),
5449 TEST(loops50i),
5450 TEST(loops51i),
5451 TEST(loops52i),
5452 TEST(loops53i),
5453 TEST(loops54i),
5454 TEST(loops55i),
5455 TEST(loops56i),
5456 TEST(loops57i),
5457 TEST(loops58i),
5458 TEST(loops33iMod),
5459 TEST(loops33iAsQuads),
5460 TEST(loops33i),
5461 TEST(loops40i),
5462 TEST(loops40iAsQuads),
5463 TEST(loops39i),
5464 TEST(loops38i),
5465 TEST(loops37i),
5466 TEST(loops36i),
5467 TEST(loops35i),
5468 TEST(loops34i),
5469 TEST(loops32i),
5470 TEST(loops31i),
5471 TEST(loops30i),
5472 TEST(loops29i),
5473 TEST(loops28i),
5474 TEST(loops27i),
5475 TEST(loops26i),
5476 TEST(loops25i),
5477 TEST(loops24i),
5478 TEST(loops23i),
5479 TEST(loops22i),
5480 TEST(loops21i),
5481 TEST(loops20i),
5482 TEST(cubics20d),
caryclark08bc8482015-04-24 09:08:57 -07005483 TEST(cubics6d),
5484 TEST(cubics7d),
5485 TEST(cubics8d),
5486 TEST(cubics9d),
5487 TEST(cubics10u),
5488 TEST(cubics11i),
5489 TEST(cubics12d),
5490 TEST(cubics13d),
5491 TEST(cubics14d),
5492 TEST(cubics15d),
5493 TEST(cubics16i),
5494 TEST(cubics17d),
5495 TEST(cubics18d),
5496 TEST(cubics19d),
5497 TEST(cubicOp157),
5498 TEST(cubicOp142),
caryclark03b03ca2015-04-23 09:13:37 -07005499 TEST(loops4i),
5500 TEST(quadRect1),
5501 TEST(quadRect2),
5502 TEST(quadRect3),
5503 TEST(quadRect4),
5504 TEST(quadRect5),
5505 TEST(quadRect6),
5506 TEST(cubicOp141),
5507 TEST(cubicOp58d),
5508 TEST(loops5i),
5509 TEST(cubicOp140),
5510 TEST(cubicOp139),
5511 TEST(cubics138),
5512 TEST(cubics137),
5513 TEST(cubicOp136a),
5514 TEST(cubicOp136),
5515 TEST(cubicOp135),
5516 TEST(cubicOp134),
5517 TEST(cubicOp133),
caryclark03b03ca2015-04-23 09:13:37 -07005518 TEST(loop12),
caryclark1049f122015-04-20 08:31:59 -07005519 TEST(cubicOp132),
5520 TEST(loop11),
5521 TEST(loop10),
5522 TEST(circlesOp3),
5523 TEST(loop9),
5524 TEST(loop8),
5525 TEST(rects5),
5526 TEST(loop7),
5527 TEST(cubicOp130a),
5528 TEST(rRect1x),
5529 TEST(circlesOp2),
5530 TEST(circlesOp1),
5531 TEST(cubicOp131),
5532 TEST(cubicOp130),
5533 TEST(cubicOp129),
caryclark54359292015-03-26 07:52:43 -07005534 TEST(cubicOp128),
5535 TEST(cubicOp127),
5536 TEST(cubicOp126),
5537 TEST(cubicOp125),
5538 TEST(cubicOp124),
5539 TEST(loop6),
5540 TEST(loop5),
5541 TEST(cubicOp123),
5542 TEST(cubicOp122),
5543 TEST(cubicOp121),
5544 TEST(cubicOp120),
5545 TEST(cubicOp119),
5546 TEST(loop4),
5547 TEST(loop3),
5548 TEST(loop2),
5549 TEST(loop1asQuad),
5550 TEST(loop1),
5551 TEST(issue3517),
5552 TEST(cubicOp118),
5553 TEST(cubicOp117),
5554 TEST(cubicOp116),
5555 TEST(testRect2),
5556 TEST(testRect1),
caryclark65f55312014-11-13 06:58:52 -08005557 TEST(cubicOp115),
caryclark54359292015-03-26 07:52:43 -07005558 TEST(issue2753),
caryclark03b03ca2015-04-23 09:13:37 -07005559 TEST(cubicOp114),
caryclark80a83ad2014-08-12 05:49:37 -07005560 TEST(issue2808),
caryclarke4097e32014-06-18 07:24:19 -07005561 TEST(cubicOp114asQuad),
caryclarkdac1d172014-06-17 05:15:38 -07005562 TEST(rects4),
5563 TEST(rects3),
5564 TEST(rects2),
5565 TEST(rects1),
caryclarkdac1d172014-06-17 05:15:38 -07005566 TEST(issue2540),
commit-bot@chromium.org2db7fe72014-05-07 15:31:40 +00005567 TEST(issue2504),
commit-bot@chromium.org91fc81c2014-04-30 13:37:48 +00005568 TEST(kari1),
commit-bot@chromium.org8cb1daa2014-04-25 12:59:11 +00005569 TEST(quadOp10i),
commit-bot@chromium.org8cb1daa2014-04-25 12:59:11 +00005570 TEST(cubicOp113),
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00005571 TEST(skpcarrot_is24),
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00005572 TEST(issue1417),
commit-bot@chromium.org8cb1daa2014-04-25 12:59:11 +00005573 TEST(cubicOp112),
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00005574 TEST(skpadspert_net23),
5575 TEST(skpadspert_de11),
5576 TEST(findFirst1),
5577 TEST(xOp2i),
5578 TEST(xOp3i),
5579 TEST(xOp1u),
5580 TEST(xOp1i),
5581 TEST(cubicOp111),
5582 TEST(cubicOp110),
5583 TEST(cubicOp109),
5584 TEST(cubicOp108),
5585 TEST(cubicOp107),
5586 TEST(cubicOp106),
5587 TEST(cubicOp105),
5588 TEST(cubicOp104),
5589 TEST(cubicOp103),
5590 TEST(cubicOp102),
5591 TEST(cubicOp101),
5592 TEST(cubicOp100),
5593 TEST(cubicOp99),
5594 TEST(issue1435),
caryclark@google.coma2bbc6e2013-11-01 17:36:03 +00005595 TEST(cubicOp98x),
5596 TEST(cubicOp97x),
caryclark54359292015-03-26 07:52:43 -07005597 TEST(skpcarpetplanet_ru22),
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00005598 TEST(cubicOp96d),
5599 TEST(cubicOp95u),
5600 TEST(skpadbox_lt15),
5601 TEST(skpagentxsites_com55),
5602 TEST(skpadventistmission_org572),
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00005603 TEST(skpadoption_org196),
5604 TEST(skpbambootheme_com12),
5605 TEST(skpbakosoft_com10),
5606 TEST(skpakmmos_ru100),
5607 TEST(skpbangalorenest_com4),
5608 TEST(skpbingoentertainment_net189),
5609 TEST(skpbestred_ru37),
5610 TEST(skpbenzoteh_ru152),
5611 TEST(skpcamcorder_kz21),
5612 TEST(skpcaffelavazzait_com_ua21),
5613 TEST(skpcarrefour_ro62),
5614 TEST(skpcavablar_net563),
5615 TEST(skpinsomnia_gr72),
5616 TEST(skpadbox_lt8),
5617 TEST(skpact_com43),
5618 TEST(skpacesoftech_com47),
5619 TEST(skpabcspark_ca103),
5620 TEST(cubicOp94u),
5621 TEST(cubicOp93d),
5622 TEST(cubicOp92i),
5623 TEST(skpadithya_putr4_blogspot_com551),
5624 TEST(skpadindex_de4),
caryclark@google.com7eaa53d2013-10-02 14:49:34 +00005625 TEST(skpaiaigames_com870),
5626 TEST(skpaaalgarve_org53),
5627 TEST(skpkkiste_to716),
caryclark@google.com570863f2013-09-16 15:55:01 +00005628 TEST(cubicOp91u),
5629 TEST(cubicOp90u),
5630 TEST(cubicOp89u),
5631 TEST(cubicOp88u),
5632 TEST(cubicOp87u),
5633 TEST(cubicOp86i),
5634 TEST(loopEdge2),
5635 TEST(loopEdge1),
5636 TEST(rectOp3x),
5637 TEST(rectOp2i),
5638 TEST(rectOp1i),
5639 TEST(issue1418b),
caryclark@google.com4fdbb222013-07-23 15:27:41 +00005640 TEST(cubicOp85i),
caryclark@google.com4fdbb222013-07-23 15:27:41 +00005641 TEST(issue1418),
5642 TEST(skpkkiste_to98),
caryclark@google.comfa2aeee2013-07-15 13:29:13 +00005643 TEST(skpahrefs_com29),
5644 TEST(cubicOp85d),
5645 TEST(skpahrefs_com88),
caryclark@google.com07e97fc2013-07-08 17:17:02 +00005646 TEST(skphealth_com76),
5647 TEST(skpancestry_com1),
5648 TEST(skpbyte_com1),
5649 TEST(skpeldorado_com_ua1),
5650 TEST(skp96prezzi1),
caryclark@google.comcffbcc32013-06-04 17:59:42 +00005651 TEST(skpClip2),
caryclark@google.comcffbcc32013-06-04 17:59:42 +00005652 TEST(skpClip1),
5653 TEST(cubicOp84d),
5654 TEST(cubicOp83i),
reed@google.com277c3f82013-05-31 15:17:50 +00005655 TEST(cubicOp82i),
5656 TEST(cubicOp81d),
5657 TEST(cubicOp80i),
5658 TEST(cubicOp79u),
reed@google.com277c3f82013-05-31 15:17:50 +00005659 TEST(cubicOp78u),
5660 TEST(cubicOp77i),
caryclark@google.comcffbcc32013-06-04 17:59:42 +00005661 TEST(cubicOp76u),
reed@google.com277c3f82013-05-31 15:17:50 +00005662 TEST(cubicOp75d),
caryclark@google.comcffbcc32013-06-04 17:59:42 +00005663 TEST(cubicOp74d),
reed@google.com277c3f82013-05-31 15:17:50 +00005664 TEST(cubicOp73d),
5665 TEST(cubicOp72i),
5666 TEST(cubicOp71d),
caryclark@google.coma5e55922013-05-07 18:51:31 +00005667 TEST(skp5),
5668 TEST(skp4),
5669 TEST(skp3),
5670 TEST(skp2),
5671 TEST(skp1),
caryclark@google.com6dc7df62013-04-25 11:51:54 +00005672 TEST(rRect1),
caryclark@google.coma5e55922013-05-07 18:51:31 +00005673 TEST(cubicOp70d),
caryclark@google.com03610322013-04-18 15:58:21 +00005674 TEST(cubicOp69d),
5675 TEST(cubicOp68u),
caryclark@google.comb3f09212013-04-17 15:49:16 +00005676 TEST(cubicOp67u),
5677 TEST(cubicOp66u),
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005678 TEST(rectOp1d),
5679 TEST(cubicOp65d),
5680 TEST(cubicOp64d),
5681 TEST(cubicOp63d),
5682 TEST(cubicOp62d),
5683 TEST(cubicOp61d),
5684 TEST(cubicOp60d),
5685 TEST(cubicOp59d),
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005686 TEST(cubicOp57d),
5687 TEST(cubicOp56d),
5688 TEST(cubicOp55d),
5689 TEST(cubicOp54d),
5690 TEST(cubicOp53d),
5691 TEST(cubicOp52d),
5692 TEST(cubicOp51d),
5693 TEST(cubicOp50d),
5694 TEST(cubicOp49d),
5695 TEST(cubicOp48d),
5696 TEST(cubicOp47d),
5697 TEST(cubicOp46d),
5698 TEST(cubicOp45d),
5699 TEST(cubicOp44d),
5700 TEST(cubicOp43d),
5701 TEST(cubicOp42d),
5702 TEST(cubicOp41i),
5703 TEST(cubicOp40d),
5704 TEST(cubicOp39d),
5705 TEST(cubicOp38d),
5706 TEST(cubicOp37d),
5707 TEST(cubicOp36u),
5708 TEST(cubicOp35d),
5709 TEST(cubicOp34d),
5710 TEST(cubicOp33i),
5711 TEST(cubicOp32d),
5712 TEST(cubicOp31d),
5713 TEST(cubicOp31x),
5714 TEST(cubicOp31u),
5715 TEST(cubicOp30d),
5716 TEST(cubicOp29d),
5717 TEST(cubicOp28u),
5718 TEST(cubicOp27d),
5719 TEST(cubicOp26d),
5720 TEST(cubicOp25i),
5721 TEST(testOp8d),
5722 TEST(testDiff1),
5723 TEST(testIntersect1),
5724 TEST(testUnion1),
5725 TEST(testXor1),
5726 TEST(testDiff2),
5727 TEST(testIntersect2),
5728 TEST(testUnion2),
5729 TEST(testXor2),
5730 TEST(testOp1d),
5731 TEST(testOp2d),
5732 TEST(testOp3d),
5733 TEST(testOp1u),
5734 TEST(testOp4d),
5735 TEST(testOp5d),
5736 TEST(testOp6d),
5737 TEST(testOp7d),
5738 TEST(testOp2u),
5739
5740 TEST(cubicOp24d),
5741 TEST(cubicOp23d),
5742 TEST(cubicOp22d),
5743 TEST(cubicOp21d),
5744 TEST(cubicOp20d),
5745 TEST(cubicOp19i),
5746 TEST(cubicOp18d),
5747 TEST(cubicOp17d),
5748 TEST(cubicOp16d),
5749 TEST(cubicOp15d),
5750 TEST(cubicOp14d),
5751 TEST(cubicOp13d),
5752 TEST(cubicOp12d),
5753 TEST(cubicOp11d),
5754 TEST(cubicOp10d),
5755 TEST(cubicOp1i),
5756 TEST(cubicOp9d),
5757 TEST(quadOp9d),
5758 TEST(lineOp9d),
5759 TEST(cubicOp8d),
5760 TEST(cubicOp7d),
5761 TEST(cubicOp6d),
5762 TEST(cubicOp5d),
5763 TEST(cubicOp3d),
5764 TEST(cubicOp2d),
5765 TEST(cubicOp1d),
5766};
5767
caryclark@google.comad65a3e2013-04-15 19:13:59 +00005768static const size_t testCount = SK_ARRAY_COUNT(tests);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005769
5770static struct TestDesc subTests[] = {
caryclarkbca19f72015-05-13 08:23:48 -07005771 TEST(loops47i),
caryclark624637c2015-05-11 07:21:27 -07005772 TEST(loops61i),
5773 TEST(loops62i),
caryclarkbca19f72015-05-13 08:23:48 -07005774 TEST(issue3517),
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005775};
5776
caryclark@google.comad65a3e2013-04-15 19:13:59 +00005777static const size_t subTestCount = SK_ARRAY_COUNT(subTests);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005778
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00005779static void (*firstSubTest)(skiatest::Reporter* , const char* filename) = 0;
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005780
caryclarkbca19f72015-05-13 08:23:48 -07005781static bool runSubTests = false;
caryclark03b03ca2015-04-23 09:13:37 -07005782static bool runSubTestsFirst = true;
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005783static bool runReverse = false;
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005784
tfarina@chromium.org78e7b4e2014-01-02 21:45:03 +00005785DEF_TEST(PathOpsOp, reporter) {
caryclark@google.com07e97fc2013-07-08 17:17:02 +00005786#if DEBUG_SHOW_TEST_NAME
5787 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
5788#endif
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00005789 if (runSubTests && runSubTestsFirst) {
halcanary96fcdcc2015-08-27 07:41:13 -07005790 RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005791 }
caryclark54359292015-03-26 07:52:43 -07005792 RunTestSet(reporter, tests, testCount, firstTest, skipTest, stopTest, runReverse);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00005793 if (runSubTests && !runSubTestsFirst) {
halcanary96fcdcc2015-08-27 07:41:13 -07005794 RunTestSet(reporter, subTests, subTestCount, firstSubTest, nullptr, stopTest, runReverse);
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005795 }
caryclark@google.com818b0cc2013-04-08 11:50:46 +00005796}
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00005797
caryclarkd78c0882016-02-24 09:03:07 -08005798static void fuzz535151(skiatest::Reporter* reporter, const char* filename) {
5799 SkPath one;
5800 one.setFillType(SkPath::kWinding_FillType);
5801 SkPath two;
5802 two.setFillType(SkPath::kWinding_FillType);
5803 two.moveTo(0, 0);
5804 two.lineTo(0, 50);
5805 two.lineTo(4.29497e+09f, 50);
5806 SkPath dummy;
caryclark30b9fdd2016-08-31 14:36:29 -07005807 testPathOpFuzz(reporter, one, two, kIntersect_SkPathOp, filename);
caryclarkd78c0882016-02-24 09:03:07 -08005808}
5809
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00005810static void bufferOverflow(skiatest::Reporter* reporter, const char* filename) {
5811 SkPath path;
5812 path.addRect(0,0, 300,170141183460469231731687303715884105728.f);
5813 SkPath pathB;
5814 pathB.addRect(0,0, 300,16);
caryclark30b9fdd2016-08-31 14:36:29 -07005815 testPathOpFuzz(reporter, path, pathB, kUnion_SkPathOp, filename);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00005816}
5817
caryclark361b8b02014-09-08 10:25:38 -07005818// m 100,0 60,170 -160,-110 200,0 -170,11000000000 z
5819static void fuzz433(skiatest::Reporter* reporter, const char* filename) {
5820 SkPath path1, path2;
5821 path1.moveTo(100,0);
5822 path1.lineTo(60,170);
5823 path1.lineTo(-160,-110);
5824 path1.lineTo(200,0);
5825 path1.lineTo(-170,11000000000.0f);
5826 path1.close();
5827
5828 path2.moveTo(100 + 20,0 + 20);
5829 path2.lineTo(60 + 20,170 + 20);
5830 path2.lineTo(-160 + 20,-110 + 20);
5831 path2.lineTo(200 + 20,0 + 20);
5832 path2.lineTo(-170 + 20,11000000000.0f + 20);
5833 path2.close();
5834
caryclark30b9fdd2016-08-31 14:36:29 -07005835 testPathOpFuzz(reporter, path1, path2, kIntersect_SkPathOp, filename);
caryclark361b8b02014-09-08 10:25:38 -07005836}
5837
5838static void fuzz433b(skiatest::Reporter* reporter, const char* filename) {
5839 SkPath path1, path2;
5840 path1.setFillType(SkPath::kEvenOdd_FillType);
5841 path1.moveTo(140, 40);
5842 path1.lineTo(200, 210);
5843 path1.lineTo(40, 100);
5844 path1.lineTo(240, 100);
5845 path1.lineTo(70, 1.1e+10f);
5846 path1.lineTo(140, 40);
5847 path1.close();
5848
5849 path1.setFillType(SkPath::kWinding_FillType);
5850 path2.moveTo(190, 60);
5851 path2.lineTo(250, 230);
5852 path2.lineTo(90, 120);
5853 path2.lineTo(290, 120);
5854 path2.lineTo(120, 1.1e+10f);
5855 path2.lineTo(190, 60);
5856 path2.close();
5857
caryclark30b9fdd2016-08-31 14:36:29 -07005858 testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
caryclark361b8b02014-09-08 10:25:38 -07005859}
5860
caryclark630240d2014-09-19 06:33:31 -07005861static void fuzz487a(skiatest::Reporter* reporter, const char* filename) {
5862 SkPath path;
5863 path.setFillType((SkPath::FillType) 0);
5864path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5865path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
5866path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42633333));
5867path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
5868path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41a3ffff));
5869path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
5870path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
5871path.cubicTo(SkBits2Float(0x429c6668), SkBits2Float(0x425d999a), SkBits2Float(0x4279999c), SkBits2Float(0x42886667), SkBits2Float(0x42673335), SkBits2Float(0x42ab0000));
5872path.lineTo(SkBits2Float(0x41c0ccd0), SkBits2Float(0x42990000));
5873path.cubicTo(SkBits2Float(0x41b33336), SkBits2Float(0x42a5999a), SkBits2Float(0x41ac0003), SkBits2Float(0x42b2cccd), SkBits2Float(0x41ac0003), SkBits2Float(0x42c00000));
5874path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
5875path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
5876path.cubicTo(SkBits2Float(0x4261999c), SkBits2Float(0x434d3333), SkBits2Float(0x4364e667), SkBits2Float(0x4346b333), SkBits2Float(0x4364e667), SkBits2Float(0x43400000));
5877path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5878path.close();
5879
5880 SkPath path1(path);
5881 path.reset();
5882 path.setFillType((SkPath::FillType) 0);
5883path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5884path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
5885path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x42a20000), SkBits2Float(0x43016667), SkBits2Float(0x4287cccd), SkBits2Float(0x42ea999a), SkBits2Float(0x4273999a));
5886path.lineTo(SkBits2Float(0x4306cccd), SkBits2Float(0x41f5999a));
5887path.cubicTo(SkBits2Float(0x42f76667), SkBits2Float(0x41c26667), SkBits2Float(0x42dd999a), SkBits2Float(0x41a4cccd), SkBits2Float(0x42c23334), SkBits2Float(0x41a4cccd));
5888path.lineTo(SkBits2Float(0x42c23334), SkBits2Float(0x425e0000));
5889path.cubicTo(SkBits2Float(0x42a43334), SkBits2Float(0x425e0000), SkBits2Float(0x428a0001), SkBits2Float(0x427ecccd), SkBits2Float(0x42780002), SkBits2Float(0x4297999a));
5890path.lineTo(SkBits2Float(0x41fccccd), SkBits2Float(0x42693333));
5891path.cubicTo(SkBits2Float(0x41c9999a), SkBits2Float(0x428acccd), SkBits2Float(0x41ac0000), SkBits2Float(0x42a4999a), SkBits2Float(0x41ac0000), SkBits2Float(0x42c00000));
5892path.lineTo(SkBits2Float(0x4261999a), SkBits2Float(0x42c00000));
5893path.cubicTo(SkBits2Float(0x4261999a), SkBits2Float(0x42de0000), SkBits2Float(0x42813333), SkBits2Float(0x42f83333), SkBits2Float(0x42996666), SkBits2Float(0x4303199a));
5894path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x431cb334));
5895path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
5896path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
5897path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
5898path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
5899path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43080000));
5900path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5901path.close();
5902
5903 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07005904 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
caryclark630240d2014-09-19 06:33:31 -07005905}
5906
5907static void fuzz487b(skiatest::Reporter* reporter, const char* filename) {
5908 SkPath path;
5909 path.setFillType((SkPath::FillType) 0);
5910path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5911path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
5912path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42633333));
5913path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
5914path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41a3ffff));
5915path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
5916path.lineTo(SkBits2Float(0x42c20001), SkBits2Float(0x425d999a));
5917path.cubicTo(SkBits2Float(0x429c6668), SkBits2Float(0x425d999a), SkBits2Float(0x4279999c), SkBits2Float(0x42886667), SkBits2Float(0x42673335), SkBits2Float(0x42ab0000));
5918path.lineTo(SkBits2Float(0x41c0ccd0), SkBits2Float(0x42990000));
5919path.cubicTo(SkBits2Float(0x41b33336), SkBits2Float(0x42a5999a), SkBits2Float(0x41ac0003), SkBits2Float(0x42b2cccd), SkBits2Float(0x41ac0003), SkBits2Float(0x42c00000));
5920path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
5921path.lineTo(SkBits2Float(0x4261999c), SkBits2Float(0x42c00000));
5922path.cubicTo(SkBits2Float(0x4261999c), SkBits2Float(0x434d3333), SkBits2Float(0x4364e667), SkBits2Float(0x4346b333), SkBits2Float(0x4364e667), SkBits2Float(0x43400000));
5923path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5924path.close();
5925
5926 SkPath path1(path);
5927 path.reset();
5928 path.setFillType((SkPath::FillType) 0);
5929path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5930path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
5931path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x42a20000), SkBits2Float(0x43016667), SkBits2Float(0x4287cccd), SkBits2Float(0x42ea999a), SkBits2Float(0x4273999a));
5932path.lineTo(SkBits2Float(0x4306cccd), SkBits2Float(0x41f5999a));
5933path.cubicTo(SkBits2Float(0x42f76667), SkBits2Float(0x41c26667), SkBits2Float(0x42dd999a), SkBits2Float(0x41a4cccd), SkBits2Float(0x42c23334), SkBits2Float(0x41a4cccd));
5934path.lineTo(SkBits2Float(0x42c23334), SkBits2Float(0x425e0000));
5935path.cubicTo(SkBits2Float(0x42a43334), SkBits2Float(0x425e0000), SkBits2Float(0x428a0001), SkBits2Float(0x427ecccd), SkBits2Float(0x42780002), SkBits2Float(0x4297999a));
5936path.lineTo(SkBits2Float(0x41fccccd), SkBits2Float(0x42693333));
5937path.cubicTo(SkBits2Float(0x41c9999a), SkBits2Float(0x428acccd), SkBits2Float(0x41ac0000), SkBits2Float(0x42a4999a), SkBits2Float(0x41ac0000), SkBits2Float(0x42c00000));
5938path.lineTo(SkBits2Float(0x4261999a), SkBits2Float(0x42c00000));
5939path.cubicTo(SkBits2Float(0x4261999a), SkBits2Float(0x42de0000), SkBits2Float(0x42813333), SkBits2Float(0x42f83333), SkBits2Float(0x42996666), SkBits2Float(0x4303199a));
5940path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x431cb334));
5941path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
5942path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
5943path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
5944path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
5945path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43080000));
5946path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5947path.close();
5948
5949 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07005950 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
caryclark630240d2014-09-19 06:33:31 -07005951}
5952
caryclarkc06d9a72014-09-29 06:58:41 -07005953static void fuzz714(skiatest::Reporter* reporter, const char* filename) {
5954 SkPath path;
5955 path.setFillType((SkPath::FillType) 1);
5956path.moveTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000));
5957path.lineTo(SkBits2Float(0x43480000), SkBits2Float(0x43520000));
5958path.lineTo(SkBits2Float(0x42200000), SkBits2Float(0x42c80000));
caryclark08bc8482015-04-24 09:08:57 -07005959path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42c80000)); // 2.22222e+022f
5960path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43520000)); // 2.22222e+022f
caryclarkc06d9a72014-09-29 06:58:41 -07005961path.lineTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000));
5962path.close();
5963
5964 SkPath path1(path);
5965 path.reset();
5966 path.setFillType((SkPath::FillType) 0);
5967path.moveTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000));
5968path.lineTo(SkBits2Float(0x435c0000), SkBits2Float(0x43660000));
5969path.lineTo(SkBits2Float(0x42700000), SkBits2Float(0x42f00000));
caryclark08bc8482015-04-24 09:08:57 -07005970path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42f00000)); // 2.22222e+022f
5971path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43660000)); // 2.22222e+022f
caryclarkc06d9a72014-09-29 06:58:41 -07005972path.lineTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000));
5973path.close();
5974
5975 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07005976 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
caryclarkc06d9a72014-09-29 06:58:41 -07005977}
5978
caryclarkd751ac02014-10-03 05:36:27 -07005979static void fuzz1(skiatest::Reporter* reporter, const char* filename) {
5980 SkPath path;
5981 path.setFillType((SkPath::FillType) 0);
5982path.moveTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
5983path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
5984path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
5985path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7f800000));
5986path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000));
5987path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0xffc00000), SkBits2Float(0xffc00000), SkBits2Float(0xffc00000));
5988path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xff000001));
5989path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xffc00000));
5990path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
5991path.close();
5992
5993 SkPath path1(path);
5994 path.reset();
5995 path.setFillType((SkPath::FillType) 0);
5996
5997 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07005998 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
caryclarkd751ac02014-10-03 05:36:27 -07005999}
6000
caryclark952ebfe2015-11-02 07:32:58 -08006001
6002static void fuzz753_91(skiatest::Reporter* reporter, const char* filename) {
6003 SkPath path;
6004 path.setFillType((SkPath::FillType) 0);
6005path.moveTo(SkBits2Float(0x42910000), SkBits2Float(0x00000000)); // 72.5f, 0
6006path.lineTo(SkBits2Float(0x42166668), SkBits2Float(0x00000000)); // 37.6f, 0
6007path.cubicTo(SkBits2Float(0x42166668), SkBits2Float(0xc1966668), SkBits2Float(0x41c66668), SkBits2Float(0xc20a6666), SkBits2Float(0x40f00010), SkBits2Float(0xc21ccccd)); // 37.6f, -18.8f, 24.8f, -34.6f, 7.50001f, -39.2f
6008path.lineTo(SkBits2Float(0x41840004), SkBits2Float(0xc291cccd)); // 16.5f, -72.9f
6009path.lineTo(SkBits2Float(0x42fb6668), SkBits2Float(0x42c73334)); // 125.7f, 99.6f
6010path.lineTo(SkBits2Float(0x43646668), SkBits2Float(0x43880ccd)); // 228.4f, 272.1f
6011
6012 SkPath path1(path);
6013 path.reset();
6014 path.setFillType((SkPath::FillType) 0);
6015path.moveTo(SkBits2Float(0x428bf702), SkBits2Float(0xcf223cbf)); // 69.9824f, -2.72189e+09f
6016path.lineTo(SkBits2Float(0x42112d68), SkBits2Float(0xcf223cbf)); // 36.2943f, -2.72189e+09f
6017path.cubicTo(SkBits2Float(0x4220d9fc), SkBits2Float(0xcf223cc0), SkBits2Float(0x420ee118), SkBits2Float(0xcf223cc0), SkBits2Float(0x41cef2f8), SkBits2Float(0xcf223cc0)); // 40.2129f, -2.72189e+09f, 35.7198f, -2.72189e+09f, 25.8686f, -2.72189e+09f
6018path.lineTo(SkBits2Float(0x424a99e0), SkBits2Float(0xcf223cc0)); // 50.6503f, -2.72189e+09f
6019path.cubicTo(SkBits2Float(0x42266e32), SkBits2Float(0xcf223cc0), SkBits2Float(0x41f0fa20), SkBits2Float(0xcf223cc0), SkBits2Float(0x41872ed4), SkBits2Float(0xcf223cc0)); // 41.6076f, -2.72189e+09f, 30.1221f, -2.72189e+09f, 16.8979f, -2.72189e+09f
6020path.lineTo(SkBits2Float(0x40f8fbe0), SkBits2Float(0xcf223cc0)); // 7.78075f, -2.72189e+09f
6021
6022 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006023 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
caryclark952ebfe2015-11-02 07:32:58 -08006024}
6025
caryclark5c5cfe22016-04-05 07:28:48 -07006026static void bug597926_0(skiatest::Reporter* reporter, const char* filename) {
6027SkPath path;
6028path.setFillType((SkPath::FillType) 0);
6029path.moveTo(SkBits2Float(0x43b38000), SkBits2Float(0x433e0000)); // 359, 190
6030path.lineTo(SkBits2Float(0x40c00000), SkBits2Float(0x449ce000)); // 6, 1255
6031path.cubicTo(SkBits2Float(0x438c0000), SkBits2Float(0x4497a000), SkBits2Float(0x43e40000), SkBits2Float(0x44750000), SkBits2Float(0x41000000), SkBits2Float(0x44aa2000)); // 280, 1213, 456, 980, 8, 1361
6032path.moveTo(SkBits2Float(0x43290000), SkBits2Float(0x4431c000)); // 169, 711
6033path.lineTo(SkBits2Float(0xd987d6ba), SkBits2Float(0xd93d0ad4)); // -4.7794e+15f, -3.32567e+15f
6034path.conicTo(SkBits2Float(0x43cc8000), SkBits2Float(0x445b8000), SkBits2Float(0xd888b096), SkBits2Float(0xd9a1ebfa), SkBits2Float(0x3ebcb199)); // 409, 878, -1.20234e+15f, -5.69712e+15f, 0.368542f
6035path.cubicTo(SkBits2Float(0x43c00000), SkBits2Float(0x443a8000), SkBits2Float(0x42380000), SkBits2Float(0x4421c000), SkBits2Float(0x42500000), SkBits2Float(0x448ca000)); // 384, 746, 46, 647, 52, 1125
6036path.quadTo(SkBits2Float(0x43948000), SkBits2Float(0x42ac0000), SkBits2Float(0x43880000), SkBits2Float(0x4487e000)); // 297, 86, 272, 1087
6037SkPath path1(path);
6038path.reset();
6039path.setFillType((SkPath::FillType) 0);
6040path.moveTo(SkBits2Float(0xc51d735c), SkBits2Float(0xc49db029)); // -2519.21f, -1261.51f
6041path.cubicTo(SkBits2Float(0xc51d1dbd), SkBits2Float(0xc49d7a3f), SkBits2Float(0xc51c524a), SkBits2Float(0xc49d1610), SkBits2Float(0xc51d1a96), SkBits2Float(0xc49d86a6)); // -2513.86f, -1259.82f, -2501.14f, -1256.69f, -2513.66f, -1260.21f
6042path.cubicTo(SkBits2Float(0xc51cd471), SkBits2Float(0xc49d54d0), SkBits2Float(0xc51c2e51), SkBits2Float(0xc49d0081), SkBits2Float(0xc51d197b), SkBits2Float(0xc49d7927)); // -2509.28f, -1258.65f, -2498.89f, -1256.02f, -2513.59f, -1259.79f
6043path.quadTo(SkBits2Float(0xc51bf7eb), SkBits2Float(0xc49cf010), SkBits2Float(0xc51ba866), SkBits2Float(0xc49cb9e6)); // -2495.49f, -1255.5f, -2490.52f, -1253.81f
6044path.cubicTo(SkBits2Float(0xc51bac0d), SkBits2Float(0xc49cc50e), SkBits2Float(0xc51c29eb), SkBits2Float(0xc49cfb01), SkBits2Float(0xc51c5bca), SkBits2Float(0xc49d1fa6)); // -2490.75f, -1254.16f, -2498.62f, -1255.84f, -2501.74f, -1256.99f
6045SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006046testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
caryclark5c5cfe22016-04-05 07:28:48 -07006047}
6048
caryclarkdae6b972016-06-08 04:28:19 -07006049static void fuzz1450_0(skiatest::Reporter* reporter, const char* filename) {
6050SkPath path;
6051path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.14748e+09f
6052path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcf000000), SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, -2.14748e+09f, 1.07374e+09f, -1.07374e+09f, 0.707107f
6053path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x43348000), SkBits2Float(0x43800001), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, 256, 180.5f, 256, 0.707107f
6054SkPath path1(path);
6055path.reset();
6056path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
6057path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55f, 3600, 4434.55f, 0.707107f
6058path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.55f, 6840, 4140, 0.707107f
6059path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
6060path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
6061path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
6062path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
6063path.close();
6064SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006065testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
caryclarkdae6b972016-06-08 04:28:19 -07006066}
6067
6068static void fuzz1450_1(skiatest::Reporter* reporter, const char* filename) {
6069SkPath path;
6070path.setFillType(SkPath::kEvenOdd_FillType);
6071path.moveTo(SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe)); // 1.07374e+09f, -1.07374e+09f
6072path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcf000000), SkBits2Float(0x43b40000), SkBits2Float(0xcf000000), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, -2.14748e+09f, 360, -2.14748e+09f, 0.707107f
6073path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256
6074path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
6075path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
6076path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
6077path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
6078path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
6079path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55f, 3600, 4434.55f, 0.707107f
6080path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.55f, 6840, 4140, 0.707107f
6081path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 572.949f
6082path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256
6083path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe), SkBits2Float(0x3f3504f4)); // 1.07374e+09f, 256, 1.07374e+09f, -1.07374e+09f, 0.707107f
6084path.close();
6085SkPath path1(path);
6086path.reset();
6087path.moveTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
6088path.lineTo(SkBits2Float(0x45d5c000), SkBits2Float(0x43870000)); // 6840, 270
6089path.lineTo(SkBits2Float(0xd0a00000), SkBits2Float(0x4cbebc20)); // -2.14748e+10f, 1e+08
6090path.lineTo(SkBits2Float(0x451f7000), SkBits2Float(0x42800000)); // 2551, 64
6091path.lineTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
6092path.close();
6093SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006094testPathOpFuzz(reporter, path1, path2, kUnion_SkPathOp, filename);
caryclarkdae6b972016-06-08 04:28:19 -07006095}
6096
caryclark3f0753d2016-06-28 09:23:57 -07006097static void fuzz763_9(skiatest::Reporter* reporter, const char* filename) {
6098 SkPath path;
6099 path.setFillType((SkPath::FillType) 1);
6100
6101 SkPath path1(path);
6102 path.reset();
6103 path.setFillType((SkPath::FillType) 0);
6104path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6105path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321), SkBits2Float(0xed7a6a4b), SkBits2Float(0x1f212a8c)); // 2.49282e-13f, 4.78968e-34f, 1.99397e+36f, -4.84373e+27f, 3.41283e-20f
6106path.lineTo(SkBits2Float(0x7bc00321), SkBits2Float(0xed7a6a4b)); // 1.99397e+36f, -4.84373e+27f
6107path.lineTo(SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28)); // 9.4495e-15f, 0.000617492f
6108path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6109path.close();
6110path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6111path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3), SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6)); // -8.10388e-33f, 0.00148185f, 2.25206e-21f, 5.54035e+21f
6112path.moveTo(SkBits2Float(0x29272a81), SkBits2Float(0x2ab03a55)); // 3.71183e-14f, 3.13044e-13f
6113path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xdf28282a), SkBits2Float(0x8a2f2121)); // 2.22225e-15f, 0.000615227f, -1.2117e+19f, -8.43217e-33f
6114path.quadTo(SkBits2Float(0x373b3a27), SkBits2Float(0x201fc4c1), SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d)); // 1.11596e-05f, 1.35329e-19f, 2.98959e-15f, 2.8457e+15f
6115path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21)); // 2.22225e-15f, 0.000615227f, -1.2117e+19f, 0.00105459f
6116path.cubicTo(SkBits2Float(0x373b3ac5), SkBits2Float(0x201fc422), SkBits2Float(0x523a702a), SkBits2Float(0x27576c51), SkBits2Float(0x5921c25d), SkBits2Float(0x51523a70)); // 1.11598e-05f, 1.35327e-19f, 2.00186e+11f, 2.9896e-15f, 2.8457e+15f, 5.64327e+10f
6117path.quadTo(SkBits2Float(0xd912102a), SkBits2Float(0x284f9a28), SkBits2Float(0xb38a1f30), SkBits2Float(0x3a3ac23a)); // -2.56957e+15f, 1.15242e-14f, -6.4318e-08f, 0.000712428f
6118path.lineTo(SkBits2Float(0xc809272a), SkBits2Float(0x29b02829)); // -140445, 7.82294e-14f
6119
6120 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006121 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
caryclark3f0753d2016-06-28 09:23:57 -07006122}
6123
6124
6125static void fuzz763_4(skiatest::Reporter* reporter, const char* filename) {
6126 SkPath path;
6127 path.setFillType((SkPath::FillType) 1);
6128
6129 SkPath path1(path);
6130 path.reset();
6131 path.setFillType((SkPath::FillType) 0);
6132path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6133path.lineTo(SkBits2Float(0x555b3a2d), SkBits2Float(0x2a212a8c)); // 1.50652e+13f, 1.43144e-13f
6134path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
6135path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac2b33a)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148544f
6136path.cubicTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6), SkBits2Float(0x295b2d2a), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c275b)); // 2.25206e-21f, 5.54035e+21f, 4.86669e-14f, 3.19905e+24f, 9.6297e-12f, 2.48963e-13f
6137path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6138path.close();
6139path.moveTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
6140path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x2a21081f)); // 1.43144e-13f, 1.43025e-13f
6141path.conicTo(SkBits2Float(0xde6a4b7b), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // -4.22068e+18f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121589
6142path.lineTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
6143path.close();
6144path.moveTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
6145path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
6146path.lineTo(SkBits2Float(0x2928088c), SkBits2Float(0x2be61d2a)); // 3.73109e-14f, 1.63506e-12f
6147path.conicTo(SkBits2Float(0x2a812a63), SkBits2Float(0x2d292a27), SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x552d6829)); // 2.29444e-13f, 9.6159e-12f, 1.5954e+13f, 4.87407e+16f, 1.19164e+13f
6148path.conicTo(SkBits2Float(0x395b2d5b), SkBits2Float(0x68552768), SkBits2Float(0x555b2df0), SkBits2Float(0x1f722a8c), SkBits2Float(0x082a212a)); // 0.000209024f, 4.02636e+24f, 1.50619e+13f, 5.12807e-20f, 5.11965e-34f
6149path.lineTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13f, 4.87407e+16f
6150path.close();
6151path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6152path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2147ed7a), SkBits2Float(0x28282a3a), SkBits2Float(0x21df212a), SkBits2Float(0x033a8a3a)); // 6.14991e+25f, 6.77381e-19f, 9.33503e-15f, 1.51198e-18f, 5.48192e-37f
6153
6154 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006155 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
caryclark3f0753d2016-06-28 09:23:57 -07006156}
6157
caryclark343382e2016-06-29 08:18:38 -07006158static void fuzz763_3(skiatest::Reporter* reporter, const char* filename) {
6159 SkPath path;
6160 path.setFillType((SkPath::FillType) 1);
6161
6162 SkPath path1(path);
6163 path.reset();
6164 path.setFillType((SkPath::FillType) 0);
6165path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6166path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
6167path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x295b2d1f), SkBits2Float(0x29685568)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.86669e-14f, 5.15884e-14f
6168path.conicTo(SkBits2Float(0x8c28295b), SkBits2Float(0x1f21212a), SkBits2Float(0xc0032a08), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced)); // -1.29547e-31f, 3.41205e-20f, -2.04944f, 3.04132e+35f, 5.77848e-19f
6169path.moveTo(SkBits2Float(0x25682929), SkBits2Float(0x212a8c5b)); // 2.01367e-16f, 5.7784e-19f
6170path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4a7bc0)); // 4.7323e-37f, 6.11969e+25f
6171path.conicTo(SkBits2Float(0x032108ed), SkBits2Float(0x283a7bc0), SkBits2Float(0x47ed7a6a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21ff28)); // 4.73239e-37f, 1.03519e-14f, 121589, 9.4495e-15f, 0.000617968f
6172path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.00148185f, 1.50241e-13f, -1.38859e-25f
6173path.lineTo(SkBits2Float(0x295b2d2a), SkBits2Float(0x2d296868)); // 4.86669e-14f, 9.62972e-12f
6174path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6175path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x898ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, -3.39271e-33f, 4.61198e-19f, 0.00096035f, 121589
6176path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6177path.close();
6178path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6179path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0xb38a281a), SkBits2Float(0x29283ac2)); // -1.2117e+19f, 0.00105459f, -6.43342e-08f, 3.73545e-14f
6180path.moveTo(SkBits2Float(0x962be61d), SkBits2Float(0x432a2927)); // -1.38859e-25f, 170.161f
6181path.conicTo(SkBits2Float(0x3a2a552a), SkBits2Float(0x3b1e2ab0), SkBits2Float(0x29272021), SkBits2Float(0x3b3ac527), SkBits2Float(0x1fc42236)); // 0.000649768f, 0.00241343f, 3.71093e-14f, 0.00284989f, 8.30658e-20f
6182path.cubicTo(SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d), SkBits2Float(0x51503a70), SkBits2Float(0x12102a10), SkBits2Float(0x633a28d9), SkBits2Float(0x29c80927)); // 2.98959e-15f, 2.8457e+15f, 5.58959e+10f, 4.54902e-28f, 3.43404e+21f, 8.88337e-14f
6183path.lineTo(SkBits2Float(0x272927b0), SkBits2Float(0x5b392929)); // 2.3475e-15f, 5.21181e+16f
6184path.moveTo(SkBits2Float(0x3a1127b4), SkBits2Float(0x2921ee3b)); // 0.000553723f, 3.59558e-14f
6185path.cubicTo(SkBits2Float(0x5e215d3b), SkBits2Float(0x7828ee3a), SkBits2Float(0x8e28b03b), SkBits2Float(0x50783be8), SkBits2Float(0x9e0b8a3a), SkBits2Float(0x555b2d68)); // 2.90688e+18f, 1.37053e+34f, -2.07925e-30f, 1.66587e+10f, -7.38718e-21f, 1.50618e+13f
6186path.moveTo(SkBits2Float(0x21081f3f), SkBits2Float(0x9fd4e62a)); // 4.61199e-19f, -9.01663e-20f
6187path.cubicTo(SkBits2Float(0x3a293a2a), SkBits2Float(0x0e3bf0c5), SkBits2Float(0x3b29d42a), SkBits2Float(0x0f217265), SkBits2Float(0x2d5d2921), SkBits2Float(0x5568295b)); // 0.000645551f, 2.31655e-30f, 0.00259138f, 7.95994e-30f, 1.25715e-11f, 1.5954e+13f
6188
6189 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006190 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
caryclark343382e2016-06-29 08:18:38 -07006191}
6192
caryclarkaa7ceb62016-06-29 10:46:08 -07006193static void fuzz763_5(skiatest::Reporter* reporter, const char* filename) {
6194 SkPath path;
6195 path.setFillType((SkPath::FillType) 1);
6196
6197 SkPath path1(path);
6198 path.reset();
6199 path.setFillType((SkPath::FillType) 0);
6200path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
6201path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b79), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
6202path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
6203path.cubicTo(SkBits2Float(0xe62a2928), SkBits2Float(0x2a63962b), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x001f2a21)); // -2.0089e+23f, 2.02138e-13f, 3.19905e+24f, 9.6297e-12f, 2.49282e-13f, 2.86201e-39f
6204path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
6205path.close();
6206path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
6207path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121589
6208path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
6209path.close();
6210path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16f, 1.51477e-13f
6211path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3b21), SkBits2Float(0x28ee4f9a), SkBits2Float(0x68293b78)); // -1.2117e+19f, 0.00105462f, 2.64578e-14f, 3.19671e+24f
6212path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x5b2d8c55)); // 4.87407e+16f, 4.88495e+16f
6213
6214 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006215 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
caryclarkaa7ceb62016-06-29 10:46:08 -07006216}
6217
6218static void fuzz763_2(skiatest::Reporter* reporter, const char* filename) {
6219 SkPath path;
6220 path.setFillType((SkPath::FillType) 1);
6221
6222 SkPath path1(path);
6223 path.reset();
6224 path.setFillType((SkPath::FillType) 0);
6225path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6226path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
6227path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
6228path.lineTo(SkBits2Float(0x081f2ad7), SkBits2Float(0x7bc00321)); // 4.78977e-34f, 1.99397e+36f
6229path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
6230path.quadTo(SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28), SkBits2Float(0x29283ac2), SkBits2Float(0x962be62a)); // 2.58753e+09f, 0.00136978f, 3.73545e-14f, -1.38859e-25f
6231path.cubicTo(SkBits2Float(0x272a812a), SkBits2Float(0x3a2a5529), SkBits2Float(0x3b1e2ab0), SkBits2Float(0x29272021), SkBits2Float(0x3b3ac527), SkBits2Float(0x1fc42237)); // 2.36623e-15f, 0.000649768f, 0.00241343f, 3.71093e-14f, 0.00284989f, 8.30658e-20f
6232path.cubicTo(SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d), SkBits2Float(0x51523a70), SkBits2Float(0x12102a10), SkBits2Float(0x633a28d9), SkBits2Float(0x29c80927)); // 2.98959e-15f, 2.8457e+15f, 5.64327e+10f, 4.54902e-28f, 3.43404e+21f, 8.88337e-14f
6233path.lineTo(SkBits2Float(0x29292727), SkBits2Float(0x21475b3b)); // 3.75595e-14f, 6.75446e-19f
6234path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
6235path.cubicTo(SkBits2Float(0x682d2928), SkBits2Float(0x555b6829), SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 3.27091e+24f, 1.50775e+13f, 1.50606e+13f, 1.43144e-13f, 4.7323e-37f, 6.14991e+25f
6236path.conicTo(SkBits2Float(0x295b2ded), SkBits2Float(0x29685568), SkBits2Float(0x8c555b2d), SkBits2Float(0xe61d2a2a), SkBits2Float(0x2a63962b)); // 4.86676e-14f, 5.15884e-14f, -1.64364e-31f, -1.85547e+23f, 2.02138e-13f
6237path.conicTo(SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a), SkBits2Float(0x4b7bc003)); // 1.5954e+13f, 4.87407e+16f, 5.7784e-19f, 4.61198e-19f, 1.64987e+07f
6238path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21)); // 2.50338e-13f, 4.61198e-19f
6239path.conicTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x2147ed7a), SkBits2Float(0x28282a3a), SkBits2Float(0x8a3a21df), SkBits2Float(0x27b42a3a)); // 5.63611e+25f, 6.77381e-19f, 9.33503e-15f, -8.96194e-33f, 5.00058e-15f
6240path.conicTo(SkBits2Float(0x2921217d), SkBits2Float(0x5e3a3b35), SkBits2Float(0x7828ee3a), SkBits2Float(0x8e28b03b), SkBits2Float(0x783be82a)); // 3.57782e-14f, 3.35484e+18f, 1.37053e+34f, -2.07925e-30f, 1.52448e+34f
6241path.conicTo(SkBits2Float(0x8e0b8a3a), SkBits2Float(0x279fd4e6), SkBits2Float(0x7a293a2a), SkBits2Float(0x2a0ef0c5), SkBits2Float(0x653b29d4)); // -1.71996e-30f, 4.43622e-15f, 2.19669e+35f, 1.26957e-13f, 5.52409e+22f
6242path.quadTo(SkBits2Float(0x29210f21), SkBits2Float(0x282a085d), SkBits2Float(0xc2ab2127), SkBits2Float(0xa6800028)); // 3.57623e-14f, 9.43871e-15f, -85.5648f, -8.88183e-16f
6243path.lineTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
6244path.close();
6245path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
6246path.quadTo(SkBits2Float(0x216a2770), SkBits2Float(0x2ab73b28), SkBits2Float(0x4b28f427), SkBits2Float(0x283b5b28)); // 7.93345e-19f, 3.25484e-13f, 1.10726e+07f, 1.04004e-14f
6247path.lineTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
6248path.close();
6249path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13f, -1.16126e+19f
6250path.conicTo(SkBits2Float(0xf86d273b), SkBits2Float(0x27e523e3), SkBits2Float(0x2927e0f5), SkBits2Float(0x2ac0e729), SkBits2Float(0x6b492128)); // -1.92402e+34f, 6.35992e-15f, 3.72766e-14f, 3.42665e-13f, 2.43151e+26f
6251path.cubicTo(SkBits2Float(0x2f273927), SkBits2Float(0xa83a2c21), SkBits2Float(0xd7122121), SkBits2Float(0x21212921), SkBits2Float(0x3be3db3a), SkBits2Float(0xa9deb63b)); // 1.52089e-10f, -1.03346e-14f, -1.60671e+14f, 5.46034e-19f, 0.00695362f, -9.89039e-14f
6252
6253 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006254 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
caryclark55888e42016-07-18 10:01:36 -07006255}
6256
6257// crbug.com/626164
6258static void fuzz763_1c(skiatest::Reporter* reporter, const char* filename) {
6259 SkPath path;
6260 path.setFillType((SkPath::FillType) 0);
6261
6262 SkPath path1(path);
6263 path.reset();
6264 path.setFillType((SkPath::FillType) 0);
6265 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6266 path.cubicTo(SkBits2Float(0x1931204a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a4a34), SkBits2Float(0x4a4a4a4a)); // 9.15721e-24f, 1.14845e-12f, 3.31014e+06f, 3.31014e+06f, 3.31432e+06f, 3.31432e+06f
6267 path.moveTo(SkBits2Float(0x000010a1), SkBits2Float(0x19312000)); // 5.96533e-42f, 9.15715e-24f
6268 path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa14a4a4a), SkBits2Float(0x08ff2ba1), SkBits2Float(0x08ff4a4a), SkBits2Float(0x4a344a4a)); // 3.31432e+06f, 3.31432e+06f, -6.85386e-19f, 1.53575e-33f, 1.53647e-33f, 2.95387e+06f
6269 path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4e4a08ff), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa1a181ff)); // 3.31432e+06f, 3.31432e+06f, 1.14845e-12f, 8.47397e+08f, 3.31432e+06f, -1.09442e-18f
6270
6271 SkPath path2(path);
6272 SkPath dummy;
caryclark30b9fdd2016-08-31 14:36:29 -07006273 testPathOpFuzz(reporter, path1, path2, (SkPathOp)4, filename);
caryclark55888e42016-07-18 10:01:36 -07006274}
6275
6276// crbug.com/626186
6277static void fuzz763_1b(skiatest::Reporter* reporter, const char* filename) {
6278 SkPath path;
6279 path.setFillType((SkPath::FillType) 0);
6280 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6281 path.cubicTo(SkBits2Float(0x0000ff07), SkBits2Float(0xf9f9ff00), SkBits2Float(0xfe0ef9f4), SkBits2Float(0xd9b105fb), SkBits2Float(0x000000f9), SkBits2Float(0xfe11f901)); // 9.14866e-41f, -1.62257e+35f, -4.75121e+37f, -6.22846e+15f, 3.48923e-43f, -4.85077e+37f
6282 path.lineTo(SkBits2Float(0xda1905ed), SkBits2Float(0x3c05fbfb)); // -1.0768e+16f, 0.00817775f
6283 path.cubicTo(SkBits2Float(0x3c3c3c3c), SkBits2Float(0x3c3c3c3c), SkBits2Float(0x253c7f00), SkBits2Float(0xfa00d3fa), SkBits2Float(0x250025fe), SkBits2Float(0x00000006)); // 0.011489f, 0.011489f, 1.63494e-16f, -1.67228e+35f, 1.11151e-16f, 8.40779e-45f
6284
6285 SkPath path1(path);
6286 path.reset();
6287 path.setFillType((SkPath::FillType) 0);
6288 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6289 path.quadTo(SkBits2Float(0x3c3c3c3c), SkBits2Float(0xfa253c3c), SkBits2Float(0xfefa00d3), SkBits2Float(0x25fad9df)); // 0.011489f, -2.14488e+35f, -1.66156e+38f, 4.35157e-16f
6290 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6291 path.close();
6292 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6293 path.lineTo(SkBits2Float(0x8dfefa00), SkBits2Float(0xf0f9fad9)); // -1.57141e-30f, -6.1892e+29f
6294 path.cubicTo(SkBits2Float(0x20fe58f9), SkBits2Float(0x0525fbed), SkBits2Float(0x1905ffff), SkBits2Float(0x01f9f9f9), SkBits2Float(0xfbfe0ef9), SkBits2Float(0xfb212fff)); // 4.30882e-19f, 7.80453e-36f, 6.92764e-24f, 9.18268e-38f, -2.63829e+36f, -8.36933e+35f
6295
6296 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006297 testPathOpFuzz(reporter, path1, path2, (SkPathOp)2, filename);
caryclark55888e42016-07-18 10:01:36 -07006298}
6299
6300static void fuzz763_1a(skiatest::Reporter* reporter, const char* filename) {
6301 SkPath path;
6302 path.setFillType((SkPath::FillType) 0);
6303 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6304 path.cubicTo(SkBits2Float(0x154be880), SkBits2Float(0x80000640), SkBits2Float(0x5559a419), SkBits2Float(0x59d55928), SkBits2Float(0x80045959), SkBits2Float(0x40154be8)); // 4.11789e-26f, -2.24208e-42f, 1.49562e+13f, 7.50652e+15f, -3.99394e-40f, 2.33276f
6305
6306 SkPath path1(path);
6307 path.reset();
6308 path.setFillType((SkPath::FillType) 0);
6309 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6310 path.quadTo(SkBits2Float(0x5559a419), SkBits2Float(0x59d55928), SkBits2Float(0xbd595959), SkBits2Float(0x3f3f3f09)); // 1.49562e+13f, 7.50652e+15f, -0.0530637f, 0.747056f
6311 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0x3f3f3f3f)); // 0.747059f, 0.747059f
6312 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
6313 path.lineTo(SkBits2Float(0x09090909), SkBits2Float(0x3038d509)); // 1.6495e-33f, 6.72416e-10f
6314 path.conicTo(SkBits2Float(0x5947ffff), SkBits2Float(0x40e88004), SkBits2Float(0x00002059), SkBits2Float(0x28555900), SkBits2Float(0x5959d559)); // 3.51844e+15f, 7.26563f, 1.16042e-41f, 1.18432e-14f, 3.83217e+15f
6315 path.lineTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
6316 path.close();
6317 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
6318 path.lineTo(SkBits2Float(0x38d57f4b), SkBits2Float(0x59597f4b)); // 0.000101803f, 3.82625e+15f
6319 path.lineTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.747059f, -2.54211e+38f
6320 path.close();
6321 path.moveTo(SkBits2Float(0x384700ff), SkBits2Float(0x0108804b)); // 4.74462e-05f, 2.50713e-38f
6322
6323 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006324 testPathOpFuzz(reporter, path1, path2, (SkPathOp)0, filename);
caryclark55888e42016-07-18 10:01:36 -07006325}
6326
6327// crbug.com/627780
6328static void fuzz763_3a(skiatest::Reporter* reporter, const char* filename) {
6329 SkPath path;
6330 path.setFillType((SkPath::FillType) 1);
6331
6332 SkPath path1(path);
6333 path.reset();
6334 path.setFillType((SkPath::FillType) 0);
6335path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6336path.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13f, 1.43144e-13f
6337path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
6338path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
6339path.cubicTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6), SkBits2Float(0x272a812a), SkBits2Float(0x295b2d29), SkBits2Float(0x2a685568), SkBits2Float(0x68295b2d)); // 2.25206e-21f, 5.54035e+21f, 2.36623e-15f, 4.86669e-14f, 2.06354e-13f, 3.19905e+24f
6340path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321), SkBits2Float(0x7a6a4b77), SkBits2Float(0x3a214726)); // 2.49282e-13f, 4.78968e-34f, 1.99397e+36f, 3.04132e+35f, 0.000615226f
6341path.moveTo(SkBits2Float(0x8adf2028), SkBits2Float(0x3a219a3a)); // -2.14862e-32f, 0.000616464f
6342path.quadTo(SkBits2Float(0x3ab38e28), SkBits2Float(0x29283ac2), SkBits2Float(0x2be61d2a), SkBits2Float(0x812a4396)); // 0.0013699f, 3.73545e-14f, 1.63506e-12f, -3.12726e-38f
6343
6344 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006345 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
caryclark55888e42016-07-18 10:01:36 -07006346}
6347
6348// crbug.com/627689
6349static void fuzz763_5a(skiatest::Reporter* reporter, const char* filename) {
6350 SkPath path;
6351 path.setFillType((SkPath::FillType) 1);
6352path.moveTo(SkBits2Float(0x38bd8610), SkBits2Float(0x00000000)); // 9.03719e-05f, 0
6353path.conicTo(SkBits2Float(0x4183d871), SkBits2Float(0x41fea321), SkBits2Float(0xb700ff00), SkBits2Float(0x4240b8b8), SkBits2Float(0x3b058283)); // 16.4807f, 31.8297f, -7.68877e-06f, 48.1804f, 0.0020372f
6354path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
6355path.conicTo(SkBits2Float(0x3a455ec8), SkBits2Float(0xb8b8b8b3), SkBits2Float(0x38b2418d), SkBits2Float(0xb730d014), SkBits2Float(0x3f7ffff3)); // 0.000752908f, -8.80821e-05f, 8.49991e-05f, -1.05389e-05f, 0.999999f
6356path.quadTo(SkBits2Float(0x3a51246a), SkBits2Float(0xb6da45a3), SkBits2Float(0x38bc5c3c), SkBits2Float(0x00000000)); // 0.000797814f, -6.50501e-06f, 8.98172e-05f, 0
6357path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
6358path.quadTo(SkBits2Float(0x39a32d2d), SkBits2Float(0x00000000), SkBits2Float(0xb8a13a00), SkBits2Float(0x00000000)); // 0.000311234f, 0, -7.68788e-05f, 0
6359path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409f, -8.80821e-05f
6360path.quadTo(SkBits2Float(0x39ba814c), SkBits2Float(0xb838fed2), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0.00035573f, -4.41063e-05f, 0, 0
6361path.lineTo(SkBits2Float(0x38bd8610), SkBits2Float(0x00000000)); // 9.03719e-05f, 0
6362path.close();
6363
6364 SkPath path1(path);
6365 path.reset();
6366 path.setFillType((SkPath::FillType) 0);
6367
6368 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006369 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
caryclark55888e42016-07-18 10:01:36 -07006370}
6371
6372// crbug.com/627401
6373static void fuzz763_2a(skiatest::Reporter* reporter, const char* filename) {
6374 SkPath path;
6375 path.setFillType((SkPath::FillType) 1);
6376
6377 SkPath path1(path);
6378 path.reset();
6379 path.setFillType((SkPath::FillType) 0);
6380path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6381path.quadTo(SkBits2Float(0x3e484500), SkBits2Float(0x164f3a30), SkBits2Float(0x49484801), SkBits2Float(0x7d0100c8)); // 0.195576f, 1.67397e-25f, 820352, 1.07172e+37f
6382path.conicTo(SkBits2Float(0xff7f36fd), SkBits2Float(0x3e647d01), SkBits2Float(0x0c00f430), SkBits2Float(0x486b6448), SkBits2Float(0x00484848)); // -3.39239e+38f, 0.223133f, 9.93424e-32f, 241041, 6.63809e-39f
6383path.lineTo(SkBits2Float(0x4f4f557d), SkBits2Float(0x48480112)); // 3.47849e+09f, 204804
6384path.lineTo(SkBits2Float(0xf40c01ff), SkBits2Float(0x45008000)); // -4.43702e+31f, 2056
6385path.moveTo(SkBits2Float(0x4bfffa00), SkBits2Float(0x7d4ac859)); // 3.35514e+07f, 1.68465e+37f
6386path.conicTo(SkBits2Float(0x7d014f3e), SkBits2Float(0x00f4ff01), SkBits2Float(0x6b64480c), SkBits2Float(0x48484848), SkBits2Float(0x557d0100)); // 1.07426e+37f, 2.24993e-38f, 2.75975e+26f, 205089, 1.73863e+13f
6387
6388 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006389 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclark55888e42016-07-18 10:01:36 -07006390}
6391
6392// crbug.com/627761
6393static void fuzz763_2b(skiatest::Reporter* reporter, const char* filename) {
6394 SkPath path;
6395 path.setFillType((SkPath::FillType) 1);
6396
6397 SkPath path1(path);
6398 path.reset();
6399 path.setFillType((SkPath::FillType) 0);
6400path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55)); // 4.76191e+16f, 5.7784e-19f
6401path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
6402path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21)); // 2.50338e-13f, 4.61198e-19f
6403path.conicTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x4721ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28), SkBits2Float(0x4f9a3a8a)); // 5.63611e+25f, 41453.5f, 9.4495e-15f, 0.000617492f, 5.17506e+09f
6404path.lineTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
6405path.close();
6406path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
6407path.cubicTo(SkBits2Float(0x273ac23a), SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6), SkBits2Float(0x272a812a), SkBits2Float(0x295b2d29), SkBits2Float(0x29685568)); // 2.5918e-15f, 2.25206e-21f, 5.54035e+21f, 2.36623e-15f, 4.86669e-14f, 5.15884e-14f
6408path.lineTo(SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321)); // 4.78968e-34f, 1.99397e+36f
6409path.lineTo(SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28)); // 9.4495e-15f, 0.000617492f
6410path.lineTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
6411path.close();
6412path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f, 1.64987e+07f
6413path.quadTo(SkBits2Float(0x8a4fc29a), SkBits2Float(0x3ab3283a), SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6)); // -1.00033e-32f, 0.00136686f, 2.25206e-21f, 300.343f
6414path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
6415path.conicTo(SkBits2Float(0x1e2ab03a), SkBits2Float(0x2920213b), SkBits2Float(0x3b3ac527), SkBits2Float(0xc422333b), SkBits2Float(0x6c2a9f1f)); // 9.03617e-21f, 3.5556e-14f, 0.00284989f, -648.8f, 8.25075e+26f
6416path.quadTo(SkBits2Float(0xc25d2757), SkBits2Float(0x3a705921), SkBits2Float(0x2a105152), SkBits2Float(0x28d91210)); // -55.2884f, 0.000916855f, 1.2818e-13f, 2.40997e-14f
6417path.quadTo(SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19905e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
6418path.lineTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
6419path.close();
6420path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
6421path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0xcb7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, -1.64987e+07f, 121589
6422path.lineTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
6423path.close();
6424path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16f, 3.71718e-14f
6425path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x2d8a3a21), SkBits2Float(0x5b682b68), SkBits2Float(0x5b292d55)); // -1.2117e+19f, 1.57146e-11f, 6.53499e+16f, 4.76191e+16f
6426path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x0321081f)); // 1.43144e-13f, 4.7323e-37f
6427path.conicTo(SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x3a21477a)); // 3.04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f, 0.000615231f
6428path.moveTo(SkBits2Float(0x21df2828), SkBits2Float(0x9a3a8a3a)); // 1.51217e-18f, -3.85756e-23f
6429path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x28273ac2), SkBits2Float(0xe61d2a29), SkBits2Float(0x2a63962b)); // 0.00136978f, 9.2831e-15f, -1.85547e+23f, 2.02138e-13f
6430path.conicTo(SkBits2Float(0x2d29272a), SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x5b2d6829), SkBits2Float(0x212a8c55)); // 9.61523e-12f, 1.5954e+13f, 4.87407e+16f, 4.88097e+16f, 5.7784e-19f
6431path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6432path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f, -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
6433path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6434path.close();
6435
6436 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006437 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
caryclark55888e42016-07-18 10:01:36 -07006438}
6439
6440static void fuzz763_2c(skiatest::Reporter* reporter, const char* filename) {
6441 SkPath path;
6442 path.setFillType((SkPath::FillType) 1);
6443
6444path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x36344a4a)); // 0, 2.68653e-06f
6445path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x364a4a4a), SkBits2Float(0x364a4a4a), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0, 3.01436e-06f, 3.01436e-06f, 0, 0
6446path.lineTo(SkBits2Float(0x364a4a4a), SkBits2Float(0x00000000)); // 3.01436e-06f, 0
6447path.cubicTo(SkBits2Float(0x364a30f0), SkBits2Float(0x344ac7fb), SkBits2Float(0x3656d432), SkBits2Float(0x34cabb48), SkBits2Float(0x367031a9), SkBits2Float(0x351802f1)); // 3.01288e-06f, 1.88855e-07f, 3.2012e-06f, 3.77617e-07f, 3.57917e-06f, 5.66287e-07f
6448path.cubicTo(SkBits2Float(0x36a7b150), SkBits2Float(0x35ab09db), SkBits2Float(0x371874ed), SkBits2Float(0x3604f2c7), SkBits2Float(0x3784e0c7), SkBits2Float(0x36344a51)); // 4.99763e-06f, 1.27434e-06f, 9.08713e-06f, 1.98108e-06f, 1.58403e-05f, 2.68653e-06f
6449path.cubicTo(SkBits2Float(0x3743dc9a), SkBits2Float(0x36344a4f), SkBits2Float(0x36fbef33), SkBits2Float(0x36344a4e), SkBits2Float(0x36604a35), SkBits2Float(0x36344a4c)); // 1.16743e-05f, 2.68653e-06f, 7.50823e-06f, 2.68653e-06f, 3.34218e-06f, 2.68653e-06f
6450path.cubicTo(SkBits2Float(0x36531715), SkBits2Float(0x36344a4c), SkBits2Float(0x3645e3f5), SkBits2Float(0x36344a4b), SkBits2Float(0x3638b0d4), SkBits2Float(0x36344a4b)); // 3.14549e-06f, 2.68653e-06f, 2.9488e-06f, 2.68653e-06f, 2.75211e-06f, 2.68653e-06f
6451path.cubicTo(SkBits2Float(0x35f64120), SkBits2Float(0x36344a4b), SkBits2Float(0x35764124), SkBits2Float(0x36344a4a), SkBits2Float(0x00000000), SkBits2Float(0x36344a4a)); // 1.83474e-06f, 2.68653e-06f, 9.17369e-07f, 2.68653e-06f, 0, 2.68653e-06f
6452path.close();
6453 SkPath path1(path);
6454 path.reset();
6455 path.setFillType((SkPath::FillType) 0);
6456path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6457path.cubicTo(SkBits2Float(0x1931204a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a4a34), SkBits2Float(0x4a4a4a4a)); // 9.15721e-24f, 1.14845e-12f, 3.31014e+06f, 3.31014e+06f, 3.31432e+06f, 3.31432e+06f
6458path.moveTo(SkBits2Float(0x000010a1), SkBits2Float(0x19312000)); // 5.96533e-42f, 9.15715e-24f
6459path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa14a4a4a), SkBits2Float(0x08ff2ba1), SkBits2Float(0x08ff4a4a), SkBits2Float(0x4a344a4a)); // 3.31432e+06f, 3.31432e+06f, -6.85386e-19f, 1.53575e-33f, 1.53647e-33f, 2.95387e+06f
6460path.cubicTo(SkBits2Float(0x544a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x4e4a08ff), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa1a181ff)); // 3.47532e+12f, 3.31432e+06f, 1.14845e-12f, 8.47397e+08f, 3.31432e+06f, -1.09442e-18f
6461 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006462 testPathOpFuzz(reporter, path1, path2, kReverseDifference_SkPathOp, filename);
caryclarkaa7ceb62016-06-29 10:46:08 -07006463}
6464
caryclark1493b972016-07-19 11:29:14 -07006465static void fuzz763_6(skiatest::Reporter* reporter, const char* filename) {
6466 SkPath path;
6467 path.setFillType((SkPath::FillType) 1);
6468path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
6469path.cubicTo(SkBits2Float(0x68295b2d), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 3.19905e+24f, 0, 0, 0, 0, 4.03114e+24f
6470path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
6471path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x67d55b2a), SkBits2Float(0x67296a4b), SkBits2Float(0x67555b2a), SkBits2Float(0x677e1f70), SkBits2Float(0x66d55b2a)); // 0, 2.01509e+24f, 8.00041e+23f, 1.00755e+24f, 1.20006e+24f, 5.03773e+23f
6472path.cubicTo(SkBits2Float(0x678f0684), SkBits2Float(0x6684f008), SkBits2Float(0x6798f8ea), SkBits2Float(0x6625a942), SkBits2Float(0x67961914), SkBits2Float(0x65ce709a)); // 1.35084e+24f, 3.1389e+23f, 1.44478e+24f, 1.95578e+23f, 1.41764e+24f, 1.21861e+23f
6473path.cubicTo(SkBits2Float(0x679174f7), SkBits2Float(0x63199132), SkBits2Float(0x6756c79f), SkBits2Float(0x606478de), SkBits2Float(0x65682bcf), SkBits2Float(0x00000000)); // 1.3738e+24f, 2.83281e+21f, 1.01427e+24f, 6.58526e+19f, 6.85248e+22f, 0
6474path.conicTo(SkBits2Float(0x68295b02), SkBits2Float(0x60f7f28b), SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f), SkBits2Float(0x42784f5a)); // 3.19903e+24f, 1.42932e+20f, 0, 5.14279e+25f, 62.0775f
6475path.close();
6476path.moveTo(SkBits2Float(0x654d6d10), SkBits2Float(0x00000000)); // 6.06311e+22f, 0
6477path.lineTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000)); // 6.14991e+25f, 0
6478path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc0)); // 0, 6.14991e+25f
6479path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6480
6481 SkPath path1(path);
6482 path.reset();
6483 path.setFillType((SkPath::FillType) 0);
6484path.moveTo(SkBits2Float(0x3ac23a55), SkBits2Float(0x2a292827)); // 0.00148184f, 1.50241e-13f
6485path.lineTo(SkBits2Float(0x63962be6), SkBits2Float(0x272a812a)); // 5.54035e+21f, 2.36623e-15f
6486
6487 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006488 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclark1493b972016-07-19 11:29:14 -07006489}
6490
caryclark15976282016-07-21 05:48:43 -07006491static void fuzz763_7(skiatest::Reporter* reporter, const char* filename) {
6492 SkPath path;
6493 path.setFillType((SkPath::FillType) 0);
6494
6495 SkPath path1(path);
6496 path.reset();
6497 path.setFillType((SkPath::FillType) 0);
6498path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
6499path.moveTo(SkBits2Float(0x0f2a312a), SkBits2Float(0xc0032108)); // 8.39112e-30f, -2.04889f
6500path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76395e-19f, 4.7323e-37f, 6.14991e+25f
6501path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
6502path.moveTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
6503path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0xef2a8c55), SkBits2Float(0x295b2d2a), SkBits2Float(0x08685568), SkBits2Float(0x7bc00321)); // 5.76397e-19f, -5.27821e+28f, 4.86669e-14f, 6.99154e-34f, 1.99397e+36f
6504path.lineTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
6505path.close();
6506path.moveTo(SkBits2Float(0x68345b2d), SkBits2Float(0xf0682955)); // 3.40683e+24f, -2.87402e+29f
6507path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
6508path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6509path.lineTo(SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a281a4f)); // 0.00105461f, -8.09385e-33f
6510path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x272a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 2.36623e-15f, 0.000649768f
6511path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
6512path.conicTo(SkBits2Float(0xba1f203a), SkBits2Float(0xc422c538), SkBits2Float(0x215d5927), SkBits2Float(0x70ec2ac2), SkBits2Float(0x2a51523a)); // -0.000607017f, -651.082f, 7.49957e-19f, 5.84721e+29f, 1.85915e-13f
6513path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x683a5b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.52017e+24f
6514path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
6515path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 1.89339e-13f
6516path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a688c5b), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x8c08555b), SkBits2Float(0x2a2a29ca)); // 5.73801e-19f, 2.06544e-13f, 3.19905e+24f, 9.6297e-12f, -1.05027e-31f, 1.51135e-13f
6517path.quadTo(SkBits2Float(0x68295b21), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19904e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
6518path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6519path.close();
6520path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6521path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x5b2d6829), SkBits2Float(0x212a8c55), SkBits2Float(0xed7aba1f), SkBits2Float(0x2a212a8c)); // 6.14991e+25f, 4.88097e+16f, 5.7784e-19f, -4.84977e+27f, 1.43144e-13f
6522path.moveTo(SkBits2Float(0x2d212d08), SkBits2Float(0x5568295b)); // 9.16179e-12f, 1.5954e+13f
6523path.moveTo(SkBits2Float(0x5529685b), SkBits2Float(0x11295b68)); // 1.16416e+13f, 1.33599e-28f
6524path.conicTo(SkBits2Float(0x5b782968), SkBits2Float(0x3a292d55), SkBits2Float(0x2a8c555b), SkBits2Float(0x68295a2d), SkBits2Float(0x2d296855)); // 6.98513e+16f, 0.000645359f, 2.49282e-13f, 3.19897e+24f, 9.6297e-12f
6525path.moveTo(SkBits2Float(0x555b8c55), SkBits2Float(0x21682929)); // 1.50872e+13f, 7.86591e-19f
6526path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6527path.conicTo(SkBits2Float(0xac2d8ced), SkBits2Float(0x5b682968), SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55), SkBits2Float(0x081f282a)); // -2.4663e-12f, 6.53477e+16f, 4.76191e+16f, 5.7784e-19f, 4.78945e-34f
6528path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6529path.close();
6530path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6531path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x03081f21), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x2147ed7a)); // 6.14991e+25f, 2.50338e-13f, 4.00025e-37f, 5.63611e+25f, 6.77381e-19f
6532path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6533path.close();
6534path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6535path.quadTo(SkBits2Float(0x2d28282a), SkBits2Float(0x5568295b), SkBits2Float(0x3a21df68), SkBits2Float(0x4f9a3a8a)); // 9.55861e-12f, 1.5954e+13f, 0.000617495f, 5.17506e+09f
6536path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6537path.close();
6538path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6539path.cubicTo(SkBits2Float(0x5568c23a), SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a), SkBits2Float(0x3a7bc003), SkBits2Float(0x294b2827)); // 1.59951e+13f, 4.87407e+16f, 5.7784e-19f, 4.61198e-19f, 0.00096035f, 4.51099e-14f
6540
6541 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006542 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclark15976282016-07-21 05:48:43 -07006543}
6544
caryclarka339bb02016-07-21 12:28:04 -07006545static void kfuzz2(skiatest::Reporter* reporter, const char* filename) {
6546 SkPath path1;
6547 SkPath path;
6548path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
6549path.close();
6550path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
6551path.cubicTo(SkBits2Float(0xe3000000), SkBits2Float(0xf19e92c7), SkBits2Float(0xf17febcb), SkBits2Float(0xff7febcb), SkBits2Float(0x60600100), SkBits2Float(0x0100ff60)); // -2.36118e+21f, -1.57043e+30f, -1.26726e+30f, -3.40177e+38f, 6.45647e+19f, 2.36931e-38f
6552path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
6553path.close();
6554path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
6555path.lineTo(SkBits2Float(0x60601a1d), SkBits2Float(0x60606060)); // 6.4593e+19f, 6.46721e+19f
6556path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xfafadbfa)); // 0, -6.51268e+35f
6557path.close();
6558path.moveTo(SkBits2Float(0xe5e2f300), SkBits2Float(0xee244a40)); // -1.33967e+23f, -1.27113e+28f
6559path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
6560path.close();
6561path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
6562path.lineTo(SkBits2Float(0xfafafafa), SkBits2Float(0xe30000fa)); // -6.51582e+35f, -2.36125e+21f
6563path.conicTo(SkBits2Float(0x92e592e5), SkBits2Float(0xfafafafb), SkBits2Float(0xc4fa0000), SkBits2Float(0x6060fafa), SkBits2Float(0x60606060)); // -1.44881e-27f, -6.51582e+35f, -2000, 6.48462e+19f, 6.46721e+19f
6564path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
6565path.close();
6566path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
6567path.cubicTo(SkBits2Float(0xe3000000), SkBits2Float(0xf19e92c7), SkBits2Float(0xf17febcb), SkBits2Float(0xff7febcb), SkBits2Float(0xfafafa00), SkBits2Float(0xfafafafa)); // -2.36118e+21f, -1.57043e+30f, -1.26726e+30f, -3.40177e+38f, -6.51572e+35f, -6.51582e+35f
6568path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
6569path.close();
6570path.moveTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
6571path.cubicTo(SkBits2Float(0xe3000000), SkBits2Float(0xe39e92c7), SkBits2Float(0xf17febcb), SkBits2Float(0xff7febcb), SkBits2Float(0xeed0ee9a), SkBits2Float(0x9a98ffca)); // -2.36118e+21f, -5.85032e+21f, -1.26726e+30f, -3.40177e+38f, -3.23307e+28f, -6.3279e-23f
6572path.lineTo(SkBits2Float(0xba98ffee), SkBits2Float(0xfafafa1a)); // -0.0011673f, -6.51573e+35f
6573path.close();
6574SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006575 testPathOpFuzz(reporter, path1, path2, kXOR_SkPathOp, filename);
caryclarka339bb02016-07-21 12:28:04 -07006576}
6577
caryclarkcdeff812016-07-22 03:34:19 -07006578static void fuzz763_10(skiatest::Reporter* reporter, const char* filename) {
6579 SkPath path;
6580 path.setFillType((SkPath::FillType) 1);
6581path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 0, 4.03114e+24f
6582path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6583path.quadTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 6.14991e+25f, 0, 0, 6.14991e+25f
6584path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68556829)); // 0, 4.03114e+24f
6585path.close();
6586
6587 SkPath path1(path);
6588 path.reset();
6589 path.setFillType((SkPath::FillType) 0);
6590path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6591path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x2a8c8f55)); // 4.87407e+16f, 2.49685e-13f
6592path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6593path.close();
6594path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6595path.conicTo(SkBits2Float(0x682d2fed), SkBits2Float(0x755b6829), SkBits2Float(0x5b292d2b), SkBits2Float(0xc92a8c55), SkBits2Float(0x081f2a21)); // 3.27141e+24f, 2.78131e+32f, 4.76189e+16f, -698565, 4.78968e-34f
6596path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6597path.close();
6598path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6599path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a29)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121588
6600path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6601path.close();
6602path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6603path.quadTo(SkBits2Float(0x6829682d), SkBits2Float(0x292d555b), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a29)); // 3.20001e+24f, 3.84878e-14f, 2.49282e-13f, 4.78969e-34f
6604path.conicTo(SkBits2Float(0x6a497b19), SkBits2Float(0x218ced7a), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x47ed3a7a)); // 6.08939e+25f, 9.54963e-19f, 4.7323e-37f, 5.63611e+25f, 121461
6605path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6606path.close();
6607path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6608path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3a21df), SkBits2Float(0x2728282a), SkBits2Float(0x8a3a2129)); // 9.4456e-15f, -8.96194e-33f, 2.33365e-15f, -8.96181e-33f
6609path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3a3ac2b3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.000712435f, 1.50241e-13f, -1.38859e-25f
6610path.lineTo(SkBits2Float(0x272a802a), SkBits2Float(0x2a8c2d29)); // 2.36617e-15f, 2.49003e-13f
6611path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6612path.close();
6613path.moveTo(SkBits2Float(0x4f9a3a29), SkBits2Float(0x3ab38a28)); // 5.17501e+09f, 0.00136978f
6614path.quadTo(SkBits2Float(0xc368305b), SkBits2Float(0x5b296855), SkBits2Float(0x2d8c5568), SkBits2Float(0x1f2a2172)); // -232.189f, 4.7684e+16f, 1.59541e-11f, 3.60266e-20f
6615path.lineTo(SkBits2Float(0x29c00321), SkBits2Float(0x5b4b7b13)); // 8.52706e-14f, 5.72747e+16f
6616
6617 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006618 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
caryclarkcdeff812016-07-22 03:34:19 -07006619}
6620
caryclark8a8accb2016-07-22 10:56:26 -07006621static void fuzz763_11(skiatest::Reporter* reporter, const char* filename) {
6622 SkPath path;
6623 path.setFillType((SkPath::FillType) 0);
6624
6625 SkPath path1(path);
6626 path.reset();
6627 path.setFillType((SkPath::FillType) 0);
6628path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
6629path.moveTo(SkBits2Float(0x2a0f312a), SkBits2Float(0xc0032108)); // 1.2718e-13f, -2.04889f
6630path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76395e-19f, 4.7323e-37f, 6.14991e+25f
6631path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7b21), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14984e+25f, 9.43289e-15f, 1.21279e-11f
6632path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
6633path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0xef2a8c55), SkBits2Float(0x295b2d2a), SkBits2Float(0x08685568), SkBits2Float(0x7bc00321)); // 5.76397e-19f, -5.27821e+28f, 4.86669e-14f, 6.99154e-34f, 1.99397e+36f
6634path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
6635path.close();
6636path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0x70682955)); // 3.48239e+24f, 2.87402e+29f
6637path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
6638path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6639path.lineTo(SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a281a4f)); // 0.00105461f, -8.09385e-33f
6640path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x2a812a3b), SkBits2Float(0x2a552927)); // 2.25206e-21f, 300.343f, 2.29443e-13f, 1.89325e-13f
6641path.quadTo(SkBits2Float(0x3b1e2ab0), SkBits2Float(0x29272021), SkBits2Float(0x203a3b27), SkBits2Float(0x22c5381f)); // 0.00241343f, 3.71093e-14f, 1.57744e-19f, 5.34564e-18f
6642path.moveTo(SkBits2Float(0x5d27ec2a), SkBits2Float(0x705921c2)); // 7.56256e+17f, 2.68796e+29f
6643path.quadTo(SkBits2Float(0x102a5152), SkBits2Float(0x5b2dd912), SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 3.35892e-29f, 4.89338e+16f, 4.03114e+24f, 1.50617e+13f
6644path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032127)); // 3.60396e-20f, -2.0489f
6645path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0x2a8c684b), SkBits2Float(0xf05b272d), SkBits2Float(0x2a1f1555), SkBits2Float(0x21082a21), SkBits2Float(0x6a4b7b03)); // 3.4979e+24f, 2.49414e-13f, -2.71298e+29f, 1.41294e-13f, 4.61343e-19f, 6.14982e+25f
6646path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
6647path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
6648path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0xef2a8c55), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -5.27821e+28f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
6649path.lineTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
6650path.close();
6651path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
6652path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x2a21211f)); // 4.85282e+16f, 1.43112e-13f
6653path.lineTo(SkBits2Float(0x03552a8c), SkBits2Float(0x6a4f7b28)); // 6.26439e-37f, 6.27073e+25f
6654path.conicTo(SkBits2Float(0x2347ed93), SkBits2Float(0x282a3a21), SkBits2Float(0x3adf2128), SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28)); // 1.08381e-17f, 9.4495e-15f, 0.00170234f, 2.58753e+09f, 0.00136978f
6655path.lineTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
6656path.close();
6657path.moveTo(SkBits2Float(0x2a395b2d), SkBits2Float(0xf0682955)); // 1.64629e-13f, -2.87402e+29f
6658path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x262a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 5.91556e-16f, 0.000649768f
6659path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
6660path.conicTo(SkBits2Float(0x371f203a), SkBits2Float(0xc52a22c4), SkBits2Float(0xc25d27ec), SkBits2Float(0x3a705921), SkBits2Float(0x5210513a)); // 9.48464e-06f, -2722.17f, -55.289f, 0.000916855f, 1.5496e+11f
6661path.cubicTo(SkBits2Float(0x63102ad9), SkBits2Float(0x29c80927), SkBits2Float(0x633a27b0), SkBits2Float(0x2909c827), SkBits2Float(0x272927b1), SkBits2Float(0x3a685b2d)); // 2.65942e+21f, 8.88337e-14f, 3.43395e+21f, 3.05937e-14f, 2.3475e-15f, 0.000886368f
6662path.moveTo(SkBits2Float(0x682d6829), SkBits2Float(0x29685555)); // 3.27556e+24f, 5.15884e-14f
6663path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x5b2d2729)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 4.87382e+16f
6664path.quadTo(SkBits2Float(0x2d685568), SkBits2Float(0x5568295b), SkBits2Float(0x2a552d29), SkBits2Float(0x295b2d27)); // 1.32066e-11f, 1.5954e+13f, 1.89339e-13f, 4.86669e-14f
6665path.lineTo(SkBits2Float(0x682d6829), SkBits2Float(0x29685555)); // 3.27556e+24f, 5.15884e-14f
6666path.close();
6667
6668 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006669 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclark8a8accb2016-07-22 10:56:26 -07006670}
caryclarkcdeff812016-07-22 03:34:19 -07006671
caryclark8bc90e22016-07-25 06:05:08 -07006672static void fuzz763_12(skiatest::Reporter* reporter, const char* filename) {
6673 SkPath path;
6674 path.setFillType((SkPath::FillType) 1);
6675path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6676path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a29082a)); // 0, 5.10868e+25f
6677path.conicTo(SkBits2Float(0x6a295ac3), SkBits2Float(0x61bb988e), SkBits2Float(0x6829682d), SkBits2Float(0x5f3ba76a), SkBits2Float(0x42730a87)); // 5.11843e+25f, 4.32567e+20f, 3.20001e+24f, 1.35219e+19f, 60.7603f
6678path.conicTo(SkBits2Float(0x67aedf99), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x3f801112)); // 1.65163e+24f, 0, 0, 0, 1.00052f
6679path.close();
6680path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6681path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 6.14991e+25f, 0, 0, 4.03114e+24f, 1.50617e+13f
6682path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
6683path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x67d55b2a), SkBits2Float(0x67296a4b), SkBits2Float(0x67555b2a), SkBits2Float(0x677e1f70), SkBits2Float(0x66d55b2a)); // 0, 2.01509e+24f, 8.00041e+23f, 1.00755e+24f, 1.20006e+24f, 5.03773e+23f
6684path.cubicTo(SkBits2Float(0x678f0684), SkBits2Float(0x6684f008), SkBits2Float(0x6798f8ea), SkBits2Float(0x6625a942), SkBits2Float(0x67961914), SkBits2Float(0x65ce709a)); // 1.35084e+24f, 3.1389e+23f, 1.44478e+24f, 1.95578e+23f, 1.41764e+24f, 1.21861e+23f
6685path.cubicTo(SkBits2Float(0x679158b0), SkBits2Float(0x00000000), SkBits2Float(0x67531e34), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 1.37276e+24f, 0, 9.96976e+23f, 0, 0, 0
6686path.close();
6687
6688 SkPath path1(path);
6689 path.reset();
6690 path.setFillType((SkPath::FillType) 0);
6691path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6692path.conicTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003), SkBits2Float(0xed237a6a), SkBits2Float(0x2d682967), SkBits2Float(0x2a8c555b)); // 4.61198e-19f, 1.64987e+07f, -3.16213e+27f, 1.31969e-11f, 2.49282e-13f
6693path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6694path.close();
6695path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6696path.lineTo(SkBits2Float(0x3a6821df), SkBits2Float(0x2a8c3a8a)); // 0.000885514f, 2.49096e-13f
6697path.moveTo(SkBits2Float(0x29272a1d), SkBits2Float(0xb03a2a55)); // 3.7118e-14f, -6.77266e-10f
6698path.moveTo(SkBits2Float(0x20213b1e), SkBits2Float(0xc5272927)); // 1.36568e-19f, -2674.57f
6699path.quadTo(SkBits2Float(0xc422373b), SkBits2Float(0xec2a201f), SkBits2Float(0x21c25d27), SkBits2Float(0x523a7059)); // -648.863f, -8.22676e+26f, 1.31706e-18f, 2.00187e+11f
6700path.cubicTo(SkBits2Float(0x12102a10), SkBits2Float(0xe73a28d9), SkBits2Float(0xc8092763), SkBits2Float(0x2927b029), SkBits2Float(0x295b2d27), SkBits2Float(0x2d685568)); // 4.54902e-28f, -8.79114e+23f, -140446, 3.72342e-14f, 4.86669e-14f, 1.32066e-11f
6701path.moveTo(SkBits2Float(0x68556809), SkBits2Float(0x555b2d29)); // 4.03113e+24f, 1.50617e+13f
6702path.moveTo(SkBits2Float(0x1f2a212a), SkBits2Float(0x2d032108)); // 3.60263e-20f, 7.45382e-12f
6703path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // 4.03114e+24f, 1.89339e-13f
6704path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a528c5b), SkBits2Float(0x284f5b2d), SkBits2Float(0x218aa621), SkBits2Float(0x3f2d2db3), SkBits2Float(0x68293a2a)); // 5.73801e-19f, 1.87004e-13f, 1.15106e-14f, 9.39522e-19f, 0.676479f, 3.19661e+24f
6705
6706 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006707 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclark8bc90e22016-07-25 06:05:08 -07006708}
6709
caryclarke25a4f62016-07-26 09:26:29 -07006710static void fuzz763_13(skiatest::Reporter* reporter, const char* filename) {
6711 SkPath path;
6712 path.setFillType((SkPath::FillType) 1);
6713
6714 SkPath path1(path);
6715 path.reset();
6716 path.setFillType((SkPath::FillType) 0);
6717path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6718path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3adf2128), SkBits2Float(0x4f1a3a8a)); // 6.14991e+25f, 75739, 9.4495e-15f, 0.00170234f, 2.58753e+09f
6719path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6720path.close();
6721path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6722path.cubicTo(SkBits2Float(0x3ac2213a), SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x272a8128), SkBits2Float(0x3a2a5529), SkBits2Float(0x3b1e2ab0)); // 0.00148109f, 2.25206e-21f, 300.343f, 2.36623e-15f, 0.000649768f, 0.00241343f
6723path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6724path.close();
6725path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6726path.cubicTo(SkBits2Float(0x3b272927), SkBits2Float(0x381f203a), SkBits2Float(0x2ac422c5), SkBits2Float(0xc25d27ec), SkBits2Float(0x3a705921), SkBits2Float(0x2a105152)); // 0.00255067f, 3.79386e-05f, 3.48407e-13f, -55.289f, 0.000916855f, 1.2818e-13f
6727path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x68295b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.19905e+24f
6728path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
6729path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 1.89339e-13f
6730path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a688c5b), SkBits2Float(0x6829292d), SkBits2Float(0x2d296855), SkBits2Float(0x8c08555b), SkBits2Float(0x2a2a291f)); // 5.73801e-19f, 2.06544e-13f, 3.19536e+24f, 9.6297e-12f, -1.05027e-31f, 1.51133e-13f
6731path.conicTo(SkBits2Float(0x68295b21), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321)); // 3.19904e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f, 1.99397e+36f
6732path.lineTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6733path.close();
6734path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6735path.lineTo(SkBits2Float(0x5b2d6829), SkBits2Float(0x212a8c55)); // 4.88097e+16f, 5.7784e-19f
6736path.conicTo(SkBits2Float(0x8ced7aba), SkBits2Float(0x3f2a212a), SkBits2Float(0x2d212d08), SkBits2Float(0x5568295b), SkBits2Float(0x29685b2d)); // -3.65895e-31f, 0.664569f, 9.16179e-12f, 1.5954e+13f, 5.15934e-14f
6737path.lineTo(SkBits2Float(0x68295b68), SkBits2Float(0x2d296855)); // 3.19906e+24f, 9.6297e-12f
6738path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f, 4.61198e-19f
6739path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21), SkBits2Float(0x6aba7b03), SkBits2Float(0x2147ed7a)); // 6.14991e+25f, 2.50338e-13f, 4.61198e-19f, 1.12721e+26f, 6.77381e-19f
6740path.quadTo(SkBits2Float(0x6028282a), SkBits2Float(0x68292ddf), SkBits2Float(0x5b2d555b), SkBits2Float(0x68556829)); // 4.84679e+19f, 3.1957e+24f, 4.8789e+16f, 4.03114e+24f
6741
6742 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006743 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
caryclarke25a4f62016-07-26 09:26:29 -07006744}
6745
6746static void fuzz763_14(skiatest::Reporter* reporter, const char* filename) {
6747 SkPath path;
6748 path.setFillType((SkPath::FillType) 0);
6749
6750 SkPath path1(path);
6751 path.reset();
6752 path.setFillType((SkPath::FillType) 0);
6753path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0xf45b2d29)); // 4.03114e+24f, -6.94598e+31f
6754path.moveTo(SkBits2Float(0x1f2a302a), SkBits2Float(0xc8032108)); // 3.60387e-20f, -134276
6755path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf0db684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x302a5b25), SkBits2Float(0xf0685568)); // 3.4979e+24f, -5.43226e+29f, -1.64207e-31f, 5.76527e-19f, 6.19752e-10f, -2.87615e+29f
6756
6757 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006758 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclarke25a4f62016-07-26 09:26:29 -07006759}
6760
6761static void fuzz763_15(skiatest::Reporter* reporter, const char* filename) {
6762 SkPath path;
6763 path.setFillType((SkPath::FillType) 1);
6764
6765 SkPath path1(path);
6766 path.reset();
6767 path.setFillType((SkPath::FillType) 0);
6768path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55)); // 4.76191e+16f, 5.7784e-19f
6769path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
6770path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x2c6829c0), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a29)); // 5.77848e-19f, 4.7323e-37f, 3.29924e-12f, 2.49282e-13f, 4.78969e-34f
6771path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
6772path.close();
6773path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
6774path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0xdf218a28), SkBits2Float(0x4f1a3a3a)); // 6.14991e+25f, 75739, 9.4495e-15f, -1.16402e+19f, 2.58751e+09f
6775path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x283ac221), SkBits2Float(0xe6432a29), SkBits2Float(0x2a96812b)); // 0.00136978f, 1.03672e-14f, -2.3041e+23f, 2.6735e-13f
6776path.lineTo(SkBits2Float(0x5529272a), SkBits2Float(0x1eb03a2a)); // 1.16241e+13f, 1.86588e-20f
6777path.conicTo(SkBits2Float(0x2a272021), SkBits2Float(0x3ac52729), SkBits2Float(0xc422313b), SkBits2Float(0xec2a201f), SkBits2Float(0x21c25d27)); // 1.48437e-13f, 0.00150416f, -648.769f, -8.22676e+26f, 1.31706e-18f
6778path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a6b7bc4)); // 4.7323e-37f, 7.11705e+25f
6779path.close();
6780path.moveTo(SkBits2Float(0x1051523a), SkBits2Float(0xd912102a)); // 4.12813e-29f, -2.56957e+15f
6781path.close();
6782path.moveTo(SkBits2Float(0x1051523a), SkBits2Float(0xd912102a)); // 4.12813e-29f, -2.56957e+15f
6783path.quadTo(SkBits2Float(0xc82763e7), SkBits2Float(0x2927b029), SkBits2Float(0x295b2d27), SkBits2Float(0x2d685568)); // -171408, 3.72342e-14f, 4.86669e-14f, 1.32066e-11f
6784path.moveTo(SkBits2Float(0x68556809), SkBits2Float(0x8c555b2d)); // 4.03113e+24f, -1.64364e-31f
6785path.moveTo(SkBits2Float(0x081f2a21), SkBits2Float(0x252d0321)); // 4.78968e-34f, 1.50064e-16f
6786path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x5b2df068)); // 1.59583e+13f, 4.89595e+16f
6787path.quadTo(SkBits2Float(0x2a1f2a8c), SkBits2Float(0x21482a21), SkBits2Float(0x4b7bc003), SkBits2Float(0x8ced3a6a)); // 1.41368e-13f, 6.78184e-19f, 1.64987e+07f, -3.65508e-31f
6788path.moveTo(SkBits2Float(0x21481f21), SkBits2Float(0x4b7bc003)); // 6.78038e-19f, 1.64987e+07f
6789path.conicTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d155b2d), SkBits2Float(0x5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x2a8c8f55)); // 3.20982e+24f, 8.48991e-12f, 1.5954e+13f, 4.87407e+16f, 2.49685e-13f
6790path.lineTo(SkBits2Float(0x21481f21), SkBits2Float(0x4b7bc003)); // 6.78038e-19f, 1.64987e+07f
6791path.close();
6792path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6793path.conicTo(SkBits2Float(0x682d2fed), SkBits2Float(0x755b6829), SkBits2Float(0x5b292d2b), SkBits2Float(0xc92a8c55), SkBits2Float(0x081f2a21)); // 3.27141e+24f, 2.78131e+32f, 4.76189e+16f, -698565, 4.78968e-34f
6794path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6795path.close();
6796path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6797path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x212aed7a), SkBits2Float(0x0321081f), SkBits2Float(0x293a7bc0), SkBits2Float(0x2147ed7a)); // 6.14991e+25f, 5.79125e-19f, 4.7323e-37f, 4.14076e-14f, 6.77381e-19f
6798path.quadTo(SkBits2Float(0x6829682d), SkBits2Float(0x292d555b), SkBits2Float(0x292a8c55), SkBits2Float(0x21081f2a)); // 3.20001e+24f, 3.84878e-14f, 3.78693e-14f, 4.61198e-19f
6799path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x218ced7a), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x47ed3a7a)); // 6.14991e+25f, 9.54963e-19f, 4.7323e-37f, 5.63611e+25f, 121461
6800path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6801path.close();
6802path.moveTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6803path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3a21df), SkBits2Float(0x2728282a), SkBits2Float(0x8a3a21df)); // 9.4456e-15f, -8.96194e-33f, 2.33365e-15f, -8.96194e-33f
6804path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3a3ac2b3), SkBits2Float(0x2a292827), SkBits2Float(0x962be61d)); // -8.10388e-33f, 0.000712435f, 1.50241e-13f, -1.38859e-25f
6805path.lineTo(SkBits2Float(0x272a802a), SkBits2Float(0x2a8c2d29)); // 2.36617e-15f, 2.49003e-13f
6806path.lineTo(SkBits2Float(0xc021211f), SkBits2Float(0x6a4b7b03)); // -2.51765f, 6.14982e+25f
6807path.close();
6808path.moveTo(SkBits2Float(0x4f9a3a29), SkBits2Float(0x3ab38a28)); // 5.17501e+09f, 0.00136978f
6809path.quadTo(SkBits2Float(0xc368305b), SkBits2Float(0x5b296855), SkBits2Float(0x2d8c5568), SkBits2Float(0x1f2a2172)); // -232.189f, 4.7684e+16f, 1.59541e-11f, 3.60266e-20f
6810path.lineTo(SkBits2Float(0x29c00321), SkBits2Float(0x5b4b7b13)); // 8.52706e-14f, 5.72747e+16f
6811
6812 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006813 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
caryclarke25a4f62016-07-26 09:26:29 -07006814}
6815
caryclarkfc560e02016-07-27 08:46:10 -07006816static void fuzz763_16(skiatest::Reporter* reporter, const char* filename) {
6817 SkPath path;
6818 path.setFillType((SkPath::FillType) 0);
6819
6820 SkPath path1(path);
6821 path.reset();
6822 path.setFillType((SkPath::FillType) 0);
6823path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
6824path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
6825path.cubicTo(SkBits2Float(0x68372d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c552775), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.46012e+24f, -2.71613e+29f, -1.64208e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
6826path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
6827path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
6828path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
6829path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
6830path.close();
6831path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
6832path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
6833path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6834path.conicTo(SkBits2Float(0x68385b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.48239e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
6835path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
6836path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6837path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.7323e-37f, 6.14991e+25f, 75739
6838path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6839path.close();
6840path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6841path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
6842path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6843path.close();
6844path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6845path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
6846path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6847path.close();
6848path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6849path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x681aed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 2.92648e+24f, 1.46617e+13f, 9.01175e-21f
6850path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21512727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 7.08638e-19f
6851path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6852path.close();
6853path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
6854path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
6855path.moveTo(SkBits2Float(0x1f2a322a), SkBits2Float(0xc0032108)); // 3.60404e-20f, -2.04889f
6856path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05bd24b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0xed4b7bc0)); // 4.06458e+24f, -2.72126e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, -3.93594e+27f
6857path.conicTo(SkBits2Float(0x212a8c6a), SkBits2Float(0x0329081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77841e-19f, 4.9674e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
6858path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
6859path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
6860path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
6861path.close();
6862path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
6863path.lineTo(SkBits2Float(0x555b6829), SkBits2Float(0x6c212a8c)); // 1.50775e+13f, 7.79352e+26f
6864path.conicTo(SkBits2Float(0x084b0321), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0x5bf05568), SkBits2Float(0x212a3a8c)); // 6.10918e-34f, 1.16348e+26f, 0.000209024f, 1.35296e+17f, 5.76757e-19f
6865path.lineTo(SkBits2Float(0x8c558c55), SkBits2Float(0x212a1f2a)); // -1.64512e-31f, 5.76395e-19f
6866
6867 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006868 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclarkfc560e02016-07-27 08:46:10 -07006869}
6870
6871static void fuzz763_17(skiatest::Reporter* reporter, const char* filename) {
6872 SkPath path;
6873 path.setFillType((SkPath::FillType) 0);
6874
6875 SkPath path1(path);
6876 path.reset();
6877 path.setFillType((SkPath::FillType) 0);
6878path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
6879path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
6880path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
6881path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
6882path.moveTo(SkBits2Float(0x6835282d), SkBits2Float(0xf0682955)); // 3.42196e+24f, -2.87402e+29f
6883path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 4.2514e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
6884path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
6885path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6886path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
6887path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
6888path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
6889path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x254793ed)); // 2.49282e-13f, 5.76399e-19f, 4.7323e-37f, 6.14991e+25f, 1.73106e-16f
6890path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
6891path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
6892path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
6893path.close();
6894path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
6895path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
6896path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0x16c52a22), SkBits2Float(0x515d27ec)); // 2.22225e-15f, 0.000713932f, -732.486f, 3.18537e-25f, 5.93661e+10f
6897path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
6898path.close();
6899path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
6900path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
6901path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
6902path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
6903path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
6904path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
6905path.lineTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x2a212a1f)); // 2.49282e-13f, 1.43143e-13f
6906path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
6907path.close();
6908path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
6909path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x2a1f08c0)); // -1.31678e-31f, 1.41251e-13f
6910path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
6911path.close();
6912path.moveTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
6913path.conicTo(SkBits2Float(0x55086821), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x5b2c6829), SkBits2Float(0x21218c55), SkBits2Float(0x2a6c1f03)); // 9.3738e+12f, 6.14991e+25f, 4.85282e+16f, 5.47346e-19f, 2.09718e-13f
6914path.lineTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
6915path.close();
6916path.moveTo(SkBits2Float(0x2a8cef55), SkBits2Float(0x68295b2d)); // 2.50351e-13f, 3.19905e+24f
6917path.lineTo(SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a)); // 1.16348e+26f, 0.000209024f
6918
6919 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006920 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclarkfc560e02016-07-27 08:46:10 -07006921}
6922
caryclark643ede62016-08-08 14:27:45 -07006923static void fuzz763_18(skiatest::Reporter* reporter, const char* filename) {
6924 SkPath path;
6925 path.setFillType((SkPath::FillType) 0);
6926
6927 SkPath path1(path);
6928 path.reset();
6929 path.setFillType((SkPath::FillType) 0);
6930path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
6931path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
6932path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
6933path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
6934path.moveTo(SkBits2Float(0x6835282d), SkBits2Float(0xf0682955)); // 3.42196e+24f, -2.87402e+29f
6935path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 4.2514e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
6936path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
6937path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6938path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
6939path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
6940path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
6941path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x254793ed)); // 2.49282e-13f, 5.76399e-19f, 4.7323e-37f, 6.14991e+25f, 1.73106e-16f
6942path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
6943path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
6944path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
6945path.close();
6946path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
6947path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
6948path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0x16c52a22), SkBits2Float(0x515d27ec)); // 2.22225e-15f, 0.000713932f, -732.486f, 3.18537e-25f, 5.93661e+10f
6949path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
6950path.close();
6951path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
6952path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
6953path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
6954path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
6955path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
6956path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
6957path.lineTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x2a212a1f)); // 2.49282e-13f, 1.43143e-13f
6958path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
6959path.close();
6960path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
6961path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x2a1f08c0)); // -1.31678e-31f, 1.41251e-13f
6962
6963path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
6964path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
6965path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
6966path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
6967path.conicTo(SkBits2Float(0x2a8c54ed), SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003), SkBits2Float(0x29ed846a), SkBits2Float(0x555b2d28)); // 2.49279e-13f, 4.61198e-19f, 1.64987e+07f, 1.05479e-13f, 1.50617e+13f
6968path.conicTo(SkBits2Float(0x68392d5b), SkBits2Float(0xf0682955), SkBits2Float(0x2a1f5b2d), SkBits2Float(0xef552a21), SkBits2Float(0x5b2d2a8c)); // 3.4979e+24f, -2.87402e+29f, 1.41537e-13f, -6.59712e+28f, 4.8742e+16f
6969
6970 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07006971 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclark643ede62016-08-08 14:27:45 -07006972}
6973
6974static void fuzz763_19(skiatest::Reporter* reporter, const char* filename) {
6975 SkPath path;
6976 path.setFillType((SkPath::FillType) 1);
6977
6978 SkPath path1(path);
6979 path.reset();
6980 path.setFillType((SkPath::FillType) 0);
6981path.moveTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003)); // 4.61198e-19f, 1.64987e+07f
6982path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 9.43289e-15f, 1.61207e+25f
6983path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
6984path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 4.2514e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
6985path.moveTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
6986path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
6987path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x8c5bf055), SkBits2Float(0x2a1f2a55), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, -1.69435e-31f, 1.41367e-13f, 4.7362e-37f, 1.43189e+16f
6988path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
6989path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6990path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2547937a)); // 2.49282e-13f, 5.76399e-19f, 4.7323e-37f, 6.14991e+25f, 1.73105e-16f
6991path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
6992path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
6993path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6994path.close();
6995path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6996path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
6997path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21515d27)); // 2.22225e-15f, 0.000713932f, -732.486f, -1.90686e+27f, 7.09352e-19f
6998path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
6999path.close();
7000path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
7001path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
7002path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
7003path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
7004path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
7005path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7006path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
7007path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7008path.close();
7009path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7010path.lineTo(SkBits2Float(0x555b2c29), SkBits2Float(0x6c212a8c)); // 1.50614e+13f, 7.79352e+26f
7011path.conicTo(SkBits2Float(0x084b0321), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0xf05b5568), SkBits2Float(0x212a3a8c)); // 6.10918e-34f, 1.16348e+26f, 0.000209024f, -2.71522e+29f, 5.76757e-19f
7012path.conicTo(SkBits2Float(0x290321d9), SkBits2Float(0x555b2d68), SkBits2Float(0x2a8c558c), SkBits2Float(0x2abe2a1f), SkBits2Float(0x7bc00321)); // 2.91172e-14f, 1.50618e+13f, 2.49284e-13f, 3.378e-13f, 1.99397e+36f
7013path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7014path.close();
7015path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7016path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x1f2128c0)); // -1.31678e-31f, 3.41268e-20f
7017path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7018path.close();
7019
7020 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007021 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclark643ede62016-08-08 14:27:45 -07007022}
7023
7024static void fuzz763_20(skiatest::Reporter* reporter, const char* filename) {
7025 SkPath path;
7026 path.setFillType((SkPath::FillType) 0);
7027
7028 SkPath path1(path);
7029 path.reset();
7030 path.setFillType((SkPath::FillType) 0);
7031path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
7032path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
7033path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
7034path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
7035path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
7036path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2a8c552a), SkBits2Float(0x68295b2d), SkBits2Float(0x08682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 2.49281e-13f, 3.19905e+24f, 6.98538e-34f, 1.64988e+07f
7037path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
7038path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
7039path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, 1.51141e+13f, 1.41368e-13f, 4.7362e-37f, 1.43189e+16f
7040path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
7041path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
7042path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321182a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.73414e-37f, 6.14991e+25f, 75739
7043path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
7044path.close();
7045path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
7046path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
7047path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
7048path.close();
7049path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
7050path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
7051path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
7052path.close();
7053path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
7054path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
7055path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x51282727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 4.51382e+10f
7056path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
7057path.close();
7058path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
7059path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x8c555b2d)); // 4.03114e+24f, -1.64364e-31f
7060path.moveTo(SkBits2Float(0x081f2a31), SkBits2Float(0xc0032921)); // 4.78969e-34f, -2.04939f
7061path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05bd24b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0xed4b7bc0)); // 4.06458e+24f, -2.72126e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, -3.93594e+27f
7062path.conicTo(SkBits2Float(0x212a8c6a), SkBits2Float(0x4329081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 5.77841e-19f, 169.032f, 6.14991e+25f, 9.43289e-15f, 4.8745e+16f
7063path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7064path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x3a210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 0.000614217f, 1.99729e+36f
7065path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7066path.close();
7067path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7068path.lineTo(SkBits2Float(0x555b6829), SkBits2Float(0x6c212a8c)); // 1.50775e+13f, 7.79352e+26f
7069path.lineTo(SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556830)); // 4.88298e+16f, -2.64185e+29f
7070path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7071path.close();
7072path.moveTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7073path.conicTo(SkBits2Float(0x0321d90a), SkBits2Float(0x555b2d68), SkBits2Float(0x2a8c558c), SkBits2Float(0x212a2a1f), SkBits2Float(0x4b7bc003)); // 4.75628e-37f, 1.50618e+13f, 2.49284e-13f, 5.7654e-19f, 1.64987e+07f
7074path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x212128c0)); // -1.31678e-31f, 5.46029e-19f
7075path.lineTo(SkBits2Float(0x68395b2d), SkBits2Float(0xf0682955)); // 3.50128e+24f, -2.87402e+29f
7076path.close();
7077
7078 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007079 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclark643ede62016-08-08 14:27:45 -07007080}
7081
7082static void fuzz763_21(skiatest::Reporter* reporter, const char* filename) {
7083 SkPath path;
7084 path.setFillType((SkPath::FillType) 1);
7085path.moveTo(SkBits2Float(0x6828c6f9), SkBits2Float(0x6614dc9e)); // 3.18811e+24f, 1.75745e+23f
7086path.cubicTo(SkBits2Float(0x68303469), SkBits2Float(0x661f92fc), SkBits2Float(0x6837d3c3), SkBits2Float(0x662b0eb2), SkBits2Float(0x683fa268), SkBits2Float(0x663759e1)); // 3.32841e+24f, 1.88392e+23f, 3.4724e+24f, 2.01949e+23f, 3.61987e+24f, 2.16463e+23f
7087path.cubicTo(SkBits2Float(0x68c4391f), SkBits2Float(0x672c5c9f), SkBits2Float(0x688b20ab), SkBits2Float(0x6804b825), SkBits2Float(0x681ddb5e), SkBits2Float(0x6838dc00)); // 7.4131e+24f, 8.13956e+23f, 5.25609e+24f, 2.507e+24f, 2.98183e+24f, 3.49189e+24f
7088path.lineTo(SkBits2Float(0x6828c6f9), SkBits2Float(0x6614dc9e)); // 3.18811e+24f, 1.75745e+23f
7089path.close();
7090path.moveTo(SkBits2Float(0x68226c73), SkBits2Float(0x660bd15e)); // 3.0681e+24f, 1.65068e+23f
7091path.cubicTo(SkBits2Float(0x6823b0e1), SkBits2Float(0x660d990f), SkBits2Float(0x6824f6d5), SkBits2Float(0x660f668c), SkBits2Float(0x68263e4e), SkBits2Float(0x66113632)); // 3.09203e+24f, 1.67169e+23f, 3.11609e+24f, 1.69298e+23f, 3.14025e+24f, 1.71436e+23f
7092path.cubicTo(SkBits2Float(0x682715e4), SkBits2Float(0x6612676d), SkBits2Float(0x6827ee22), SkBits2Float(0x66139997), SkBits2Float(0x6828c709), SkBits2Float(0x6614cba5)); // 3.15616e+24f, 1.72843e+23f, 3.17211e+24f, 1.74255e+23f, 3.18812e+24f, 1.75667e+23f
7093path.lineTo(SkBits2Float(0x6828d720), SkBits2Float(0x6604a1a2)); // 3.1893e+24f, 1.56583e+23f
7094path.cubicTo(SkBits2Float(0x68270421), SkBits2Float(0x6601102c), SkBits2Float(0x68252b97), SkBits2Float(0x65fb1edd), SkBits2Float(0x68234ce5), SkBits2Float(0x65f4367f)); // 3.15485e+24f, 1.52371e+23f, 3.11998e+24f, 1.48235e+23f, 3.08466e+24f, 1.44158e+23f
7095path.conicTo(SkBits2Float(0x6822e012), SkBits2Float(0x6602acc5), SkBits2Float(0x68226c73), SkBits2Float(0x660bd15e), SkBits2Float(0x3f7ffa04)); // 3.07663e+24f, 1.54274e+23f, 3.0681e+24f, 1.65068e+23f, 0.999909f
7096path.close();
7097path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
7098path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
7099path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x68617414), SkBits2Float(0x66af1c42), SkBits2Float(0x68624f96), SkBits2Float(0x6757755b), SkBits2Float(0x685b93f2)); // 0, 4.25869e+24f, 4.13468e+23f, 4.27489e+24f, 1.01747e+24f, 4.14771e+24f
7100path.cubicTo(SkBits2Float(0x67a63a84), SkBits2Float(0x68fe1c37), SkBits2Float(0x67c05eed), SkBits2Float(0x69930962), SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 1.56998e+24f, 9.60001e+24f, 1.81689e+24f, 2.22196e+25f, 0, 5.14279e+25f
7101path.close();
7102path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
7103path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
7104path.cubicTo(SkBits2Float(0x6a2c8798), SkBits2Float(0x68f7a144), SkBits2Float(0x6951f5ea), SkBits2Float(0x6796ad55), SkBits2Float(0x683fa268), SkBits2Float(0x663759e1)); // 5.21439e+25f, 9.35519e+24f, 1.58642e+25f, 1.4231e+24f, 3.61987e+24f, 2.16463e+23f
7105path.cubicTo(SkBits2Float(0x683871e3), SkBits2Float(0x66253b4f), SkBits2Float(0x6830da01), SkBits2Float(0x66144d3e), SkBits2Float(0x6828d720), SkBits2Float(0x6604a1a2)); // 3.48407e+24f, 1.95071e+23f, 3.34063e+24f, 1.75084e+23f, 3.1893e+24f, 1.56583e+23f
7106path.conicTo(SkBits2Float(0x68295b21), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x492bb324)); // 3.19904e+24f, 0, 0, 0, 703282
7107path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x677b84f0), SkBits2Float(0x00000000), SkBits2Float(0x68226c73), SkBits2Float(0x660bd15e)); // 0, 0, 1.18777e+24f, 0, 3.0681e+24f, 1.65068e+23f
7108path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68156829)); // 0, 2.82222e+24f
7109path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68555b2a)); // 0, 4.03018e+24f
7110path.lineTo(SkBits2Float(0x673918f3), SkBits2Float(0x681b0f5f)); // 8.74098e+23f, 2.929e+24f
7111path.lineTo(SkBits2Float(0x67391759), SkBits2Float(0x681b0fae)); // 8.74068e+23f, 2.92902e+24f
7112path.cubicTo(SkBits2Float(0x674384e7), SkBits2Float(0x682e2068), SkBits2Float(0x674db698), SkBits2Float(0x6843893b), SkBits2Float(0x6757755b), SkBits2Float(0x685b93f2)); // 9.23313e+23f, 3.28916e+24f, 9.71453e+23f, 3.69357e+24f, 1.01747e+24f, 4.14771e+24f
7113path.cubicTo(SkBits2Float(0x67a63484), SkBits2Float(0x68556bdd), SkBits2Float(0x67f18c5f), SkBits2Float(0x6848eb25), SkBits2Float(0x681ddb5e), SkBits2Float(0x6838dc00)); // 1.56976e+24f, 4.03142e+24f, 2.28136e+24f, 3.79524e+24f, 2.98183e+24f, 3.49189e+24f
7114path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a2a291f)); // 0, 5.14279e+25f
7115path.close();
7116
7117 SkPath path1(path);
7118 path.reset();
7119 path.setFillType((SkPath::FillType) 0);
7120
7121 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007122 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 1, filename);
caryclark643ede62016-08-08 14:27:45 -07007123}
7124
7125static void fuzz763_22(skiatest::Reporter* reporter, const char* filename) {
7126 SkPath path;
7127 path.setFillType((SkPath::FillType) 1);
7128path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x68295b2d)); // 0, 3.19905e+24f
7129path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7130path.lineTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x00000000)); // 5.63611e+25f, 0
7131path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a034b21)); // 0, 3.9681e+25f
7132path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x68295b2d)); // 0, 3.19905e+24f
7133path.close();
7134path.moveTo(SkBits2Float(0x6617da56), SkBits2Float(0x00000000)); // 1.79276e+23f, 0
7135path.conicTo(SkBits2Float(0x5e704d09), SkBits2Float(0x5e3a4dfd), SkBits2Float(0x00000000), SkBits2Float(0x65eb62ef), SkBits2Float(0x430fa5e6)); // 4.32888e+18f, 3.35617e+18f, 0, 1.38948e+23f, 143.648f
7136path.conicTo(SkBits2Float(0x5e798b32), SkBits2Float(0x627a95c0), SkBits2Float(0x61f5014c), SkBits2Float(0x61fba0fd), SkBits2Float(0x40f8a1a1)); // 4.49538e+18f, 1.15562e+21f, 5.64943e+20f, 5.80217e+20f, 7.76973f
7137path.conicTo(SkBits2Float(0x62743d2d), SkBits2Float(0x5e49b862), SkBits2Float(0x6617da56), SkBits2Float(0x00000000), SkBits2Float(0x410ef54c)); // 1.12635e+21f, 3.63387e+18f, 1.79276e+23f, 0, 8.93489f
7138path.close();
7139
7140 SkPath path1(path);
7141 path.reset();
7142 path.setFillType((SkPath::FillType) 0);
7143path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7144path.quadTo(SkBits2Float(0x4f9a3a8a), SkBits2Float(0xc28a0d28), SkBits2Float(0x273a3ab3), SkBits2Float(0x8b2a2928)); // 5.17506e+09f, -69.0257f, 2.58445e-15f, -3.27718e-32f
7145path.lineTo(SkBits2Float(0x63283ae6), SkBits2Float(0x27282a81)); // 3.1033e+21f, 2.33377e-15f
7146
7147 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007148 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
caryclark643ede62016-08-08 14:27:45 -07007149}
7150
7151static void fuzz763_23(skiatest::Reporter* reporter, const char* filename) {
7152 SkPath path;
7153 path.setFillType((SkPath::FillType) 0);
7154
7155 SkPath path1(path);
7156 path.reset();
7157 path.setFillType((SkPath::FillType) 0);
7158path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
7159path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
7160path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x03210c2a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.73276e-37f, 6.14991e+25f
7161path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
7162path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
7163path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef552a), SkBits2Float(0x29295b2d), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, 4.2514e-13f, 3.76046e-14f, 3.04146e+24f, 1.99729e+36f
7164path.lineTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0682955)); // 3.33127e+24f, -2.87402e+29f
7165path.close();
7166path.moveTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
7167path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
7168path.conicTo(SkBits2Float(0x68395b2d), SkBits2Float(0x8c5bf055), SkBits2Float(0x2a1f2a55), SkBits2Float(0x03212a21), SkBits2Float(0x5a4b7bc0)); // 3.50128e+24f, -1.69435e-31f, 1.41367e-13f, 4.7362e-37f, 1.43189e+16f
7169path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
7170path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
7171path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x08211f72), SkBits2Float(0x032a2a21), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2547937a)); // 2.49282e-13f, 4.84861e-34f, 5.00069e-37f, 6.14991e+25f, 1.73105e-16f
7172path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0xc2213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, -40.3073f
7173path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000650423f, 2.50336e-13f
7174path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
7175path.close();
7176path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
7177path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
7178path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21515d27)); // 2.22225e-15f, 0.000713932f, -732.486f, -1.90686e+27f, 7.09352e-19f
7179path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0685527)); // 3.35016e+24f, -2.87614e+29f
7180path.close();
7181path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
7182path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
7183path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
7184path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 4.06458e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
7185path.conicTo(SkBits2Float(0x2a8c54ed), SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003), SkBits2Float(0x29ed846a), SkBits2Float(0x555b2d28)); // 2.49279e-13f, 4.61198e-19f, 1.64987e+07f, 1.05479e-13f, 1.50617e+13f
7186path.conicTo(SkBits2Float(0x68392d5b), SkBits2Float(0xf0682955), SkBits2Float(0x2a1f5b2d), SkBits2Float(0xef552a21), SkBits2Float(0x5b2d2a8c)); // 3.4979e+24f, -2.87402e+29f, 1.41537e-13f, -6.59712e+28f, 4.8742e+16f
7187
7188 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007189 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclark643ede62016-08-08 14:27:45 -07007190}
7191
7192static void fuzz763_24(skiatest::Reporter* reporter, const char* filename) {
7193 SkPath path;
7194 path.setFillType((SkPath::FillType) 1);
7195
7196 SkPath path1(path);
7197 path.reset();
7198 path.setFillType((SkPath::FillType) 0);
7199path.moveTo(SkBits2Float(0xededed02), SkBits2Float(0xedededed)); // -9.20431e+27f, -9.20445e+27f
7200path.close();
7201path.moveTo(SkBits2Float(0xededed02), SkBits2Float(0xedededed)); // -9.20431e+27f, -9.20445e+27f
7202path.quadTo(SkBits2Float(0x9fb9c16e), SkBits2Float(0x27737375), SkBits2Float(0xb7c5ff00), SkBits2Float(0x00ff9908)); // -7.86706e-20f, 3.37856e-15f, -2.3603e-05f, 2.34729e-38f
7203path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7204path.cubicTo(SkBits2Float(0x1616ecec), SkBits2Float(0x2c321616), SkBits2Float(0x3516c616), SkBits2Float(0x6e161616), SkBits2Float(0x4c416033), SkBits2Float(0xf6000000)); // 1.21917e-25f, 2.53076e-12f, 5.61676e-07f, 1.16124e+28f, 5.06923e+07f, -6.49037e+32f
7205path.quadTo(SkBits2Float(0x04007f41), SkBits2Float(0xecececec), SkBits2Float(0xecececec), SkBits2Float(0xecec41ec)); // 1.51048e-36f, -2.2914e+27f, -2.2914e+27f, -2.28494e+27f
7206path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7207path.close();
7208path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7209path.quadTo(SkBits2Float(0x000000ec), SkBits2Float(0xececcc00), SkBits2Float(0x48ececec), SkBits2Float(0x0278806e)); // 3.30706e-43f, -2.29016e+27f, 485223, 1.8257e-37f
7210path.lineTo(SkBits2Float(0x72ececec), SkBits2Float(0xecec02ec)); // 9.38559e+30f, -2.28256e+27f
7211path.quadTo(SkBits2Float(0xec04007f), SkBits2Float(0xecececec), SkBits2Float(0xecececec), SkBits2Float(0xecec0400)); // -6.38322e+26f, -2.2914e+27f, -2.2914e+27f, -2.2826e+27f
7212path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7213path.close();
7214path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7215path.quadTo(SkBits2Float(0x000040ec), SkBits2Float(0x3a333300), SkBits2Float(0xecec3333), SkBits2Float(0xececdbec)); // 2.32896e-41f, 0.000683591f, -2.28439e+27f, -2.29076e+27f
7216path.lineTo(SkBits2Float(0x3300007f), SkBits2Float(0x33d83333)); // 2.98028e-08f, 1.00676e-07f
7217path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7218path.close();
7219path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7220path.quadTo(SkBits2Float(0x9e9ea900), SkBits2Float(0x33ececec), SkBits2Float(0xececec33), SkBits2Float(0xec336e6e)); // -1.67988e-20f, 1.10327e-07f, -2.29138e+27f, -8.67677e+26f
7221path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7222path.close();
7223path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7224path.lineTo(SkBits2Float(0xedededed), SkBits2Float(0xedededed)); // -9.20445e+27f, -9.20445e+27f
7225path.lineTo(SkBits2Float(0xecececec), SkBits2Float(0xecececec)); // -2.2914e+27f, -2.2914e+27f
7226path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7227path.close();
7228path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7229path.lineTo(SkBits2Float(0x01003300), SkBits2Float(0x33d83333)); // 2.35465e-38f, 1.00676e-07f
7230path.quadTo(SkBits2Float(0xecec3333), SkBits2Float(0x04eeedec), SkBits2Float(0xe0e0e0e0), SkBits2Float(0x9ee0e0e0)); // -2.28439e+27f, 5.6172e-36f, -1.29634e+20f, -2.38099e-20f
7231path.lineTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7232path.close();
7233path.moveTo(SkBits2Float(0x73737300), SkBits2Float(0x73735273)); // 1.9288e+31f, 1.9278e+31f
7234path.cubicTo(SkBits2Float(0x299e9e9e), SkBits2Float(0xecececec), SkBits2Float(0xececb6ec), SkBits2Float(0xf0ececec), SkBits2Float(0x0000ecec), SkBits2Float(0x9ebe6e6e)); // 7.04413e-14f, -2.2914e+27f, -2.28936e+27f, -5.86599e+29f, 8.49916e-41f, -2.01627e-20f
7235path.cubicTo(SkBits2Float(0x9e9e9e9e), SkBits2Float(0xe8009e9e), SkBits2Float(0x9e9e9e9e), SkBits2Float(0xecec9e9e), SkBits2Float(0xec3333ec), SkBits2Float(0xececf0ec)); // -1.67945e-20f, -2.42956e+24f, -1.67945e-20f, -2.28844e+27f, -8.66572e+26f, -2.29155e+27f
7236
7237 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007238 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
caryclark643ede62016-08-08 14:27:45 -07007239}
7240
caryclarka1b42d92016-08-16 10:25:29 -07007241static void fuzz763_25(skiatest::Reporter* reporter, const char* filename) {
7242 SkPath path;
7243 path.setFillType((SkPath::FillType) 1);
7244path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
7245path.conicTo(SkBits2Float(0x653140d9), SkBits2Float(0x6a4b4f74), SkBits2Float(0x65906630), SkBits2Float(0x6a25a070), SkBits2Float(0x3f6728a2)); // 5.23159e+22f, 6.14468e+25f, 8.52382e+22f, 5.00576e+25f, 0.902964f
7246path.cubicTo(SkBits2Float(0x68295bc5), SkBits2Float(0x00000000), SkBits2Float(0x682958ff), SkBits2Float(0x00000000), SkBits2Float(0x68286829), SkBits2Float(0x00000000)); // 3.19909e+24f, 0, 3.19889e+24f, 0, 3.18112e+24f, 0
7247path.lineTo(SkBits2Float(0x68555b29), SkBits2Float(0x00000000)); // 4.03018e+24f, 0
7248path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x682d2927), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6829686f)); // 0, 3.27091e+24f, 0, 0, 3.20003e+24f
7249path.lineTo(SkBits2Float(0xdf218a28), SkBits2Float(0x00000000)); // -1.16402e+19f, 0
7250path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x6a4b7bc4)); // 0, 6.14991e+25f
7251path.close();
7252path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7253path.conicTo(SkBits2Float(0x6642c40c), SkBits2Float(0x00000000), SkBits2Float(0x65906630), SkBits2Float(0x6a25a070), SkBits2Float(0x3edcd74d)); // 2.29939e+23f, 0, 8.52382e+22f, 5.00576e+25f, 0.43133f
7254path.conicTo(SkBits2Float(0x68295afa), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x4277a57b)); // 3.19903e+24f, 0, 0, 0, 61.9116f
7255path.close();
7256
7257 SkPath path1(path);
7258 path.reset();
7259 path.setFillType((SkPath::FillType) 0);
7260
7261 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007262 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
caryclarka1b42d92016-08-16 10:25:29 -07007263}
7264
7265
7266static void fuzz763_26(skiatest::Reporter* reporter, const char* filename) {
7267 SkPath path;
7268 path.setFillType((SkPath::FillType) 0);
7269
7270 SkPath path1(path);
7271 path.reset();
7272 path.setFillType((SkPath::FillType) 0);
7273path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
7274path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc003210a)); // 3.60396e-20f, -2.04889f
7275path.cubicTo(SkBits2Float(0x68372d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.46012e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
7276path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x69555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.61207e+25f
7277path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
7278path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
7279path.lineTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
7280path.close();
7281path.moveTo(SkBits2Float(0x68315b2d), SkBits2Float(0xf0682955)); // 3.35016e+24f, -2.87402e+29f
7282path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
7283path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
7284path.conicTo(SkBits2Float(0x68385b2d), SkBits2Float(0x555bf055), SkBits2Float(0x2a1f2a8c), SkBits2Float(0x03212121), SkBits2Float(0x5a4b7bc0)); // 3.48239e+24f, 1.51141e+13f, 1.41368e-13f, 4.73517e-37f, 1.43189e+16f
7285path.conicTo(SkBits2Float(0xc08c2aed), SkBits2Float(0x211f2108), SkBits2Float(0x6a4b7b03), SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // -4.38024f, 5.3915e-19f, 6.14982e+25f, 3.20982e+24f, 1.21279e-11f
7286path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
7287path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 1.31626e+28f, 4.7323e-37f, 6.14991e+25f, 75739
7288path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
7289path.close();
7290path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
7291path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x3a8a3adf), SkBits2Float(0x8a284f1a), SkBits2Float(0x2c213ab3)); // 5.69738e-19f, 0.00105461f, -8.10378e-33f, 2.29121e-12f
7292path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
7293path.close();
7294path.moveTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
7295path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a2a812a), SkBits2Float(0x2127ed29)); // 2.25206e-21f, 300.343f, 0.000650423f, 5.68957e-19f
7296path.conicTo(SkBits2Float(0x03210831), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x6829ed27), SkBits2Float(0x55555b2d), SkBits2Float(0x1e2a3a2a)); // 4.73231e-37f, 6.14991e+25f, 3.20982e+24f, 1.46617e+13f, 9.01175e-21f
7297path.conicTo(SkBits2Float(0x27202140), SkBits2Float(0x3a3b2769), SkBits2Float(0xc4371f20), SkBits2Float(0xecc52a22), SkBits2Float(0x21512727)); // 2.22225e-15f, 0.000713936f, -732.486f, -1.90686e+27f, 7.08638e-19f
7298path.lineTo(SkBits2Float(0x68355b2d), SkBits2Float(0xf0685527)); // 3.42572e+24f, -2.87614e+29f
7299path.close();
7300path.moveTo(SkBits2Float(0x6829523a), SkBits2Float(0x2d555b2d)); // 3.19839e+24f, 1.21279e-11f
7301path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x5b2d5529)); // 4.03114e+24f, 4.87888e+16f
7302path.moveTo(SkBits2Float(0x1f2a322a), SkBits2Float(0xc0032108)); // 3.60404e-20f, -2.04889f
7303path.cubicTo(SkBits2Float(0x68572d55), SkBits2Float(0xf05bd24b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0xed4b7bc0)); // 4.06458e+24f, -2.72126e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, -3.93594e+27f
7304path.conicTo(SkBits2Float(0x212a8c6a), SkBits2Float(0x0329081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77841e-19f, 4.9674e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
7305path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
7306path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
7307path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
7308path.close();
7309path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
7310path.lineTo(SkBits2Float(0x555b1b29), SkBits2Float(0x6c212a8c)); // 1.50569e+13f, 7.79352e+26f
7311path.conicTo(SkBits2Float(0x084b0321), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0x8c5bf055), SkBits2Float(0x1f212a3a)); // 6.10918e-34f, 1.16348e+26f, 0.000209024f, -1.69435e-31f, 3.4128e-20f
7312path.conicTo(SkBits2Float(0x290321d9), SkBits2Float(0x555b2d68), SkBits2Float(0x2a8c558c), SkBits2Float(0x2a212a1f), SkBits2Float(0x7bc00321)); // 2.91172e-14f, 1.50618e+13f, 2.49284e-13f, 1.43143e-13f, 1.99397e+36f
7313path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
7314path.close();
7315path.moveTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
7316path.lineTo(SkBits2Float(0x8c2aed7a), SkBits2Float(0x1f2128c0)); // -1.31678e-31f, 3.41268e-20f
7317path.lineTo(SkBits2Float(0x68385b2d), SkBits2Float(0xf0682955)); // 3.48239e+24f, -2.87402e+29f
7318path.close();
7319
7320 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007321 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclarka1b42d92016-08-16 10:25:29 -07007322}
7323
caryclark42942862016-08-19 07:01:33 -07007324static void fuzz763_28(skiatest::Reporter* reporter, const char* filename) {
7325 SkPath path;
7326 path.setFillType((SkPath::FillType) 0);
7327
7328 SkPath path1(path);
7329 path.reset();
7330 path.setFillType((SkPath::FillType) 0);
7331path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
7332path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
7333path.cubicTo(SkBits2Float(0x68302d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6aa37bc0)); // 3.32789e+24f, -2.71613e+29f, -1.64207e-31f, 5.76395e-19f, 4.7323e-37f, 9.88197e+25f
7334path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2d28ed84), SkBits2Float(0x5b2d2955)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.60243e-12f, 4.87406e+16f
7335path.moveTo(SkBits2Float(0x6c395b2d), SkBits2Float(0xf0682955)); // 8.96327e+26f, -2.87402e+29f
7336path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2aef8c55), SkBits2Float(0x68295b2d), SkBits2Float(0x21086855), SkBits2Float(0x4b7bc003)); // 5.76397e-19f, 4.25523e-13f, 3.19905e+24f, 4.62167e-19f, 1.64987e+07f
7337path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
7338path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
7339path.lineTo(SkBits2Float(0x8a283a28), SkBits2Float(0x284f1a3a)); // -8.09984e-33f, 1.14965e-14f
7340path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x272a812a), SkBits2Float(0x3a2a5529)); // 2.25206e-21f, 300.343f, 2.36623e-15f, 0.000649768f
7341path.lineTo(SkBits2Float(0x213b1e2a), SkBits2Float(0x27292720)); // 6.3398e-19f, 2.34747e-15f
7342path.conicTo(SkBits2Float(0x381f203a), SkBits2Float(0x2ac422c5), SkBits2Float(0xc25d27ec), SkBits2Float(0x3a705921), SkBits2Float(0x2a105152)); // 3.79386e-05f, 3.48407e-13f, -55.289f, 0.000916855f, 1.2818e-13f
7343path.quadTo(SkBits2Float(0x633ad912), SkBits2Float(0x29c80927), SkBits2Float(0x272927b0), SkBits2Float(0x683a5b2d)); // 3.44674e+21f, 8.88337e-14f, 2.3475e-15f, 3.52017e+24f
7344path.lineTo(SkBits2Float(0x295b2d68), SkBits2Float(0x29685568)); // 4.86672e-14f, 5.15884e-14f
7345path.conicTo(SkBits2Float(0xaa8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x5b2d0321), SkBits2Float(0x68556829), SkBits2Float(0x2a552d29)); // -2.49282e-13f, 4.78968e-34f, 4.86986e+16f, 4.03114e+24f, 1.89339e-13f
7346path.cubicTo(SkBits2Float(0x21295b2d), SkBits2Float(0x2a688c5b), SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x8c08555b), SkBits2Float(0x2a2a29ca)); // 5.73801e-19f, 2.06544e-13f, 3.19905e+24f, 9.6297e-12f, -1.05027e-31f, 1.51135e-13f
7347path.quadTo(SkBits2Float(0x68295b21), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21)); // 3.19904e+24f, 9.6297e-12f, 2.49282e-13f, 4.78968e-34f
7348path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
7349path.close();
7350path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
7351path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x5b2d6829), SkBits2Float(0x1f212a55), SkBits2Float(0x8ced7aba), SkBits2Float(0x3f2a212a)); // 6.14991e+25f, 4.88097e+16f, 3.41281e-20f, -3.65895e-31f, 0.664569f
7352path.lineTo(SkBits2Float(0x5b2d212d), SkBits2Float(0x2d556829)); // 4.87316e+16f, 1.21308e-11f
7353path.moveTo(SkBits2Float(0x68552968), SkBits2Float(0x5568295b)); // 4.02651e+24f, 1.5954e+13f
7354path.moveTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55)); // 4.87407e+16f, 5.7784e-19f
7355path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f, 6.14991e+25f
7356path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x2147ed7a), SkBits2Float(0x28282a3a)); // 5.77848e-19f, 4.7323e-37f, 5.63611e+25f, 6.77381e-19f, 9.33503e-15f
7357
7358 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007359 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclark42942862016-08-19 07:01:33 -07007360}
7361
7362static void fuzz763_27(skiatest::Reporter* reporter, const char* filename) {
7363 SkPath path;
7364 path.setFillType((SkPath::FillType) 0);
7365
7366 SkPath path1(path);
7367 path.reset();
7368 path.setFillType((SkPath::FillType) 0);
7369path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7370path.quadTo(SkBits2Float(0x30309ab8), SkBits2Float(0x305b3030), SkBits2Float(0x00f53030), SkBits2Float(0x3a3a0000)); // 6.42483e-10f, 7.97402e-10f, 2.2517e-38f, 0.000709534f
7371path.quadTo(SkBits2Float(0xb8b8d5b8), SkBits2Float(0x0b0b0b03), SkBits2Float(0x0b0b0b0b), SkBits2Float(0x3a3a0b0b)); // -8.81361e-05f, 2.67787e-32f, 2.67787e-32f, 0.000709698f
7372path.quadTo(SkBits2Float(0xb8b8b8b8), SkBits2Float(0x0b1203b8), SkBits2Float(0x0b0b0b0b), SkBits2Float(0x3a3a2110)); // -8.80821e-05f, 2.81214e-32f, 2.67787e-32f, 0.000710026f
7373
7374 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007375 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
caryclark42942862016-08-19 07:01:33 -07007376}
7377
caryclarkbb51f4a2016-08-23 07:38:48 -07007378static void fuzz763_29(skiatest::Reporter* reporter, const char* filename) {
7379 SkPath path;
7380 path.setFillType((SkPath::FillType) 1);
7381path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7382path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x743e0000)); // 0, 6.02134e+31f
7383path.cubicTo(SkBits2Float(0x74083cf1), SkBits2Float(0x74536e73), SkBits2Float(0x742ac4e4), SkBits2Float(0x7415f5be), SkBits2Float(0x7433ee3c), SkBits2Float(0x7405a69a)); // 4.31756e+31f, 6.70053e+31f, 5.41189e+31f, 4.75242e+31f, 5.70223e+31f, 4.23556e+31f
7384path.quadTo(SkBits2Float(0x74360ca0), SkBits2Float(0x7401e10c), SkBits2Float(0x7436a382), SkBits2Float(0x7401cc18)); // 5.76937e+31f, 4.11603e+31f, 5.78805e+31f, 4.11344e+31f
7385path.cubicTo(SkBits2Float(0x74374a91), SkBits2Float(0x7401ef19), SkBits2Float(0x74375c84), SkBits2Float(0x7404d9b9), SkBits2Float(0x7437868f), SkBits2Float(0x740bae8a)); // 5.80873e+31f, 4.11777e+31f, 5.81095e+31f, 4.2102e+31f, 5.81616e+31f, 4.42669e+31f
7386path.cubicTo(SkBits2Float(0x7437d6c1), SkBits2Float(0x7418b629), SkBits2Float(0x74387e9b), SkBits2Float(0x7433fbc5), SkBits2Float(0x743e2ff7), SkBits2Float(0x74655fa2)); // 5.82609e+31f, 4.83962e+31f, 5.84687e+31f, 5.7039e+31f, 6.02728e+31f, 7.26914e+31f
7387path.cubicTo(SkBits2Float(0x741ada75), SkBits2Float(0x74745717), SkBits2Float(0x73c106b4), SkBits2Float(0x74744e64), SkBits2Float(0x00000000), SkBits2Float(0x74744006)); // 4.9075e+31f, 7.74345e+31f, 3.05862e+31f, 7.74237e+31f, 0, 7.74059e+31f
7388path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x74746c7c), SkBits2Float(0x74244dce), SkBits2Float(0x7474733e), SkBits2Float(0x74400000), SkBits2Float(0x74747445)); // 0, 7.7461e+31f, 5.207e+31f, 7.74693e+31f, 6.08472e+31f, 7.74706e+31f
7389path.cubicTo(SkBits2Float(0x743f5854), SkBits2Float(0x746f3659), SkBits2Float(0x743ebe05), SkBits2Float(0x746a3017), SkBits2Float(0x743e2ff7), SkBits2Float(0x74655fa2)); // 6.06397e+31f, 7.58094e+31f, 6.04486e+31f, 7.42171e+31f, 6.02728e+31f, 7.26914e+31f
7390path.cubicTo(SkBits2Float(0x7447a582), SkBits2Float(0x74615dee), SkBits2Float(0x744f74f6), SkBits2Float(0x745c4903), SkBits2Float(0x7455e7e6), SkBits2Float(0x7455d751)); // 6.32705e+31f, 7.14216e+31f, 6.57457e+31f, 6.98112e+31f, 6.77895e+31f, 6.77689e+31f
7391path.cubicTo(SkBits2Float(0x74747474), SkBits2Float(0x743750a4), SkBits2Float(0x74747474), SkBits2Float(0x73f46f0d), SkBits2Float(0x74747474), SkBits2Float(0x00000000)); // 7.74708e+31f, 5.80948e+31f, 7.74708e+31f, 3.87321e+31f, 7.74708e+31f, 0
7392path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7393path.close();
7394
7395 SkPath path1(path);
7396 path.reset();
7397 path.setFillType((SkPath::FillType) 0);
7398path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7399path.lineTo(SkBits2Float(0xf0682955), SkBits2Float(0x211f5b2d)); // -2.87402e+29f, 5.3992e-19f
7400path.moveTo(SkBits2Float(0x2d2aff2d), SkBits2Float(0x74747474)); // 9.72004e-12f, 7.74708e+31f
7401path.cubicTo(SkBits2Float(0x7474748e), SkBits2Float(0x74747490), SkBits2Float(0x8c722174), SkBits2Float(0x181f0080), SkBits2Float(0x74c0e520), SkBits2Float(0x747d7463)); // 7.7471e+31f, 7.7471e+31f, -1.86531e-31f, 2.05505e-24f, 1.22262e+32f, 8.0323e+31f
7402path.cubicTo(SkBits2Float(0x7b005e4b), SkBits2Float(0xdf3a6a3a), SkBits2Float(0x2a3a2848), SkBits2Float(0x2d2d7821), SkBits2Float(0x8c55212d), SkBits2Float(0x2d2d2d24)); // 6.66526e+35f, -1.34326e+19f, 1.65341e-13f, 9.86059e-12f, -1.64189e-31f, 9.84393e-12f
7403path.conicTo(SkBits2Float(0xde28804c), SkBits2Float(0x28e03721), SkBits2Float(0x3329df28), SkBits2Float(0x2d291515), SkBits2Float(0x0568295b)); // -3.03545e+18f, 2.48929e-14f, 3.95513e-08f, 9.61122e-12f, 1.09162e-35f
7404path.conicTo(SkBits2Float(0x556a2d21), SkBits2Float(0x21088c2a), SkBits2Float(0x3a333303), SkBits2Float(0x5b293a8a), SkBits2Float(0x6855683b)); // 1.60925e+13f, 4.62641e-19f, 0.000683591f, 4.76336e+16f, 4.03115e+24f
7405
7406 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007407 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
caryclarkbb51f4a2016-08-23 07:38:48 -07007408}
7409
caryclark79418092016-08-26 14:24:24 -07007410static void fuzz763_30(skiatest::Reporter* reporter, const char* filename) {
7411 SkPath path;
7412 path.setFillType((SkPath::FillType) 1);
7413
7414 SkPath path1(path);
7415 path.reset();
7416 path.setFillType((SkPath::FillType) 0);
7417path.moveTo(SkBits2Float(0x1f2108c0), SkBits2Float(0x4b7b0321)); // 3.41003e-20f, 1.64503e+07f
7418path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
7419path.moveTo(SkBits2Float(0x68305b2d), SkBits2Float(0xf0685527)); // 3.33127e+24f, -2.87614e+29f
7420path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x6e2a1f72), SkBits2Float(0x0321082a), SkBits2Float(0x2a4b7bc0), SkBits2Float(0x68295b2d)); // 2.49282e-13f, 1.31626e+28f, 4.7323e-37f, 1.8073e-13f, 3.19905e+24f
7421path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x212a8c55)); // 4.87407e+16f, 5.7784e-19f
7422path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x4b7b28c0)); // 4.7323e-37f, 1.646e+07f
7423path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x2d081f21)); // 2.50338e-13f, 7.73762e-12f
7424path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
7425path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
7426path.cubicTo(SkBits2Float(0x69392d55), SkBits2Float(0x2d5b684b), SkBits2Float(0x8c5527f0), SkBits2Float(0x212a1f2a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 1.39916e+25f, 1.24719e-11f, -1.64209e-31f, 5.76395e-19f, 4.7323e-37f, 6.14991e+25f
7427path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0xed7a6a1f), SkBits2Float(0x3a214793), SkBits2Float(0x3328282a), SkBits2Float(0x3a8a3adf)); // 5.77848e-19f, -4.84372e+27f, 0.000615233f, 3.91521e-08f, 0.00105461f
7428path.conicTo(SkBits2Float(0x4be80304), SkBits2Float(0xdcdcdc15), SkBits2Float(0xdcdcdcdc), SkBits2Float(0x71dcdcdc), SkBits2Float(0x6c107164)); // 3.04102e+07f, -4.97332e+17f, -4.97339e+17f, 2.18732e+30f, 6.98483e+26f
7429path.conicTo(SkBits2Float(0x6c0f1d6c), SkBits2Float(0x8e406c6e), SkBits2Float(0x6c6c0200), SkBits2Float(0x6c6ce46c), SkBits2Float(0x6c6c6c6c)); // 6.92061e+26f, -2.3718e-30f, 1.14126e+27f, 1.14554e+27f, 1.14327e+27f
7430path.lineTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
7431path.close();
7432path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
7433path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x3ac22c21), SkBits2Float(0x6c401057), SkBits2Float(0x6d6d6b64)); // 0.00136978f, 0.00148142f, 9.28764e+26f, 4.59236e+27f
7434path.cubicTo(SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x286d6d6d), SkBits2Float(0x081d2a29), SkBits2Float(0x6d690321), SkBits2Float(0x6b6b026d)); // 4.59251e+27f, 4.59251e+27f, 1.31799e-14f, 4.7295e-34f, 4.50711e+27f, 2.84109e+26f
7435
7436 SkPath path2(path);
caryclark30b9fdd2016-08-31 14:36:29 -07007437 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
caryclark79418092016-08-26 14:24:24 -07007438}
7439
caryclarkef7cee42016-09-06 09:05:54 -07007440static void fuzz763_31(skiatest::Reporter* reporter, const char* filename) {
7441 SkPath path;
7442 path.setFillType((SkPath::FillType) 1);
7443
7444 SkPath path1(path);
7445 path.reset();
7446 path.setFillType((SkPath::FillType) 0);
7447path.moveTo(SkBits2Float(0xd72a8c55), SkBits2Float(0x61081f2a)); // -1.8752e+14f, 1.56938e+20f
7448path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x4793ed7a), SkBits2Float(0x282a3a21), SkBits2Float(0xdf3a2128), SkBits2Float(0x471ac575)); // 6.14991e+25f, 75739, 9.4495e-15f, -1.3412e+19f, 39621.5f
7449path.lineTo(SkBits2Float(0x28404040), SkBits2Float(0x552a298a)); // 1.06721e-14f, 1.16935e+13f
7450path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
7451path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x80ed7a3a), SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828), SkBits2Float(0x4f1a3a3a)); // 6.14991e+25f, -2.18089e-38f, 1.65317e-13f, -1.16126e+19f, 2.58751e+09f
7452path.lineTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
7453path.close();
7454path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
7455path.cubicTo(SkBits2Float(0x3ac2213a), SkBits2Float(0x432a2928), SkBits2Float(0x96812be6), SkBits2Float(0x272a1d2a), SkBits2Float(0x3a2a3529), SkBits2Float(0x3b1e2ab0)); // 0.00148109f, 170.161f, -2.08688e-25f, 2.3608e-15f, 0.000649291f, 0.00241343f
7456path.lineTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
7457path.close();
7458path.moveTo(SkBits2Float(0x212c685b), SkBits2Float(0x21081f2a)); // 5.8414e-19f, 4.61198e-19f
7459path.cubicTo(SkBits2Float(0xc5272927), SkBits2Float(0x22383b39), SkBits2Float(0x1051523a), SkBits2Float(0x2927b029), SkBits2Float(0x685b2d27), SkBits2Float(0x5b2d6855)); // -2674.57f, 2.4968e-18f, 4.12813e-29f, 3.72342e-14f, 4.14012e+24f, 4.88099e+16f
7460
7461 SkPath path2(path);
7462 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
7463}
7464
caryclarkb393a492016-09-07 08:21:09 -07007465static void fuzz763_33(skiatest::Reporter* reporter, const char* filename) {
7466 SkPath path;
7467 path.setFillType((SkPath::FillType) 1);
7468path.moveTo(SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 7.66623e+30f, 7.66608e+30f
7469path.quadTo(SkBits2Float(0x724341bf), SkBits2Float(0x72433fc4), SkBits2Float(0x6d757575), SkBits2Float(0x6d6d6d6d)); // 3.86746e+30f, 3.86731e+30f, 4.74786e+27f, 4.59251e+27f
7470path.cubicTo(SkBits2Float(0x6d18b5e5), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6cbe03bd), SkBits2Float(0x6d4b455b), SkBits2Float(0x6c6c69d8), SkBits2Float(0x6d20df31)); // 2.95385e+27f, 4.59251e+27f, 1.83771e+27f, 3.93183e+27f, 1.14323e+27f, 3.11171e+27f
7471path.conicTo(SkBits2Float(0x6c6c8b72), SkBits2Float(0x00000000), SkBits2Float(0x6c6c6c6c), SkBits2Float(0x00000000), SkBits2Float(0x400812df)); // 1.14386e+27f, 0, 1.14327e+27f, 0, 2.12615f
7472path.quadTo(SkBits2Float(0x72432acb), SkBits2Float(0x72432295), SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 3.86568e+30f, 3.86505e+30f, 7.66623e+30f, 7.66608e+30f
7473path.close();
7474path.moveTo(SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 7.66623e+30f, 7.66608e+30f
7475path.cubicTo(SkBits2Float(0x74f97d76), SkBits2Float(0x74f97d90), SkBits2Float(0x75381628), SkBits2Float(0x7538182c), SkBits2Float(0x7538153b), SkBits2Float(0x75381835)); // 1.58133e+32f, 1.58133e+32f, 2.33357e+32f, 2.33367e+32f, 2.33353e+32f, 2.33368e+32f
7476path.cubicTo(SkBits2Float(0x7538144e), SkBits2Float(0x7538183f), SkBits2Float(0x74f9760f), SkBits2Float(0x74f97ddd), SkBits2Float(0x72c185d5), SkBits2Float(0x72c184e8)); // 2.33348e+32f, 2.33368e+32f, 1.58115e+32f, 1.58134e+32f, 7.66623e+30f, 7.66608e+30f
7477path.close();
7478path.moveTo(SkBits2Float(0x6c6c69d8), SkBits2Float(0x6d20df31)); // 1.14323e+27f, 3.11171e+27f
7479path.conicTo(SkBits2Float(0x6c6c55ae), SkBits2Float(0x6d80b520), SkBits2Float(0x6c6c1071), SkBits2Float(0x6e0f1d6c), SkBits2Float(0x3f96e656)); // 1.14284e+27f, 4.97913e+27f, 1.14154e+27f, 1.1073e+28f, 1.1789f
7480path.lineTo(SkBits2Float(0x6a674231), SkBits2Float(0x6c0c3394)); // 6.98936e+25f, 6.77973e+26f
7481path.cubicTo(SkBits2Float(0x6b12c63f), SkBits2Float(0x6c881439), SkBits2Float(0x6bba4ae5), SkBits2Float(0x6ced1e23), SkBits2Float(0x6c6c69d8), SkBits2Float(0x6d20df31)); // 1.77439e+26f, 1.31608e+27f, 4.50428e+26f, 2.29326e+27f, 1.14323e+27f, 3.11171e+27f
7482path.close();
7483
7484 SkPath path1(path);
7485 path.reset();
7486 path.setFillType((SkPath::FillType) 0);
7487path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7488path.lineTo(SkBits2Float(0x6c6b6ba7), SkBits2Float(0x886b6b6b)); // 1.13842e+27f, -7.0844e-34f
7489path.quadTo(SkBits2Float(0x0000206b), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d)); // 1.16294e-41f, 4.59251e+27f, 4.59251e+27f, 4.59251e+27f
7490path.conicTo(SkBits2Float(0x3e3e3e3e), SkBits2Float(0xafbcad20), SkBits2Float(0x78787878), SkBits2Float(0x78787829), SkBits2Float(0x78787878)); // 0.185784f, -3.432e-10f, 2.01583e+34f, 2.01582e+34f, 2.01583e+34f
7491path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x95066b78)); // 2.01583e+34f, -2.71459e-26f
7492path.lineTo(SkBits2Float(0x6c6b6ba7), SkBits2Float(0x886b6b6b)); // 1.13842e+27f, -7.0844e-34f
7493path.quadTo(SkBits2Float(0x0000206b), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d), SkBits2Float(0x6d6d6d6d)); // 1.16294e-41f, 4.59251e+27f, 4.59251e+27f, 4.59251e+27f
7494path.conicTo(SkBits2Float(0x3e3e3e3e), SkBits2Float(0xafbcad20), SkBits2Float(0x78787878), SkBits2Float(0x78787829), SkBits2Float(0x78787878)); // 0.185784f, -3.432e-10f, 2.01583e+34f, 2.01582e+34f, 2.01583e+34f
7495path.lineTo(SkBits2Float(0x8787878f), SkBits2Float(0x87878787)); // -2.03922e-34f, -2.03922e-34f
7496path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
7497path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
7498path.lineTo(SkBits2Float(0x6c105778), SkBits2Float(0x6d406b64)); // 6.97994e+26f, 3.72193e+27f
7499path.cubicTo(SkBits2Float(0x7575756d), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x6d6d7575), SkBits2Float(0x6d6d6d6d)); // 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 4.59312e+27f, 4.59251e+27f
7500path.cubicTo(SkBits2Float(0x6d696d6d), SkBits2Float(0x026d6d6d), SkBits2Float(0x80bc6b6b), SkBits2Float(0xaebcdfd0), SkBits2Float(0x7878bcac), SkBits2Float(0x78787878)); // 4.51514e+27f, 1.74434e-37f, -1.73036e-38f, -8.58901e-11f, 2.01799e+34f, 2.01583e+34f
7501path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
7502path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
7503path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
7504path.lineTo(SkBits2Float(0xb4bcacbc), SkBits2Float(0xbcadbcbc)); // -3.51434e-07f, -0.0212082f
7505path.moveTo(SkBits2Float(0xa03aacbc), SkBits2Float(0x757575a0)); // -1.5812e-19f, 3.11157e+32f
7506path.close();
7507
7508 SkPath path2(path);
7509 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
7510}
7511
7512static void fuzz763_32(skiatest::Reporter* reporter, const char* filename) {
7513 SkPath path;
7514 path.setFillType((SkPath::FillType) 1);
7515
7516 SkPath path1(path);
7517 path.reset();
7518 path.setFillType((SkPath::FillType) 0);
7519path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7520path.cubicTo(SkBits2Float(0xdedcdcdc), SkBits2Float(0xdcdcdcdc), SkBits2Float(0xdcdcdcdc), SkBits2Float(0xdcdcdcdc), SkBits2Float(0x55dcdcdc), SkBits2Float(0x29407d7f)); // -7.95742e+18f, -4.97339e+17f, -4.97339e+17f, -4.97339e+17f, 3.03551e+13f, 4.27414e-14f
7521path.cubicTo(SkBits2Float(0x7b93ed4b), SkBits2Float(0x29521472), SkBits2Float(0xdfc83c28), SkBits2Float(0x1a3a834e), SkBits2Float(0x6855e84f), SkBits2Float(0xf2f22a80)); // 1.53616e+36f, 4.66471e-14f, -2.88569e+19f, 3.857e-23f, 4.0406e+24f, -9.59318e+30f
7522path.moveTo(SkBits2Float(0xe0f2f210), SkBits2Float(0xc3f2eef2)); // -1.40049e+20f, -485.867f
7523path.cubicTo(SkBits2Float(0x108ced7a), SkBits2Float(0x7bc00308), SkBits2Float(0x287a6a3a), SkBits2Float(0x242847ed), SkBits2Float(0x2bcb302a), SkBits2Float(0xf21003e8)); // 5.55862e-29f, 1.99396e+36f, 1.39008e-14f, 3.64901e-17f, 1.44374e-12f, -2.85252e+30f
7524path.moveTo(SkBits2Float(0x556c0010), SkBits2Float(0x002a8768)); // 1.62178e+13f, 3.90567e-39f
7525path.quadTo(SkBits2Float(0xf2f22021), SkBits2Float(0xf2f2f56e), SkBits2Float(0xf2f2f2f2), SkBits2Float(0xf22040d9)); // -9.59158e+30f, -9.62459e+30f, -9.6242e+30f, -3.17414e+30f
7526path.lineTo(SkBits2Float(0xc013f2f2), SkBits2Float(0x0000294d)); // -2.3117f, 1.48159e-41f
7527
7528 SkPath path2(path);
7529 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
7530}
7531
7532static void fuzz763_34(skiatest::Reporter* reporter, const char* filename) {
7533 SkPath path;
7534 path.setFillType((SkPath::FillType) 1);
7535path.moveTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
7536path.quadTo(SkBits2Float(0x63690f37), SkBits2Float(0x6d0a3d9b), SkBits2Float(0x00000000), SkBits2Float(0x6d3e3e3e)); // 4.29919e+21f, 2.67396e+27f, 0, 3.67984e+27f
7537path.conicTo(SkBits2Float(0x6b9253fc), SkBits2Float(0x6c956a8b), SkBits2Float(0x6c6ac798), SkBits2Float(0x692a5d27), SkBits2Float(0x3e56eb72)); // 3.538e+26f, 1.44506e+27f, 1.13532e+27f, 1.28723e+25f, 0.209883f
7538path.lineTo(SkBits2Float(0x6c6c586c), SkBits2Float(0x00000000)); // 1.1429e+27f, 0
7539path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7540path.conicTo(SkBits2Float(0x6c8c6c6c), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x6cc8e82a), SkBits2Float(0x5b684b68)); // 1.35809e+27f, 0, 0, 1.94305e+27f, 6.53851e+16f
7541path.lineTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
7542path.close();
7543path.moveTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
7544path.quadTo(SkBits2Float(0x641ae35f), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 1.14287e+22f, 0, 0, 0
7545path.lineTo(SkBits2Float(0x6c6c586c), SkBits2Float(0x00000000)); // 1.1429e+27f, 0
7546path.conicTo(SkBits2Float(0x6c6ba1fc), SkBits2Float(0x688c9eb1), SkBits2Float(0x6c6ac798), SkBits2Float(0x692a5d27), SkBits2Float(0x3f7fec32)); // 1.13945e+27f, 5.31247e+24f, 1.13532e+27f, 1.28723e+25f, 0.999698f
7547path.lineTo(SkBits2Float(0x63a95a6c), SkBits2Float(0x6cc8e7e2)); // 6.24803e+21f, 1.94304e+27f
7548path.close();
7549
7550 SkPath path1(path);
7551 path.reset();
7552 path.setFillType((SkPath::FillType) 0);
7553path.moveTo(SkBits2Float(0x6c3e3e3e), SkBits2Float(0x586c79ff)); // 9.19959e+26f, 1.04003e+15f
7554path.quadTo(SkBits2Float(0x6c6c4a6c), SkBits2Float(0x6c6c6c6c), SkBits2Float(0xc83e6c6c), SkBits2Float(0x3e313e3e)); // 1.14263e+27f, 1.14327e+27f, -194994, 0.173089f
7555
7556 SkPath path2(path);
7557 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
7558}
7559
caryclarkc9b90d12016-09-09 07:41:36 -07007560static void fuzz763_36(skiatest::Reporter* reporter, const char* filename) {
7561 SkPath path;
7562 path.setFillType((SkPath::FillType) 0);
7563
7564 SkPath path1(path);
7565 path.reset();
7566 path.setFillType((SkPath::FillType) 0);
7567path.moveTo(SkBits2Float(0x68556829), SkBits2Float(0x555b2d29)); // 4.03114e+24f, 1.50617e+13f
7568path.moveTo(SkBits2Float(0x1f2a312a), SkBits2Float(0xc0032108)); // 3.60396e-20f, -2.04889f
7569path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7bc0)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 6.14991e+25f
7570path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x2d555b2d)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 1.21279e-11f
7571path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
7572path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x8cef552a), SkBits2Float(0x295b2d2a), SkBits2Float(0x68210368), SkBits2Float(0x7bc05508)); // 5.76397e-19f, -3.6875e-31f, 4.86669e-14f, 3.04146e+24f, 1.99729e+36f
7573path.lineTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
7574path.close();
7575path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
7576path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
7577path.conicTo(SkBits2Float(0x212a081f), SkBits2Float(0x4b7bc003), SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556839), SkBits2Float(0x2a8c555b)); // 5.7609e-19f, 1.64987e+07f, 4.88298e+16f, -2.64185e+29f, 2.49282e-13f
7578path.conicTo(SkBits2Float(0xf42a212a), SkBits2Float(0x4b7bc003), SkBits2Float(0x2aed7a39), SkBits2Float(0x2108c08c), SkBits2Float(0x7b03211f)); // -5.39162e+31f, 1.64987e+07f, 4.21845e-13f, 4.63334e-19f, 6.80863e+35f
7579path.lineTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
7580path.close();
7581path.moveTo(SkBits2Float(0xe8355b2d), SkBits2Float(0xf0682955)); // -3.42572e+24f, -2.87402e+29f
7582path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
7583path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7584path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x212a1f72), SkBits2Float(0x03210807), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4793ed7a)); // 2.49282e-13f, 5.76399e-19f, 4.73229e-37f, 6.14984e+25f, 75739
7585path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7586path.close();
7587path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7588path.quadTo(SkBits2Float(0x282a282a), SkBits2Float(0x8a3adf21), SkBits2Float(0x284f1a3a), SkBits2Float(0x213ab38a)); // 9.4456e-15f, -8.99754e-33f, 1.14965e-14f, 6.32569e-19f
7589path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7590path.close();
7591path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7592path.quadTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x43962be6), SkBits2Float(0x3a20002a), SkBits2Float(0x2a8ced29)); // 2.25206e-21f, 300.343f, 0.000610354f, 2.50336e-13f
7593path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7594path.close();
7595path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7596path.conicTo(SkBits2Float(0xed210830), SkBits2Float(0xc04b6a03), SkBits2Float(0x68297b27), SkBits2Float(0x55555b2d), SkBits2Float(0x2ab03a2a)); // -3.11481e+27f, -3.17835f, 3.20141e+24f, 1.46617e+13f, 3.13042e-13f
7597path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a3b2729), SkBits2Float(0xc4341f20), SkBits2Float(0xecc52a22)); // 2.22225e-15f, 0.000713932f, -720.486f, -1.90686e+27f
7598path.cubicTo(SkBits2Float(0x5921c25d), SkBits2Float(0x29523a70), SkBits2Float(0x555b2d68), SkBits2Float(0x1f212a8c), SkBits2Float(0x0321d90a), SkBits2Float(0x5b2d6829)); // 2.8457e+15f, 4.66801e-14f, 1.50618e+13f, 3.41283e-20f, 4.75628e-37f, 4.88097e+16f
7599path.lineTo(SkBits2Float(0x1f2a2a8c), SkBits2Float(0x03210821)); // 3.60341e-20f, 4.7323e-37f
7600path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7601path.close();
7602path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7603path.conicTo(SkBits2Float(0x2eed6a7a), SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28), SkBits2Float(0x4f1a3a8a), SkBits2Float(0x3ab38a28)); // 1.07964e-10f, 9.4495e-15f, 0.000617492f, 2.58753e+09f, 0.00136978f
7604path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7605path.close();
7606path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7607path.quadTo(SkBits2Float(0xe61d2a28), SkBits2Float(0x2a43962b), SkBits2Float(0x29272a81), SkBits2Float(0x2bb02a55)); // -1.85547e+23f, 1.73716e-13f, 3.71183e-14f, 1.25173e-12f
7608path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3ac52729), SkBits2Float(0xc4223b32), SkBits2Float(0x6c2a201f)); // 2.22225e-15f, 0.00150416f, -648.925f, 8.22676e+26f
7609
7610 SkPath path2(path);
7611 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
7612}
7613
7614static void fuzz763_35(skiatest::Reporter* reporter, const char* filename) {
7615 SkPath path;
7616 path.setFillType((SkPath::FillType) 1);
7617
7618 SkPath path1(path);
7619 path.reset();
7620 path.setFillType((SkPath::FillType) 0);
7621path.moveTo(SkBits2Float(0x2aed2a8c), SkBits2Float(0x03210a1f)); // 4.21292e-13f, 4.73253e-37f
7622path.conicTo(SkBits2Float(0x0000007b), SkBits2Float(0x7474747f), SkBits2Float(0x74747474), SkBits2Float(0x747474c4), SkBits2Float(0x74747474)); // 1.7236e-43f, 7.74709e+31f, 7.74708e+31f, 7.74712e+31f, 7.74708e+31f
7623path.quadTo(SkBits2Float(0x74747474), SkBits2Float(0x74747474), SkBits2Float(0x20437474), SkBits2Float(0x43a52b02)); // 7.74708e+31f, 7.74708e+31f, 1.65557e-19f, 330.336f
7624path.moveTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
7625path.lineTo(SkBits2Float(0x4b7bd603), SkBits2Float(0x6cf33b6a)); // 1.65043e+07f, 2.3524e+27f
7626path.conicTo(SkBits2Float(0x35778caa), SkBits2Float(0x0000002a), SkBits2Float(0x74742164), SkBits2Float(0x2a3a7474), SkBits2Float(0x4cc22157)); // 9.22194e-07f, 5.88545e-44f, 7.7368e+31f, 1.65605e-13f, 1.0178e+08f
7627path.cubicTo(SkBits2Float(0x21479321), SkBits2Float(0x23434cc2), SkBits2Float(0x3a214793), SkBits2Float(0x2128282a), SkBits2Float(0x323adf81), SkBits2Float(0x77291a3a)); // 6.76185e-19f, 1.05872e-17f, 0.000615233f, 5.69738e-19f, 1.08774e-08f, 3.42981e+33f
7628path.conicTo(SkBits2Float(0x0000002a), SkBits2Float(0x7474743e), SkBits2Float(0x74747474), SkBits2Float(0x74746474), SkBits2Float(0x74747474)); // 5.88545e-44f, 7.74706e+31f, 7.74708e+31f, 7.7451e+31f, 7.74708e+31f
7629path.cubicTo(SkBits2Float(0x21e7fc06), SkBits2Float(0x2a212a59), SkBits2Float(0x0321081f), SkBits2Float(0x00002a35), SkBits2Float(0x74744000), SkBits2Float(0x2974e874)); // 1.57199e-18f, 1.43144e-13f, 4.7323e-37f, 1.5141e-41f, 7.74059e+31f, 5.43805e-14f
7630path.cubicTo(SkBits2Float(0x74647474), SkBits2Float(0x74747474), SkBits2Float(0x12ec7474), SkBits2Float(0x4cc22147), SkBits2Float(0x47932343), SkBits2Float(0x282a3a21)); // 7.24002e+31f, 7.74708e+31f, 1.49224e-27f, 1.0178e+08f, 75334.5f, 9.4495e-15f
7631path.lineTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
7632path.close();
7633path.moveTo(SkBits2Float(0x3a214781), SkBits2Float(0x2128282a)); // 0.000615232f, 5.69738e-19f
7634path.conicTo(SkBits2Float(0x3a323adf), SkBits2Float(0x4977291a), SkBits2Float(0x0000002a), SkBits2Float(0x7474743e), SkBits2Float(0x74747474)); // 0.000679893f, 1.01237e+06f, 5.88545e-44f, 7.74706e+31f, 7.74708e+31f
7635path.cubicTo(SkBits2Float(0x74747464), SkBits2Float(0x74747474), SkBits2Float(0x21e7fc06), SkBits2Float(0x2a212a59), SkBits2Float(0x0321081f), SkBits2Float(0x00002a35)); // 7.74708e+31f, 7.74708e+31f, 1.57199e-18f, 1.43144e-13f, 4.7323e-37f, 1.5141e-41f
7636path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x742974e8)); // 7.74706e+31f, 5.3703e+31f
7637path.cubicTo(SkBits2Float(0x74746474), SkBits2Float(0x74747474), SkBits2Float(0xd912ec74), SkBits2Float(0x553a3728), SkBits2Float(0x29202a8c), SkBits2Float(0x5555201b)); // 7.7451e+31f, 7.74708e+31f, -2.58471e+15f, 1.27966e+13f, 3.5564e-14f, 1.46459e+13f
7638path.moveTo(SkBits2Float(0x31292768), SkBits2Float(0x212d2aff)); // 2.46151e-09f, 5.86716e-19f
7639path.quadTo(SkBits2Float(0x2128282a), SkBits2Float(0x323adf81), SkBits2Float(0x77291a3a), SkBits2Float(0x00002a49)); // 5.69738e-19f, 1.08774e-08f, 3.42981e+33f, 1.51691e-41f
7640path.moveTo(SkBits2Float(0x7474743e), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
7641path.cubicTo(SkBits2Float(0x74747464), SkBits2Float(0x74747474), SkBits2Float(0x21e7fc06), SkBits2Float(0x2a212a59), SkBits2Float(0x0321081f), SkBits2Float(0x00002a35)); // 7.74708e+31f, 7.74708e+31f, 1.57199e-18f, 1.43144e-13f, 4.7323e-37f, 1.5141e-41f
7642path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
7643path.cubicTo(SkBits2Float(0x74747464), SkBits2Float(0x74747474), SkBits2Float(0x43747474), SkBits2Float(0xa52b0220), SkBits2Float(0x47812a43), SkBits2Float(0x282a3a21)); // 7.74708e+31f, 7.74708e+31f, 244.455f, -1.48326e-16f, 66132.5f, 9.4495e-15f
7644path.lineTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
7645path.close();
7646path.moveTo(SkBits2Float(0x74747440), SkBits2Float(0x74747474)); // 7.74706e+31f, 7.74708e+31f
7647path.conicTo(SkBits2Float(0x3a323adf), SkBits2Float(0x19433b1a), SkBits2Float(0x5921e7fc), SkBits2Float(0x1f2a212a), SkBits2Float(0x35032108)); // 0.000679893f, 1.00932e-23f, 2.84828e+15f, 3.60263e-20f, 4.88494e-07f
7648
7649 SkPath path2(path);
7650 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
7651}
7652
caryclarkbbfe92b2016-09-19 06:00:35 -07007653static void fuzz763_37(skiatest::Reporter* reporter, const char* filename) {
7654 SkPath path;
7655 path.setFillType((SkPath::FillType) 0);
7656path.moveTo(SkBits2Float(0x5568392a), SkBits2Float(0x5b2d3368)); // 1.59583e+13f, 4.87517e+16f
7657path.conicTo(SkBits2Float(0x5b2d555b), SkBits2Float(0x68275b2d), SkBits2Float(0x21685527), SkBits2Float(0x0321082a), SkBits2Float(0x6ab485c0)); // 4.8789e+16f, 3.16127e+24f, 7.87174e-19f, 4.7323e-37f, 1.09119e+26f
7658path.conicTo(SkBits2Float(0x212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 5.77848e-19f, 4.7323e-37f, 6.14991e+25f, 9.43289e-15f, 4.8745e+16f
7659path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
7660path.conicTo(SkBits2Float(0x212a1f5b), SkBits2Float(0x2a8cef2a), SkBits2Float(0x682d2953), SkBits2Float(0xee682103), SkBits2Float(0x4b7bc055)); // 5.76397e-19f, 2.50349e-13f, 3.27093e+24f, -1.79601e+28f, 1.64988e+07f
7661path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x212a8c55)); // 4.85282e+16f, 5.7784e-19f
7662path.conicTo(SkBits2Float(0x4b03213b), SkBits2Float(0xc07b2a08), SkBits2Float(0x5b2d7a6a), SkBits2Float(0xf0556830), SkBits2Float(0x2a8c555b)); // 8.59372e+06f, -3.92444f, 4.88298e+16f, -2.64185e+29f, 2.49282e-13f
7663path.conicTo(SkBits2Float(0x0321212a), SkBits2Float(0x4b7bd2c0), SkBits2Float(0xed7ac039), SkBits2Float(0x2f218c08), SkBits2Float(0x1f037b2a)); // 4.73517e-37f, 1.65035e+07f, -4.85023e+27f, 1.46926e-10f, 2.78422e-20f
7664path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
7665path.close();
7666path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5b)); // 3.50084e+24f, -2.87489e+29f
7667path.lineTo(SkBits2Float(0x6829ed27), SkBits2Float(0x2d555b2d)); // 3.20982e+24f, 1.21279e-11f
7668path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7669path.conicTo(SkBits2Float(0x721f2a5b), SkBits2Float(0x212a8c55), SkBits2Float(0x0321082a), SkBits2Float(0x6a4b7b28), SkBits2Float(0x4793ed7a)); // 3.1526e+30f, 5.7784e-19f, 4.7323e-37f, 6.14984e+25f, 75739
7670path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7671path.close();
7672path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7673path.quadTo(SkBits2Float(0x28282a2a), SkBits2Float(0x2c682921), SkBits2Float(0x8c555bf6), SkBits2Float(0x6d03de30)); // 9.33502e-15f, 3.2992e-12f, -1.64366e-31f, 2.5507e+27f
7674path.cubicTo(SkBits2Float(0x68392d55), SkBits2Float(0xf05b684b), SkBits2Float(0x8c55272d), SkBits2Float(0x212a292a), SkBits2Float(0x0321082a), SkBits2Float(0x081f2a21)); // 3.4979e+24f, -2.71613e+29f, -1.64207e-31f, 5.76527e-19f, 4.7323e-37f, 4.78968e-34f
7675path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7676path.close();
7677path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7678path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0xdf93ed7a), SkBits2Float(0x1a3a803a), SkBits2Float(0xb38a294f), SkBits2Float(0x3ac2213a)); // 6.14991e+25f, -2.13186e+19f, 3.85675e-23f, -6.43364e-08f, 0.00148109f
7679path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7680path.close();
7681path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7682path.conicTo(SkBits2Float(0xe62b291d), SkBits2Float(0x2a812a43), SkBits2Float(0x8ced093a), SkBits2Float(0xb38a5c5c), SkBits2Float(0x3ac2213a)); // -2.02071e+23f, 2.29443e-13f, -3.65212e-31f, -6.44293e-08f, 0.00148109f
7683path.lineTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7684path.close();
7685path.moveTo(SkBits2Float(0x68275b2d), SkBits2Float(0xf0685527)); // 3.16127e+24f, -2.87614e+29f
7686path.lineTo(SkBits2Float(0x8ced293a), SkBits2Float(0x5c5c5c5c)); // -3.65404e-31f, 2.48104e+17f
7687path.moveTo(SkBits2Float(0x21081f21), SkBits2Float(0x4b7bc003)); // 4.61198e-19f, 1.64987e+07f
7688path.lineTo(SkBits2Float(0x2829ed84), SkBits2Float(0x5b2d2d55)); // 9.43289e-15f, 4.8745e+16f
7689path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
7690path.lineTo(SkBits2Float(0x682d2952), SkBits2Float(0xee682103)); // 3.27093e+24f, -1.79601e+28f
7691path.lineTo(SkBits2Float(0x5b2c6829), SkBits2Float(0x2a3b0355)); // 4.85282e+16f, 1.66101e-13f
7692path.lineTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
7693path.close();
7694path.moveTo(SkBits2Float(0x6839552d), SkBits2Float(0xf0683b5a)); // 3.50084e+24f, -2.87489e+29f
7695path.conicTo(SkBits2Float(0x084b218c), SkBits2Float(0x6ac07b2a), SkBits2Float(0x395b2d7a), SkBits2Float(0x5bf05568), SkBits2Float(0x1f2a8c55)); // 6.11275e-34f, 1.16348e+26f, 0.000209024f, 1.35296e+17f, 3.6115e-20f
7696
7697 SkPath path1(path);
7698 path.reset();
7699 path.setFillType((SkPath::FillType) 0);
7700path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7701path.cubicTo(SkBits2Float(0xbcb4bcac), SkBits2Float(0x000029ff), SkBits2Float(0x010000bc), SkBits2Float(0x00bcbc00), SkBits2Float(0xbebcbcbc), SkBits2Float(0xb6aebcae)); // -0.0220626f, 1.50654e-41f, 2.35104e-38f, 1.73325e-38f, -0.368627f, -5.20757e-06f
7702
7703 SkPath path2(path);
7704 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
7705}
7706
7707static void fuzz763_38(skiatest::Reporter* reporter, const char* filename) {
7708 SkPath path;
7709 path.setFillType((SkPath::FillType) 0);
7710path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7711path.conicTo(SkBits2Float(0x5b682968), SkBits2Float(0x5b292d11), SkBits2Float(0x212a8c55), SkBits2Float(0x555b2d2d), SkBits2Float(0x52525268)); // 6.53477e+16f, 4.76188e+16f, 5.7784e-19f, 1.50617e+13f, 2.25831e+11f
7712path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7713path.close();
7714path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
7715path.close();
7716path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
7717path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x2ac05252), SkBits2Float(0x727fb721)); // 4.80216e+30f, 2.25832e+11f, 3.41632e-13f, 5.06496e+30f
7718path.lineTo(SkBits2Float(0x73727322), SkBits2Float(0x555b2d29)); // 1.92088e+31f, 1.50617e+13f
7719path.lineTo(SkBits2Float(0xab2a212e), SkBits2Float(0x7a27872a)); // -6.04422e-13f, 2.17464e+35f
7720path.moveTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
7721path.quadTo(SkBits2Float(0x52524852), SkBits2Float(0x72525228), SkBits2Float(0x72727272), SkBits2Float(0x3a727272)); // 2.25789e+11f, 4.16584e+30f, 4.80216e+30f, 0.000924862f
7722path.lineTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
7723path.close();
7724path.moveTo(SkBits2Float(0x25fffefb), SkBits2Float(0x7bc00321)); // 4.44082e-16f, 1.99397e+36f
7725path.quadTo(SkBits2Float(0x2a292827), SkBits2Float(0x962b0080), SkBits2Float(0x5252752a), SkBits2Float(0x72725252)); // 1.50241e-13f, -1.38134e-25f, 2.25977e+11f, 4.79967e+30f
7726path.quadTo(SkBits2Float(0x72725252), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.79967e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
7727path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda000072), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.00732e+15f, 2.25867e+11f, 2.25831e+11f
7728path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525272), SkBits2Float(0x72525248), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16584e+30f, 4.80216e+30f
7729path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 2.25831e+11f
7730path.quadTo(SkBits2Float(0x86727272), SkBits2Float(0x5252528d), SkBits2Float(0x72525252), SkBits2Float(0x72727227)); // -4.55992e-35f, 2.25832e+11f, 4.16585e+30f, 4.80214e+30f
7731path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x29217272), SkBits2Float(0xc003211c), SkBits2Float(0x556a4b7b)); // 4.80216e+30f, 3.58484e-14f, -2.0489f, 1.61006e+13f
7732path.moveTo(SkBits2Float(0x72557272), SkBits2Float(0x00727272)); // 4.22775e+30f, 1.05103e-38f
7733path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
7734path.close();
7735path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
7736path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x3a727272), SkBits2Float(0x28273ac2), SkBits2Float(0x00802a29)); // 4.80216e+30f, 0.000924862f, 9.2831e-15f, 1.17701e-38f
7737path.lineTo(SkBits2Float(0x52752a96), SkBits2Float(0x72525252)); // 2.63245e+11f, 4.16585e+30f
7738path.quadTo(SkBits2Float(0x72525272), SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72727272)); // 4.16586e+30f, 2.25966e+11f, 2.25831e+11f, 4.80216e+30f
7739path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
7740path.lineTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
7741path.close();
7742path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
7743path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525272), SkBits2Float(0x72525248), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16584e+30f, 4.80216e+30f
7744path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x72525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 4.16585e+30f
7745path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x72727252), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada)); // 4.80216e+30f, 4.80215e+30f, -9.04113e+15f, 2.25867e+11f
7746path.lineTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
7747path.close();
7748path.moveTo(SkBits2Float(0x5a61dada), SkBits2Float(0x52525252)); // 1.58931e+16f, 2.25831e+11f
7749path.quadTo(SkBits2Float(0x86727272), SkBits2Float(0x5252528d), SkBits2Float(0x72525252), SkBits2Float(0x72727227)); // -4.55992e-35f, 2.25832e+11f, 4.16585e+30f, 4.80214e+30f
7750path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x29217272), SkBits2Float(0xc003211c), SkBits2Float(0x556a4b7b)); // 4.80216e+30f, 3.58484e-14f, -2.0489f, 1.61006e+13f
7751path.moveTo(SkBits2Float(0x72557272), SkBits2Float(0x00727272)); // 4.22775e+30f, 1.05103e-38f
7752path.moveTo(SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 2.34994e+11f, 2.25831e+11f
7753path.close();
7754path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
7755path.close();
7756path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
7757path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
7758path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x52525ada), SkBits2Float(0x52525252)); // 4.80215e+30f, -9.04113e+15f, 2.25867e+11f, 2.25831e+11f
7759path.quadTo(SkBits2Float(0x52525272), SkBits2Float(0x3b3b0052), SkBits2Float(0x5b2d553a), SkBits2Float(0x68556829)); // 2.25832e+11f, 0.00285341f, 4.87889e+16f, 4.03114e+24f
7760
7761 SkPath path1(path);
7762 path.reset();
7763 path.setFillType((SkPath::FillType) 0);
7764path.moveTo(SkBits2Float(0x52528c55), SkBits2Float(0x29215252)); // 2.26074e+11f, 3.58206e-14f
7765
7766 SkPath path2(path);
7767 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
7768}
7769
caryclark45f04b82016-09-21 08:46:56 -07007770static void fuzz763_41(skiatest::Reporter* reporter, const char* filename) {
7771 SkPath path;
7772 path.setFillType((SkPath::FillType) 0);
7773
7774 SkPath path1(path);
7775 path.reset();
7776 path.setFillType((SkPath::FillType) 0);
7777path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7778path.quadTo(SkBits2Float(0x7a057c72), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x055f0089)); // 1.73275e+35f, 4.80216e+30f, 4.34505e+30f, 1.04855e-35f
7779path.quadTo(SkBits2Float(0x00057272), SkBits2Float(0x72ff0000), SkBits2Float(0xba405e72), SkBits2Float(0x031b0074)); // 5.00233e-40f, 1.01016e+31f, -0.000733829f, 4.55509e-37f
7780path.lineTo(SkBits2Float(0x664af700), SkBits2Float(0x56397d39)); // 2.39619e+23f, 5.09869e+13f
7781path.quadTo(SkBits2Float(0x7a057273), SkBits2Float(0x057300e4), SkBits2Float(0x257c0c9f), SkBits2Float(0x72400006)); // 1.73224e+35f, 1.1426e-35f, 2.18618e-16f, 3.80295e+30f
7782path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x030000ff), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8ec4000)); // -0.000836826f, 3.7617e-37f, 1.17894e+32f, -8.92527e+24f
7783path.moveTo(SkBits2Float(0x39724aff), SkBits2Float(0x7200397d)); // 0.000231069f, 2.53975e+30f
7784path.quadTo(SkBits2Float(0x827a0572), SkBits2Float(0x08727272), SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // -1.83687e-37f, 7.29588e-34f, 4.09355e-34f, 4.09355e-34f
7785path.lineTo(SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // 4.09355e-34f, 4.09355e-34f
7786path.lineTo(SkBits2Float(0x08080808), SkBits2Float(0x08080808)); // 4.09355e-34f, 4.09355e-34f
7787path.conicTo(SkBits2Float(0x72728c08), SkBits2Float(0x5b5e7272), SkBits2Float(0x000074ba), SkBits2Float(0x03f8e300), SkBits2Float(0x5aff00e8)); // 4.80414e+30f, 6.26133e+16f, 4.18736e-41f, 1.46282e-36f, 3.58886e+16f
7788path.quadTo(SkBits2Float(0x00800039), SkBits2Float(0x72100039), SkBits2Float(0x727a0572), SkBits2Float(0x7a727272)); // 1.1755e-38f, 2.85223e+30f, 4.95218e+30f, 3.14714e+35f
7789path.lineTo(SkBits2Float(0x7272727a), SkBits2Float(0xdb5e6472)); // 4.80216e+30f, -6.25979e+16f
7790path.moveTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
7791path.lineTo(SkBits2Float(0x666d0100), SkBits2Float(0x726efe62)); // 2.79805e+23f, 4.73376e+30f
7792path.lineTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
7793path.close();
7794path.moveTo(SkBits2Float(0x440039fc), SkBits2Float(0x0000f647)); // 512.906f, 8.83477e-41f
7795path.conicTo(SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x475afc16), SkBits2Float(0x170100ad), SkBits2Float(0x01008000)); // 4.80216e+30f, -3.47604e+31f, 56060.1f, 4.1683e-25f, 2.36017e-38f
7796path.quadTo(SkBits2Float(0x72057272), SkBits2Float(0x8c7a3472), SkBits2Float(0x72727272), SkBits2Float(0x00f6475e)); // 2.64319e+30f, -1.92751e-31f, 4.80216e+30f, 2.26171e-38f
7797path.moveTo(SkBits2Float(0x6d106d43), SkBits2Float(0x6efe6266)); // 2.79362e+27f, 3.93641e+28f
7798path.quadTo(SkBits2Float(0x72727a05), SkBits2Float(0xba5b7272), SkBits2Float(0x03000074), SkBits2Float(0x5aff00e8)); // 4.80274e+30f, -0.000837124f, 3.76163e-37f, 3.58886e+16f
7799path.quadTo(SkBits2Float(0x00da0039), SkBits2Float(0x72100039), SkBits2Float(0x727a0572), SkBits2Float(0x7a727272)); // 2.00202e-38f, 2.85223e+30f, 4.95218e+30f, 3.14714e+35f
7800path.lineTo(SkBits2Float(0x7272727a), SkBits2Float(0xdb5e6472)); // 4.80216e+30f, -6.25979e+16f
7801path.lineTo(SkBits2Float(0xfc5b97fc), SkBits2Float(0x47440039)); // -4.56078e+36f, 50176.2f
7802path.lineTo(SkBits2Float(0x00710000), SkBits2Float(0x62766d01)); // 1.03774e-38f, 1.13644e+21f
7803path.quadTo(SkBits2Float(0x7a05726e), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
7804
7805 SkPath path2(path);
7806 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
7807}
7808
7809static void fuzz763_40(skiatest::Reporter* reporter, const char* filename) {
7810 SkPath path;
7811 path.setFillType((SkPath::FillType) 1);
7812
7813 SkPath path1(path);
7814 path.reset();
7815 path.setFillType((SkPath::FillType) 0);
7816path.moveTo(SkBits2Float(0x10190004), SkBits2Float(0x7272727a)); // 3.01739e-29f, 4.80216e+30f
7817path.quadTo(SkBits2Float(0xf3db5e64), SkBits2Float(0x5b97fc16), SkBits2Float(0x000039fc), SkBits2Float(0x01008000)); // -3.47604e+31f, 8.55598e+16f, 2.08009e-41f, 2.36017e-38f
7818path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x41720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 15.1251f
7819path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
7820path.lineTo(SkBits2Float(0x01000000), SkBits2Float(0x10010004)); // 2.35099e-38f, 2.54408e-29f
7821path.conicTo(SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16), SkBits2Float(0x0000d07d), SkBits2Float(0x01008000)); // 4.80216e+30f, -3.47604e+31f, 3.58785e+06f, 7.47915e-41f, 2.36017e-38f
7822path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x63720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 4.46415e+21f
7823path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
7824path.lineTo(SkBits2Float(0x72000000), SkBits2Float(0x5b5e72b4)); // 2.5353e+30f, 6.26136e+16f
7825path.quadTo(SkBits2Float(0x05720089), SkBits2Float(0x05727272), SkBits2Float(0x7272727a), SkBits2Float(0x5b5e7272)); // 1.13789e-35f, 1.13998e-35f, 4.80216e+30f, 6.26133e+16f
7826path.cubicTo(SkBits2Float(0x03000074), SkBits2Float(0x4aff00e8), SkBits2Float(0x397d3972), SkBits2Float(0x01727200), SkBits2Float(0x72727a00), SkBits2Float(0x5e8d7272)); // 3.76163e-37f, 8.35596e+06f, 0.000241494f, 4.45302e-38f, 4.80274e+30f, 5.09617e+18f
7827path.moveTo(SkBits2Float(0x72008972), SkBits2Float(0x458fe705)); // 2.54594e+30f, 4604.88f
7828path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0xe8727272), SkBits2Float(0xba5b5e03), SkBits2Float(0x03000074)); // 1.73224e+35f, -4.5797e+24f, -0.00083682f, 3.76163e-37f
7829path.lineTo(SkBits2Float(0xf3dbff00), SkBits2Float(0x00397d16)); // -3.48598e+31f, 5.2795e-39f
7830path.cubicTo(SkBits2Float(0x7a101900), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x0197fc16), SkBits2Float(0x200c2010), SkBits2Float(0x20203620)); // 1.87049e+35f, 4.80216e+30f, -3.47604e+31f, 5.58304e-38f, 1.18691e-19f, 1.35704e-19f
7831
7832 SkPath path2(path);
7833 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
7834}
7835
7836static void fuzz763_39(skiatest::Reporter* reporter, const char* filename) {
7837 SkPath path;
7838 path.setFillType((SkPath::FillType) 0);
7839
7840 SkPath path1(path);
7841 path.reset();
7842 path.setFillType((SkPath::FillType) 0);
7843path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7844path.quadTo(SkBits2Float(0x7a057c72), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x055f0089)); // 1.73275e+35f, 4.80216e+30f, 4.34505e+30f, 1.04855e-35f
7845path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xba405e72), SkBits2Float(0x03000074)); // 1.73224e+35f, 4.80216e+30f, -0.000733829f, 3.76163e-37f
7846path.lineTo(SkBits2Float(0x664aff00), SkBits2Float(0x56397d39)); // 2.39655e+23f, 5.09869e+13f
7847path.quadTo(SkBits2Float(0x7a057273), SkBits2Float(0x057300ff), SkBits2Float(0x257c0c9f), SkBits2Float(0x72787257)); // 1.73224e+35f, 1.1426e-35f, 2.18618e-16f, 4.92099e+30f
7848path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x03000093), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8ecff00)); // -0.000836826f, 3.76165e-37f, 1.17894e+32f, -8.95346e+24f
7849path.moveTo(SkBits2Float(0x39724aff), SkBits2Float(0x7200397d)); // 0.000231069f, 2.53975e+30f
7850path.quadTo(SkBits2Float(0x827a0572), SkBits2Float(0x72727272), SkBits2Float(0x724adf00), SkBits2Float(0x00397d39)); // -1.83687e-37f, 4.80216e+30f, 4.01828e+30f, 5.27954e-39f
7851path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x16f3abab), SkBits2Float(0xfc5b97fc), SkBits2Float(0x47440039)); // 1.73224e+35f, 3.93671e-25f, -4.56078e+36f, 50176.2f
7852path.lineTo(SkBits2Float(0x00710000), SkBits2Float(0x62767201)); // 1.03774e-38f, 1.13653e+21f
7853path.quadTo(SkBits2Float(0x7a05726e), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
7854
7855 SkPath path2(path);
7856 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
7857}
7858
caryclarke7bb5b22016-09-22 05:20:07 -07007859
7860static void fuzz763_42(skiatest::Reporter* reporter, const char* filename) {
7861 SkPath path;
7862 path.setFillType((SkPath::FillType) 0);
7863
7864 SkPath path1(path);
7865 path.reset();
7866 path.setFillType((SkPath::FillType) 0);
7867path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7868path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x05720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 1.13789e-35f
7869path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xba405e72), SkBits2Float(0x03000074)); // 1.73224e+35f, 4.80216e+30f, -0.000733829f, 3.76163e-37f
7870path.lineTo(SkBits2Float(0x724aff00), SkBits2Float(0x56397d39)); // 4.02075e+30f, 5.09869e+13f
7871path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0xfa8d00ff), SkBits2Float(0x25727272), SkBits2Float(0x7272727a)); // 1.73224e+35f, -3.66067e+35f, 2.10289e-16f, 4.80216e+30f
7872path.quadTo(SkBits2Float(0xba5b5e72), SkBits2Float(0x03000093), SkBits2Float(0x74ba00e8), SkBits2Float(0xe8e0ff00)); // -0.000836826f, 3.76165e-37f, 1.17894e+32f, -8.50011e+24f
7873path.conicTo(SkBits2Float(0x39724aff), SkBits2Float(0x7200397d), SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x4aff0072)); // 0.000231069f, 2.53975e+30f, 1.73224e+35f, 4.80216e+30f, 8.3559e+06f
7874path.quadTo(SkBits2Float(0x00397d39), SkBits2Float(0x05727272), SkBits2Float(0x7272727a), SkBits2Float(0x385e7272)); // 5.27954e-39f, 1.13998e-35f, 4.80216e+30f, 5.30355e-05f
7875path.quadTo(SkBits2Float(0x057200ff), SkBits2Float(0x25727272), SkBits2Float(0x7272727a), SkBits2Float(0x5b5e7272)); // 1.1379e-35f, 2.10289e-16f, 4.80216e+30f, 6.26133e+16f
7876path.cubicTo(SkBits2Float(0x03000074), SkBits2Float(0x4aff00e8), SkBits2Float(0x397d3972), SkBits2Float(0x01000400), SkBits2Float(0x72727a10), SkBits2Float(0x5e647272)); // 3.76163e-37f, 8.35596e+06f, 0.000241494f, 2.35128e-38f, 4.80275e+30f, 4.11534e+18f
7877path.quadTo(SkBits2Float(0x2b2d16f3), SkBits2Float(0x0039fc4d), SkBits2Float(0x68800000), SkBits2Float(0x0100fafa)); // 6.14938e-13f, 5.32513e-39f, 4.8357e+24f, 2.369e-38f
7878path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0x725b5e72), SkBits2Float(0x63720089)); // 1.73224e+35f, 4.80216e+30f, 4.34505e+30f, 4.46415e+21f
7879path.lineTo(SkBits2Float(0x63636363), SkBits2Float(0x63606363)); // 4.19457e+21f, 4.13923e+21f
7880path.lineTo(SkBits2Float(0x72720000), SkBits2Float(0xff725b5e)); // 4.7933e+30f, -3.22148e+38f
7881path.moveTo(SkBits2Float(0x72720572), SkBits2Float(0x5b5e2572)); // 4.79373e+30f, 6.25286e+16f
7882path.quadTo(SkBits2Float(0x05720089), SkBits2Float(0x25727272), SkBits2Float(0x72728c7a), SkBits2Float(0x5b5e7272)); // 1.13789e-35f, 2.10289e-16f, 4.80417e+30f, 6.26133e+16f
7883path.cubicTo(SkBits2Float(0x03000074), SkBits2Float(0x4aff00e8), SkBits2Float(0x397d3972), SkBits2Float(0x01000400), SkBits2Float(0x72727a10), SkBits2Float(0x5e827272)); // 3.76163e-37f, 8.35596e+06f, 0.000241494f, 2.35128e-38f, 4.80275e+30f, 4.69985e+18f
7884path.quadTo(SkBits2Float(0x97fc16f3), SkBits2Float(0x0039fc5b), SkBits2Float(0x00f6472e), SkBits2Float(0x01008000)); // -1.62909e-24f, 5.32515e-39f, 2.26171e-38f, 2.36017e-38f
7885path.quadTo(SkBits2Float(0x7a057272), SkBits2Float(0x72727272), SkBits2Float(0xf3db5e64), SkBits2Float(0x4a5afc16)); // 1.73224e+35f, 4.80216e+30f, -3.47604e+31f, 3.58785e+06f
7886
7887 SkPath path2(path);
7888 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
7889}
7890
caryclark1c106072016-09-22 12:52:20 -07007891static void fuzz763_43(skiatest::Reporter* reporter, const char* filename) {
7892 SkPath path;
7893 path.setFillType((SkPath::FillType) 1);
7894
7895 SkPath path1(path);
7896 path.reset();
7897 path.setFillType((SkPath::FillType) 0);
7898path.moveTo(SkBits2Float(0x5c386c3a), SkBits2Float(0x4e691a3e)); // 2.07642e+17f, 9.77703e+08f
7899path.cubicTo(SkBits2Float(0x6f69f9f5), SkBits2Float(0x18ff8791), SkBits2Float(0x2492263c), SkBits2Float(0xbc6fdb48), SkBits2Float(0xc2f82107), SkBits2Float(0x729a18e1)); // 7.24122e+28f, 6.60528e-24f, 6.33822e-17f, -0.0146397f, -124.065f, 6.10442e+30f
7900path.cubicTo(SkBits2Float(0x07d729d1), SkBits2Float(0xdea6db48), SkBits2Float(0xcd1dfb88), SkBits2Float(0x90826769), SkBits2Float(0x1c20e5a4), SkBits2Float(0xa4c3ba9b)); // 3.23742e-34f, -6.01164e+18f, -1.65657e+08f, -5.14353e-29f, 5.32364e-22f, -8.48839e-17f
7901path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
7902path.close();
7903path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
7904path.cubicTo(SkBits2Float(0xdeea1d6e), SkBits2Float(0xc7774804), SkBits2Float(0x27cf0dcf), SkBits2Float(0x6ae8b99f), SkBits2Float(0x24ac3260), SkBits2Float(0x062fa93c)); // -8.43488e+18f, -63304, 5.7469e-15f, 1.40674e+26f, 7.46784e-17f, 3.30382e-35f
7905path.lineTo(SkBits2Float(0x438a0b9c), SkBits2Float(0x60a1d2c8)); // 276.091f, 9.32848e+19f
7906path.quadTo(SkBits2Float(0xe13fb902), SkBits2Float(0x07ee536f), SkBits2Float(0x971d8ac1), SkBits2Float(0x2f9f174b)); // -2.21041e+20f, 3.58593e-34f, -5.09046e-25f, 2.89385e-10f
7907path.lineTo(SkBits2Float(0x0f2cf5d8), SkBits2Float(0xe271654c)); // 8.5276e-30f, -1.11324e+21f
7908path.lineTo(SkBits2Float(0xe6cf24d2), SkBits2Float(0xd9537742)); // -4.89105e+23f, -3.72015e+15f
7909path.cubicTo(SkBits2Float(0x1aaaee04), SkBits2Float(0x9e3b804c), SkBits2Float(0x84cba87d), SkBits2Float(0x4e0e8ccc), SkBits2Float(0x2aec611a), SkBits2Float(0x7ae4b639)); // 7.06949e-23f, -9.92623e-21f, -4.78798e-36f, 5.97898e+08f, 4.19894e-13f, 5.9377e+35f
7910path.conicTo(SkBits2Float(0x73357921), SkBits2Float(0x6f163021), SkBits2Float(0x70ea542c), SkBits2Float(0xe008f404), SkBits2Float(0x1f6c5e52)); // 1.43778e+31f, 4.64809e+28f, 5.8017e+29f, -3.94741e+19f, 5.0053e-20f
7911path.lineTo(SkBits2Float(0xda45ad4e), SkBits2Float(0xedce4a04)); // -1.39103e+16f, -7.98042e+27f
7912path.lineTo(SkBits2Float(0xac0e45da), SkBits2Float(0x8f632841)); // -2.02182e-12f, -1.11997e-29f
7913path.lineTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
7914path.close();
7915path.moveTo(SkBits2Float(0xcc2084b7), SkBits2Float(0x19f68bdb)); // -4.20789e+07f, 2.54923e-23f
7916path.quadTo(SkBits2Float(0xf35c4ad5), SkBits2Float(0x0692f251), SkBits2Float(0x69632126), SkBits2Float(0xb927af67)); // -1.74534e+31f, 5.52751e-35f, 1.71614e+25f, -0.000159917f
7917path.moveTo(SkBits2Float(0x6534bff9), SkBits2Float(0x434a9986)); // 5.3348e+22f, 202.6f
7918path.quadTo(SkBits2Float(0x37c603e5), SkBits2Float(0xa0683953), SkBits2Float(0x751915e4), SkBits2Float(0x831c911a)); // 2.36053e-05f, -1.96701e-19f, 1.94059e+32f, -4.60108e-37f
7919path.cubicTo(SkBits2Float(0xba4f10f1), SkBits2Float(0x5a7571df), SkBits2Float(0x4ec67459), SkBits2Float(0x33c58827), SkBits2Float(0x10b78ccb), SkBits2Float(0xedbd2748)); // -0.000789895f, 1.72716e+16f, 1.66476e+09f, 9.19829e-08f, 7.23977e-29f, -7.31752e+27f
7920path.cubicTo(SkBits2Float(0x6d06f06a), SkBits2Float(0xe30465cf), SkBits2Float(0xc5458fe7), SkBits2Float(0xca488dc4), SkBits2Float(0x38f9021c), SkBits2Float(0x3e8d58db)); // 2.6101e+27f, -2.44231e+21f, -3160.99f, -3.28587e+06f, 0.000118736f, 0.276069f
7921
7922 SkPath path2(path);
7923 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
7924}
7925
caryclark414c4292016-09-26 11:03:54 -07007926static void fuzz763_44(skiatest::Reporter* reporter, const char* filename) {
7927 SkPath path;
7928 path.setFillType((SkPath::FillType) 1);
7929path.moveTo(SkBits2Float(0x7c223bab), SkBits2Float(0x7cf35966)); // 3.36945e+36f, 1.01083e+37f
7930path.quadTo(SkBits2Float(0x00000000), SkBits2Float(0x7ccaca6d), SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 8.4236e+36f, 0, 0
7931path.lineTo(SkBits2Float(0x7d7d7d7d), SkBits2Float(0x00000000)); // 2.10591e+37f, 0
7932path.quadTo(SkBits2Float(0x7ccacab0), SkBits2Float(0x7d1817f4), SkBits2Float(0x7c223bab), SkBits2Float(0x7cf35966)); // 8.42364e+36f, 1.26354e+37f, 3.36945e+36f, 1.01083e+37f
7933path.close();
7934
7935 SkPath path1(path);
7936 path.reset();
7937 path.setFillType((SkPath::FillType) 0);
7938path.moveTo(SkBits2Float(0x109d0000), SkBits2Float(0xff7bc000)); // 6.19256e-29f, -3.34633e+38f
7939path.conicTo(SkBits2Float(0x979797ed), SkBits2Float(0x3a214797), SkBits2Float(0x28aa217a), SkBits2Float(0x01007272), SkBits2Float(0x00000072)); // -9.7965e-25f, 0.000615233f, 1.88883e-14f, 2.3592e-38f, 1.59748e-43f
7940path.quadTo(SkBits2Float(0x72728302), SkBits2Float(0x8b727272), SkBits2Float(0x72727272), SkBits2Float(0xc00308f6)); // 4.80344e+30f, -4.66936e-32f, 4.80216e+30f, -2.04742f
7941path.conicTo(SkBits2Float(0x7f52753a), SkBits2Float(0x8072ffff), SkBits2Float(0x67af2103), SkBits2Float(0x7d2a6847), SkBits2Float(0x7d7d7d7d)); // 2.79747e+38f, -1.05611e-38f, 1.65405e+24f, 1.41569e+37f, 2.10591e+37f
7942
7943 SkPath path2(path);
7944 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
7945}
7946
Cary Clark40f23782016-10-06 12:04:16 -04007947static void fuzz763_45(skiatest::Reporter* reporter, const char* filename) {
7948 SkPath path;
7949 path.setFillType((SkPath::FillType) 0);
Cary Clarkb9ae5372016-10-05 10:40:07 -04007950
Cary Clark40f23782016-10-06 12:04:16 -04007951 SkPath path1(path);
7952 path.reset();
7953 path.setFillType((SkPath::FillType) 0);
7954path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7955path.cubicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a303030), SkBits2Float(0x7a303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 2.28705e+35f, 2.28705e+35f, 6.40969e-10f
7956path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x74303030), SkBits2Float(0x74303030), SkBits2Float(0x30303030), SkBits2Float(0x74303030)); // 6.40969e-10f, 5.58363e+31f, 5.58363e+31f, 6.40969e-10f, 5.58363e+31f
7957path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
7958path.moveTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
7959path.moveTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
7960path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a743030), SkBits2Float(0x74303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 3.16974e+35f, 5.58363e+31f, 6.40969e-10f
7961path.lineTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
7962path.close();
7963path.moveTo(SkBits2Float(0x77773030), SkBits2Float(0x30303030)); // 5.01357e+33f, 6.40969e-10f
7964path.lineTo(SkBits2Float(0x7f303030), SkBits2Float(0x7a303030)); // 2.34194e+38f, 2.28705e+35f
7965path.conicTo(SkBits2Float(0x77303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0xf9303030), SkBits2Float(0x7a303030)); // 3.57352e+33f, 6.40969e-10f, 6.40969e-10f, -5.71764e+34f, 2.28705e+35f
7966path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
7967path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
7968path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
7969path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
7970path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 2.28705e+35f, 6.40969e-10f
7971path.cubicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 2.28705e+35f, 6.40969e-10f
7972path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 6.40969e-10f
7973path.moveTo(SkBits2Float(0x77303030), SkBits2Float(0xff303030)); // 3.57352e+33f, -2.34194e+38f
7974path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7f773030), SkBits2Float(0x7a7a3030), SkBits2Float(0x7a303030)); // 6.40969e-10f, 6.40969e-10f, 3.2857e+38f, 3.24763e+35f, 2.28705e+35f
7975path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x77303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 3.57352e+33f, 6.40969e-10f
7976path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7b303030), SkBits2Float(0x73303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f, 9.14822e+35f, 1.39591e+31f, 6.40969e-10f
7977path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x30303030), SkBits2Float(0x7a7a3030)); // 6.40969e-10f, 6.40969e-10f, 6.40969e-10f, 3.24763e+35f
7978 SkPath path2(path);
7979 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
7980}
7981
7982static void fuzz763_46(skiatest::Reporter* reporter, const char* filename) {
7983 SkPath path;
7984 path.setFillType((SkPath::FillType) 0);
7985
7986 SkPath path1(path);
7987 path.reset();
7988 path.setFillType((SkPath::FillType) 0);
7989path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
7990 path.conicTo(SkBits2Float(0x44444444), SkBits2Float(0x44444444), SkBits2Float(0x44263030), SkBits2Float(0x44304430), SkBits2Float(0x4c444430)); // 785.067f, 785.067f, 664.753f, 705.065f, 5.145e+07f
7991path.moveTo(SkBits2Float(0x44444444), SkBits2Float(0x44444444)); // 785.067f, 785.067f
7992path.cubicTo(SkBits2Float(0x30303030), SkBits2Float(0x44444444), SkBits2Float(0x30303030), SkBits2Float(0x44444444), SkBits2Float(0x44444444), SkBits2Float(0x4444444c)); // 6.40969e-10f, 785.067f, 6.40969e-10f, 785.067f, 785.067f, 785.067f
7993 SkPath path2(path);
7994 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
7995}
7996
7997static void fuzz763_47(skiatest::Reporter* reporter, const char* filename) {
7998 SkPath path;
7999 path.setFillType((SkPath::FillType) 1);
8000
8001 SkPath path1(path);
8002 path.reset();
8003 path.setFillType((SkPath::FillType) 0);
8004path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8005path.cubicTo(SkBits2Float(0x7272728e), SkBits2Float(0x52527272), SkBits2Float(0x2d555252), SkBits2Float(0x68556829), SkBits2Float(0x555b2d29), SkBits2Float(0x2a212a8c)); // 4.80217e+30f, 2.25966e+11f, 1.21259e-11f, 4.03114e+24f, 1.50617e+13f, 1.43144e-13f
8006path.conicTo(SkBits2Float(0x00296808), SkBits2Float(0x00000002), SkBits2Float(0x52525252), SkBits2Float(0x72007272), SkBits2Float(0x52527272)); // 3.80257e-39f, 2.8026e-45f, 2.25831e+11f, 2.54416e+30f, 2.25966e+11f
8007path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8008path.close();
8009path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8010path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x7272081f)); // 1.43144e-13f, 4.79393e+30f
8011path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x5974fa80), SkBits2Float(0x00747474), SkBits2Float(0x59585264)); // 4.80216e+30f, 4.30971e+15f, 1.06947e-38f, 3.80557e+15f
8012path.cubicTo(SkBits2Float(0x64007474), SkBits2Float(0x088c5852), SkBits2Float(0x80808021), SkBits2Float(0x8c808080), SkBits2Float(0x80802108), SkBits2Float(0x80808080)); // 9.4783e+21f, 8.44671e-34f, -1.18009e-38f, -1.97989e-31f, -1.17668e-38f, -1.1801e-38f
8013path.quadTo(SkBits2Float(0x80807d80), SkBits2Float(0x80808080), SkBits2Float(0xff7f0000), SkBits2Float(0x80808080)); // -1.18e-38f, -1.1801e-38f, -3.38953e+38f, -1.1801e-38f
8014path.quadTo(SkBits2Float(0x80808080), SkBits2Float(0x80808080), SkBits2Float(0xed842b00), SkBits2Float(0x7252ff6d)); // -1.1801e-38f, -1.1801e-38f, -5.113e+27f, 4.17924e+30f
8015path.quadTo(SkBits2Float(0x72577200), SkBits2Float(0x55525352), SkBits2Float(0x2a212a8c), SkBits2Float(0x7272081f)); // 4.26733e+30f, 1.44535e+13f, 1.43144e-13f, 4.79393e+30f
8016path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x6f740080), SkBits2Float(0x8c556874), SkBits2Float(0x2982ffff)); // 4.80216e+30f, 7.55149e+28f, -1.64404e-31f, 5.81757e-14f
8017
8018 SkPath path2(path);
8019 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
8020}
8021
8022static void fuzz763_48(skiatest::Reporter* reporter, const char* filename) {
8023 SkPath path;
8024 path.setFillType((SkPath::FillType) 1);
8025
8026 SkPath path1(path);
8027 path.reset();
8028 path.setFillType((SkPath::FillType) 0);
8029path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8030path.lineTo(SkBits2Float(0xed0081bc), SkBits2Float(0x1b2d8040)); // -2.48568e+27f, 1.43517e-22f
8031path.moveTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
8032path.close();
8033path.moveTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
8034path.conicTo(SkBits2Float(0x662d5576), SkBits2Float(0x2d804066), SkBits2Float(0x8068291b), SkBits2Float(0x740315ff), SkBits2Float(0x74747474)); // 2.04636e+23f, 1.45805e-11f, -9.56564e-39f, 4.15428e+31f, 7.74708e+31f
8035path.cubicTo(SkBits2Float(0x762d0529), SkBits2Float(0x72525252), SkBits2Float(0x007b7272), SkBits2Float(0x525adada), SkBits2Float(0x52525252), SkBits2Float(0x52727252)); // 8.77316e+32f, 4.16585e+30f, 1.13368e-38f, 2.34994e+11f, 2.25831e+11f, 2.60325e+11f
8036path.lineTo(SkBits2Float(0x74747403), SkBits2Float(0x29747474)); // 7.74703e+31f, 5.42799e-14f
8037path.close();
8038path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
8039path.close();
8040path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
8041path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52524872), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.2579e+11f, 4.16585e+30f, 4.80216e+30f
8042path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0x80406666), SkBits2Float(0x68291b2d), SkBits2Float(0x0315ff80)); // 4.80215e+30f, -5.91421e-39f, 3.19432e+24f, 4.40805e-37f
8043path.cubicTo(SkBits2Float(0x74747474), SkBits2Float(0x7b722974), SkBits2Float(0x5adada00), SkBits2Float(0x52525252), SkBits2Float(0x72720052), SkBits2Float(0x72727272)); // 7.74708e+31f, 1.25738e+36f, 3.08006e+16f, 2.25831e+11f, 4.79333e+30f, 4.80216e+30f
8044path.lineTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
8045path.close();
8046path.moveTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
8047path.quadTo(SkBits2Float(0x72727227), SkBits2Float(0x72727272), SkBits2Float(0x74727272), SkBits2Float(0x55747421)); // 4.80214e+30f, 4.80216e+30f, 7.68345e+31f, 1.67987e+13f
8048path.lineTo(SkBits2Float(0xa5252620), SkBits2Float(0x52b4adad)); // -1.43244e-16f, 3.88004e+11f
8049path.close();
8050path.moveTo(SkBits2Float(0x724b0000), SkBits2Float(0x00725f72)); // 4.02083e+30f, 1.05035e-38f
8051path.lineTo(SkBits2Float(0x52525252), SkBits2Float(0x72725252)); // 2.25831e+11f, 4.79967e+30f
8052path.quadTo(SkBits2Float(0x26727272), SkBits2Float(0x0303a525), SkBits2Float(0x52005c03), SkBits2Float(0x72525252)); // 8.41157e-16f, 3.8687e-37f, 1.37825e+11f, 4.16585e+30f
8053path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x1ff07255), SkBits2Float(0x2a8c5572), SkBits2Float(0x21082a21)); // 4.80216e+30f, 1.01833e-19f, 2.49283e-13f, 4.61343e-19f
8054path.lineTo(SkBits2Float(0x2a2a3a21), SkBits2Float(0x29212828)); // 1.51192e-13f, 3.5784e-14f
8055
8056 SkPath path2(path);
8057 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
8058}
8059
8060static void fuzz763_49(skiatest::Reporter* reporter, const char* filename) {
8061 SkPath path;
8062 path.setFillType((SkPath::FillType) 0);
8063
8064 SkPath path1(path);
8065 path.reset();
8066 path.setFillType((SkPath::FillType) 0);
8067path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8068path.conicTo(SkBits2Float(0x30303030), SkBits2Float(0x78303030), SkBits2Float(0x78787881), SkBits2Float(0x78787878), SkBits2Float(0x30303030)); // 6.40969e-10f, 1.42941e+34f, 2.01583e+34f, 2.01583e+34f, 6.40969e-10f
8069path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
8070path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
8071path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 2.01583e+34f, 2.01583e+34f
8072path.quadTo(SkBits2Float(0x30303030), SkBits2Float(0x78787878), SkBits2Float(0x78787878), SkBits2Float(0x78787878)); // 6.40969e-10f, 2.01583e+34f, 2.01583e+34f, 2.01583e+34f
8073path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8074path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8075path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8076path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8077path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8078path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8079path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8080path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8081path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8082path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8083path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8084path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8085path.lineTo(SkBits2Float(0x30303030), SkBits2Float(0x30303030)); // 6.40969e-10f, 6.40969e-10f
8086path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x7878788d)); // 2.01583e+34f, 2.01584e+34f
8087path.lineTo(SkBits2Float(0x78787878), SkBits2Float(0x30303030)); // 2.01583e+34f, 6.40969e-10f
8088
8089 SkPath path2(path);
8090 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
8091}
Cary Clark3fdf52c2016-10-04 10:53:31 -04008092
caryclark221a4bb2016-10-07 11:15:15 -07008093static void fuzz763_50(skiatest::Reporter* reporter, const char* filename) {
8094 SkPath path;
8095 path.setFillType((SkPath::FillType) 1);
8096path.moveTo(SkBits2Float(0x70621ede), SkBits2Float(0x00000000)); // 2.79924e+29f, 0
8097path.conicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x74fc5b97), SkBits2Float(0x7d458fe4)); // 0, 0, 0, 1.59951e+32f, 1.64128e+37f
8098path.lineTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
8099path.lineTo(SkBits2Float(0x70621ede), SkBits2Float(0x00000000)); // 2.79924e+29f, 0
8100path.close();
8101path.moveTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
8102path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8103path.lineTo(SkBits2Float(0xefea1ffe), SkBits2Float(0x00000000)); // -1.44916e+29f, 0
8104path.close();
8105
8106 SkPath path1(path);
8107 path.reset();
8108 path.setFillType((SkPath::FillType) 0);
8109
8110 SkPath path2(path);
8111 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
8112}
8113
8114static void fuzz763_51(skiatest::Reporter* reporter, const char* filename) {
8115 SkPath path;
8116 path.setFillType((SkPath::FillType) 1);
8117
8118 SkPath path1(path);
8119 path.reset();
8120 path.setFillType((SkPath::FillType) 0);
8121path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8122path.quadTo(SkBits2Float(0x868b5aae), SkBits2Float(0x626c45ab), SkBits2Float(0xefea1ffe), SkBits2Float(0x0029fc76)); // -5.24192e-35f, 1.08961e+21f, -1.44916e+29f, 3.85582e-39f
8123path.moveTo(SkBits2Float(0xfacbff01), SkBits2Float(0x56fc5b97)); // -5.29604e+35f, 1.38735e+14f
8124path.cubicTo(SkBits2Float(0x7d4559c9), SkBits2Float(0xad801c39), SkBits2Float(0xfbe2091a), SkBits2Float(0x7268e394), SkBits2Float(0x7c800079), SkBits2Float(0xa1d75590)); // 1.63953e+37f, -1.45644e-11f, -2.34729e+36f, 4.61284e+30f, 5.31699e+36f, -1.45916e-18f
8125
8126 SkPath path2(path);
8127 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
8128}
8129
8130static void fuzz763_52(skiatest::Reporter* reporter, const char* filename) {
8131 SkPath path;
8132 path.setFillType((SkPath::FillType) 1);
8133
8134 SkPath path1(path);
8135 path.reset();
8136 path.setFillType((SkPath::FillType) 0);
8137path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8138path.quadTo(SkBits2Float(0x29ff4bae), SkBits2Float(0xa1d75590), SkBits2Float(0x9fd6f6c3), SkBits2Float(0x70621ede)); // 1.13374e-13f, -1.45916e-18f, -9.10408e-20f, 2.79924e+29f
8139path.quadTo(SkBits2Float(0x57a839d3), SkBits2Float(0x1a80d34b), SkBits2Float(0x0147a31b), SkBits2Float(0xff7fffff)); // 3.69933e+14f, 5.32809e-23f, 3.66675e-38f, -3.40282e+38f
8140path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8141path.close();
8142path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
8143path.conicTo(SkBits2Float(0x75757568), SkBits2Float(0x7575755e), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75756575)); // 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.11077e+32f
8144path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
8145path.close();
8146path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
8147path.conicTo(SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75757575), SkBits2Float(0x75917575), SkBits2Float(0x75757575)); // 3.11156e+32f, 3.11156e+32f, 3.11156e+32f, 3.68782e+32f, 3.11156e+32f
8148path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
8149path.close();
8150path.moveTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
8151path.conicTo(SkBits2Float(0x75757575), SkBits2Float(0x7575758f), SkBits2Float(0x7f757575), SkBits2Float(0x75757575), SkBits2Float(0x75757575)); // 3.11156e+32f, 3.11157e+32f, 3.26271e+38f, 3.11156e+32f, 3.11156e+32f
8152path.lineTo(SkBits2Float(0x1ab8e97c), SkBits2Float(0x94fbe3ef)); // 7.64778e-23f, -2.54344e-26f
8153path.close();
8154
8155 SkPath path2(path);
8156 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 2, filename);
8157}
8158
caryclark08714012016-10-07 12:57:47 -07008159static void fuzz763_53(skiatest::Reporter* reporter, const char* filename) {
8160 SkPath path;
8161 path.setFillType((SkPath::FillType) 1);
8162path.moveTo(SkBits2Float(0x7644b829), SkBits2Float(0x00000000)); // 9.97486e+32f, 0
8163path.lineTo(SkBits2Float(0x74fc5b97), SkBits2Float(0x77df944a)); // 1.59951e+32f, 9.06945e+33f
8164path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0xf8fbe3ff)); // 0, -4.08716e+34f
8165path.lineTo(SkBits2Float(0x7644b829), SkBits2Float(0x00000000)); // 9.97486e+32f, 0
8166path.close();
8167
8168 SkPath path1(path);
8169 path.reset();
8170 path.setFillType((SkPath::FillType) 0);
8171path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8172path.quadTo(SkBits2Float(0x45ab86ae), SkBits2Float(0xd6d6626c), SkBits2Float(0xd6d6d6d6), SkBits2Float(0x7644d6d6)); // 5488.83f, -1.17859e+14f, -1.18109e+14f, 9.98093e+32f
8173path.moveTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0xd6d6d6d6)); // -1.18109e+14f, -1.18109e+14f
8174path.cubicTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0x64fed6d6), SkBits2Float(0x7644ef40), SkBits2Float(0x290877fc), SkBits2Float(0x447644b8), SkBits2Float(0x80fafc76)); // -1.18109e+14f, 3.76076e+22f, 9.98577e+32f, 3.03021e-14f, 985.074f, -2.30494e-38f
8175path.conicTo(SkBits2Float(0x87808080), SkBits2Float(0x764400ae), SkBits2Float(0x764400fc), SkBits2Float(0x450080fc), SkBits2Float(0x3636366c)); // -1.93348e-34f, 9.93852e+32f, 9.93858e+32f, 2056.06f, 2.71518e-06f
8176path.lineTo(SkBits2Float(0xd6d6d6d6), SkBits2Float(0xd6d6d6d6)); // -1.18109e+14f, -1.18109e+14f
8177path.close();
8178path.moveTo(SkBits2Float(0xef08a412), SkBits2Float(0x5aaeff7f)); // -4.22883e+28f, 2.46288e+16f
8179path.conicTo(SkBits2Float(0x7644626c), SkBits2Float(0x088912fc), SkBits2Float(0xae8744ef), SkBits2Float(0x76571f5a), SkBits2Float(0x45ab86fc)); // 9.95788e+32f, 8.24985e-34f, -6.15133e-11f, 1.0908e+33f, 5488.87f
8180path.conicTo(SkBits2Float(0x4064fe62), SkBits2Float(0x290877ef), SkBits2Float(0x780080b8), SkBits2Float(0x553c7644), SkBits2Float(0x644eae87)); // 3.57803f, 3.03021e-14f, 1.04254e+34f, 1.2951e+13f, 1.52504e+22f
8181path.lineTo(SkBits2Float(0xef08a412), SkBits2Float(0x5aaeff7f)); // -4.22883e+28f, 2.46288e+16f
8182path.close();
8183
8184 SkPath path2(path);
8185 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
8186}
8187
caryclarke6522ea2016-10-17 07:54:33 -07008188// hangs 654939
8189static void fuzz763_54(skiatest::Reporter* reporter, const char* filename) {
8190 SkPath path;
8191 path.setFillType((SkPath::FillType) 0);
8192path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8193path.conicTo(SkBits2Float(0x5b682968), SkBits2Float(0xb3b32d11), SkBits2Float(0xb3b3b3b3), SkBits2Float(0x5b29b3b3), SkBits2Float(0x212a8c55)); // 6.53477e+16f, -8.34353e-08f, -8.36802e-08f, 4.77669e+16f, 5.7784e-19f
8194path.conicTo(SkBits2Float(0x68555b2d), SkBits2Float(0x28296869), SkBits2Float(0x5b252a08), SkBits2Float(0x5d68392a), SkBits2Float(0x29282780)); // 4.03018e+24f, 9.40402e-15f, 4.64896e+16f, 1.04584e+18f, 3.73378e-14f
8195path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8196path.close();
8197path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8198path.cubicTo(SkBits2Float(0x52727272), SkBits2Float(0x72727252), SkBits2Float(0x525252c7), SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255)); // 2.60326e+11f, 4.80215e+30f, 2.25833e+11f, 4.79967e+30f, 4.80216e+30f, 4.80215e+30f
8199path.quadTo(SkBits2Float(0xd7da0000), SkBits2Float(0x5252525a), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // -4.79387e+14f, 2.25831e+11f, 4.16585e+30f, 4.80216e+30f
8200path.quadTo(SkBits2Float(0x48525252), SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255)); // 215369, 4.79967e+30f, 4.80216e+30f, 4.80215e+30f
8201path.quadTo(SkBits2Float(0xdada007b), SkBits2Float(0x5252525a), SkBits2Float(0x72675252), SkBits2Float(0x72727272)); // -3.0681e+16f, 2.25831e+11f, 4.5818e+30f, 4.80216e+30f
8202path.quadTo(SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272), SkBits2Float(0x72727272)); // 2.25831e+11f, 3.36289e-15f, 4.80216e+30f, 4.80216e+30f
8203path.quadTo(SkBits2Float(0x1c292172), SkBits2Float(0x7bc00321), SkBits2Float(0x9aaaaaaa), SkBits2Float(0x8c556a4b)); // 5.59606e-22f, 1.99397e+36f, -7.05861e-23f, -1.64409e-31f
8204path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
8205path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8206path.close();
8207path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
8208path.close();
8209path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
8210path.quadTo(SkBits2Float(0x72725570), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.79991e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
8211path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0x555bb672), SkBits2Float(0x29686968), SkBits2Float(0x252a081f)); // 4.80215e+30f, 1.50985e+13f, 5.16058e-14f, 1.47479e-16f
8212path.moveTo(SkBits2Float(0x5d68392a), SkBits2Float(0x01002780)); // 1.04584e+18f, 2.35382e-38f
8213path.moveTo(SkBits2Float(0x72727200), SkBits2Float(0x72725252)); // 4.80212e+30f, 4.79967e+30f
8214path.quadTo(SkBits2Float(0x5adada00), SkBits2Float(0xa5252652), SkBits2Float(0x727272ad), SkBits2Float(0xda007b72)); // 3.08006e+16f, -1.43245e-16f, 4.80218e+30f, -9.04113e+15f
8215path.lineTo(SkBits2Float(0x5252525a), SkBits2Float(0x72525252)); // 2.25831e+11f, 4.16585e+30f
8216path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
8217path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x74217472), SkBits2Float(0x005b5574), SkBits2Float(0x72680000)); // 4.80216e+30f, 5.11671e+31f, 8.38768e-39f, 4.59523e+30f
8218path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x007b7272), SkBits2Float(0x525adada)); // 4.80216e+30f, 2.25831e+11f, 1.13368e-38f, 2.34994e+11f
8219path.lineTo(SkBits2Float(0x72727200), SkBits2Float(0x72725252)); // 4.80212e+30f, 4.79967e+30f
8220path.close();
8221
8222 SkPath path1(path);
8223 path.reset();
8224 path.setFillType((SkPath::FillType) 0);
8225
8226 SkPath path2(path);
8227 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 4, filename);
8228}
8229
8230
8231// afl crash
8232static void fuzz763_55(skiatest::Reporter* reporter, const char* filename) {
8233 SkPath path;
8234 path.setFillType((SkPath::FillType) 0);
8235path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
8236path.lineTo(SkBits2Float(0x55555568), SkBits2Float(0x55555555)); // 1.46602e+13f, 1.46602e+13f
8237path.lineTo(SkBits2Float(0x98989898), SkBits2Float(0x55989898)); // -3.94452e-24f, 2.09726e+13f
8238path.lineTo(SkBits2Float(0xf6f65555), SkBits2Float(0x101006f6)); // -2.49812e+33f, 2.84044e-29f
8239path.quadTo(SkBits2Float(0xdca33f10), SkBits2Float(0xf6f6f6f6), SkBits2Float(0xf621f6f6), SkBits2Float(0xf70ff6f6)); // -3.67598e+17f, -2.50452e+33f, -8.21259e+32f, -2.91995e+33f
8240path.lineTo(SkBits2Float(0x9400f6f6), SkBits2Float(0x10530000)); // -6.51105e-27f, 4.16124e-29f
8241path.quadTo(SkBits2Float(0x0f101010), SkBits2Float(0x00101010), SkBits2Float(0xf610f720), SkBits2Float(0xf6f6f6f6)); // 7.10284e-30f, 1.47513e-39f, -7.35062e+32f, -2.50452e+33f
8242path.lineTo(SkBits2Float(0x105352f6), SkBits2Float(0x1cf6ff10)); // 4.16763e-29f, 1.63448e-21f
8243path.lineTo(SkBits2Float(0xf6f6220a), SkBits2Float(0x003700f6)); // -2.49608e+33f, 5.0513e-39f
8244path.cubicTo(SkBits2Float(0x0000001e), SkBits2Float(0x00fff4f6), SkBits2Float(0xff101064), SkBits2Float(0xf6b6ac7f), SkBits2Float(0xf6f629f6), SkBits2Float(0x10f6f6f6)); // 4.2039e-44f, 2.35059e-38f, -1.91494e+38f, -1.85253e+33f, -2.4964e+33f, 9.74104e-29f
8245path.quadTo(SkBits2Float(0x10101007), SkBits2Float(0x10f7fd10), SkBits2Float(0xf6f6f6f6), SkBits2Float(0xf6f645e0)); // 2.84113e-29f, 9.78142e-29f, -2.50452e+33f, -2.4975e+33f
8246path.lineTo(SkBits2Float(0xed9ef6f6), SkBits2Float(0x53535353)); // -6.14965e+27f, 9.07636e+11f
8247path.lineTo(SkBits2Float(0x53006cf6), SkBits2Float(0x53295353)); // 5.51584e+11f, 7.27247e+11f
8248path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
8249path.close();
8250path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x55415500)); // 0, 1.32857e+13f
8251path.lineTo(SkBits2Float(0xf6f6f6f6), SkBits2Float(0x5353d9f6)); // -2.50452e+33f, 9.09895e+11f
8252
8253 SkPath path1(path);
8254 path.reset();
8255 path.setFillType((SkPath::FillType) 0);
8256
8257 SkPath path2(path);
8258 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 3, filename);
8259}
8260
8261// 656149
8262static void fuzz763_56(skiatest::Reporter* reporter, const char* filename) {
8263 SkPath path;
8264 path.setFillType((SkPath::FillType) 0);
8265path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8266path.conicTo(SkBits2Float(0x5b682968), SkBits2Float(0xb3b32d11), SkBits2Float(0xb3b3b3b3), SkBits2Float(0x5b29b3b3), SkBits2Float(0x72725255)); // 6.53477e+16f, -8.34353e-08f, -8.36802e-08f, 4.77669e+16f, 4.79967e+30f
8267path.quadTo(SkBits2Float(0x525252c7), SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255)); // 2.25833e+11f, 4.79967e+30f, 4.80216e+30f, 4.80215e+30f
8268path.quadTo(SkBits2Float(0xd7da0000), SkBits2Float(0x5adada00), SkBits2Float(0x52525252), SkBits2Float(0x00005252)); // -4.79387e+14f, 3.08006e+16f, 2.25831e+11f, 2.9531e-41f
8269path.conicTo(SkBits2Float(0xadada525), SkBits2Float(0x52525ab4), SkBits2Float(0x52525252), SkBits2Float(0x72727272), SkBits2Float(0x52527272)); // -1.97412e-11f, 2.25866e+11f, 2.25831e+11f, 4.80216e+30f, 2.25966e+11f
8270path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8271path.close();
8272path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8273path.quadTo(SkBits2Float(0x72725252), SkBits2Float(0x72727272), SkBits2Float(0x72727255), SkBits2Float(0xda007b72)); // 4.79967e+30f, 4.80216e+30f, 4.80215e+30f, -9.04113e+15f
8274path.lineTo(SkBits2Float(0x5252525a), SkBits2Float(0x72525252)); // 2.25831e+11f, 4.16585e+30f
8275path.quadTo(SkBits2Float(0x72727272), SkBits2Float(0x52525252), SkBits2Float(0x27725252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25831e+11f, 3.36289e-15f, 4.80216e+30f
8276path.lineTo(SkBits2Float(0x7bc00321), SkBits2Float(0x9aaaaaaa)); // 1.99397e+36f, -7.05861e-23f
8277path.quadTo(SkBits2Float(0x72725572), SkBits2Float(0x00007272), SkBits2Float(0x525adada), SkBits2Float(0x52525252)); // 4.79991e+30f, 4.10552e-41f, 2.34994e+11f, 2.25831e+11f
8278path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
8279path.close();
8280path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
8281path.close();
8282path.moveTo(SkBits2Float(0xa5252600), SkBits2Float(0x52b4adad)); // -1.43243e-16f, 3.88004e+11f
8283path.quadTo(SkBits2Float(0x72727270), SkBits2Float(0x52525272), SkBits2Float(0x72525252), SkBits2Float(0x72727272)); // 4.80216e+30f, 2.25832e+11f, 4.16585e+30f, 4.80216e+30f
8284path.quadTo(SkBits2Float(0x72727255), SkBits2Float(0xda007b72), SkBits2Float(0x26525ada), SkBits2Float(0x72ada525)); // 4.80215e+30f, -9.04113e+15f, 7.29815e-16f, 6.87879e+30f
8285path.quadTo(SkBits2Float(0x007b7272), SkBits2Float(0x525adada), SkBits2Float(0x52525252), SkBits2Float(0x72727252)); // 1.13368e-38f, 2.34994e+11f, 2.25831e+11f, 4.80215e+30f
8286path.quadTo(SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72722772), SkBits2Float(0x72727272)); // 2.25966e+11f, 2.25831e+11f, 4.79636e+30f, 4.80216e+30f
8287path.quadTo(SkBits2Float(0x74727272), SkBits2Float(0x55747421), SkBits2Float(0x0000005b), SkBits2Float(0x72727268)); // 7.68345e+31f, 1.67987e+13f, 1.27518e-43f, 4.80216e+30f
8288path.quadTo(SkBits2Float(0x52527272), SkBits2Float(0x52525252), SkBits2Float(0x72727272), SkBits2Float(0x72557272)); // 2.25966e+11f, 2.25831e+11f, 4.80216e+30f, 4.22775e+30f
8289path.quadTo(SkBits2Float(0x5adada72), SkBits2Float(0x52525252), SkBits2Float(0x72725252), SkBits2Float(0x72727272)); // 3.08009e+16f, 2.25831e+11f, 4.79967e+30f, 4.80216e+30f
8290
8291 SkPath path1(path);
8292 path.reset();
8293 path.setFillType((SkPath::FillType) 0);
8294
8295 SkPath path2(path);
8296 testPathOpFuzz(reporter, path1, path2, (SkPathOp) 0, filename);
8297}
8298
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00008299static struct TestDesc failTests[] = {
caryclarke6522ea2016-10-17 07:54:33 -07008300 TEST(fuzz763_56),
8301 TEST(fuzz763_55),
8302 TEST(fuzz763_54),
caryclark08714012016-10-07 12:57:47 -07008303 TEST(fuzz763_53),
caryclark221a4bb2016-10-07 11:15:15 -07008304 TEST(fuzz763_52),
8305 TEST(fuzz763_51),
8306 TEST(fuzz763_50),
Cary Clark40f23782016-10-06 12:04:16 -04008307 TEST(fuzz763_49),
8308 TEST(fuzz763_48),
8309 TEST(fuzz763_47),
Cary Clarkb9ae5372016-10-05 10:40:07 -04008310 TEST(fuzz763_46),
Cary Clark3fdf52c2016-10-04 10:53:31 -04008311 TEST(fuzz763_45),
caryclark414c4292016-09-26 11:03:54 -07008312 TEST(fuzz763_44),
caryclark1c106072016-09-22 12:52:20 -07008313 TEST(fuzz763_43),
caryclarke7bb5b22016-09-22 05:20:07 -07008314 TEST(fuzz763_42),
caryclark45f04b82016-09-21 08:46:56 -07008315 TEST(fuzz763_41),
8316 TEST(fuzz763_40),
8317 TEST(fuzz763_39),
caryclarkbbfe92b2016-09-19 06:00:35 -07008318 TEST(fuzz763_38),
8319 TEST(fuzz763_37),
caryclarkc9b90d12016-09-09 07:41:36 -07008320 TEST(fuzz763_36),
8321 TEST(fuzz763_35),
caryclarkb393a492016-09-07 08:21:09 -07008322 TEST(fuzz763_34),
8323 TEST(fuzz763_33),
8324 TEST(fuzz763_32),
caryclarkef7cee42016-09-06 09:05:54 -07008325 TEST(fuzz763_31),
caryclark79418092016-08-26 14:24:24 -07008326 TEST(fuzz763_30),
caryclarkbb51f4a2016-08-23 07:38:48 -07008327 TEST(fuzz763_29),
caryclark42942862016-08-19 07:01:33 -07008328 TEST(fuzz763_28),
8329 TEST(fuzz763_27),
caryclarka1b42d92016-08-16 10:25:29 -07008330 TEST(fuzz763_26),
8331 TEST(fuzz763_25),
caryclarkc6d855f2016-08-11 11:59:48 -07008332 TEST(fuzz763_24),
caryclarka1b42d92016-08-16 10:25:29 -07008333 TEST(fuzz763_23),
caryclark643ede62016-08-08 14:27:45 -07008334 TEST(fuzz763_22),
8335 TEST(fuzz763_21),
8336 TEST(fuzz763_20),
8337 TEST(fuzz763_19),
8338 TEST(fuzz763_18),
caryclarkfc560e02016-07-27 08:46:10 -07008339 TEST(fuzz763_17),
8340 TEST(fuzz763_16),
caryclarke25a4f62016-07-26 09:26:29 -07008341 TEST(fuzz763_15),
8342 TEST(fuzz763_14),
8343 TEST(fuzz763_13),
caryclark8bc90e22016-07-25 06:05:08 -07008344 TEST(fuzz763_12),
caryclark8a8accb2016-07-22 10:56:26 -07008345 TEST(fuzz763_11),
caryclarkcdeff812016-07-22 03:34:19 -07008346 TEST(fuzz763_10),
caryclarka339bb02016-07-21 12:28:04 -07008347 TEST(kfuzz2),
caryclark15976282016-07-21 05:48:43 -07008348 TEST(fuzz763_7),
caryclark1493b972016-07-19 11:29:14 -07008349 TEST(fuzz763_6),
caryclark55888e42016-07-18 10:01:36 -07008350 TEST(fuzz763_2c),
8351 TEST(fuzz763_2b),
8352 TEST(fuzz763_2a),
8353 TEST(fuzz763_5a),
8354 TEST(fuzz763_3a),
8355 TEST(fuzz763_1a),
8356 TEST(fuzz763_1b),
8357 TEST(fuzz763_1c),
caryclarkaa7ceb62016-06-29 10:46:08 -07008358 TEST(fuzz763_2),
8359 TEST(fuzz763_5),
caryclark343382e2016-06-29 08:18:38 -07008360 TEST(fuzz763_3),
caryclark3f0753d2016-06-28 09:23:57 -07008361 TEST(fuzz763_4),
8362 TEST(fuzz763_9),
caryclarkdae6b972016-06-08 04:28:19 -07008363 TEST(fuzz1450_1),
8364 TEST(fuzz1450_0),
caryclark5c5cfe22016-04-05 07:28:48 -07008365 TEST(bug597926_0),
caryclarkd78c0882016-02-24 09:03:07 -08008366 TEST(fuzz535151),
caryclark952ebfe2015-11-02 07:32:58 -08008367 TEST(fuzz753_91),
caryclark26ad22a2015-10-16 09:03:38 -07008368 TEST(fuzz714),
caryclark624637c2015-05-11 07:21:27 -07008369 TEST(fuzz487a),
caryclark08bc8482015-04-24 09:08:57 -07008370 TEST(fuzz433),
caryclarkd751ac02014-10-03 05:36:27 -07008371 TEST(fuzz1),
caryclark630240d2014-09-19 06:33:31 -07008372 TEST(fuzz487b),
caryclark361b8b02014-09-08 10:25:38 -07008373 TEST(fuzz433b),
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00008374 TEST(bufferOverflow),
8375};
8376
8377static const size_t failTestCount = SK_ARRAY_COUNT(failTests);
8378
8379DEF_TEST(PathOpsFailOp, reporter) {
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00008380#if DEBUG_SHOW_TEST_NAME
8381 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
8382#endif
halcanary96fcdcc2015-08-27 07:41:13 -07008383 RunTestSet(reporter, failTests, failTestCount, nullptr, nullptr, nullptr, false);
commit-bot@chromium.org4431e772014-04-14 17:08:59 +00008384}
caryclark55888e42016-07-18 10:01:36 -07008385
8386static struct TestDesc repTests[] = {
caryclarkcc093722016-09-23 09:32:26 -07008387 TEST(fuzz763_5a),
caryclark55888e42016-07-18 10:01:36 -07008388};
8389
8390DEF_TEST(PathOpsRepOp, reporter) {
caryclarkcc093722016-09-23 09:32:26 -07008391 for (int index = 0; index < 1; ++index)
caryclark55888e42016-07-18 10:01:36 -07008392 RunTestSet(reporter, repTests, SK_ARRAY_COUNT(repTests), nullptr, nullptr, nullptr, false);
8393}