Lines Matching +full:test +full:- +full:path

4  * Use of this source code is governed by a BSD-style license that can be
16 #include "tests/Test.h"
22 SkPath path; in build_squircle() local
26 path.addRect(rect, dir); in build_squircle()
30 path.moveTo(rect.centerX(), rect.fTop); in build_squircle()
31 path.quadTo(rect.fRight, rect.fTop, rect.fRight, rect.centerY()); in build_squircle()
32 path.quadTo(rect.fRight, rect.fBottom, rect.centerX(), rect.fBottom); in build_squircle()
33 path.quadTo(rect.fLeft, rect.fBottom, rect.fLeft, rect.centerY()); in build_squircle()
34 path.quadTo(rect.fLeft, rect.fTop, rect.centerX(), rect.fTop); in build_squircle()
37 path.addCircle(rect.centerX(), rect.centerY(), rect.width() / 2, dir); in build_squircle()
45 path.moveTo(rect.centerX(), rect.fTop); in build_squircle()
46 path.cubicTo(aX34, rect.fTop, rect.fRight, aY14, rect.fRight, rect.centerY()); in build_squircle()
47 path.cubicTo(rect.fRight, aY34, aX34, rect.fBottom, rect.centerX(), rect.fBottom); in build_squircle()
48 path.cubicTo(aX14, rect.fBottom, rect.fLeft, aY34, rect.fLeft, rect.centerY()); in build_squircle()
49 path.cubicTo(rect.fLeft, aY14, aX14, rect.fTop, rect.centerX(), rect.fTop); in build_squircle()
56 temp.reverseAddPath(path); in build_squircle()
57 path.swap(temp); in build_squircle()
59 return path; in build_squircle()
63 SkPath path; in bug12040_1() local
64 path.setFillType(SkPathFillType::kWinding); in bug12040_1()
65 path.moveTo(375, -30); in bug12040_1()
66 path.cubicTo(578, -30, 749, 176, 749, 422); in bug12040_1()
67 path.cubicTo(749, 583, 666, 706, 518, 765); in bug12040_1()
68 path.lineTo(163, 611); in bug12040_1()
69 path.lineTo(163, 579); in bug12040_1()
70 path.lineTo(405, 684); in bug12040_1()
71 path.cubicTo(551, 609, 645, 468, 645, 322); in bug12040_1()
72 path.cubicTo(645, 183, 563, 82, 450, 82); in bug12040_1()
73 path.cubicTo(303, 82, 179, 249, 179, 446); in bug12040_1()
74 path.cubicTo(179, 579, 235, 689, 341, 768); in bug12040_1()
75 path.lineTo(327, 786); in bug12040_1()
76 path.cubicTo(165, 717, 56, 536, 56, 335); in bug12040_1()
77 path.cubicTo(56, 125, 192, -30, 375, -30); in bug12040_1()
78 path.close(); in bug12040_1()
79 path.moveTo(214, 225); in bug12040_1()
80 path.cubicTo(333, 248, 396, 311, 396, 405); in bug12040_1()
81 path.lineTo(396, 695); in bug12040_1()
82 path.lineTo(267, 641); in bug12040_1()
83 path.lineTo(267, 395); in bug12040_1()
84 path.cubicTo(267, 324, 249, 285, 201, 254); in bug12040_1()
85 path.cubicTo(201, 254, 214, 225, 214, 225); in bug12040_1()
86 path.close(); in bug12040_1()
87 path.moveTo(682, -106); in bug12040_1()
88 path.lineTo(832, 12); in bug12040_1()
89 path.lineTo(813, 33); in bug12040_1()
90 path.lineTo(772, 0); in bug12040_1()
91 path.cubicTo(716, 29, 668, 76, 628, 140); in bug12040_1()
92 path.lineTo(527, 44); in bug12040_1()
93 path.cubicTo(575, -26, 628, -77, 682, -106); in bug12040_1()
94 path.close(); in bug12040_1()
95 path.moveTo(450, 59); in bug12040_1()
96 path.lineTo(480, 59); in bug12040_1()
97 path.lineTo(480, 678); in bug12040_1()
98 path.lineTo(450, 678); in bug12040_1()
99 path.cubicTo(450, 678, 450, 59, 450, 59); in bug12040_1()
100 path.close(); in bug12040_1()
101 path.moveTo(463, 374); in bug12040_1()
102 path.lineTo(633, 459); in bug12040_1()
103 path.lineTo(633, 490); in bug12040_1()
104 path.lineTo(463, 406); in bug12040_1()
105 path.cubicTo(463, 406, 463, 374, 463, 374); in bug12040_1()
106 path.close(); in bug12040_1()
107 path.moveTo(463, 269); in bug12040_1()
108 path.lineTo(667, 372); in bug12040_1()
109 path.lineTo(667, 403); in bug12040_1()
110 path.lineTo(463, 301); in bug12040_1()
111 path.cubicTo(463, 301, 463, 269, 463, 269); in bug12040_1()
112 path.close(); in bug12040_1()
116 path2.moveTo(-83.5464f, 188); in bug12040_1()
117 path2.cubicTo(-83.5464f, 184.285f, -84.8599f, 181.114f, -87.4868f, 178.487f); in bug12040_1()
118 path2.cubicTo(-90.1138f, 175.86f, -93.2849f, 174.546f, -97, 174.546f); in bug12040_1()
119 path2.cubicTo(-100.715f, 174.546f, -103.886f, 175.86f, -106.513f, 178.487f); in bug12040_1()
120 path2.cubicTo(-109.14f, 181.114f, -110.454f, 184.285f, -110.454f, 188); in bug12040_1()
121 path2.cubicTo(-110.454f, 191.715f, -109.14f, 194.886f, -106.513f, 197.513f); in bug12040_1()
122 path2.cubicTo(-103.886f, 200.14f, -100.715f, 201.454f, -97, 201.454f); in bug12040_1()
123 path2.cubicTo(-93.2849f, 201.454f, -90.1138f, 200.14f, -87.4868f, 197.513f); in bug12040_1()
124 path2.cubicTo(-84.8599f, 194.886f, -83.5464f, 191.715f, -83.5464f, 188); in bug12040_1()
128 Op(path, path2, kDifference_SkPathOp, &opResult); in bug12040_1()
140 SkPath path; in bug12040_2() local
141 path.setFillType(SkPathFillType::kWinding); in bug12040_2()
142 path.moveTo(375, -30); in bug12040_2()
143 path.cubicTo(578, -30, 749, 176, 749, 422); in bug12040_2()
144 path.cubicTo(749, 583, 666, 706, 518, 765); in bug12040_2()
145 path.lineTo(163, 611); in bug12040_2()
146 path.lineTo(163, 579); in bug12040_2()
147 path.lineTo(405, 684); in bug12040_2()
148 path.cubicTo(551, 609, 645, 468, 645, 322); in bug12040_2()
149 path.cubicTo(645, 183, 563, 82, 450, 82); in bug12040_2()
150 path.cubicTo(303, 82, 179, 249, 179, 446); in bug12040_2()
151 path.cubicTo(179, 579, 235, 689, 341, 768); in bug12040_2()
152 path.lineTo(327, 786); in bug12040_2()
153 path.cubicTo(165, 717, 56, 536, 56, 335); in bug12040_2()
154 path.cubicTo(56, 125, 192, -30, 375, -30); in bug12040_2()
155 path.close(); in bug12040_2()
156 path.moveTo(214, 225); in bug12040_2()
157 path.cubicTo(333, 248, 396, 311, 396, 405); in bug12040_2()
158 path.lineTo(396, 695); in bug12040_2()
159 path.lineTo(267, 641); in bug12040_2()
160 path.lineTo(267, 395); in bug12040_2()
161 path.cubicTo(267, 324, 249, 285, 201, 254); in bug12040_2()
162 path.cubicTo(201, 254, 214, 225, 214, 225); in bug12040_2()
163 path.close(); in bug12040_2()
164 path.moveTo(682, -106); in bug12040_2()
165 path.lineTo(832, 12); in bug12040_2()
166 path.lineTo(813, 33); in bug12040_2()
167 path.lineTo(772, 0); in bug12040_2()
168 path.cubicTo(716, 29, 668, 76, 628, 140); in bug12040_2()
169 path.lineTo(527, 44); in bug12040_2()
170 path.cubicTo(575, -26, 628, -77, 682, -106); in bug12040_2()
171 path.close(); in bug12040_2()
172 path.moveTo(450, 59); in bug12040_2()
173 path.lineTo(480, 59); in bug12040_2()
174 path.lineTo(480, 678); in bug12040_2()
175 path.lineTo(450, 678); in bug12040_2()
176 path.cubicTo(450, 678, 450, 59, 450, 59); in bug12040_2()
177 path.close(); in bug12040_2()
178 path.moveTo(463, 374); in bug12040_2()
179 path.lineTo(633, 459); in bug12040_2()
180 path.lineTo(633, 490); in bug12040_2()
181 path.lineTo(463, 406); in bug12040_2()
182 path.cubicTo(463, 406, 463, 374, 463, 374); in bug12040_2()
183 path.close(); in bug12040_2()
184 path.moveTo(463, 269); in bug12040_2()
185 path.lineTo(667, 372); in bug12040_2()
186 path.lineTo(667, 403); in bug12040_2()
187 path.lineTo(463, 301); in bug12040_2()
188 path.cubicTo(463, 301, 463, 269, 463, 269); in bug12040_2()
189 path.close(); in bug12040_2()
205 Op(path, path2, kDifference_SkPathOp, &opResult); in bug12040_2()
209 // canvas->drawPath(opResult, p); in bug12040_2()
222 SkPath path; in bug12040_3() local
223 path.setFillType(SkPathFillType::kWinding); in bug12040_3()
224 path.moveTo(375, -30); in bug12040_3()
225 path.cubicTo(578, -30, 749, 176, 749, 422); in bug12040_3()
226 path.cubicTo(749, 583, 666, 706, 518, 765); in bug12040_3()
227 path.lineTo(163, 611); in bug12040_3()
228 path.lineTo(163, 579); in bug12040_3()
229 path.lineTo(405, 684); in bug12040_3()
230 path.cubicTo(551, 609, 645, 468, 645, 322); in bug12040_3()
231 path.cubicTo(645, 183, 563, 82, 450, 82); in bug12040_3()
232 path.cubicTo(303, 82, 179, 249, 179, 446); in bug12040_3()
233 path.cubicTo(179, 579, 235, 689, 341, 768); in bug12040_3()
234 path.lineTo(327, 786); in bug12040_3()
235 path.cubicTo(165, 717, 56, 536, 56, 335); in bug12040_3()
236 path.cubicTo(56, 125, 192, -30, 375, -30); in bug12040_3()
237 path.close(); in bug12040_3()
238 path.moveTo(214, 225); in bug12040_3()
239 path.cubicTo(333, 248, 396, 311, 396, 405); in bug12040_3()
240 path.lineTo(396, 695); in bug12040_3()
241 path.lineTo(267, 641); in bug12040_3()
242 path.lineTo(267, 395); in bug12040_3()
243 path.cubicTo(267, 324, 249, 285, 201, 254); in bug12040_3()
244 path.cubicTo(201, 254, 214, 225, 214, 225); in bug12040_3()
245 path.close(); in bug12040_3()
246 path.moveTo(682, -106); in bug12040_3()
247 path.lineTo(832, 12); in bug12040_3()
248 path.lineTo(813, 33); in bug12040_3()
249 path.lineTo(772, 0); in bug12040_3()
250 path.cubicTo(716, 29, 668, 76, 628, 140); in bug12040_3()
251 path.lineTo(527, 44); in bug12040_3()
252 path.cubicTo(575, -26, 628, -77, 682, -106); in bug12040_3()
253 path.close(); in bug12040_3()
254 path.moveTo(450, 59); in bug12040_3()
255 path.lineTo(480, 59); in bug12040_3()
256 path.lineTo(480, 678); in bug12040_3()
257 path.lineTo(450, 678); in bug12040_3()
258 path.cubicTo(450, 678, 450, 59, 450, 59); in bug12040_3()
259 path.close(); in bug12040_3()
260 path.moveTo(463, 374); in bug12040_3()
261 path.lineTo(633, 459); in bug12040_3()
262 path.lineTo(633, 490); in bug12040_3()
263 path.lineTo(463, 406); in bug12040_3()
264 path.cubicTo(463, 406, 463, 374, 463, 374); in bug12040_3()
265 path.close(); in bug12040_3()
266 path.moveTo(463, 269); in bug12040_3()
267 path.lineTo(667, 372); in bug12040_3()
268 path.lineTo(667, 403); in bug12040_3()
269 path.lineTo(463, 301); in bug12040_3()
270 path.cubicTo(463, 301, 463, 269, 463, 269); in bug12040_3()
271 path.close(); in bug12040_3()
287 Op(path, path2, kDifference_SkPathOp, &opResult); in bug12040_3()
304 SkPath path; in bug12040_4() local
305 path.setFillType(SkPathFillType::kWinding); in bug12040_4()
306 path.addCircle(250, 250, 150); in bug12040_4()
316 Op(path, path2, kDifference_SkPathOp, &opResult); in bug12040_4()
336 SkPath path; in bug12040_5() local
337 path.setFillType(SkPathFillType::kWinding); in bug12040_5()
338 path.addRect(100, 100, 400, 400); in bug12040_5()
348 Op(path, path2, kDifference_SkPathOp, &opResult); in bug12040_5()
365 "M5.93 -3.12C5.93 -5.03 4.73 -6.06 3.5 -6.06C2.67 -6.06 1.98 -5.59 1.76 -5.34L1.67 " in bug13496_1()
366 "-5.93L0.75 -5.93L0.75 2.23L1.87 2.04L1.87 -0.12C2.12 -0.03 2.62 0.07 3.18 0.07C4.57 " in bug13496_1()
367 "0.07 5.93 -1.06 5.93 -3.12ZM4.81 -3.09C4.81 -1.51 4.18 -0.85 3.17 -0.85C2.57 -0.85 " in bug13496_1()
368 "2.15 -0.98 1.87 -1.12L1.87 -4.15C2.34 -4.73 2.75 -5.09 3.42 -5.09C4.31 -5.09 4.81 " in bug13496_1()
369 "-4.46 4.81 -3.09Z"; in bug13496_1()
371 SkPath path; in bug13496_1() local
372 SkParsePath::FromSVGString(originalPathStr.c_str(), &path); in bug13496_1()
375 Simplify(path, &simplifiedPath); in bug13496_1()
399 SkPath path; in bug13496_2() local
400 SkParsePath::FromSVGString(originalPathStr.c_str(), &path); in bug13496_2()
403 Simplify(path, &simplifiedPath); in bug13496_2()
427 SkPath path; in bug13496_3() local
428 SkParsePath::FromSVGString(originalPathStr.c_str(), &path); in bug13496_3()
431 Simplify(path, &simplifiedPath); in bug13496_3()
443 SkPath test, result; in DEF_TEST() local
444 test.addRect({1, 2, 3, 4}); in DEF_TEST()
445 // if test is winding in DEF_TEST()
446 REPORTER_ASSERT(reporter, AsWinding(test, &result)); in DEF_TEST()
447 REPORTER_ASSERT(reporter, test == result); in DEF_TEST()
448 // if test is empty in DEF_TEST()
449 test.reset(); in DEF_TEST()
450 test.setFillType(SkPathFillType::kEvenOdd); in DEF_TEST()
451 REPORTER_ASSERT(reporter, AsWinding(test, &result)); in DEF_TEST()
454 // if test is convex in DEF_TEST()
455 test.addCircle(5, 5, 10); in DEF_TEST()
456 REPORTER_ASSERT(reporter, AsWinding(test, &result)); in DEF_TEST()
458 test.setFillType(SkPathFillType::kWinding); in DEF_TEST()
459 REPORTER_ASSERT(reporter, test == result); in DEF_TEST()
460 // if test has infinity in DEF_TEST()
461 test.reset(); in DEF_TEST()
462 test.addRect({1, 2, 3, SK_ScalarInfinity}); in DEF_TEST()
463 test.setFillType(SkPathFillType::kEvenOdd); in DEF_TEST()
464 REPORTER_ASSERT(reporter, !AsWinding(test, &result)); in DEF_TEST()
465 // if test has only one contour in DEF_TEST()
466 test.reset(); in DEF_TEST()
468 test.addPoly(ell, std::size(ell), true); in DEF_TEST()
469 test.setFillType(SkPathFillType::kEvenOdd); in DEF_TEST()
470 REPORTER_ASSERT(reporter, AsWinding(test, &result)); in DEF_TEST()
472 test.setFillType(SkPathFillType::kWinding); in DEF_TEST()
473 REPORTER_ASSERT(reporter, test == result); in DEF_TEST()
474 // test two contours that do not overlap or share bounds in DEF_TEST()
475 test.addRect({5, 2, 6, 3}); in DEF_TEST()
476 test.setFillType(SkPathFillType::kEvenOdd); in DEF_TEST()
477 REPORTER_ASSERT(reporter, AsWinding(test, &result)); in DEF_TEST()
479 test.setFillType(SkPathFillType::kWinding); in DEF_TEST()
480 REPORTER_ASSERT(reporter, test == result); in DEF_TEST()
481 // test two contours that do not overlap but share bounds in DEF_TEST()
482 test.reset(); in DEF_TEST()
483 test.addPoly(ell, std::size(ell), true); in DEF_TEST()
484 test.addRect({2, 2, 3, 3}); in DEF_TEST()
485 test.setFillType(SkPathFillType::kEvenOdd); in DEF_TEST()
486 REPORTER_ASSERT(reporter, AsWinding(test, &result)); in DEF_TEST()
488 test.setFillType(SkPathFillType::kWinding); in DEF_TEST()
489 REPORTER_ASSERT(reporter, test == result); in DEF_TEST()
490 // test two contours that partially overlap in DEF_TEST()
491 test.reset(); in DEF_TEST()
492 test.addRect({0, 0, 3, 3}); in DEF_TEST()
493 test.addRect({1, 1, 4, 4}); in DEF_TEST()
494 test.setFillType(SkPathFillType::kEvenOdd); in DEF_TEST()
495 REPORTER_ASSERT(reporter, AsWinding(test, &result)); in DEF_TEST()
497 test.setFillType(SkPathFillType::kWinding); in DEF_TEST()
498 REPORTER_ASSERT(reporter, test == result); in DEF_TEST()
499 // test that result may be input in DEF_TEST()
500 SkPath copy = test; in DEF_TEST()
501 test.setFillType(SkPathFillType::kEvenOdd); in DEF_TEST()
502 REPORTER_ASSERT(reporter, AsWinding(test, &test)); in DEF_TEST()
503 REPORTER_ASSERT(reporter, !test.isConvex()); in DEF_TEST()
504 REPORTER_ASSERT(reporter, test == copy); in DEF_TEST()
505 // test a in b, b in a, cw/ccw in DEF_TEST()
513 test.reset(); in DEF_TEST()
514 test.setFillType(SkPathFillType::kEvenOdd); in DEF_TEST()
516 test.addRect(rectA, dirA); in DEF_TEST()
517 test.addRect(rectB, dirB); in DEF_TEST()
519 test.addRect(rectB, dirB); in DEF_TEST()
520 test.addRect(rectA, dirA); in DEF_TEST()
522 SkPath original = test; in DEF_TEST()
523 REPORTER_ASSERT(reporter, AsWinding(test, &result)); in DEF_TEST()
525 test.reset(); in DEF_TEST()
527 test.addRect(rectA, dirA); in DEF_TEST()
530 test.addRect(rectB, dirB); in DEF_TEST()
532 test.addPoly(SkPathDirection::kCW == dirA ? revBccw : revBcw, true); in DEF_TEST()
535 test.addRect(rectA, dirA); in DEF_TEST()
537 REPORTER_ASSERT(reporter, test == result); in DEF_TEST()
538 // test that result may be input in DEF_TEST()
545 // Test curve types with donuts. Create a donut with outer and hole in all directions. in DEF_TEST()
555 test = aFirst ? pathA : SkPath(); in DEF_TEST()
556 test.addPath(build_squircle(curveB, rectB, dirB)); in DEF_TEST()
558 test.addPath(pathA); in DEF_TEST()
560 test.setFillType(SkPathFillType::kEvenOdd); in DEF_TEST()
561 REPORTER_ASSERT(reporter, AsWinding(test, &result)); in DEF_TEST()
563 for (SkScalar x = rectA.fLeft - 1; x <= rectA.fRight + 1; ++x) { in DEF_TEST()
564 for (SkScalar y = rectA.fTop - 1; y <= rectA.fBottom + 1; ++y) { in DEF_TEST()
565 bool evenOddContains = test.contains(x, y); in DEF_TEST()
575 // test https://bugs.chromium.org/p/skia/issues/detail?id=12040 in DEF_TEST()
581 // test https://bugs.chromium.org/p/skia/issues/detail?id=13496 in DEF_TEST()