OLD | NEW |
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 #define TEST(name) { name, #name } | 10 #define TEST(name) { name, #name } |
(...skipping 3777 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3788 path.moveTo(0,1); | 3788 path.moveTo(0,1); |
3789 path.cubicTo(0,3, 3,2, 5,2); | 3789 path.cubicTo(0,3, 3,2, 5,2); |
3790 path.close(); | 3790 path.close(); |
3791 pathB.setFillType(SkPath::kWinding_FillType); | 3791 pathB.setFillType(SkPath::kWinding_FillType); |
3792 pathB.moveTo(2,3); | 3792 pathB.moveTo(2,3); |
3793 pathB.cubicTo(2,5, 1,0, 3,0); | 3793 pathB.cubicTo(2,5, 1,0, 3,0); |
3794 pathB.close(); | 3794 pathB.close(); |
3795 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename); | 3795 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename); |
3796 } | 3796 } |
3797 | 3797 |
| 3798 static void cubicOp129(skiatest::Reporter* reporter, const char* filename) { |
| 3799 SkPath path, pathB; |
| 3800 path.setFillType(SkPath::kWinding_FillType); |
| 3801 path.moveTo(5,6); |
| 3802 path.cubicTo(3,4, 2,0, 2,1); |
| 3803 path.close(); |
| 3804 pathB.setFillType(SkPath::kWinding_FillType); |
| 3805 pathB.moveTo(0,2); |
| 3806 pathB.cubicTo(1,2, 6,5, 4,3); |
| 3807 pathB.close(); |
| 3808 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename); |
| 3809 } |
| 3810 |
| 3811 static void cubicOp130(skiatest::Reporter* reporter, const char* filename) { |
| 3812 SkPath path, pathB; |
| 3813 path.setFillType(SkPath::kWinding_FillType); |
| 3814 path.moveTo(5,6); |
| 3815 path.cubicTo(4,6, 3,0, 2,1); |
| 3816 path.close(); |
| 3817 pathB.setFillType(SkPath::kWinding_FillType); |
| 3818 pathB.moveTo(0,3); |
| 3819 pathB.cubicTo(1,2, 6,5, 6,4); |
| 3820 pathB.close(); |
| 3821 testPathOpCheck(reporter, path, pathB, kDifference_SkPathOp, filename, FLAGS
_runFail); |
| 3822 } |
| 3823 |
| 3824 static void cubicOp131(skiatest::Reporter* reporter, const char* filename) { |
| 3825 SkPath path, pathB; |
| 3826 path.setFillType(SkPath::kWinding_FillType); |
| 3827 path.moveTo(0,1); |
| 3828 path.cubicTo(3,4, 3,0, 6,2); |
| 3829 path.close(); |
| 3830 pathB.setFillType(SkPath::kWinding_FillType); |
| 3831 pathB.moveTo(0,3); |
| 3832 pathB.cubicTo(2,6, 1,0, 4,3); |
| 3833 pathB.close(); |
| 3834 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename); |
| 3835 } |
| 3836 |
| 3837 static void circlesOp1(skiatest::Reporter* reporter, const char* filename) { |
| 3838 SkPath path, pathB; |
| 3839 path.setFillType(SkPath::kWinding_FillType); |
| 3840 path.addCircle(0, 1, 2, SkPath::kCCW_Direction); |
| 3841 pathB.setFillType(SkPath::kWinding_FillType); |
| 3842 pathB.addCircle(0, 1, 1, SkPath::kCW_Direction); |
| 3843 testPathOp(reporter, path, pathB, kDifference_SkPathOp, filename); |
| 3844 } |
| 3845 |
| 3846 static void circlesOp2(skiatest::Reporter* reporter, const char* filename) { |
| 3847 SkPath path, pathB; |
| 3848 path.setFillType(SkPath::kWinding_FillType); |
| 3849 path.addCircle(0, 1, 4, SkPath::kCCW_Direction); |
| 3850 pathB.setFillType(SkPath::kWinding_FillType); |
| 3851 pathB.addCircle(0, 4, 3, SkPath::kCW_Direction); |
| 3852 testPathOp(reporter, path, pathB, kIntersect_SkPathOp, filename); |
| 3853 } |
| 3854 |
| 3855 static void rRect1x(skiatest::Reporter* reporter, const char* filename) { |
| 3856 SkPath path, pathB; |
| 3857 path.setFillType(SkPath::kEvenOdd_FillType); |
| 3858 path.moveTo(20.65f, 5.65f); |
| 3859 path.conicTo(20.65f, 1.13612f, 25.1404f, 0.65f, 0.888488f); |
| 3860 path.lineTo(25.65f, 0.65f); |
| 3861 path.lineTo(26.1596f, 0.67604f); |
| 3862 path.conicTo(30.65f, 1.13612f, 30.65f, 5.65f, 0.888488f); |
| 3863 path.lineTo(30.65f, 25.65f); |
| 3864 path.conicTo(30.65f, 20.65f, 25.65f, 20.65f, 0.707107f); |
| 3865 path.lineTo(20.65f, 20.65f); |
| 3866 path.lineTo(20.65f, 5.65f); |
| 3867 path.close(); |
| 3868 path.moveTo(20.65f, 20.65f); |
| 3869 path.lineTo(5.65f, 20.65f); |
| 3870 path.conicTo(0.65f, 20.65f, 0.65f, 25.65f, 0.707107f); |
| 3871 path.lineTo(0.65f, 45.65f); |
| 3872 path.conicTo(0.65f, 50.65f, 5.65f, 50.65f, 0.707107f); |
| 3873 path.lineTo(25.65f, 50.65f); |
| 3874 path.conicTo(30.65f, 50.65f, 30.65f, 45.65f, 0.707107f); |
| 3875 path.lineTo(30.65f, 25.65f); |
| 3876 path.conicTo(30.65f, 30.65f, 25.65f, 30.65f, 0.707107f); |
| 3877 path.conicTo(20.65f, 30.65f, 20.65f, 25.65f, 0.707107f); |
| 3878 path.lineTo(20.65f, 20.65f); |
| 3879 path.close(); |
| 3880 SkPath path1(path); |
| 3881 |
| 3882 path.reset(); |
| 3883 path.setFillType(SkPath::kWinding_FillType); |
| 3884 path.moveTo(20.65f, 45.65f); |
| 3885 path.lineTo(20.65f, 25.65f); |
| 3886 path.conicTo(20.65f, 20.65f, 25.65f, 20.65f, 0.707107f); |
| 3887 path.lineTo(45.65f, 20.65f); |
| 3888 path.conicTo(50.65f, 20.65f, 50.65f, 25.65f, 0.707107f); |
| 3889 path.lineTo(50.65f, 45.65f); |
| 3890 path.conicTo(50.65f, 50.65f, 45.65f, 50.65f, 0.707107f); |
| 3891 path.lineTo(25.65f, 50.65f); |
| 3892 path.conicTo(20.65f, 50.65f, 20.65f, 45.65f, 0.707107f); |
| 3893 path.close(); |
| 3894 SkPath path2(path); |
| 3895 |
| 3896 testPathOp(reporter, path1, path2, kDifference_SkPathOp, filename); |
| 3897 } |
| 3898 |
| 3899 |
3798 static void (*skipTest)(skiatest::Reporter* , const char* filename) = 0; | 3900 static void (*skipTest)(skiatest::Reporter* , const char* filename) = 0; |
3799 static void (*firstTest)(skiatest::Reporter* , const char* filename) = 0; | 3901 static void (*firstTest)(skiatest::Reporter* , const char* filename) = circlesOp
1; |
3800 static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0; | 3902 static void (*stopTest)(skiatest::Reporter* , const char* filename) = 0; |
3801 | 3903 |
3802 static struct TestDesc tests[] = { | 3904 static struct TestDesc tests[] = { |
| 3905 TEST(rRect1x), |
| 3906 TEST(circlesOp2), |
| 3907 TEST(circlesOp1), |
| 3908 TEST(cubicOp131), |
| 3909 TEST(cubicOp130), |
| 3910 TEST(cubicOp129), |
3803 TEST(cubicOp128), | 3911 TEST(cubicOp128), |
3804 TEST(cubicOp127), | 3912 TEST(cubicOp127), |
3805 TEST(cubicOp126), | 3913 TEST(cubicOp126), |
3806 TEST(cubicOp125), | 3914 TEST(cubicOp125), |
3807 TEST(cubicOp124), | 3915 TEST(cubicOp124), |
3808 TEST(loop6), | 3916 TEST(loop6), |
3809 TEST(loop5), | 3917 TEST(loop5), |
3810 TEST(cubicOp123), | 3918 TEST(cubicOp123), |
3811 TEST(cubicOp122), | 3919 TEST(cubicOp122), |
3812 TEST(cubicOp121), | 3920 TEST(cubicOp121), |
(...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4222 path.setFillType((SkPath::FillType) 0); | 4330 path.setFillType((SkPath::FillType) 0); |
4223 path.moveTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000)); | 4331 path.moveTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000)); |
4224 path.lineTo(SkBits2Float(0x435c0000), SkBits2Float(0x43660000)); | 4332 path.lineTo(SkBits2Float(0x435c0000), SkBits2Float(0x43660000)); |
4225 path.lineTo(SkBits2Float(0x42700000), SkBits2Float(0x42f00000)); | 4333 path.lineTo(SkBits2Float(0x42700000), SkBits2Float(0x42f00000)); |
4226 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42f00000)); | 4334 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x42f00000)); |
4227 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43660000)); | 4335 path.lineTo(SkBits2Float(0x64969569), SkBits2Float(0x43660000)); |
4228 path.lineTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000)); | 4336 path.lineTo(SkBits2Float(0x43200000), SkBits2Float(0x42700000)); |
4229 path.close(); | 4337 path.close(); |
4230 | 4338 |
4231 SkPath path2(path); | 4339 SkPath path2(path); |
4232 testPathFailOp(reporter, path1, path2, (SkPathOp) 2, filename); | 4340 testPathOpCheck(reporter, path1, path2, (SkPathOp) 2, filename, FLAGS_runFai
l); |
4233 } | 4341 } |
4234 | 4342 |
4235 static void fuzz1(skiatest::Reporter* reporter, const char* filename) { | 4343 static void fuzz1(skiatest::Reporter* reporter, const char* filename) { |
4236 SkPath path; | 4344 SkPath path; |
4237 path.setFillType((SkPath::FillType) 0); | 4345 path.setFillType((SkPath::FillType) 0); |
4238 path.moveTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000)); | 4346 path.moveTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000)); |
4239 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7
f800000), SkBits2Float(0x7f800000)); | 4347 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7
f800000), SkBits2Float(0x7f800000)); |
4240 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7
f800000), SkBits2Float(0x7f800000)); | 4348 path.quadTo(SkBits2Float(0x7f800000), SkBits2Float(0x7f800000), SkBits2Float(0x7
f800000), SkBits2Float(0x7f800000)); |
4241 path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0xf
fc00000), SkBits2Float(0x7f800000)); | 4349 path.quadTo(SkBits2Float(0xffc00000), SkBits2Float(0x7f800000), SkBits2Float(0xf
fc00000), SkBits2Float(0x7f800000)); |
4242 path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xf
f000001), SkBits2Float(0x7f800000)); | 4350 path.quadTo(SkBits2Float(0xff000001), SkBits2Float(0x7f800000), SkBits2Float(0xf
f000001), SkBits2Float(0x7f800000)); |
(...skipping 22 matching lines...) Expand all Loading... |
4265 }; | 4373 }; |
4266 | 4374 |
4267 static const size_t failTestCount = SK_ARRAY_COUNT(failTests); | 4375 static const size_t failTestCount = SK_ARRAY_COUNT(failTests); |
4268 | 4376 |
4269 DEF_TEST(PathOpsFailOp, reporter) { | 4377 DEF_TEST(PathOpsFailOp, reporter) { |
4270 #if DEBUG_SHOW_TEST_NAME | 4378 #if DEBUG_SHOW_TEST_NAME |
4271 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH); | 4379 strncpy(DEBUG_FILENAME_STRING, "", DEBUG_FILENAME_STRING_LENGTH); |
4272 #endif | 4380 #endif |
4273 RunTestSet(reporter, failTests, failTestCount, NULL, NULL, NULL, false); | 4381 RunTestSet(reporter, failTests, failTestCount, NULL, NULL, NULL, false); |
4274 } | 4382 } |
OLD | NEW |