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

Unified Diff: tests/PathOpsAngleIdeas.cpp

Issue 1037573004: cumulative pathops patch (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: fix pathopsinverse gm Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/pathops/SkReduceOrder.cpp ('k') | tests/PathOpsAngleTest.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
}
« no previous file with comments | « src/pathops/SkReduceOrder.cpp ('k') | tests/PathOpsAngleTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698