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

Side by Side Diff: tests/PathOpsOpTest.cpp

Issue 1037953004: add conics to path ops (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fix linux build Created 5 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
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 #define TEST(name) { name, #name } 10 #define TEST(name) { name, #name }
(...skipping 3777 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698