Index: tests/PathOpsAngleIdeas.cpp |
diff --git a/tests/PathOpsAngleIdeas.cpp b/tests/PathOpsAngleIdeas.cpp |
index 901cab2bb5202a75dabc02ee922d766085752096..1a2bce77f208afbeefe824dc96c6b405b5f90811 100755 |
--- a/tests/PathOpsAngleIdeas.cpp |
+++ b/tests/PathOpsAngleIdeas.cpp |
@@ -6,8 +6,8 @@ |
*/ |
#include "PathOpsTestCommon.h" |
#include "SkIntersections.h" |
+#include "SkOpContour.h" |
#include "SkOpSegment.h" |
-#include "SkPathOpsTriangle.h" |
#include "SkRandom.h" |
#include "SkTArray.h" |
#include "SkTSort.h" |
@@ -18,12 +18,12 @@ static bool gPathOpsAngleIdeasEnableBruteCheck = false; |
class PathOpsAngleTester { |
public: |
- static int ConvexHullOverlaps(const SkOpAngle& lh, const SkOpAngle& rh) { |
- return lh.convexHullOverlaps(rh); |
+ static int ConvexHullOverlaps(SkOpAngle& lh, SkOpAngle& rh) { |
+ return lh.convexHullOverlaps(&rh); |
} |
- static int EndsIntersect(const SkOpAngle& lh, const SkOpAngle& rh) { |
- return lh.endsIntersect(rh); |
+ static int EndsIntersect(SkOpAngle& lh, SkOpAngle& rh) { |
+ return lh.endsIntersect(&rh); |
} |
}; |
@@ -406,28 +406,29 @@ static bool bruteForceCheck(skiatest::Reporter* reporter, const SkDQuad& quad1, |
return ccw == upperRange.ccw; |
} |
-class PathOpsSegmentTester { |
-public: |
- static void ConstructQuad(SkOpSegment* segment, SkPoint shortQuad[3]) { |
- segment->debugConstructQuad(shortQuad); |
- } |
-}; |
- |
-static void makeSegment(const SkDQuad& quad, SkPoint shortQuad[3], SkOpSegment* result) { |
+static void makeSegment(SkOpContour* contour, const SkDQuad& quad, SkPoint shortQuad[3], |
+ SkChunkAlloc* allocator) { |
shortQuad[0] = quad[0].asSkPoint(); |
shortQuad[1] = quad[1].asSkPoint(); |
shortQuad[2] = quad[2].asSkPoint(); |
- PathOpsSegmentTester::ConstructQuad(result, shortQuad); |
+ contour->addQuad(shortQuad, allocator); |
} |
static void testQuadAngles(skiatest::Reporter* reporter, const SkDQuad& quad1, const SkDQuad& quad2, |
- int testNo) { |
+ int testNo, SkChunkAlloc* allocator) { |
SkPoint shortQuads[2][3]; |
- SkOpSegment seg[2]; |
- makeSegment(quad1, shortQuads[0], &seg[0]); |
- makeSegment(quad2, shortQuads[1], &seg[1]); |
- int realOverlap = PathOpsAngleTester::ConvexHullOverlaps(*seg[0].debugLastAngle(), |
- *seg[1].debugLastAngle()); |
+ |
+ SkOpContour contour; |
+ SkOpGlobalState state(NULL PATH_OPS_DEBUG_PARAMS(&contour)); |
+ contour.init(&state, false, false); |
+ makeSegment(&contour, quad1, shortQuads[0], allocator); |
+ makeSegment(&contour, quad1, shortQuads[1], allocator); |
+ SkOpSegment* seg1 = contour.first(); |
+ seg1->debugAddAngle(0, 1, allocator); |
+ SkOpSegment* seg2 = seg1->next(); |
+ seg2->debugAddAngle(0, 1, allocator); |
+ int realOverlap = PathOpsAngleTester::ConvexHullOverlaps(*seg1->debugLastAngle(), |
+ *seg2->debugLastAngle()); |
const SkDPoint& origin = quad1[0]; |
REPORTER_ASSERT(reporter, origin == quad2[0]); |
double a1s = atan2(origin.fY - quad1[1].fY, quad1[1].fX - origin.fX); |
@@ -545,25 +546,27 @@ static void testQuadAngles(skiatest::Reporter* reporter, const SkDQuad& quad1, c |
} |
if (overlap < 0) { |
SkDEBUGCODE(int realEnds =) |
- PathOpsAngleTester::EndsIntersect(*seg[0].debugLastAngle(), |
- *seg[1].debugLastAngle()); |
+ PathOpsAngleTester::EndsIntersect(*seg1->debugLastAngle(), |
+ *seg2->debugLastAngle()); |
SkASSERT(realEnds == (firstInside ? 1 : 0)); |
} |
bruteForce(reporter, quad1, quad2, firstInside); |
} |
DEF_TEST(PathOpsAngleOverlapHullsOne, reporter) { |
+ SkChunkAlloc allocator(4096); |
// gPathOpsAngleIdeasVerbose = true; |
const SkDQuad quads[] = { |
{{{939.4808349609375, 914.355224609375}, {-357.7921142578125, 590.842529296875}, {736.8936767578125, -350.717529296875}}}, |
{{{939.4808349609375, 914.355224609375}, {-182.85418701171875, 634.4552001953125}, {-509.62615966796875, 576.1182861328125}}} |
}; |
for (int index = 0; index < (int) SK_ARRAY_COUNT(quads); index += 2) { |
- testQuadAngles(reporter, quads[index], quads[index + 1], 0); |
+ testQuadAngles(reporter, quads[index], quads[index + 1], 0, &allocator); |
} |
} |
DEF_TEST(PathOpsAngleOverlapHulls, reporter) { |
+ SkChunkAlloc allocator(4096); |
if (!gPathOpsAngleIdeasVerbose) { // takes a while to run -- so exclude it by default |
return; |
} |
@@ -587,7 +590,7 @@ DEF_TEST(PathOpsAngleOverlapHulls, reporter) { |
if (i.used() > 1) { |
continue; |
} |
- testQuadAngles(reporter, quad1, quad2, index); |
+ testQuadAngles(reporter, quad1, quad2, index, &allocator); |
} |
} |