Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(14)

Side by Side Diff: tests/PathOpsOpTest.cpp

Issue 2128633003: pathops coincidence and security rewrite (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: require resulting t to be between 0 and 1 Created 4 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright 2012 Google Inc. 2 * Copyright 2012 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 #include "PathOpsExtendedTest.h" 7 #include "PathOpsExtendedTest.h"
8 #include "PathOpsTestCommon.h" 8 #include "PathOpsTestCommon.h"
9 9
10 class PathTest_Private { 10 class PathTest_Private {
(...skipping 1178 matching lines...) Expand 10 before | Expand all | Expand 10 after
1189 rects[2].set(xC, yA, xF, yD); 1189 rects[2].set(xC, yA, xF, yD);
1190 paths[2].addRoundRect(rects[2], SkIntToScalar(5), SkIntToScalar(5)); // blu e 1190 paths[2].addRoundRect(rects[2], SkIntToScalar(5), SkIntToScalar(5)); // blu e
1191 rects[3].set(xA, yC, xD, yF); 1191 rects[3].set(xA, yC, xD, yF);
1192 paths[3].addRoundRect(rects[3], SkIntToScalar(5), SkIntToScalar(5)); // yel low 1192 paths[3].addRoundRect(rects[3], SkIntToScalar(5), SkIntToScalar(5)); // yel low
1193 rects[4].set(xC, yC, xF, yF); 1193 rects[4].set(xC, yC, xF, yF);
1194 paths[4].addRoundRect(rects[4], SkIntToScalar(5), SkIntToScalar(5)); // cya n 1194 paths[4].addRoundRect(rects[4], SkIntToScalar(5), SkIntToScalar(5)); // cya n
1195 SkPath path; 1195 SkPath path;
1196 path.setFillType(SkPath::kInverseEvenOdd_FillType); 1196 path.setFillType(SkPath::kInverseEvenOdd_FillType);
1197 for (int index = 0; index < 5; ++index) { 1197 for (int index = 0; index < 5; ++index) {
1198 testPathOp(reporter, path, paths[index], ops[index], filename); 1198 testPathOp(reporter, path, paths[index], ops[index], filename);
1199 Op(path, paths[index], ops[index], &path); 1199 REPORTER_ASSERT(reporter, Op(path, paths[index], ops[index], &path));
1200 } 1200 }
1201 } 1201 }
1202 1202
1203 static void skp1(skiatest::Reporter* reporter, const char* filename) { 1203 static void skp1(skiatest::Reporter* reporter, const char* filename) {
1204 SkPath path; 1204 SkPath path;
1205 path.setFillType(SkPath::kEvenOdd_FillType); 1205 path.setFillType(SkPath::kEvenOdd_FillType);
1206 path.moveTo(189,7); 1206 path.moveTo(189,7);
1207 path.cubicTo(189,5.34314585f, 190.34314f,4, 192,4); 1207 path.cubicTo(189,5.34314585f, 190.34314f,4, 192,4);
1208 path.lineTo(243,4); 1208 path.lineTo(243,4);
1209 path.cubicTo(244.65686f,4, 246,5.34314585f, 246,7); 1209 path.cubicTo(244.65686f,4, 246,5.34314585f, 246,7);
(...skipping 2260 matching lines...) Expand 10 before | Expand all | Expand 10 after
3470 path2.cubicTo(50.6f, 117.001f, 164.601f, 85.2f, 188.201f, 117.601f); 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); 3471 path2.cubicTo(188.201f, 117.601f, 174.801f, 93, 39, 124.001f);
3472 path2.close(); 3472 path2.close();
3473 3473
3474 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename); 3474 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3475 } 3475 }
3476 3476
3477 static void issue2808(skiatest::Reporter* reporter, const char* filename) { 3477 static void issue2808(skiatest::Reporter* reporter, const char* filename) {
3478 SkPath path1, path2; 3478 SkPath path1, path2;
3479 3479
3480 » path1.moveTo(509.20300293f, 385.601989746f); 3480 path1.moveTo(509.20300293f, 385.601989746f);
3481 » path1.quadTo(509.20300293f, 415.68838501f, 487.928710938f, 436.96270752f ); 3481 path1.quadTo(509.20300293f, 415.68838501f, 487.928710938f, 436.96270752f);
3482 » path1.quadTo(466.654388428f, 458.236999512f, 436.567993164f, 458.2369995 12f); 3482 path1.quadTo(466.654388428f, 458.236999512f, 436.567993164f, 458.236999512f) ;
3483 » path1.quadTo(406.4815979f, 458.236999512f, 385.207275391f, 436.96270752f ); 3483 path1.quadTo(406.4815979f, 458.236999512f, 385.207275391f, 436.96270752f);
3484 » path1.quadTo(363.932983398f, 415.68838501f, 363.932983398f, 385.60198974 6f); 3484 path1.quadTo(363.932983398f, 415.68838501f, 363.932983398f, 385.601989746f);
3485 » path1.quadTo(363.932983398f, 355.515594482f, 385.207275391f, 334.2412719 73f); 3485 path1.quadTo(363.932983398f, 355.515594482f, 385.207275391f, 334.241271973f) ;
3486 » path1.quadTo(406.4815979f, 312.96697998f, 436.567993164f, 312.96697998f) ; 3486 path1.quadTo(406.4815979f, 312.96697998f, 436.567993164f, 312.96697998f);
3487 » path1.quadTo(466.654388428f, 312.96697998f, 487.928710938f, 334.24127197 3f); 3487 path1.quadTo(466.654388428f, 312.96697998f, 487.928710938f, 334.241271973f);
3488 » path1.quadTo(509.20300293f, 355.515594482f, 509.20300293f, 385.601989746 f); 3488 path1.quadTo(509.20300293f, 355.515594482f, 509.20300293f, 385.601989746f);
3489 » path1.close(); 3489 path1.close();
3490 3490
3491 » path2.moveTo(449.033996582f, 290.87298584f); 3491 path2.moveTo(449.033996582f, 290.87298584f);
3492 » path2.quadTo(449.033996582f, 301.028259277f, 441.853149414f, 308.2091064 45f); 3492 path2.quadTo(449.033996582f, 301.028259277f, 441.853149414f, 308.209106445f) ;
3493 » path2.quadTo(434.672271729f, 315.389984131f, 424.516998291f, 315.3899841 31f); 3493 path2.quadTo(434.672271729f, 315.389984131f, 424.516998291f, 315.389984131f) ;
3494 » path2.quadTo(414.361724854f, 315.389984131f, 407.180847168f, 308.2091064 45f); 3494 path2.quadTo(414.361724854f, 315.389984131f, 407.180847168f, 308.209106445f) ;
3495 » path2.quadTo(400, 301.028259277f, 400, 290.87298584f); 3495 path2.quadTo(400, 301.028259277f, 400, 290.87298584f);
3496 » path2.quadTo(400, 280.717712402f, 407.180847168f, 273.536865234f); 3496 path2.quadTo(400, 280.717712402f, 407.180847168f, 273.536865234f);
3497 » path2.quadTo(414.361724854f, 266.355987549f, 424.516998291f, 266.3559875 49f); 3497 path2.quadTo(414.361724854f, 266.355987549f, 424.516998291f, 266.355987549f) ;
3498 » path2.quadTo(434.672271729f, 266.355987549f, 441.853149414f, 273.5368652 34f); 3498 path2.quadTo(434.672271729f, 266.355987549f, 441.853149414f, 273.536865234f) ;
3499 » path2.quadTo(449.033996582f, 280.717712402f, 449.033996582f, 290.8729858 4f); 3499 path2.quadTo(449.033996582f, 280.717712402f, 449.033996582f, 290.87298584f);
3500 » path2.close(); 3500 path2.close();
3501 3501
3502 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename); 3502 testPathOp(reporter, path1, path2, kUnion_SkPathOp, filename);
3503 } 3503 }
3504 3504
3505 static void cubicOp115(skiatest::Reporter* reporter, const char* filename) { 3505 static void cubicOp115(skiatest::Reporter* reporter, const char* filename) {
3506 SkPath path, pathB; 3506 SkPath path, pathB;
3507 path.setFillType(SkPath::kWinding_FillType); 3507 path.setFillType(SkPath::kWinding_FillType);
3508 path.moveTo(0,1); 3508 path.moveTo(0,1);
3509 path.cubicTo(3,4, 2,1, 5,3); 3509 path.cubicTo(3,4, 2,1, 5,3);
3510 path.close(); 3510 path.close();
(...skipping 1348 matching lines...) Expand 10 before | Expand all | Expand 10 after
4859 path.cubicTo(1, 2, 8.33333302f, 6.33333302f, -6, 8); 4859 path.cubicTo(1, 2, 8.33333302f, 6.33333302f, -6, 8);
4860 path.close(); 4860 path.close();
4861 pathB.setFillType(SkPath::kWinding_FillType); 4861 pathB.setFillType(SkPath::kWinding_FillType);
4862 pathB.moveTo(1, 2); 4862 pathB.moveTo(1, 2);
4863 pathB.cubicTo(8.33333302f, 6.33333302f, -6, 8, 2, 6); 4863 pathB.cubicTo(8.33333302f, 6.33333302f, -6, 8, 2, 6);
4864 pathB.close(); 4864 pathB.close();
4865 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename); 4865 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename);
4866 } 4866 }
4867 4867
4868 /* 4868 /*
4869 FAILED: d:\cygwin\puregit\tests\pathopsextendedtest.cpp:346» 0 */ 4869 FAILED: d:\cygwin\puregit\tests\pathopsextendedtest.cpp:346 0 */
4870 static void loops47i(skiatest::Reporter* reporter, const char* filename) { 4870 static void loops47i(skiatest::Reporter* reporter, const char* filename) {
4871 SkPath path, pathB; 4871 SkPath path, pathB;
4872 path.setFillType(SkPath::kWinding_FillType); 4872 path.setFillType(SkPath::kWinding_FillType);
4873 path.moveTo(2, 4); 4873 path.moveTo(2, 4);
4874 path.cubicTo(0, 1, 6, 5.83333302f, -4, 8); 4874 path.cubicTo(0, 1, 6, 5.83333302f, -4, 8);
4875 path.close(); 4875 path.close();
4876 pathB.setFillType(SkPath::kWinding_FillType); 4876 pathB.setFillType(SkPath::kWinding_FillType);
4877 pathB.moveTo(0, 1); 4877 pathB.moveTo(0, 1);
4878 pathB.cubicTo(6, 5.83333302f, -4, 8, 2, 4); 4878 pathB.cubicTo(6, 5.83333302f, -4, 8, 2, 4);
4879 pathB.close(); 4879 pathB.close();
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
5153 } 5153 }
5154 5154
5155 static void fuzz38(skiatest::Reporter* reporter, const char* filename) { 5155 static void fuzz38(skiatest::Reporter* reporter, const char* filename) {
5156 SkPath path, pathB; 5156 SkPath path, pathB;
5157 path.moveTo(100.34f, 303.312f); 5157 path.moveTo(100.34f, 303.312f);
5158 path.lineTo(-1e+08, 303.312f); 5158 path.lineTo(-1e+08, 303.312f);
5159 path.lineTo(102, 310.156f); 5159 path.lineTo(102, 310.156f);
5160 path.lineTo(100.34f, 310.156f); 5160 path.lineTo(100.34f, 310.156f);
5161 path.lineTo(100.34f, 303.312f); 5161 path.lineTo(100.34f, 303.312f);
5162 path.close(); 5162 path.close();
5163 testPathOpCheck(reporter, path, pathB, kUnion_SkPathOp, filename, FLAGS_runF ail); 5163 testPathOpCheck(reporter, path, pathB, kUnion_SkPathOp, filename, true);
5164 } 5164 }
5165 5165
5166 static void crbug_526025(skiatest::Reporter* reporter, const char* filename) { 5166 static void crbug_526025(skiatest::Reporter* reporter, const char* filename) {
5167 SkPath path; 5167 SkPath path;
5168 path.setFillType((SkPath::FillType) 1); 5168 path.setFillType((SkPath::FillType) 1);
5169 path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.147 48e+09f 5169 path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.147 48e+09f
5170 path.cubicTo(SkBits2Float(0x4e0d628f), SkBits2Float(0xceffffff), SkBits2Float(0x 4e800003), SkBits2Float(0xcec6b143), SkBits2Float(0x4e800002), SkBits2Float(0xce 7ffffc)); // 5.93012e+08f, -2.14748e+09f, 1.07374e+09f, -1.66675e+09f, 1.07374e +09f, -1.07374e+09f 5170 path.cubicTo(SkBits2Float(0x4e0d628f), SkBits2Float(0xceffffff), SkBits2Float(0x 4e800003), SkBits2Float(0xcec6b143), SkBits2Float(0x4e800002), SkBits2Float(0xce 7ffffc)); // 5.93012e+08f, -2.14748e+09f, 1.07374e+09f, -1.66675e+09f, 1.07374e +09f, -1.07374e+09f
5171 path.cubicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcde53aee), SkBits2Float(0x 4e0d6292), SkBits2Float(0xc307820e), SkBits2Float(0x44627d00), SkBits2Float(0x43 7ffff2)); // 1.07374e+09f, -4.80731e+08f, 5.93012e+08f, -135.508f, 905.953f, 25 6 5171 path.cubicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcde53aee), SkBits2Float(0x 4e0d6292), SkBits2Float(0xc307820e), SkBits2Float(0x44627d00), SkBits2Float(0x43 7ffff2)); // 1.07374e+09f, -4.80731e+08f, 5.93012e+08f, -135.508f, 905.953f, 25 6
5172 path.lineTo(SkBits2Float(0x444bf3bc), SkBits2Float(0x4460537e)); // 815.808f, 8 97.305f 5172 path.lineTo(SkBits2Float(0x444bf3bc), SkBits2Float(0x4460537e)); // 815.808f, 8 97.305f
5173 path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 5 72.949f 5173 path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 5 72.949f
(...skipping 30 matching lines...) Expand all
5204 path.setFillType(SkPath::kWinding_FillType); 5204 path.setFillType(SkPath::kWinding_FillType);
5205 path.moveTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0xc3a31d72)); // -236.484f, -326.23f 5205 path.moveTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0xc3a31d72)); // -236.484f, -326.23f
5206 path.lineTo(SkBits2Float(0xc367a4ae), SkBits2Float(0xc3a31d72)); // -231.643f, -326.23f 5206 path.lineTo(SkBits2Float(0xc367a4ae), SkBits2Float(0xc3a31d72)); // -231.643f, -326.23f
5207 path.lineTo(SkBits2Float(0x430b0610), SkBits2Float(0x43c61f86)); // 139.024f, 3 96.246f 5207 path.lineTo(SkBits2Float(0x430b0610), SkBits2Float(0x43c61f86)); // 139.024f, 3 96.246f
5208 path.lineTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0x43c61f86)); // -236.484f, 396.246f 5208 path.lineTo(SkBits2Float(0xc36c7bd8), SkBits2Float(0x43c61f86)); // -236.484f, 396.246f
5209 5209
5210 SkPath path2(path); 5210 SkPath path2(path);
5211 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename); 5211 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
5212 } 5212 }
5213 5213
5214 static void dean2(skiatest::Reporter* reporter, const char* filename) {
5215 SkPath path;
5216 path.setFillType((SkPath::FillType) 0);
5217 path.moveTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 1 3.2891f
5218 path.cubicTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b), SkBits2Float(0x 41531912), SkBits2Float(0x3f130322), SkBits2Float(0x4154a02b), SkBits2Float(0x3f 2b74b3)); // 0.669749f, 13.2891f, 13.1936f, 0.574267f, 13.2891f, 0.669749f
5219 path.cubicTo(SkBits2Float(0x414a835a), SkBits2Float(0x3ec07ba6), SkBits2Float(0x 413fcc0d), SkBits2Float(0x3e193319), SkBits2Float(0x4134a02b), SkBits2Float(0x00 000000)); // 12.6571f, 0.375943f, 11.9873f, 0.149609f, 11.2891f, 0
5220 path.lineTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 1 3.2891f
5221 path.close();
5222 SkPath path1(path);
5223
5224 path.reset();
5225 path.setFillType((SkPath::FillType) 0);
5226 path.moveTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 1 3.2891f
5227 path.cubicTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b), SkBits2Float(0x 41531912), SkBits2Float(0x3f130322), SkBits2Float(0x4154a02b), SkBits2Float(0x3f 2b74b3)); // 0.669749f, 13.2891f, 13.1936f, 0.574267f, 13.2891f, 0.669749f
5228 path.lineTo(SkBits2Float(0x417ab74b), SkBits2Float(0x4154a02b)); // 15.6697f, 13 .2891f
5229 path.lineTo(SkBits2Float(0x3f2b74b3), SkBits2Float(0x4154a02b)); // 0.669749f, 1 3.2891f
5230 path.close();
5231 SkPath path2(path);
5232 testPathOp(reporter, path1, path2, kIntersect_SkPathOp, filename);
5233 }
5234
5235 static 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
5248 static 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
5261 static 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
5274 static 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
5287 static 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
5300 static 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
5313 static 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
5326 static 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
5339 static 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();
5349 // DEBUG_UNDER_DEVELOPMENT cubics_d3 disable expectation check for now
5350 testPathOpCheck(reporter, path, pathB, kDifference_SkPathOp, filename, !FLAG S_runFail);
5351 }
5352
5353 static void cubics_o(skiatest::Reporter* reporter, const char* filename) {
5354 SkPath path, pathB;
5355 path.setFillType(SkPath::kWinding_FillType);
5356 path.moveTo(1, 4);
5357 path.cubicTo(2, 6, 5, 0, 5, 3);
5358 path.close();
5359 pathB.setFillType(SkPath::kWinding_FillType);
5360 pathB.moveTo(0, 5);
5361 pathB.cubicTo(3, 5, 4, 1, 6, 2);
5362 pathB.close();
5363 testPathOp(reporter, path, pathB, kXOR_SkPathOp, filename);
5364 }
5365
5214 static void (*skipTest)(skiatest::Reporter* , const char* filename) = 0; 5366 static void (*skipTest)(skiatest::Reporter* , const char* filename) = 0;
5215 static void (*firstTest)(skiatest::Reporter* , const char* filename) = 0; 5367 static void (*firstTest)(skiatest::Reporter* , const char* filename) = cubics_d3 ;
5216 static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0; 5368 static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0;
5217 5369
5218 #define TEST(name) { name, #name } 5370 #define TEST(name) { name, #name }
5219 5371
5220 static struct TestDesc tests[] = { 5372 static struct TestDesc tests[] = {
5373 TEST(loops_i1),
5374 TEST(loops_i2),
5375 TEST(loops_i3),
5376 TEST(loops_i4),
5377 TEST(loops_i5),
5378 TEST(loops_i6),
5379 TEST(cubics_d3),
5380 TEST(cubics_o),
5381 TEST(cubics_d2),
5382 TEST(cubics_d),
5383 TEST(dean2),
5221 TEST(fuzzX_392), 5384 TEST(fuzzX_392),
5222 TEST(crbug_526025), 5385 TEST(crbug_526025),
5223 TEST(fuzz38), 5386 TEST(fuzz38),
5224 TEST(cubics44d), 5387 TEST(cubics44d),
5225 TEST(cubics45u), 5388 TEST(cubics45u),
5226 TEST(loops61i), 5389 TEST(loops61i),
5227 TEST(loops62i), 5390 TEST(loops62i),
5228 TEST(loops63i), 5391 TEST(loops63i),
5229 TEST(loops58iAsQuads), 5392 TEST(loops58iAsQuads),
5230 TEST(cubics41d), 5393 TEST(cubics41d),
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
5587 5750
5588 static void fuzz535151(skiatest::Reporter* reporter, const char* filename) { 5751 static void fuzz535151(skiatest::Reporter* reporter, const char* filename) {
5589 SkPath one; 5752 SkPath one;
5590 one.setFillType(SkPath::kWinding_FillType); 5753 one.setFillType(SkPath::kWinding_FillType);
5591 SkPath two; 5754 SkPath two;
5592 two.setFillType(SkPath::kWinding_FillType); 5755 two.setFillType(SkPath::kWinding_FillType);
5593 two.moveTo(0, 0); 5756 two.moveTo(0, 0);
5594 two.lineTo(0, 50); 5757 two.lineTo(0, 50);
5595 two.lineTo(4.29497e+09f, 50); 5758 two.lineTo(4.29497e+09f, 50);
5596 SkPath dummy; 5759 SkPath dummy;
5597 REPORTER_ASSERT(reporter, !Op(one, two, kIntersect_SkPathOp, &dummy)); 5760 testPathOp(reporter, one, two, kIntersect_SkPathOp, filename);
5598 } 5761 }
5599 5762
5600 static void bufferOverflow(skiatest::Reporter* reporter, const char* filename) { 5763 static void bufferOverflow(skiatest::Reporter* reporter, const char* filename) {
5601 SkPath path; 5764 SkPath path;
5602 path.addRect(0,0, 300,170141183460469231731687303715884105728.f); 5765 path.addRect(0,0, 300,170141183460469231731687303715884105728.f);
5603 SkPath pathB; 5766 SkPath pathB;
5604 pathB.addRect(0,0, 300,16); 5767 pathB.addRect(0,0, 300,16);
5605 testPathOp(reporter, path, pathB, kUnion_SkPathOp, filename); 5768 testPathOpCheck(reporter, path, pathB, kUnion_SkPathOp, filename, true);
5606 } 5769 }
5607 5770
5608 // m 100,0 60,170 -160,-110 200,0 -170,11000000000 z 5771 // m 100,0 60,170 -160,-110 200,0 -170,11000000000 z
5609 static void fuzz433(skiatest::Reporter* reporter, const char* filename) { 5772 static void fuzz433(skiatest::Reporter* reporter, const char* filename) {
5610 SkPath path1, path2; 5773 SkPath path1, path2;
5611 path1.moveTo(100,0); 5774 path1.moveTo(100,0);
5612 path1.lineTo(60,170); 5775 path1.lineTo(60,170);
5613 path1.lineTo(-160,-110); 5776 path1.lineTo(-160,-110);
5614 path1.lineTo(200,0); 5777 path1.lineTo(200,0);
5615 path1.lineTo(-170,11000000000.0f); 5778 path1.lineTo(-170,11000000000.0f);
5616 path1.close(); 5779 path1.close();
5617 5780
5618 path2.moveTo(100 + 20,0 + 20); 5781 path2.moveTo(100 + 20,0 + 20);
5619 path2.lineTo(60 + 20,170 + 20); 5782 path2.lineTo(60 + 20,170 + 20);
5620 path2.lineTo(-160 + 20,-110 + 20); 5783 path2.lineTo(-160 + 20,-110 + 20);
5621 path2.lineTo(200 + 20,0 + 20); 5784 path2.lineTo(200 + 20,0 + 20);
5622 path2.lineTo(-170 + 20,11000000000.0f + 20); 5785 path2.lineTo(-170 + 20,11000000000.0f + 20);
5623 path2.close(); 5786 path2.close();
5624 5787
5625 testPathOpCheck(reporter, path1, path2, kIntersect_SkPathOp, filename, FLAGS _runFail); 5788 testPathOpCheck(reporter, path1, path2, kIntersect_SkPathOp, filename, true) ;
5626 } 5789 }
5627 5790
5628 static void fuzz433b(skiatest::Reporter* reporter, const char* filename) { 5791 static void fuzz433b(skiatest::Reporter* reporter, const char* filename) {
5629 SkPath path1, path2; 5792 SkPath path1, path2;
5630 path1.setFillType(SkPath::kEvenOdd_FillType); 5793 path1.setFillType(SkPath::kEvenOdd_FillType);
5631 path1.moveTo(140, 40); 5794 path1.moveTo(140, 40);
5632 path1.lineTo(200, 210); 5795 path1.lineTo(200, 210);
5633 path1.lineTo(40, 100); 5796 path1.lineTo(40, 100);
5634 path1.lineTo(240, 100); 5797 path1.lineTo(240, 100);
5635 path1.lineTo(70, 1.1e+10f); 5798 path1.lineTo(70, 1.1e+10f);
5636 path1.lineTo(140, 40); 5799 path1.lineTo(140, 40);
5637 path1.close(); 5800 path1.close();
5638 5801
5639 path1.setFillType(SkPath::kWinding_FillType); 5802 path1.setFillType(SkPath::kWinding_FillType);
5640 path2.moveTo(190, 60); 5803 path2.moveTo(190, 60);
5641 path2.lineTo(250, 230); 5804 path2.lineTo(250, 230);
5642 path2.lineTo(90, 120); 5805 path2.lineTo(90, 120);
5643 path2.lineTo(290, 120); 5806 path2.lineTo(290, 120);
5644 path2.lineTo(120, 1.1e+10f); 5807 path2.lineTo(120, 1.1e+10f);
5645 path2.lineTo(190, 60); 5808 path2.lineTo(190, 60);
5646 path2.close(); 5809 path2.close();
5647 5810
5648 testPathOpCheck(reporter, path1, path2, kUnion_SkPathOp, filename, FLAGS_run Fail); 5811 testPathOpCheck(reporter, path1, path2, kUnion_SkPathOp, filename, true);
5649 } 5812 }
5650 5813
5651 static void fuzz487a(skiatest::Reporter* reporter, const char* filename) { 5814 static void fuzz487a(skiatest::Reporter* reporter, const char* filename) {
5652 SkPath path; 5815 SkPath path;
5653 path.setFillType((SkPath::FillType) 0); 5816 path.setFillType((SkPath::FillType) 0);
5654 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000)); 5817 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5655 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000)); 5818 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
5656 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x 42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42 633333)); 5819 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x 42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42 633333));
5657 path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc)); 5820 path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
5658 path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x 42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41 a3ffff)); 5821 path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x 42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41 a3ffff));
(...skipping 25 matching lines...) Expand all
5684 path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x 423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x43 1cb334)); 5847 path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x 423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x43 1cb334));
5685 path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd)); 5848 path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
5686 path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd)); 5849 path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
5687 path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd)); 5850 path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
5688 path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334)); 5851 path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
5689 path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x 43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43 080000)); 5852 path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x 43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43 080000));
5690 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000)); 5853 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5691 path.close(); 5854 path.close();
5692 5855
5693 SkPath path2(path); 5856 SkPath path2(path);
5694 testPathOpFailCheck(reporter, path1, path2, (SkPathOp) 2, filename); 5857 testPathOpCheck(reporter, path1, path2, (SkPathOp) 2, filename, true);
5695 } 5858 }
5696 5859
5697 static void fuzz487b(skiatest::Reporter* reporter, const char* filename) { 5860 static void fuzz487b(skiatest::Reporter* reporter, const char* filename) {
5698 SkPath path; 5861 SkPath path;
5699 path.setFillType((SkPath::FillType) 0); 5862 path.setFillType((SkPath::FillType) 0);
5700 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000)); 5863 path.moveTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5701 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000)); 5864 path.lineTo(SkBits2Float(0x4309999a), SkBits2Float(0x42c00000));
5702 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x 42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42 633333)); 5865 path.cubicTo(SkBits2Float(0x4309999a), SkBits2Float(0x429a6666), SkBits2Float(0x 42f9999a), SkBits2Float(0x4275999a), SkBits2Float(0x42d70001), SkBits2Float(0x42 633333));
5703 path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc)); 5866 path.lineTo(SkBits2Float(0x42e90001), SkBits2Float(0x41b8cccc));
5704 path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x 42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41 a3ffff)); 5867 path.cubicTo(SkBits2Float(0x42dc6667), SkBits2Float(0x41ab3332), SkBits2Float(0x 42cf3334), SkBits2Float(0x41a3ffff), SkBits2Float(0x42c20001), SkBits2Float(0x41 a3ffff));
(...skipping 25 matching lines...) Expand all
5730 path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x 423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x43 1cb334)); 5893 path.cubicTo(SkBits2Float(0x4272cccc), SkBits2Float(0x4303199a), SkBits2Float(0x 423d3332), SkBits2Float(0x430de667), SkBits2Float(0x422d9999), SkBits2Float(0x43 1cb334));
5731 path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd)); 5894 path.lineTo(SkBits2Float(0x7086a1dc), SkBits2Float(0x42eecccd));
5732 path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd)); 5895 path.lineTo(SkBits2Float(0x41eb3333), SkBits2Float(0xc12ccccd));
5733 path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd)); 5896 path.lineTo(SkBits2Float(0x42053333), SkBits2Float(0xc1cccccd));
5734 path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334)); 5897 path.lineTo(SkBits2Float(0x42780000), SkBits2Float(0xc18f3334));
5735 path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x 43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43 080000)); 5898 path.cubicTo(SkBits2Float(0x43206666), SkBits2Float(0x43134ccd), SkBits2Float(0x 43213333), SkBits2Float(0x430db333), SkBits2Float(0x43213333), SkBits2Float(0x43 080000));
5736 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000)); 5899 path.lineTo(SkBits2Float(0x432c8000), SkBits2Float(0x42c00000));
5737 path.close(); 5900 path.close();
5738 5901
5739 SkPath path2(path); 5902 SkPath path2(path);
5740 testPathOpCheck(reporter, path1, path2, (SkPathOp) 2, filename, FLAGS_runFai l); 5903 testPathOpCheck(reporter, path1, path2, (SkPathOp) 2, filename, true);
5741 } 5904 }
5742 5905
5743 static void fuzz714(skiatest::Reporter* reporter, const char* filename) { 5906 static void fuzz714(skiatest::Reporter* reporter, const char* filename) {
5744 SkPath path; 5907 SkPath path;
5745 path.setFillType((SkPath::FillType) 1); 5908 path.setFillType((SkPath::FillType) 1);
5746 path.moveTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000)); 5909 path.moveTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000));
5747 path.lineTo(SkBits2Float(0x43480000), SkBits2Float(0x43520000)); 5910 path.lineTo(SkBits2Float(0x43480000), SkBits2Float(0x43520000));
5748 path.lineTo(SkBits2Float(0x42200000), SkBits2Float(0x42c80000)); 5911 path.lineTo(SkBits2Float(0x42200000), SkBits2Float(0x42c80000));
5749 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42c80000)); // 2.22222e+02 2f 5912 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42c80000)); // 2.22222e+02 2f
5750 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43520000)); // 2.22222e+02 2f 5913 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43520000)); // 2.22222e+02 2f
5751 path.lineTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000)); 5914 path.lineTo(SkBits2Float(0x430c0000), SkBits2Float(0x42200000));
5752 path.close(); 5915 path.close();
5753 5916
5754 SkPath path1(path); 5917 SkPath path1(path);
5755 path.reset(); 5918 path.reset();
5756 path.setFillType((SkPath::FillType) 0); 5919 path.setFillType((SkPath::FillType) 0);
5757 path.moveTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000)); 5920 path.moveTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000));
5758 path.lineTo(SkBits2Float(0x435c0000), SkBits2Float(0x43660000)); 5921 path.lineTo(SkBits2Float(0x435c0000), SkBits2Float(0x43660000));
5759 path.lineTo(SkBits2Float(0x42700000), SkBits2Float(0x42f00000)); 5922 path.lineTo(SkBits2Float(0x42700000), SkBits2Float(0x42f00000));
5760 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42f00000)); // 2.22222e+02 2f 5923 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42f00000)); // 2.22222e+02 2f
5761 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43660000)); // 2.22222e+02 2f 5924 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43660000)); // 2.22222e+02 2f
5762 path.lineTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000)); 5925 path.lineTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000));
5763 path.close(); 5926 path.close();
5764 5927
5765 SkPath path2(path); 5928 SkPath path2(path);
5766 testPathOpCheck(reporter, path1, path2, (SkPathOp) 2, filename, FLAGS_runFai l); 5929 testPathOpCheck(reporter, path1, path2, (SkPathOp) 2, filename, true);
5767 } 5930 }
5768 5931
5769 static void fuzz1(skiatest::Reporter* reporter, const char* filename) { 5932 static void fuzz1(skiatest::Reporter* reporter, const char* filename) {
5770 SkPath path; 5933 SkPath path;
5771 path.setFillType((SkPath::FillType) 0); 5934 path.setFillType((SkPath::FillType) 0);
5772 path.moveTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000)); 5935 path.moveTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000));
5773 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7 f800000), SkBits2Float(0x7f800000)); 5936 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7 f800000), SkBits2Float(0x7f800000));
5774 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7 f800000), SkBits2Float(0x7f800000)); 5937 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7 f800000), SkBits2Float(0x7f800000));
5775 path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0xf fc00000), SkBits2Float(0x7f800000)); 5938 path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0xf fc00000), SkBits2Float(0x7f800000));
5776 path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xf f000001), SkBits2Float(0x7f800000)); 5939 path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xf f000001), SkBits2Float(0x7f800000));
5777 path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0xffc00000), SkBits2Float(0xf fc00000), SkBits2Float(0xffc00000)); 5940 path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0xffc00000), SkBits2Float(0xf fc00000), SkBits2Float(0xffc00000));
5778 path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0xff000001), SkBits2Float(0x7 f800000), SkBits2Float(0xff000001)); 5941 path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0xff000001), SkBits2Float(0x7 f800000), SkBits2Float(0xff000001));
5779 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7 f800000), SkBits2Float(0xffc00000)); 5942 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xff000001), SkBits2Float(0x7 f800000), SkBits2Float(0xffc00000));
5780 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7 f800000), SkBits2Float(0x7f800000)); 5943 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0xffc00000), SkBits2Float(0x7 f800000), SkBits2Float(0x7f800000));
5781 path.close(); 5944 path.close();
5782 5945
5783 SkPath path1(path); 5946 SkPath path1(path);
5784 path.reset(); 5947 path.reset();
5785 path.setFillType((SkPath::FillType) 0); 5948 path.setFillType((SkPath::FillType) 0);
5786 5949
5787 SkPath path2(path); 5950 SkPath path2(path);
5788 testPathFailOp(reporter, path1, path2, (SkPathOp) 2, filename); 5951 testPathOpFail(reporter, path1, path2, (SkPathOp) 2, filename);
5789 } 5952 }
5790 5953
5791 5954
5792 static void fuzz753_91(skiatest::Reporter* reporter, const char* filename) { 5955 static void fuzz753_91(skiatest::Reporter* reporter, const char* filename) {
5793 SkPath path; 5956 SkPath path;
5794 path.setFillType((SkPath::FillType) 0); 5957 path.setFillType((SkPath::FillType) 0);
5795 path.moveTo(SkBits2Float(0x42910000), SkBits2Float(0x00000000)); // 72.5f, 0 5958 path.moveTo(SkBits2Float(0x42910000), SkBits2Float(0x00000000)); // 72.5f, 0
5796 path.lineTo(SkBits2Float(0x42166668), SkBits2Float(0x00000000)); // 37.6f, 0 5959 path.lineTo(SkBits2Float(0x42166668), SkBits2Float(0x00000000)); // 37.6f, 0
5797 path.cubicTo(SkBits2Float(0x42166668), SkBits2Float(0xc1966668), SkBits2Float(0x 41c66668), SkBits2Float(0xc20a6666), SkBits2Float(0x40f00010), SkBits2Float(0xc2 1ccccd)); // 37.6f, -18.8f, 24.8f, -34.6f, 7.50001f, -39.2f 5960 path.cubicTo(SkBits2Float(0x42166668), SkBits2Float(0xc1966668), SkBits2Float(0x 41c66668), SkBits2Float(0xc20a6666), SkBits2Float(0x40f00010), SkBits2Float(0xc2 1ccccd)); // 37.6f, -18.8f, 24.8f, -34.6f, 7.50001f, -39.2f
5798 path.lineTo(SkBits2Float(0x41840004), SkBits2Float(0xc291cccd)); // 16.5f, -72. 9f 5961 path.lineTo(SkBits2Float(0x41840004), SkBits2Float(0xc291cccd)); // 16.5f, -72. 9f
5799 path.lineTo(SkBits2Float(0x42fb6668), SkBits2Float(0x42c73334)); // 125.7f, 99. 6f 5962 path.lineTo(SkBits2Float(0x42fb6668), SkBits2Float(0x42c73334)); // 125.7f, 99. 6f
5800 path.lineTo(SkBits2Float(0x43646668), SkBits2Float(0x43880ccd)); // 228.4f, 272 .1f 5963 path.lineTo(SkBits2Float(0x43646668), SkBits2Float(0x43880ccd)); // 228.4f, 272 .1f
5801 5964
5802 SkPath path1(path); 5965 SkPath path1(path);
5803 path.reset(); 5966 path.reset();
5804 path.setFillType((SkPath::FillType) 0); 5967 path.setFillType((SkPath::FillType) 0);
5805 path.moveTo(SkBits2Float(0x428bf702), SkBits2Float(0xcf223cbf)); // 69.9824f, - 2.72189e+09f 5968 path.moveTo(SkBits2Float(0x428bf702), SkBits2Float(0xcf223cbf)); // 69.9824f, - 2.72189e+09f
5806 path.lineTo(SkBits2Float(0x42112d68), SkBits2Float(0xcf223cbf)); // 36.2943f, - 2.72189e+09f 5969 path.lineTo(SkBits2Float(0x42112d68), SkBits2Float(0xcf223cbf)); // 36.2943f, - 2.72189e+09f
5807 path.cubicTo(SkBits2Float(0x4220d9fc), SkBits2Float(0xcf223cc0), SkBits2Float(0x 420ee118), SkBits2Float(0xcf223cc0), SkBits2Float(0x41cef2f8), SkBits2Float(0xcf 223cc0)); // 40.2129f, -2.72189e+09f, 35.7198f, -2.72189e+09f, 25.8686f, -2.721 89e+09f 5970 path.cubicTo(SkBits2Float(0x4220d9fc), SkBits2Float(0xcf223cc0), SkBits2Float(0x 420ee118), SkBits2Float(0xcf223cc0), SkBits2Float(0x41cef2f8), SkBits2Float(0xcf 223cc0)); // 40.2129f, -2.72189e+09f, 35.7198f, -2.72189e+09f, 25.8686f, -2.721 89e+09f
5808 path.lineTo(SkBits2Float(0x424a99e0), SkBits2Float(0xcf223cc0)); // 50.6503f, - 2.72189e+09f 5971 path.lineTo(SkBits2Float(0x424a99e0), SkBits2Float(0xcf223cc0)); // 50.6503f, - 2.72189e+09f
5809 path.cubicTo(SkBits2Float(0x42266e32), SkBits2Float(0xcf223cc0), SkBits2Float(0x 41f0fa20), SkBits2Float(0xcf223cc0), SkBits2Float(0x41872ed4), SkBits2Float(0xcf 223cc0)); // 41.6076f, -2.72189e+09f, 30.1221f, -2.72189e+09f, 16.8979f, -2.721 89e+09f 5972 path.cubicTo(SkBits2Float(0x42266e32), SkBits2Float(0xcf223cc0), SkBits2Float(0x 41f0fa20), SkBits2Float(0xcf223cc0), SkBits2Float(0x41872ed4), SkBits2Float(0xcf 223cc0)); // 41.6076f, -2.72189e+09f, 30.1221f, -2.72189e+09f, 16.8979f, -2.721 89e+09f
5810 path.lineTo(SkBits2Float(0x40f8fbe0), SkBits2Float(0xcf223cc0)); // 7.78075f, - 2.72189e+09f 5973 path.lineTo(SkBits2Float(0x40f8fbe0), SkBits2Float(0xcf223cc0)); // 7.78075f, - 2.72189e+09f
5811 5974
5812 SkPath path2(path); 5975 SkPath path2(path);
5813 testPathFailOp(reporter, path1, path2, (SkPathOp) 2, filename); 5976 testPathOp(reporter, path1, path2, (SkPathOp) 2, filename);
5814 } 5977 }
5815 5978
5816 static void bug597926_0(skiatest::Reporter* reporter, const char* filename) { 5979 static void bug597926_0(skiatest::Reporter* reporter, const char* filename) {
5817 SkPath path; 5980 SkPath path;
5818 path.setFillType((SkPath::FillType) 0); 5981 path.setFillType((SkPath::FillType) 0);
5819 path.moveTo(SkBits2Float(0x43b38000), SkBits2Float(0x433e0000)); // 359, 190 5982 path.moveTo(SkBits2Float(0x43b38000), SkBits2Float(0x433e0000)); // 359, 190
5820 path.lineTo(SkBits2Float(0x40c00000), SkBits2Float(0x449ce000)); // 6, 1255 5983 path.lineTo(SkBits2Float(0x40c00000), SkBits2Float(0x449ce000)); // 6, 1255
5821 path.cubicTo(SkBits2Float(0x438c0000), SkBits2Float(0x4497a000), SkBits2Float(0x 43e40000), SkBits2Float(0x44750000), SkBits2Float(0x41000000), SkBits2Float(0x44 aa2000)); // 280, 1213, 456, 980, 8, 1361 5984 path.cubicTo(SkBits2Float(0x438c0000), SkBits2Float(0x4497a000), SkBits2Float(0x 43e40000), SkBits2Float(0x44750000), SkBits2Float(0x41000000), SkBits2Float(0x44 aa2000)); // 280, 1213, 456, 980, 8, 1361
5822 path.moveTo(SkBits2Float(0x43290000), SkBits2Float(0x4431c000)); // 169, 711 5985 path.moveTo(SkBits2Float(0x43290000), SkBits2Float(0x4431c000)); // 169, 711
5823 path.lineTo(SkBits2Float(0xd987d6ba), SkBits2Float(0xd93d0ad4)); // -4.7794e+15 f, -3.32567e+15f 5986 path.lineTo(SkBits2Float(0xd987d6ba), SkBits2Float(0xd93d0ad4)); // -4.7794e+15 f, -3.32567e+15f
5824 path.conicTo(SkBits2Float(0x43cc8000), SkBits2Float(0x445b8000), SkBits2Float(0x d888b096), SkBits2Float(0xd9a1ebfa), SkBits2Float(0x3ebcb199)); // 409, 878, -1 .20234e+15f, -5.69712e+15f, 0.368542f 5987 path.conicTo(SkBits2Float(0x43cc8000), SkBits2Float(0x445b8000), SkBits2Float(0x d888b096), SkBits2Float(0xd9a1ebfa), SkBits2Float(0x3ebcb199)); // 409, 878, -1 .20234e+15f, -5.69712e+15f, 0.368542f
5825 path.cubicTo(SkBits2Float(0x43c00000), SkBits2Float(0x443a8000), SkBits2Float(0x 42380000), SkBits2Float(0x4421c000), SkBits2Float(0x42500000), SkBits2Float(0x44 8ca000)); // 384, 746, 46, 647, 52, 1125 5988 path.cubicTo(SkBits2Float(0x43c00000), SkBits2Float(0x443a8000), SkBits2Float(0x 42380000), SkBits2Float(0x4421c000), SkBits2Float(0x42500000), SkBits2Float(0x44 8ca000)); // 384, 746, 46, 647, 52, 1125
5826 path.quadTo(SkBits2Float(0x43948000), SkBits2Float(0x42ac0000), SkBits2Float(0x4 3880000), SkBits2Float(0x4487e000)); // 297, 86, 272, 1087 5989 path.quadTo(SkBits2Float(0x43948000), SkBits2Float(0x42ac0000), SkBits2Float(0x4 3880000), SkBits2Float(0x4487e000)); // 297, 86, 272, 1087
5827 SkPath path1(path); 5990 SkPath path1(path);
5828 path.reset(); 5991 path.reset();
5829 path.setFillType((SkPath::FillType) 0); 5992 path.setFillType((SkPath::FillType) 0);
5830 path.moveTo(SkBits2Float(0xc51d735c), SkBits2Float(0xc49db029)); // -2519.21f, -1261.51f 5993 path.moveTo(SkBits2Float(0xc51d735c), SkBits2Float(0xc49db029)); // -2519.21f, -1261.51f
5831 path.cubicTo(SkBits2Float(0xc51d1dbd), SkBits2Float(0xc49d7a3f), SkBits2Float(0x c51c524a), SkBits2Float(0xc49d1610), SkBits2Float(0xc51d1a96), SkBits2Float(0xc4 9d86a6)); // -2513.86f, -1259.82f, -2501.14f, -1256.69f, -2513.66f, -1260.21f 5994 path.cubicTo(SkBits2Float(0xc51d1dbd), SkBits2Float(0xc49d7a3f), SkBits2Float(0x c51c524a), SkBits2Float(0xc49d1610), SkBits2Float(0xc51d1a96), SkBits2Float(0xc4 9d86a6)); // -2513.86f, -1259.82f, -2501.14f, -1256.69f, -2513.66f, -1260.21f
5832 path.cubicTo(SkBits2Float(0xc51cd471), SkBits2Float(0xc49d54d0), SkBits2Float(0x c51c2e51), SkBits2Float(0xc49d0081), SkBits2Float(0xc51d197b), SkBits2Float(0xc4 9d7927)); // -2509.28f, -1258.65f, -2498.89f, -1256.02f, -2513.59f, -1259.79f 5995 path.cubicTo(SkBits2Float(0xc51cd471), SkBits2Float(0xc49d54d0), SkBits2Float(0x c51c2e51), SkBits2Float(0xc49d0081), SkBits2Float(0xc51d197b), SkBits2Float(0xc4 9d7927)); // -2509.28f, -1258.65f, -2498.89f, -1256.02f, -2513.59f, -1259.79f
5833 path.quadTo(SkBits2Float(0xc51bf7eb), SkBits2Float(0xc49cf010), SkBits2Float(0xc 51ba866), SkBits2Float(0xc49cb9e6)); // -2495.49f, -1255.5f, -2490.52f, -1253.8 1f 5996 path.quadTo(SkBits2Float(0xc51bf7eb), SkBits2Float(0xc49cf010), SkBits2Float(0xc 51ba866), SkBits2Float(0xc49cb9e6)); // -2495.49f, -1255.5f, -2490.52f, -1253.8 1f
5834 path.cubicTo(SkBits2Float(0xc51bac0d), SkBits2Float(0xc49cc50e), SkBits2Float(0x c51c29eb), SkBits2Float(0xc49cfb01), SkBits2Float(0xc51c5bca), SkBits2Float(0xc4 9d1fa6)); // -2490.75f, -1254.16f, -2498.62f, -1255.84f, -2501.74f, -1256.99f 5997 path.cubicTo(SkBits2Float(0xc51bac0d), SkBits2Float(0xc49cc50e), SkBits2Float(0x c51c29eb), SkBits2Float(0xc49cfb01), SkBits2Float(0xc51c5bca), SkBits2Float(0xc4 9d1fa6)); // -2490.75f, -1254.16f, -2498.62f, -1255.84f, -2501.74f, -1256.99f
5835 SkPath path2(path); 5998 SkPath path2(path);
5836 testPathFailOp(reporter, path1, path2, (SkPathOp) 1, filename); 5999 testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
5837 } 6000 }
5838 6001
5839 static void fuzz1450_0(skiatest::Reporter* reporter, const char* filename) { 6002 static void fuzz1450_0(skiatest::Reporter* reporter, const char* filename) {
5840 SkPath path; 6003 SkPath path;
5841 path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.147 48e+09f 6004 path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0xcf000000)); // 360, -2.147 48e+09f
5842 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcf000000), SkBits2Float(0x 4e800002), SkBits2Float(0xce7ffffe), SkBits2Float(0x3f3504f4)); // 1.07374e+09f , -2.14748e+09f, 1.07374e+09f, -1.07374e+09f, 0.707107f 6005 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcf000000), SkBits2Float(0x 4e800002), SkBits2Float(0xce7ffffe), SkBits2Float(0x3f3504f4)); // 1.07374e+09f , -2.14748e+09f, 1.07374e+09f, -1.07374e+09f, 0.707107f
5843 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x 43348000), SkBits2Float(0x43800001), SkBits2Float(0x3f3504f4)); // 1.07374e+09f , 256, 180.5f, 256, 0.707107f 6006 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x 43348000), SkBits2Float(0x43800001), SkBits2Float(0x3f3504f4)); // 1.07374e+09f , 256, 180.5f, 256, 0.707107f
5844 SkPath path1(path); 6007 SkPath path1(path);
5845 path.reset(); 6008 path.reset();
5846 path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140 6009 path.moveTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
5847 path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x 45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55 f, 3600, 4434.55f, 0.707107f 6010 path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x 45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55 f, 3600, 4434.55f, 0.707107f
5848 path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x 45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.5 5f, 6840, 4140, 0.707107f 6011 path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x 45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.5 5f, 6840, 4140, 0.707107f
5849 path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512 6012 path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
5850 path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16 6013 path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
5851 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024 6014 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
5852 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140 6015 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
5853 path.close(); 6016 path.close();
5854 SkPath path2(path); 6017 SkPath path2(path);
5855 testPathSkipAssertOp(reporter, path1, path2, kUnion_SkPathOp, filename); 6018 testPathOpSkipAssert(reporter, path1, path2, kUnion_SkPathOp, filename);
5856 } 6019 }
5857 6020
5858 static void fuzz1450_1(skiatest::Reporter* reporter, const char* filename) { 6021 static void fuzz1450_1(skiatest::Reporter* reporter, const char* filename) {
5859 SkPath path; 6022 SkPath path;
5860 path.setFillType(SkPath::kEvenOdd_FillType); 6023 path.setFillType(SkPath::kEvenOdd_FillType);
5861 path.moveTo(SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe)); // 1.07374e+09 f, -1.07374e+09f 6024 path.moveTo(SkBits2Float(0x4e800002), SkBits2Float(0xce7ffffe)); // 1.07374e+09 f, -1.07374e+09f
5862 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcf000000), SkBits2Float(0x 43b40000), SkBits2Float(0xcf000000), SkBits2Float(0x3f3504f4)); // 1.07374e+09f , -2.14748e+09f, 360, -2.14748e+09f, 0.707107f 6025 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0xcf000000), SkBits2Float(0x 43b40000), SkBits2Float(0xcf000000), SkBits2Float(0x3f3504f4)); // 1.07374e+09f , -2.14748e+09f, 360, -2.14748e+09f, 0.707107f
5863 path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256 6026 path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256
5864 path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16 6027 path.lineTo(SkBits2Float(0x42000000), SkBits2Float(0x41800000)); // 32, 16
5865 path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512 6028 path.lineTo(SkBits2Float(0x42c80000), SkBits2Float(0x44000000)); // 100, 512
5866 path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 5 72.949f 6029 path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 5 72.949f
5867 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024 6030 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x44800000)); // 360, 1024
5868 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140 6031 path.lineTo(SkBits2Float(0x43b40000), SkBits2Float(0x45816000)); // 360, 4140
5869 path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x 45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55 f, 3600, 4434.55f, 0.707107f 6032 path.conicTo(SkBits2Float(0x43b40005), SkBits2Float(0x458a945d), SkBits2Float(0x 45610000), SkBits2Float(0x458a945d), SkBits2Float(0x3f3504f3)); // 360, 4434.55 f, 3600, 4434.55f, 0.707107f
5870 path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x 45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.5 5f, 6840, 4140, 0.707107f 6033 path.conicTo(SkBits2Float(0x45d5bfff), SkBits2Float(0x458a945d), SkBits2Float(0x 45d5bfff), SkBits2Float(0x45816000), SkBits2Float(0x3f3504f3)); // 6840, 4434.5 5f, 6840, 4140, 0.707107f
5871 path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 5 72.949f 6034 path.lineTo(SkBits2Float(0x43553abd), SkBits2Float(0x440f3cbd)); // 213.229f, 5 72.949f
5872 path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256 6035 path.lineTo(SkBits2Float(0x43348000), SkBits2Float(0x43800001)); // 180.5f, 256
5873 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x 4e800002), SkBits2Float(0xce7ffffe), SkBits2Float(0x3f3504f4)); // 1.07374e+09f , 256, 1.07374e+09f, -1.07374e+09f, 0.707107f 6036 path.conicTo(SkBits2Float(0x4e800002), SkBits2Float(0x43800001), SkBits2Float(0x 4e800002), SkBits2Float(0xce7ffffe), SkBits2Float(0x3f3504f4)); // 1.07374e+09f , 256, 1.07374e+09f, -1.07374e+09f, 0.707107f
5874 path.close(); 6037 path.close();
5875 SkPath path1(path); 6038 SkPath path1(path);
5876 path.reset(); 6039 path.reset();
5877 path.moveTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321 6040 path.moveTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
5878 path.lineTo(SkBits2Float(0x45d5c000), SkBits2Float(0x43870000)); // 6840, 270 6041 path.lineTo(SkBits2Float(0x45d5c000), SkBits2Float(0x43870000)); // 6840, 270
5879 path.lineTo(SkBits2Float(0xd0a00000), SkBits2Float(0x4cbebc20)); // -2.14748e+1 0f, 1e+08 6042 path.lineTo(SkBits2Float(0xd0a00000), SkBits2Float(0x4cbebc20)); // -2.14748e+1 0f, 1e+08
5880 path.lineTo(SkBits2Float(0x451f7000), SkBits2Float(0x42800000)); // 2551, 64 6043 path.lineTo(SkBits2Float(0x451f7000), SkBits2Float(0x42800000)); // 2551, 64
5881 path.lineTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321 6044 path.lineTo(SkBits2Float(0x42fe0000), SkBits2Float(0x43a08000)); // 127, 321
5882 path.close(); 6045 path.close();
5883 SkPath path2(path); 6046 SkPath path2(path);
5884 testPathFailOp(reporter, path1, path2, kUnion_SkPathOp, filename); 6047 testPathOpSkipAssert(reporter, path1, path2, kUnion_SkPathOp, filename);
5885 } 6048 }
5886 6049
5887 static void fuzz763_9(skiatest::Reporter* reporter, const char* filename) { 6050 static void fuzz763_9(skiatest::Reporter* reporter, const char* filename) {
5888 SkPath path; 6051 SkPath path;
5889 path.setFillType((SkPath::FillType) 1); 6052 path.setFillType((SkPath::FillType) 1);
5890 6053
5891 SkPath path1(path); 6054 SkPath path1(path);
5892 path.reset(); 6055 path.reset();
5893 path.setFillType((SkPath::FillType) 0); 6056 path.setFillType((SkPath::FillType) 0);
5894 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0 6057 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
5895 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x 7bc00321), SkBits2Float(0xed7a6a4b), SkBits2Float(0x1f212a8c)); // 2.49282e-13f , 4.78968e-34f, 1.99397e+36f, -4.84373e+27f, 3.41283e-20f 6058 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x 7bc00321), SkBits2Float(0xed7a6a4b), SkBits2Float(0x1f212a8c)); // 2.49282e-13f , 4.78968e-34f, 1.99397e+36f, -4.84373e+27f, 3.41283e-20f
5896 path.lineTo(SkBits2Float(0x7bc00321), SkBits2Float(0xed7a6a4b)); // 1.99397e+36 f, -4.84373e+27f 6059 path.lineTo(SkBits2Float(0x7bc00321), SkBits2Float(0xed7a6a4b)); // 1.99397e+36 f, -4.84373e+27f
5897 path.lineTo(SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28)); // 9.4495e-15f , 0.000617492f 6060 path.lineTo(SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28)); // 9.4495e-15f , 0.000617492f
5898 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0 6061 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
5899 path.close(); 6062 path.close();
5900 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0 6063 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
5901 path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3), SkBits2Float(0x1 d2a2928), SkBits2Float(0x63962be6)); // -8.10388e-33f, 0.00148185f, 2.25206e-21 f, 5.54035e+21f 6064 path.quadTo(SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3), SkBits2Float(0x1 d2a2928), SkBits2Float(0x63962be6)); // -8.10388e-33f, 0.00148185f, 2.25206e-21 f, 5.54035e+21f
5902 path.moveTo(SkBits2Float(0x29272a81), SkBits2Float(0x2ab03a55)); // 3.71183e-14 f, 3.13044e-13f 6065 path.moveTo(SkBits2Float(0x29272a81), SkBits2Float(0x2ab03a55)); // 3.71183e-14 f, 3.13044e-13f
5903 path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xd f28282a), SkBits2Float(0x8a2f2121)); // 2.22225e-15f, 0.000615227f, -1.2117e+19 f, -8.43217e-33f 6066 path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xd f28282a), SkBits2Float(0x8a2f2121)); // 2.22225e-15f, 0.000615227f, -1.2117e+19 f, -8.43217e-33f
5904 path.quadTo(SkBits2Float(0x373b3a27), SkBits2Float(0x201fc4c1), SkBits2Float(0x2 7576c2a), SkBits2Float(0x5921c25d)); // 1.11596e-05f, 1.35329e-19f, 2.98959e-15 f, 2.8457e+15f 6067 path.quadTo(SkBits2Float(0x373b3a27), SkBits2Float(0x201fc4c1), SkBits2Float(0x2 7576c2a), SkBits2Float(0x5921c25d)); // 1.11596e-05f, 1.35329e-19f, 2.98959e-15 f, 2.8457e+15f
5905 path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xd f28282a), SkBits2Float(0x3a8a3a21)); // 2.22225e-15f, 0.000615227f, -1.2117e+19 f, 0.00105459f 6068 path.quadTo(SkBits2Float(0x2720213b), SkBits2Float(0x3a214729), SkBits2Float(0xd f28282a), SkBits2Float(0x3a8a3a21)); // 2.22225e-15f, 0.000615227f, -1.2117e+19 f, 0.00105459f
5906 path.cubicTo(SkBits2Float(0x373b3ac5), SkBits2Float(0x201fc422), SkBits2Float(0x 523a702a), SkBits2Float(0x27576c51), SkBits2Float(0x5921c25d), SkBits2Float(0x51 523a70)); // 1.11598e-05f, 1.35327e-19f, 2.00186e+11f, 2.9896e-15f, 2.8457e+15f , 5.64327e+10f 6069 path.cubicTo(SkBits2Float(0x373b3ac5), SkBits2Float(0x201fc422), SkBits2Float(0x 523a702a), SkBits2Float(0x27576c51), SkBits2Float(0x5921c25d), SkBits2Float(0x51 523a70)); // 1.11598e-05f, 1.35327e-19f, 2.00186e+11f, 2.9896e-15f, 2.8457e+15f , 5.64327e+10f
5907 path.quadTo(SkBits2Float(0xd912102a), SkBits2Float(0x284f9a28), SkBits2Float(0xb 38a1f30), SkBits2Float(0x3a3ac23a)); // -2.56957e+15f, 1.15242e-14f, -6.4318e-0 8f, 0.000712428f 6070 path.quadTo(SkBits2Float(0xd912102a), SkBits2Float(0x284f9a28), SkBits2Float(0xb 38a1f30), SkBits2Float(0x3a3ac23a)); // -2.56957e+15f, 1.15242e-14f, -6.4318e-0 8f, 0.000712428f
5908 path.lineTo(SkBits2Float(0xc809272a), SkBits2Float(0x29b02829)); // -140445, 7. 82294e-14f 6071 path.lineTo(SkBits2Float(0xc809272a), SkBits2Float(0x29b02829)); // -140445, 7. 82294e-14f
5909 6072
5910 SkPath path2(path); 6073 SkPath path2(path);
5911 testPathFailOp(reporter, path1, path2, (SkPathOp) 1, filename); 6074 testPathOp(reporter, path1, path2, (SkPathOp) 1, filename);
5912 } 6075 }
5913 6076
5914 6077
5915 static void fuzz763_4(skiatest::Reporter* reporter, const char* filename) { 6078 static void fuzz763_4(skiatest::Reporter* reporter, const char* filename) {
5916 SkPath path; 6079 SkPath path;
5917 path.setFillType((SkPath::FillType) 1); 6080 path.setFillType((SkPath::FillType) 1);
5918 6081
5919 SkPath path1(path); 6082 SkPath path1(path);
5920 path.reset(); 6083 path.reset();
5921 path.setFillType((SkPath::FillType) 0); 6084 path.setFillType((SkPath::FillType) 0);
(...skipping 13 matching lines...) Expand all
5935 path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8 a284f9a), SkBits2Float(0x3ac23ab3)); // -1.2117e+19f, 0.00105459f, -8.10388e-33 f, 0.00148185f 6098 path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3a21), SkBits2Float(0x8 a284f9a), SkBits2Float(0x3ac23ab3)); // -1.2117e+19f, 0.00105459f, -8.10388e-33 f, 0.00148185f
5936 path.lineTo(SkBits2Float(0x2928088c), SkBits2Float(0x2be61d2a)); // 3.73109e-14 f, 1.63506e-12f 6099 path.lineTo(SkBits2Float(0x2928088c), SkBits2Float(0x2be61d2a)); // 3.73109e-14 f, 1.63506e-12f
5937 path.conicTo(SkBits2Float(0x2a812a63), SkBits2Float(0x2d292a27), SkBits2Float(0x 5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x552d6829)); // 2.29444e-13f , 9.6159e-12f, 1.5954e+13f, 4.87407e+16f, 1.19164e+13f 6100 path.conicTo(SkBits2Float(0x2a812a63), SkBits2Float(0x2d292a27), SkBits2Float(0x 5568295b), SkBits2Float(0x5b2d2968), SkBits2Float(0x552d6829)); // 2.29444e-13f , 9.6159e-12f, 1.5954e+13f, 4.87407e+16f, 1.19164e+13f
5938 path.conicTo(SkBits2Float(0x395b2d5b), SkBits2Float(0x68552768), SkBits2Float(0x 555b2df0), SkBits2Float(0x1f722a8c), SkBits2Float(0x082a212a)); // 0.000209024f , 4.02636e+24f, 1.50619e+13f, 5.12807e-20f, 5.11965e-34f 6101 path.conicTo(SkBits2Float(0x395b2d5b), SkBits2Float(0x68552768), SkBits2Float(0x 555b2df0), SkBits2Float(0x1f722a8c), SkBits2Float(0x082a212a)); // 0.000209024f , 4.02636e+24f, 1.50619e+13f, 5.12807e-20f, 5.11965e-34f
5939 path.lineTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13 f, 4.87407e+16f 6102 path.lineTo(SkBits2Float(0x55685b1f), SkBits2Float(0x5b2d2968)); // 1.59674e+13 f, 4.87407e+16f
5940 path.close(); 6103 path.close();
5941 path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f , 4.61198e-19f 6104 path.moveTo(SkBits2Float(0x212a8c55), SkBits2Float(0x21081f2a)); // 5.7784e-19f , 4.61198e-19f
5942 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2147ed7a), SkBits2Float(0x 28282a3a), SkBits2Float(0x21df212a), SkBits2Float(0x033a8a3a)); // 6.14991e+25f , 6.77381e-19f, 9.33503e-15f, 1.51198e-18f, 5.48192e-37f 6105 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2147ed7a), SkBits2Float(0x 28282a3a), SkBits2Float(0x21df212a), SkBits2Float(0x033a8a3a)); // 6.14991e+25f , 6.77381e-19f, 9.33503e-15f, 1.51198e-18f, 5.48192e-37f
5943 6106
5944 SkPath path2(path); 6107 SkPath path2(path);
5945 testPathFailSkipAssertOp(reporter, path1, path2, (SkPathOp) 1, filename); 6108 testPathOpSkipAssert(reporter, path1, path2, (SkPathOp) 1, filename);
5946 } 6109 }
5947 6110
5948 static void fuzz763_3(skiatest::Reporter* reporter, const char* filename) { 6111 static void fuzz763_3(skiatest::Reporter* reporter, const char* filename) {
5949 SkPath path; 6112 SkPath path;
5950 path.setFillType((SkPath::FillType) 1); 6113 path.setFillType((SkPath::FillType) 1);
5951 6114
5952 SkPath path1(path); 6115 SkPath path1(path);
5953 path.reset(); 6116 path.reset();
5954 path.setFillType((SkPath::FillType) 0); 6117 path.setFillType((SkPath::FillType) 0);
5955 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0 6118 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
(...skipping 14 matching lines...) Expand all
5970 path.moveTo(SkBits2Float(0x962be61d), SkBits2Float(0x432a2927)); // -1.38859e-2 5f, 170.161f 6133 path.moveTo(SkBits2Float(0x962be61d), SkBits2Float(0x432a2927)); // -1.38859e-2 5f, 170.161f
5971 path.conicTo(SkBits2Float(0x3a2a552a), SkBits2Float(0x3b1e2ab0), SkBits2Float(0x 29272021), SkBits2Float(0x3b3ac527), SkBits2Float(0x1fc42236)); // 0.000649768f , 0.00241343f, 3.71093e-14f, 0.00284989f, 8.30658e-20f 6134 path.conicTo(SkBits2Float(0x3a2a552a), SkBits2Float(0x3b1e2ab0), SkBits2Float(0x 29272021), SkBits2Float(0x3b3ac527), SkBits2Float(0x1fc42236)); // 0.000649768f , 0.00241343f, 3.71093e-14f, 0.00284989f, 8.30658e-20f
5972 path.cubicTo(SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d), SkBits2Float(0x 51503a70), SkBits2Float(0x12102a10), SkBits2Float(0x633a28d9), SkBits2Float(0x29 c80927)); // 2.98959e-15f, 2.8457e+15f, 5.58959e+10f, 4.54902e-28f, 3.43404e+21 f, 8.88337e-14f 6135 path.cubicTo(SkBits2Float(0x27576c2a), SkBits2Float(0x5921c25d), SkBits2Float(0x 51503a70), SkBits2Float(0x12102a10), SkBits2Float(0x633a28d9), SkBits2Float(0x29 c80927)); // 2.98959e-15f, 2.8457e+15f, 5.58959e+10f, 4.54902e-28f, 3.43404e+21 f, 8.88337e-14f
5973 path.lineTo(SkBits2Float(0x272927b0), SkBits2Float(0x5b392929)); // 2.3475e-15f , 5.21181e+16f 6136 path.lineTo(SkBits2Float(0x272927b0), SkBits2Float(0x5b392929)); // 2.3475e-15f , 5.21181e+16f
5974 path.moveTo(SkBits2Float(0x3a1127b4), SkBits2Float(0x2921ee3b)); // 0.000553723 f, 3.59558e-14f 6137 path.moveTo(SkBits2Float(0x3a1127b4), SkBits2Float(0x2921ee3b)); // 0.000553723 f, 3.59558e-14f
5975 path.cubicTo(SkBits2Float(0x5e215d3b), SkBits2Float(0x7828ee3a), SkBits2Float(0x 8e28b03b), SkBits2Float(0x50783be8), SkBits2Float(0x9e0b8a3a), SkBits2Float(0x55 5b2d68)); // 2.90688e+18f, 1.37053e+34f, -2.07925e-30f, 1.66587e+10f, -7.38718e -21f, 1.50618e+13f 6138 path.cubicTo(SkBits2Float(0x5e215d3b), SkBits2Float(0x7828ee3a), SkBits2Float(0x 8e28b03b), SkBits2Float(0x50783be8), SkBits2Float(0x9e0b8a3a), SkBits2Float(0x55 5b2d68)); // 2.90688e+18f, 1.37053e+34f, -2.07925e-30f, 1.66587e+10f, -7.38718e -21f, 1.50618e+13f
5976 path.moveTo(SkBits2Float(0x21081f3f), SkBits2Float(0x9fd4e62a)); // 4.61199e-19 f, -9.01663e-20f 6139 path.moveTo(SkBits2Float(0x21081f3f), SkBits2Float(0x9fd4e62a)); // 4.61199e-19 f, -9.01663e-20f
5977 path.cubicTo(SkBits2Float(0x3a293a2a), SkBits2Float(0x0e3bf0c5), SkBits2Float(0x 3b29d42a), SkBits2Float(0x0f217265), SkBits2Float(0x2d5d2921), SkBits2Float(0x55 68295b)); // 0.000645551f, 2.31655e-30f, 0.00259138f, 7.95994e-30f, 1.25715e-11 f, 1.5954e+13f 6140 path.cubicTo(SkBits2Float(0x3a293a2a), SkBits2Float(0x0e3bf0c5), SkBits2Float(0x 3b29d42a), SkBits2Float(0x0f217265), SkBits2Float(0x2d5d2921), SkBits2Float(0x55 68295b)); // 0.000645551f, 2.31655e-30f, 0.00259138f, 7.95994e-30f, 1.25715e-11 f, 1.5954e+13f
5978 6141
5979 SkPath path2(path); 6142 SkPath path2(path);
5980 testPathSkipAssertOp(reporter, path1, path2, (SkPathOp) 1, filename); 6143 testPathOpSkipAssert(reporter, path1, path2, (SkPathOp) 1, filename);
5981 } 6144 }
5982 6145
5983 static void fuzz763_5(skiatest::Reporter* reporter, const char* filename) { 6146 static void fuzz763_5(skiatest::Reporter* reporter, const char* filename) {
5984 SkPath path; 6147 SkPath path;
5985 path.setFillType((SkPath::FillType) 1); 6148 path.setFillType((SkPath::FillType) 1);
5986 6149
5987 SkPath path1(path); 6150 SkPath path1(path);
5988 path.reset(); 6151 path.reset();
5989 path.setFillType((SkPath::FillType) 0); 6152 path.setFillType((SkPath::FillType) 0);
5990 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16 f, 1.51477e-13f 6153 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16 f, 1.51477e-13f
5991 path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b79), SkBits2Float(0x 212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3 .04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f 6154 path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b79), SkBits2Float(0x 212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3 .04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
5992 path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x 3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f , -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f 6155 path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x 3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f , -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
5993 path.cubicTo(SkBits2Float(0xe62a2928), SkBits2Float(0x2a63962b), SkBits2Float(0x 68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x00 1f2a21)); // -2.0089e+23f, 2.02138e-13f, 3.19905e+24f, 9.6297e-12f, 2.49282e-13 f, 2.86201e-39f 6156 path.cubicTo(SkBits2Float(0xe62a2928), SkBits2Float(0x2a63962b), SkBits2Float(0x 68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2a8c555b), SkBits2Float(0x00 1f2a21)); // -2.0089e+23f, 2.02138e-13f, 3.19905e+24f, 9.6297e-12f, 2.49282e-13 f, 2.86201e-39f
5994 path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16 f, 1.51477e-13f 6157 path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16 f, 1.51477e-13f
5995 path.close(); 6158 path.close();
5996 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16 f, 1.51477e-13f 6159 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16 f, 1.51477e-13f
5997 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x 21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f , 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121589 6160 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x 21081f21), SkBits2Float(0x3a7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f , 2.50338e-13f, 4.61198e-19f, 0.00096035f, 121589
5998 path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16 f, 1.51477e-13f 6161 path.lineTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16 f, 1.51477e-13f
5999 path.close(); 6162 path.close();
6000 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16 f, 1.51477e-13f 6163 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x2a2a8c55)); // 4.76191e+16 f, 1.51477e-13f
6001 path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3b21), SkBits2Float(0x2 8ee4f9a), SkBits2Float(0x68293b78)); // -1.2117e+19f, 0.00105462f, 2.64578e-14f , 3.19671e+24f 6164 path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x3a8a3b21), SkBits2Float(0x2 8ee4f9a), SkBits2Float(0x68293b78)); // -1.2117e+19f, 0.00105462f, 2.64578e-14f , 3.19671e+24f
6002 path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x5b2d8c55)); // 4.87407e+16 f, 4.88495e+16f 6165 path.lineTo(SkBits2Float(0x5b2d2968), SkBits2Float(0x5b2d8c55)); // 4.87407e+16 f, 4.88495e+16f
6003 6166
6004 SkPath path2(path); 6167 SkPath path2(path);
6005 testPathSkipAssertOp(reporter, path1, path2, (SkPathOp) 4, filename); 6168 testPathOpSkipAssert(reporter, path1, path2, (SkPathOp) 4, filename);
6006 } 6169 }
6007 6170
6008 static void fuzz763_2(skiatest::Reporter* reporter, const char* filename) { 6171 static void fuzz763_2(skiatest::Reporter* reporter, const char* filename) {
6009 SkPath path; 6172 SkPath path;
6010 path.setFillType((SkPath::FillType) 1); 6173 path.setFillType((SkPath::FillType) 1);
6011 6174
6012 SkPath path1(path); 6175 SkPath path1(path);
6013 path.reset(); 6176 path.reset();
6014 path.setFillType((SkPath::FillType) 0); 6177 path.setFillType((SkPath::FillType) 0);
6015 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0 6178 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
(...skipping 18 matching lines...) Expand all
6034 path.close(); 6197 path.close();
6035 path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13 f, -1.16126e+19f 6198 path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13 f, -1.16126e+19f
6036 path.quadTo(SkBits2Float(0x216a2770), SkBits2Float(0x2ab73b28), SkBits2Float(0x4 b28f427), SkBits2Float(0x283b5b28)); // 7.93345e-19f, 3.25484e-13f, 1.10726e+07 f, 1.04004e-14f 6199 path.quadTo(SkBits2Float(0x216a2770), SkBits2Float(0x2ab73b28), SkBits2Float(0x4 b28f427), SkBits2Float(0x283b5b28)); // 7.93345e-19f, 3.25484e-13f, 1.10726e+07 f, 1.04004e-14f
6037 path.lineTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13 f, -1.16126e+19f 6200 path.lineTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13 f, -1.16126e+19f
6038 path.close(); 6201 path.close();
6039 path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13 f, -1.16126e+19f 6202 path.moveTo(SkBits2Float(0x2a3a2147), SkBits2Float(0xdf212828)); // 1.65317e-13 f, -1.16126e+19f
6040 path.conicTo(SkBits2Float(0xf86d273b), SkBits2Float(0x27e523e3), SkBits2Float(0x 2927e0f5), SkBits2Float(0x2ac0e729), SkBits2Float(0x6b492128)); // -1.92402e+34 f, 6.35992e-15f, 3.72766e-14f, 3.42665e-13f, 2.43151e+26f 6203 path.conicTo(SkBits2Float(0xf86d273b), SkBits2Float(0x27e523e3), SkBits2Float(0x 2927e0f5), SkBits2Float(0x2ac0e729), SkBits2Float(0x6b492128)); // -1.92402e+34 f, 6.35992e-15f, 3.72766e-14f, 3.42665e-13f, 2.43151e+26f
6041 path.cubicTo(SkBits2Float(0x2f273927), SkBits2Float(0xa83a2c21), SkBits2Float(0x d7122121), SkBits2Float(0x21212921), SkBits2Float(0x3be3db3a), SkBits2Float(0xa9 deb63b)); // 1.52089e-10f, -1.03346e-14f, -1.60671e+14f, 5.46034e-19f, 0.006953 62f, -9.89039e-14f 6204 path.cubicTo(SkBits2Float(0x2f273927), SkBits2Float(0xa83a2c21), SkBits2Float(0x d7122121), SkBits2Float(0x21212921), SkBits2Float(0x3be3db3a), SkBits2Float(0xa9 deb63b)); // 1.52089e-10f, -1.03346e-14f, -1.60671e+14f, 5.46034e-19f, 0.006953 62f, -9.89039e-14f
6042 6205
6043 SkPath path2(path); 6206 SkPath path2(path);
6044 testPathSkipAssertOp(reporter, path1, path2, (SkPathOp) 1, filename); 6207 testPathOpSkipAssert(reporter, path1, path2, (SkPathOp) 1, filename);
6208 }
6209
6210 // crbug.com/626164
6211 static void fuzz763_1c(skiatest::Reporter* reporter, const char* filename) {
6212 SkPath path;
6213 path.setFillType((SkPath::FillType) 0);
6214
6215 SkPath path1(path);
6216 path.reset();
6217 path.setFillType((SkPath::FillType) 0);
6218 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6219 path.cubicTo(SkBits2Float(0x1931204a), SkBits2Float(0x2ba1a14a), SkBits2Floa t(0x4a4a08ff), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a4a34), SkBits2Float( 0x4a4a4a4a)); // 9.15721e-24f, 1.14845e-12f, 3.31014e+06f, 3.31014e+06f, 3.3143 2e+06f, 3.31432e+06f
6220 path.moveTo(SkBits2Float(0x000010a1), SkBits2Float(0x19312000)); // 5.96533 e-42f, 9.15715e-24f
6221 path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Floa t(0xa14a4a4a), SkBits2Float(0x08ff2ba1), SkBits2Float(0x08ff4a4a), SkBits2Float( 0x4a344a4a)); // 3.31432e+06f, 3.31432e+06f, -6.85386e-19f, 1.53575e-33f, 1.536 47e-33f, 2.95387e+06f
6222 path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Floa t(0x2ba1a14a), SkBits2Float(0x4e4a08ff), SkBits2Float(0x4a4a4a4a), SkBits2Float( 0xa1a181ff)); // 3.31432e+06f, 3.31432e+06f, 1.14845e-12f, 8.47397e+08f, 3.3143 2e+06f, -1.09442e-18f
6223
6224 SkPath path2(path);
6225 SkPath dummy;
6226 testPathOp(reporter, path1, path2, (SkPathOp)4, filename);
6227 }
6228
6229 // crbug.com/626186
6230 static void fuzz763_1b(skiatest::Reporter* reporter, const char* filename) {
6231 SkPath path;
6232 path.setFillType((SkPath::FillType) 0);
6233 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6234 path.cubicTo(SkBits2Float(0x0000ff07), SkBits2Float(0xf9f9ff00), SkBits2Floa t(0xfe0ef9f4), SkBits2Float(0xd9b105fb), SkBits2Float(0x000000f9), SkBits2Float( 0xfe11f901)); // 9.14866e-41f, -1.62257e+35f, -4.75121e+37f, -6.22846e+15f, 3.4 8923e-43f, -4.85077e+37f
6235 path.lineTo(SkBits2Float(0xda1905ed), SkBits2Float(0x3c05fbfb)); // -1.0768 e+16f, 0.00817775f
6236 path.cubicTo(SkBits2Float(0x3c3c3c3c), SkBits2Float(0x3c3c3c3c), SkBits2Floa t(0x253c7f00), SkBits2Float(0xfa00d3fa), SkBits2Float(0x250025fe), SkBits2Float( 0x00000006)); // 0.011489f, 0.011489f, 1.63494e-16f, -1.67228e+35f, 1.11151e-16 f, 8.40779e-45f
6237
6238 SkPath path1(path);
6239 path.reset();
6240 path.setFillType((SkPath::FillType) 0);
6241 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6242 path.quadTo(SkBits2Float(0x3c3c3c3c), SkBits2Float(0xfa253c3c), SkBits2Float (0xfefa00d3), SkBits2Float(0x25fad9df)); // 0.011489f, -2.14488e+35f, -1.66156e +38f, 4.35157e-16f
6243 path.lineTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6244 path.close();
6245 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6246 path.lineTo(SkBits2Float(0x8dfefa00), SkBits2Float(0xf0f9fad9)); // -1.5714 1e-30f, -6.1892e+29f
6247 path.cubicTo(SkBits2Float(0x20fe58f9), SkBits2Float(0x0525fbed), SkBits2Floa t(0x1905ffff), SkBits2Float(0x01f9f9f9), SkBits2Float(0xfbfe0ef9), SkBits2Float( 0xfb212fff)); // 4.30882e-19f, 7.80453e-36f, 6.92764e-24f, 9.18268e-38f, -2.638 29e+36f, -8.36933e+35f
6248
6249 SkPath path2(path);
6250 testPathOp(reporter, path1, path2, (SkPathOp)2, filename);
6251 }
6252
6253 static void fuzz763_1a(skiatest::Reporter* reporter, const char* filename) {
6254 SkPath path;
6255 path.setFillType((SkPath::FillType) 0);
6256 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6257 path.cubicTo(SkBits2Float(0x154be880), SkBits2Float(0x80000640), SkBits2Floa t(0x5559a419), SkBits2Float(0x59d55928), SkBits2Float(0x80045959), SkBits2Float( 0x40154be8)); // 4.11789e-26f, -2.24208e-42f, 1.49562e+13f, 7.50652e+15f, -3.99 394e-40f, 2.33276f
6258
6259 SkPath path1(path);
6260 path.reset();
6261 path.setFillType((SkPath::FillType) 0);
6262 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6263 path.quadTo(SkBits2Float(0x5559a419), SkBits2Float(0x59d55928), SkBits2Float (0xbd595959), SkBits2Float(0x3f3f3f09)); // 1.49562e+13f, 7.50652e+15f, -0.0530 637f, 0.747056f
6264 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0x3f3f3f3f)); // 0.74705 9f, 0.747059f
6265 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.74705 9f, -2.54211e+38f
6266 path.lineTo(SkBits2Float(0x09090909), SkBits2Float(0x3038d509)); // 1.6495e -33f, 6.72416e-10f
6267 path.conicTo(SkBits2Float(0x5947ffff), SkBits2Float(0x40e88004), SkBits2Floa t(0x00002059), SkBits2Float(0x28555900), SkBits2Float(0x5959d559)); // 3.51844e +15f, 7.26563f, 1.16042e-41f, 1.18432e-14f, 3.83217e+15f
6268 path.lineTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.74705 9f, -2.54211e+38f
6269 path.close();
6270 path.moveTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.74705 9f, -2.54211e+38f
6271 path.lineTo(SkBits2Float(0x38d57f4b), SkBits2Float(0x59597f4b)); // 0.00010 1803f, 3.82625e+15f
6272 path.lineTo(SkBits2Float(0x3f3f3f3f), SkBits2Float(0xff3f3f3f)); // 0.74705 9f, -2.54211e+38f
6273 path.close();
6274 path.moveTo(SkBits2Float(0x384700ff), SkBits2Float(0x0108804b)); // 4.74462 e-05f, 2.50713e-38f
6275
6276 SkPath path2(path);
6277 testPathOp(reporter, path1, path2, (SkPathOp)0, filename);
6278 }
6279
6280 // crbug.com/627780
6281 static void fuzz763_3a(skiatest::Reporter* reporter, const char* filename) {
6282 SkPath path;
6283 path.setFillType((SkPath::FillType) 1);
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.lineTo(SkBits2Float(0x555b292d), SkBits2Float(0x2a212a8c)); // 1.50606e+13 f, 1.43144e-13f
6290 path.conicTo(SkBits2Float(0xc0032108), SkBits2Float(0x7a6a4b7b), SkBits2Float(0x 212a8ced), SkBits2Float(0x0321081f), SkBits2Float(0x6a3a7bc0)); // -2.04889f, 3 .04132e+35f, 5.77848e-19f, 4.7323e-37f, 5.63611e+25f
6291 path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x 3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f , -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
6292 path.cubicTo(SkBits2Float(0x1d2a2928), SkBits2Float(0x63962be6), SkBits2Float(0x 272a812a), SkBits2Float(0x295b2d29), SkBits2Float(0x2a685568), SkBits2Float(0x68 295b2d)); // 2.25206e-21f, 5.54035e+21f, 2.36623e-15f, 4.86669e-14f, 2.06354e-1 3f, 3.19905e+24f
6293 path.conicTo(SkBits2Float(0x2a8c555b), SkBits2Float(0x081f2a21), SkBits2Float(0x 7bc00321), SkBits2Float(0x7a6a4b77), SkBits2Float(0x3a214726)); // 2.49282e-13f , 4.78968e-34f, 1.99397e+36f, 3.04132e+35f, 0.000615226f
6294 path.moveTo(SkBits2Float(0x8adf2028), SkBits2Float(0x3a219a3a)); // -2.14862e-3 2f, 0.000616464f
6295 path.quadTo(SkBits2Float(0x3ab38e28), SkBits2Float(0x29283ac2), SkBits2Float(0x2 be61d2a), SkBits2Float(0x812a4396)); // 0.0013699f, 3.73545e-14f, 1.63506e-12f, -3.12726e-38f
6296
6297 SkPath path2(path);
6298 testPathOpSkipAssert(reporter, path1, path2, (SkPathOp) 1, filename);
6299 }
6300
6301 // crbug.com/627689
6302 static void fuzz763_5a(skiatest::Reporter* reporter, const char* filename) {
6303 SkPath path;
6304 path.setFillType((SkPath::FillType) 1);
6305 path.moveTo(SkBits2Float(0x38bd8610), SkBits2Float(0x00000000)); // 9.03719e-05 f, 0
6306 path.conicTo(SkBits2Float(0x4183d871), SkBits2Float(0x41fea321), SkBits2Float(0x b700ff00), SkBits2Float(0x4240b8b8), SkBits2Float(0x3b058283)); // 16.4807f, 31 .8297f, -7.68877e-06f, 48.1804f, 0.0020372f
6307 path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409 f, -8.80821e-05f
6308 path.conicTo(SkBits2Float(0x3a455ec8), SkBits2Float(0xb8b8b8b3), SkBits2Float(0x 38b2418d), SkBits2Float(0xb730d014), SkBits2Float(0x3f7ffff3)); // 0.000752908f , -8.80821e-05f, 8.49991e-05f, -1.05389e-05f, 0.999999f
6309 path.quadTo(SkBits2Float(0x3a51246a), SkBits2Float(0xb6da45a3), SkBits2Float(0x3 8bc5c3c), SkBits2Float(0x00000000)); // 0.000797814f, -6.50501e-06f, 8.98172e-0 5f, 0
6310 path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409 f, -8.80821e-05f
6311 path.quadTo(SkBits2Float(0x39a32d2d), SkBits2Float(0x00000000), SkBits2Float(0xb 8a13a00), SkBits2Float(0x00000000)); // 0.000311234f, 0, -7.68788e-05f, 0
6312 path.lineTo(SkBits2Float(0x3a3a3ab8), SkBits2Float(0xb8b8b8b8)); // 0.000710409 f, -8.80821e-05f
6313 path.quadTo(SkBits2Float(0x39ba814c), SkBits2Float(0xb838fed2), SkBits2Float(0x0 0000000), SkBits2Float(0x00000000)); // 0.00035573f, -4.41063e-05f, 0, 0
6314 path.lineTo(SkBits2Float(0x38bd8610), SkBits2Float(0x00000000)); // 9.03719e-05 f, 0
6315 path.close();
6316
6317 SkPath path1(path);
6318 path.reset();
6319 path.setFillType((SkPath::FillType) 0);
6320
6321 SkPath path2(path);
6322 testPathOp(reporter, path1, path2, (SkPathOp) 4, filename);
6323 }
6324
6325 // crbug.com/627401
6326 static void fuzz763_2a(skiatest::Reporter* reporter, const char* filename) {
6327 SkPath path;
6328 path.setFillType((SkPath::FillType) 1);
6329
6330 SkPath path1(path);
6331 path.reset();
6332 path.setFillType((SkPath::FillType) 0);
6333 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6334 path.quadTo(SkBits2Float(0x3e484500), SkBits2Float(0x164f3a30), SkBits2Float(0x4 9484801), SkBits2Float(0x7d0100c8)); // 0.195576f, 1.67397e-25f, 820352, 1.0717 2e+37f
6335 path.conicTo(SkBits2Float(0xff7f36fd), SkBits2Float(0x3e647d01), SkBits2Float(0x 0c00f430), SkBits2Float(0x486b6448), SkBits2Float(0x00484848)); // -3.39239e+38 f, 0.223133f, 9.93424e-32f, 241041, 6.63809e-39f
6336 path.lineTo(SkBits2Float(0x4f4f557d), SkBits2Float(0x48480112)); // 3.47849e+09 f, 204804
6337 path.lineTo(SkBits2Float(0xf40c01ff), SkBits2Float(0x45008000)); // -4.43702e+3 1f, 2056
6338 path.moveTo(SkBits2Float(0x4bfffa00), SkBits2Float(0x7d4ac859)); // 3.35514e+07 f, 1.68465e+37f
6339 path.conicTo(SkBits2Float(0x7d014f3e), SkBits2Float(0x00f4ff01), SkBits2Float(0x 6b64480c), SkBits2Float(0x48484848), SkBits2Float(0x557d0100)); // 1.07426e+37f , 2.24993e-38f, 2.75975e+26f, 205089, 1.73863e+13f
6340
6341 SkPath path2(path);
6342 testPathOpSkipAssert(reporter, path1, path2, (SkPathOp) 0, filename);
6343 }
6344
6345 // crbug.com/627761
6346 static void fuzz763_2b(skiatest::Reporter* reporter, const char* filename) {
6347 SkPath path;
6348 path.setFillType((SkPath::FillType) 1);
6349
6350 SkPath path1(path);
6351 path.reset();
6352 path.setFillType((SkPath::FillType) 0);
6353 path.moveTo(SkBits2Float(0x5b292d55), SkBits2Float(0x212a8c55)); // 4.76191e+16 f, 5.7784e-19f
6354 path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f , 1.64987e+07f
6355 path.lineTo(SkBits2Float(0x2a8ced7a), SkBits2Float(0x21081f21)); // 2.50338e-13 f, 4.61198e-19f
6356 path.conicTo(SkBits2Float(0x6a3a7bc0), SkBits2Float(0x4721ed7a), SkBits2Float(0x 282a3a21), SkBits2Float(0x3a21df28), SkBits2Float(0x4f9a3a8a)); // 5.63611e+25f , 41453.5f, 9.4495e-15f, 0.000617492f, 5.17506e+09f
6357 path.lineTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f , 1.64987e+07f
6358 path.close();
6359 path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f , 1.64987e+07f
6360 path.cubicTo(SkBits2Float(0x273ac23a), SkBits2Float(0x1d2a2928), SkBits2Float(0x 63962be6), SkBits2Float(0x272a812a), SkBits2Float(0x295b2d29), SkBits2Float(0x29 685568)); // 2.5918e-15f, 2.25206e-21f, 5.54035e+21f, 2.36623e-15f, 4.86669e-14 f, 5.15884e-14f
6361 path.lineTo(SkBits2Float(0x081f2a21), SkBits2Float(0x7bc00321)); // 4.78968e-34 f, 1.99397e+36f
6362 path.lineTo(SkBits2Float(0x282a3a21), SkBits2Float(0x3a21df28)); // 9.4495e-15f , 0.000617492f
6363 path.lineTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f , 1.64987e+07f
6364 path.close();
6365 path.moveTo(SkBits2Float(0x3b21081f), SkBits2Float(0x4b7bc003)); // 0.00245715f , 1.64987e+07f
6366 path.quadTo(SkBits2Float(0x8a4fc29a), SkBits2Float(0x3ab3283a), SkBits2Float(0x1 d2a2928), SkBits2Float(0x43962be6)); // -1.00033e-32f, 0.00136686f, 2.25206e-21 f, 300.343f
6367 path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16 f, 3.71718e-14f
6368 path.conicTo(SkBits2Float(0x1e2ab03a), SkBits2Float(0x2920213b), SkBits2Float(0x 3b3ac527), SkBits2Float(0xc422333b), SkBits2Float(0x6c2a9f1f)); // 9.03617e-21f , 3.5556e-14f, 0.00284989f, -648.8f, 8.25075e+26f
6369 path.quadTo(SkBits2Float(0xc25d2757), SkBits2Float(0x3a705921), SkBits2Float(0x2 a105152), SkBits2Float(0x28d91210)); // -55.2884f, 0.000916855f, 1.2818e-13f, 2 .40997e-14f
6370 path.quadTo(SkBits2Float(0x68295b2d), SkBits2Float(0x2d296855), SkBits2Float(0x2 a8c555b), SkBits2Float(0x081f2a21)); // 3.19905e+24f, 9.6297e-12f, 2.49282e-13f , 4.78968e-34f
6371 path.lineTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16 f, 3.71718e-14f
6372 path.close();
6373 path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16 f, 3.71718e-14f
6374 path.conicTo(SkBits2Float(0x6a4b7bc0), SkBits2Float(0x2a8ced7a), SkBits2Float(0x 21081f21), SkBits2Float(0xcb7bc003), SkBits2Float(0x47ed7a6a)); // 6.14991e+25f , 2.50338e-13f, 4.61198e-19f, -1.64987e+07f, 121589
6375 path.lineTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16 f, 3.71718e-14f
6376 path.close();
6377 path.moveTo(SkBits2Float(0x5b2d2a81), SkBits2Float(0x29276829)); // 4.87419e+16 f, 3.71718e-14f
6378 path.quadTo(SkBits2Float(0xdf28282a), SkBits2Float(0x2d8a3a21), SkBits2Float(0x5 b682b68), SkBits2Float(0x5b292d55)); // -1.2117e+19f, 1.57146e-11f, 6.53499e+16 f, 4.76191e+16f
6379 path.lineTo(SkBits2Float(0x2a212a8c), SkBits2Float(0x0321081f)); // 1.43144e-13 f, 4.7323e-37f
6380 path.conicTo(SkBits2Float(0x7a6a4b7b), SkBits2Float(0x212a8ced), SkBits2Float(0x 0321081f), SkBits2Float(0x6a3a7bc0), SkBits2Float(0x3a21477a)); // 3.04132e+35f , 5.77848e-19f, 4.7323e-37f, 5.63611e+25f, 0.000615231f
6381 path.moveTo(SkBits2Float(0x21df2828), SkBits2Float(0x9a3a8a3a)); // 1.51217e-18 f, -3.85756e-23f
6382 path.quadTo(SkBits2Float(0x3ab38a28), SkBits2Float(0x28273ac2), SkBits2Float(0xe 61d2a29), SkBits2Float(0x2a63962b)); // 0.00136978f, 9.2831e-15f, -1.85547e+23f , 2.02138e-13f
6383 path.conicTo(SkBits2Float(0x2d29272a), SkBits2Float(0x5568295b), SkBits2Float(0x 5b2d2968), SkBits2Float(0x5b2d6829), SkBits2Float(0x212a8c55)); // 9.61523e-12f , 1.5954e+13f, 4.87407e+16f, 4.88097e+16f, 5.7784e-19f
6384 path.moveTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f , 6.14991e+25f
6385 path.conicTo(SkBits2Float(0x3a2147ed), SkBits2Float(0xdf28282a), SkBits2Float(0x 3a8a3a21), SkBits2Float(0x8a284f9a), SkBits2Float(0x3ac23ab3)); // 0.000615238f , -1.2117e+19f, 0.00105459f, -8.10388e-33f, 0.00148185f
6386 path.lineTo(SkBits2Float(0x0321081f), SkBits2Float(0x6a4b7bc0)); // 4.7323e-37f , 6.14991e+25f
6387 path.close();
6388
6389 SkPath path2(path);
6390 testPathOpSkipAssert(reporter, path1, path2, (SkPathOp) 4, filename);
6391 }
6392
6393 static void fuzz763_2c(skiatest::Reporter* reporter, const char* filename) {
6394 SkPath path;
6395 path.setFillType((SkPath::FillType) 1);
6396
6397 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x36344a4a)); // 0, 2.68653e -06f
6398 path.cubicTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000), SkBits2Float(0x 364a4a4a), SkBits2Float(0x364a4a4a), SkBits2Float(0x00000000), SkBits2Float(0x00 000000)); // 0, 0, 3.01436e-06f, 3.01436e-06f, 0, 0
6399 path.lineTo(SkBits2Float(0x364a4a4a), SkBits2Float(0x00000000)); // 3.01436e-06 f, 0
6400 path.cubicTo(SkBits2Float(0x364a30f0), SkBits2Float(0x344ac7fb), SkBits2Float(0x 3656d432), SkBits2Float(0x34cabb48), SkBits2Float(0x367031a9), SkBits2Float(0x35 1802f1)); // 3.01288e-06f, 1.88855e-07f, 3.2012e-06f, 3.77617e-07f, 3.57917e-06 f, 5.66287e-07f
6401 path.cubicTo(SkBits2Float(0x36a7b150), SkBits2Float(0x35ab09db), SkBits2Float(0x 371874ed), SkBits2Float(0x3604f2c7), SkBits2Float(0x3784e0c7), SkBits2Float(0x36 344a51)); // 4.99763e-06f, 1.27434e-06f, 9.08713e-06f, 1.98108e-06f, 1.58403e-0 5f, 2.68653e-06f
6402 path.cubicTo(SkBits2Float(0x3743dc9a), SkBits2Float(0x36344a4f), SkBits2Float(0x 36fbef33), SkBits2Float(0x36344a4e), SkBits2Float(0x36604a35), SkBits2Float(0x36 344a4c)); // 1.16743e-05f, 2.68653e-06f, 7.50823e-06f, 2.68653e-06f, 3.34218e-0 6f, 2.68653e-06f
6403 path.cubicTo(SkBits2Float(0x36531715), SkBits2Float(0x36344a4c), SkBits2Float(0x 3645e3f5), SkBits2Float(0x36344a4b), SkBits2Float(0x3638b0d4), SkBits2Float(0x36 344a4b)); // 3.14549e-06f, 2.68653e-06f, 2.9488e-06f, 2.68653e-06f, 2.75211e-06 f, 2.68653e-06f
6404 path.cubicTo(SkBits2Float(0x35f64120), SkBits2Float(0x36344a4b), SkBits2Float(0x 35764124), SkBits2Float(0x36344a4a), SkBits2Float(0x00000000), SkBits2Float(0x36 344a4a)); // 1.83474e-06f, 2.68653e-06f, 9.17369e-07f, 2.68653e-06f, 0, 2.68653 e-06f
6405 path.close();
6406 SkPath path1(path);
6407 path.reset();
6408 path.setFillType((SkPath::FillType) 0);
6409 path.moveTo(SkBits2Float(0x00000000), SkBits2Float(0x00000000)); // 0, 0
6410 path.cubicTo(SkBits2Float(0x1931204a), SkBits2Float(0x2ba1a14a), SkBits2Float(0x 4a4a08ff), SkBits2Float(0x4a4a08ff), SkBits2Float(0x4a4a4a34), SkBits2Float(0x4a 4a4a4a)); // 9.15721e-24f, 1.14845e-12f, 3.31014e+06f, 3.31014e+06f, 3.31432e+0 6f, 3.31432e+06f
6411 path.moveTo(SkBits2Float(0x000010a1), SkBits2Float(0x19312000)); // 5.96533e-42 f, 9.15715e-24f
6412 path.cubicTo(SkBits2Float(0x4a4a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0x a14a4a4a), SkBits2Float(0x08ff2ba1), SkBits2Float(0x08ff4a4a), SkBits2Float(0x4a 344a4a)); // 3.31432e+06f, 3.31432e+06f, -6.85386e-19f, 1.53575e-33f, 1.53647e- 33f, 2.95387e+06f
6413 path.cubicTo(SkBits2Float(0x544a4a4a), SkBits2Float(0x4a4a4a4a), SkBits2Float(0x 2ba1a14a), SkBits2Float(0x4e4a08ff), SkBits2Float(0x4a4a4a4a), SkBits2Float(0xa1 a181ff)); // 3.47532e+12f, 3.31432e+06f, 1.14845e-12f, 8.47397e+08f, 3.31432e+0 6f, -1.09442e-18f
6414 SkPath path2(path);
6415 testPathOpCheck(reporter, path1, path2, kReverseDifference_SkPathOp, filenam e, true);
6045 } 6416 }
6046 6417
6047 static struct TestDesc failTests[] = { 6418 static struct TestDesc failTests[] = {
6419 TEST(fuzz763_2c),
6420 TEST(fuzz763_2b),
6421 TEST(fuzz763_2a),
6422 TEST(fuzz763_5a),
6423 TEST(fuzz763_3a),
6424 TEST(fuzz763_1a),
6425 TEST(fuzz763_1b),
6426 TEST(fuzz763_1c),
6048 TEST(fuzz763_2), 6427 TEST(fuzz763_2),
6049 TEST(fuzz763_5), 6428 TEST(fuzz763_5),
6050 TEST(fuzz763_3), 6429 TEST(fuzz763_3),
6051 TEST(fuzz763_4), 6430 TEST(fuzz763_4),
6052 TEST(fuzz763_9), 6431 TEST(fuzz763_9),
6053 TEST(fuzz1450_1), 6432 TEST(fuzz1450_1),
6054 TEST(fuzz1450_0), 6433 TEST(fuzz1450_0),
6055 TEST(bug597926_0), 6434 TEST(bug597926_0),
6056 TEST(fuzz535151), 6435 TEST(fuzz535151),
6057 TEST(fuzz753_91), 6436 TEST(fuzz753_91),
6058 TEST(fuzz714), 6437 TEST(fuzz714),
6059 TEST(fuzz487a), 6438 TEST(fuzz487a),
6060 TEST(fuzz433), 6439 TEST(fuzz433),
6061 TEST(fuzz1), 6440 TEST(fuzz1),
6062 TEST(fuzz487b), 6441 TEST(fuzz487b),
6063 TEST(fuzz433b), 6442 TEST(fuzz433b),
6064 TEST(bufferOverflow), 6443 TEST(bufferOverflow),
6065 }; 6444 };
6066 6445
6067 static const size_t failTestCount = SK_ARRAY_COUNT(failTests); 6446 static const size_t failTestCount = SK_ARRAY_COUNT(failTests);
6068 6447
6069 DEF_TEST(PathOpsFailOp, reporter) { 6448 DEF_TEST(PathOpsFailOp, reporter) {
6070 #if DEBUG_SHOW_TEST_NAME 6449 #if DEBUG_SHOW_TEST_NAME
6071 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH); 6450 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
6072 #endif 6451 #endif
6073 RunTestSet(reporter, failTests, failTestCount, nullptr, nullptr, nullptr, fa lse); 6452 RunTestSet(reporter, failTests, failTestCount, nullptr, nullptr, nullptr, fa lse);
6074 } 6453 }
6454
6455 static struct TestDesc repTests[] = {
6456 TEST(loops44i),
6457 TEST(loops45i),
6458 TEST(loops46i),
6459 };
6460
6461 DEF_TEST(PathOpsRepOp, reporter) {
6462 for (int index = 0; index < 2; ++index)
6463 RunTestSet(reporter, repTests, SK_ARRAY_COUNT(repTests), nullptr, nullptr, n ullptr, false);
6464 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698