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

Side by Side Diff: tests/PathOpsOpTest.cpp

Issue 1854333002: give up if huge paths have unresolvable coincidence (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: give up if huge paths have unresolvable coincidences Created 4 years, 8 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
« no previous file with comments | « src/pathops/SkPathOpsCommon.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 5774 matching lines...) Expand 10 before | Expand all | Expand 10 after
5785 path.lineTo(SkBits2Float(0x42112d68), SkBits2Float(0xcf223cbf)); // 36.2943f, - 2.72189e+09f 5785 path.lineTo(SkBits2Float(0x42112d68), SkBits2Float(0xcf223cbf)); // 36.2943f, - 2.72189e+09f
5786 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 5786 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
5787 path.lineTo(SkBits2Float(0x424a99e0), SkBits2Float(0xcf223cc0)); // 50.6503f, - 2.72189e+09f 5787 path.lineTo(SkBits2Float(0x424a99e0), SkBits2Float(0xcf223cc0)); // 50.6503f, - 2.72189e+09f
5788 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 5788 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
5789 path.lineTo(SkBits2Float(0x40f8fbe0), SkBits2Float(0xcf223cc0)); // 7.78075f, - 2.72189e+09f 5789 path.lineTo(SkBits2Float(0x40f8fbe0), SkBits2Float(0xcf223cc0)); // 7.78075f, - 2.72189e+09f
5790 5790
5791 SkPath path2(path); 5791 SkPath path2(path);
5792 testPathFailOp(reporter, path1, path2, (SkPathOp) 2, filename); 5792 testPathFailOp(reporter, path1, path2, (SkPathOp) 2, filename);
5793 } 5793 }
5794 5794
5795 static void bug597926_0(skiatest::Reporter* reporter, const char* filename) {
5796 SkPath path;
5797 path.setFillType((SkPath::FillType) 0);
5798 path.moveTo(SkBits2Float(0x43b38000), SkBits2Float(0x433e0000)); // 359, 190
5799 path.lineTo(SkBits2Float(0x40c00000), SkBits2Float(0x449ce000)); // 6, 1255
5800 path.cubicTo(SkBits2Float(0x438c0000), SkBits2Float(0x4497a000), SkBits2Float(0x 43e40000), SkBits2Float(0x44750000), SkBits2Float(0x41000000), SkBits2Float(0x44 aa2000)); // 280, 1213, 456, 980, 8, 1361
5801 path.moveTo(SkBits2Float(0x43290000), SkBits2Float(0x4431c000)); // 169, 711
5802 path.lineTo(SkBits2Float(0xd987d6ba), SkBits2Float(0xd93d0ad4)); // -4.7794e+15 f, -3.32567e+15f
5803 path.conicTo(SkBits2Float(0x43cc8000), SkBits2Float(0x445b8000), SkBits2Float(0x d888b096), SkBits2Float(0xd9a1ebfa), SkBits2Float(0x3ebcb199)); // 409, 878, -1 .20234e+15f, -5.69712e+15f, 0.368542f
5804 path.cubicTo(SkBits2Float(0x43c00000), SkBits2Float(0x443a8000), SkBits2Float(0x 42380000), SkBits2Float(0x4421c000), SkBits2Float(0x42500000), SkBits2Float(0x44 8ca000)); // 384, 746, 46, 647, 52, 1125
5805 path.quadTo(SkBits2Float(0x43948000), SkBits2Float(0x42ac0000), SkBits2Float(0x4 3880000), SkBits2Float(0x4487e000)); // 297, 86, 272, 1087
5806 SkPath path1(path);
5807 path.reset();
5808 path.setFillType((SkPath::FillType) 0);
5809 path.moveTo(SkBits2Float(0xc51d735c), SkBits2Float(0xc49db029)); // -2519.21f, -1261.51f
5810 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
5811 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
5812 path.quadTo(SkBits2Float(0xc51bf7eb), SkBits2Float(0xc49cf010), SkBits2Float(0xc 51ba866), SkBits2Float(0xc49cb9e6)); // -2495.49f, -1255.5f, -2490.52f, -1253.8 1f
5813 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
5814 SkPath path2(path);
5815 testPathFailOp(reporter, path1, path2, (SkPathOp) 1, filename);
5816 }
5817
5795 static struct TestDesc failTests[] = { 5818 static struct TestDesc failTests[] = {
5819 TEST(bug597926_0),
5796 TEST(fuzz535151), 5820 TEST(fuzz535151),
5797 TEST(fuzz753_91), 5821 TEST(fuzz753_91),
5798 TEST(fuzz714), 5822 TEST(fuzz714),
5799 TEST(fuzz487a), 5823 TEST(fuzz487a),
5800 TEST(fuzz433), 5824 TEST(fuzz433),
5801 TEST(fuzz1), 5825 TEST(fuzz1),
5802 TEST(fuzz487b), 5826 TEST(fuzz487b),
5803 TEST(fuzz433b), 5827 TEST(fuzz433b),
5804 TEST(bufferOverflow), 5828 TEST(bufferOverflow),
5805 }; 5829 };
5806 5830
5807 static const size_t failTestCount = SK_ARRAY_COUNT(failTests); 5831 static const size_t failTestCount = SK_ARRAY_COUNT(failTests);
5808 5832
5809 DEF_TEST(PathOpsFailOp, reporter) { 5833 DEF_TEST(PathOpsFailOp, reporter) {
5810 #if DEBUG_SHOW_TEST_NAME 5834 #if DEBUG_SHOW_TEST_NAME
5811 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH); 5835 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH);
5812 #endif 5836 #endif
5813 RunTestSet(reporter, failTests, failTestCount, nullptr, nullptr, nullptr, fa lse); 5837 RunTestSet(reporter, failTests, failTestCount, nullptr, nullptr, nullptr, fa lse);
5814 } 5838 }
OLDNEW
« no previous file with comments | « src/pathops/SkPathOpsCommon.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698