DEF_TEST(PathOpsAngleCircle, reporter) { SkSTArenaAlloc<4096> allocator; SkOpContourHead contour; SkOpGlobalState state(&contour, &allocator SkDEBUGPARAMS(false) SkDEBUGPARAMS(nullptr)); contour.init(&state, false, false); for (int index = 0; index < circleDataSetSize; ++index) { CircleData& data = circleDataSet[index]; for (int idx2 = 0; idx2 < data.fPtCount; ++idx2) { data.fShortPts[idx2] = data.fPts.fPts[idx2].asSkPoint(); } switch (data.fPtCount) { case 2: contour.addLine(data.fShortPts); break; case 3: contour.addQuad(data.fShortPts); break; case 4: contour.addCubic(data.fShortPts); break; } } SkOpSegment* first = contour.first(); first->debugAddAngle(0, 1); SkOpSegment* next = first->next(); next->debugAddAngle(0, 1); PathOpsAngleTester::Orderable(*first->debugLastAngle(), *next->debugLastAngle()); }
SkOpSegment* SkOpContour::undoneSegment(SkOpSpanBase** startPtr, SkOpSpanBase** endPtr) { SkOpSegment* segment = &fHead; do { if (segment->done()) { continue; } segment->undoneSpan(startPtr, endPtr); return segment; } while ((segment = segment->next())); return nullptr; }
SkOpSpan* SkOpContour::undoneSpan() { SkOpSegment* testSegment = &fHead; do { if (testSegment->done()) { continue; } return testSegment->undoneSpan(); } while ((testSegment = testSegment->next())); fDone = true; return nullptr; }