shape ops work in progress
git-svn-id: http://skia.googlecode.com/svn/trunk@7898 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/Intersection/SimplifyAngle_Test.cpp b/experimental/Intersection/SimplifyAngle_Test.cpp
index 9b25851..e83a52f 100644
--- a/experimental/Intersection/SimplifyAngle_Test.cpp
+++ b/experimental/Intersection/SimplifyAngle_Test.cpp
@@ -230,10 +230,19 @@
{SkPath::kMove_Verb }
};
+static const segmentWithT oneOffTest4[] = {
+ {SkPath::kCubic_Verb, {{1,2}, {1,3}, {1,0}, {5,3}}, {0.134792, 0}},
+ {SkPath::kCubic_Verb, {{0,1}, {3,5}, {2,1}, {3,1}}, {0.134792094, 0}},
+ {SkPath::kCubic_Verb, {{0,1}, {3,5}, {2,1}, {3,1}}, {0.134792094, 0.551812363}},
+ {SkPath::kCubic_Verb, {{1,2}, {1,3}, {1,0}, {5,3}}, {0.134792, 0.333333333}},
+ {SkPath::kMove_Verb }
+};
+
static const segmentWithT* oneOffTests[] = {
oneOffTest1,
oneOffTest2,
oneOffTest3,
+ oneOffTest4,
};
static const size_t oneOffTestCount = sizeof(oneOffTests) / sizeof(oneOffTests[0]);
@@ -259,6 +268,49 @@
SkDebugf("%s finished\n", __FUNCTION__);
}
+#if 0 // seems too complicated for this to be useful (didn't finish writing/debugging this)
+// this (trys to) take a pair of curves, construct segments/spans, and verify that they sort correctly
+static void oneOffTestNew() {
+ const segmentWithT* segPtr = oneOffTest4;
+ SimplifyAngleTest::Segment segOne, segTwo;
+ segOne.init(segPtr[0].pts, segPtr[0].verb, false, false);
+ segTwo.init(segPtr[1].pts, segPtr[1].verb, false, false);
+ int index = 0;
+ do {
+ int next = index + 1;
+ if (segPtr[index].verb == SkPath::kMove_Verb) {
+ break;
+ }
+ SkPoint sub[4];
+ (*SegmentSubDivide[segPtr[index].verb])(segPtr[index].pts, segPtr[index].ts[0],
+ segPtr[index].ts[1], sub);
+ if (memcmp(segPtr[index].pts, segPtr[0].pts, sizeof(SkPoint) * (segPtr[index].verb + 1) == 0) {
+ segOne.addT(&segTwo, sub[0], segPtr[index].ts[0]);
+ segOne.addT(&segTwo, sub[segPtr[index].verb], segPtr[index].ts[1]);
+ } else {
+ segTwo.addT(&segOne, sub[0], segPtr[index].ts[0]);
+ segTwo.addT(&v, sub[segPtr[index].verb], segPtr[index].ts[1]);
+ }
+ } while (true);
+ SimplifyAngleTest::Angle lesser, greater;
+ do {
+ int next = index + 1;
+ if (segPtr[next].verb == SkPath::kMove_Verb) {
+ break;
+ }
+ SkPoint one[4], two[4];
+ bool use1 = memcmp(segPtr[index].pts, segPtr[0].pts, sizeof(SkPoint) * (segPtr[index].verb + 1) == 0;
+ lesser.set(segPtr[index].pts, segPtr[index].verb, use1 ? &segOne : &segTwo, index, next, dummy);
+ use1 = memcmp(segPtr[next].pts, segPtr[0].pts, sizeof(SkPoint) * (segPtr[next].verb + 1) == 0;
+ greater.set(segPtr[next].pts, segPtr[next].verb, use1 ? &segOne : &segTwo, index, next, dummy);
+ bool result = lesser < greater;
+ SkASSERT(result);
+ index = next;
+ } while (true);
+ SkDebugf("%s finished\n", __FUNCTION__);
+}
+#endif
+
static void (*tests[])(bool) = {
oneOffTest,
testSegments,