| Index: src/pathops/SkPathOpsDebug.cpp
|
| diff --git a/src/pathops/SkPathOpsDebug.cpp b/src/pathops/SkPathOpsDebug.cpp
|
| index 56813b8b1f207171e05c2ad0a2e25ff3323e0f1b..9d82dffc1a4fef15f572db753c167813fc114275 100644
|
| --- a/src/pathops/SkPathOpsDebug.cpp
|
| +++ b/src/pathops/SkPathOpsDebug.cpp
|
| @@ -104,68 +104,7 @@ void SkPathOpsDebug::ShowPath(const SkPath& one, const SkPath& two, SkPathOp op,
|
|
|
| #if DEBUG_SORT
|
| void SkOpAngle::debugLoop() const {
|
| - const SkOpAngle* first = this;
|
| - const SkOpAngle* next = this;
|
| - do {
|
| - next->debugOne(true);
|
| - SkDebugf("\n");
|
| - next = next->fNext;
|
| - } while (next && next != first);
|
| -}
|
| -
|
| -void SkOpAngle::debugOne(bool functionHeader) const {
|
| -// fSegment->debugValidate();
|
| - const SkOpSpan& mSpan = fSegment->span(SkMin32(fStart, fEnd));
|
| - if (functionHeader) {
|
| - SkDebugf("%s ", __FUNCTION__);
|
| - }
|
| - SkDebugf("[%d", fSegment->debugID());
|
| -#if DEBUG_ANGLE
|
| - SkDebugf("/%d", fID);
|
| -#endif
|
| - SkDebugf("] next=");
|
| - if (fNext) {
|
| - SkDebugf("%d", fNext->fSegment->debugID());
|
| -#if DEBUG_ANGLE
|
| - SkDebugf("/%d", fNext->fID);
|
| -#endif
|
| - } else {
|
| - SkDebugf("?");
|
| - }
|
| - SkDebugf(" sect=%d/%d ", fSectorStart, fSectorEnd);
|
| - SkDebugf(" s=%1.9g [%d] e=%1.9g [%d]", fSegment->span(fStart).fT, fStart,
|
| - fSegment->span(fEnd).fT, fEnd);
|
| - SkDebugf(" sgn=%d windVal=%d", sign(), mSpan.fWindValue);
|
| -
|
| -#if DEBUG_WINDING
|
| - SkDebugf(" windSum=");
|
| - SkPathOpsDebug::WindingPrintf(mSpan.fWindSum);
|
| -#endif
|
| - if (mSpan.fOppValue != 0 || mSpan.fOppSum != SK_MinS32) {
|
| - SkDebugf(" oppVal=%d", mSpan.fOppValue);
|
| -#if DEBUG_WINDING
|
| - SkDebugf(" oppSum=");
|
| - SkPathOpsDebug::WindingPrintf(mSpan.fOppSum);
|
| -#endif
|
| - }
|
| - if (mSpan.fDone) {
|
| - SkDebugf(" done");
|
| - }
|
| - if (unorderable()) {
|
| - SkDebugf(" unorderable");
|
| - }
|
| - if (small()) {
|
| - SkDebugf(" small");
|
| - }
|
| - if (mSpan.fTiny) {
|
| - SkDebugf(" tiny");
|
| - }
|
| - if (fSegment->operand()) {
|
| - SkDebugf(" operand");
|
| - }
|
| - if (fStop) {
|
| - SkDebugf(" stop");
|
| - }
|
| + dumpLoop();
|
| }
|
| #endif
|
|
|
| @@ -174,12 +113,12 @@ void SkOpAngle::debugSameAs(const SkOpAngle* compare) const {
|
| SK_ALWAYSBREAK(fSegment == compare->fSegment);
|
| const SkOpSpan& startSpan = fSegment->span(fStart);
|
| const SkOpSpan& oStartSpan = fSegment->span(compare->fStart);
|
| - SK_ALWAYSBREAK(startSpan.fToAngleIndex == oStartSpan.fToAngleIndex);
|
| - SK_ALWAYSBREAK(startSpan.fFromAngleIndex == oStartSpan.fFromAngleIndex);
|
| + SK_ALWAYSBREAK(startSpan.fToAngle == oStartSpan.fToAngle);
|
| + SK_ALWAYSBREAK(startSpan.fFromAngle == oStartSpan.fFromAngle);
|
| const SkOpSpan& endSpan = fSegment->span(fEnd);
|
| const SkOpSpan& oEndSpan = fSegment->span(compare->fEnd);
|
| - SK_ALWAYSBREAK(endSpan.fToAngleIndex == oEndSpan.fToAngleIndex);
|
| - SK_ALWAYSBREAK(endSpan.fFromAngleIndex == oEndSpan.fFromAngleIndex);
|
| + SK_ALWAYSBREAK(endSpan.fToAngle == oEndSpan.fToAngle);
|
| + SK_ALWAYSBREAK(endSpan.fFromAngle == oEndSpan.fFromAngle);
|
| }
|
| #endif
|
|
|
| @@ -189,7 +128,7 @@ void SkOpAngle::debugValidateNext() const {
|
| const SkOpAngle* next = first;
|
| SkTDArray<const SkOpAngle*>(angles);
|
| do {
|
| - SK_ALWAYSBREAK(next->fSegment->debugContains(next));
|
| +// SK_ALWAYSBREAK(next->fSegment->debugContains(next));
|
| angles.push(next);
|
| next = next->next();
|
| if (next == first) {
|
| @@ -377,22 +316,6 @@ void SkOpSegment::debugCheckPointsEqualish(int tStart, int tEnd) const {
|
| }
|
| #endif
|
|
|
| -#if DEBUG_VALIDATE
|
| -bool SkOpSegment::debugContains(const SkOpAngle* angle) const {
|
| - for (int index = 0; index < fAngles.count(); ++index) {
|
| - if (&fAngles[index] == angle) {
|
| - return true;
|
| - }
|
| - }
|
| - for (int index = 0; index < fSingletonAngles.count(); ++index) {
|
| - if (&fSingletonAngles[index] == angle) {
|
| - return true;
|
| - }
|
| - }
|
| - return false;
|
| -}
|
| -#endif
|
| -
|
| #if DEBUG_SWAP_TOP
|
| int SkOpSegment::debugInflections(int tStart, int tEnd) const {
|
| if (fVerb != SkPath::kCubic_Verb) {
|
| @@ -404,6 +327,19 @@ int SkOpSegment::debugInflections(int tStart, int tEnd) const {
|
| }
|
| #endif
|
|
|
| +const SkOpAngle* SkOpSegment::debugLastAngle() const {
|
| + const SkOpAngle* result = NULL;
|
| + for (int index = 0; index < count(); ++index) {
|
| + const SkOpSpan& span = this->span(index);
|
| + if (span.fToAngle) {
|
| + SkASSERT(!result);
|
| + result = span.fToAngle;
|
| + }
|
| + }
|
| + SkASSERT(result);
|
| + return result;
|
| +}
|
| +
|
| void SkOpSegment::debugReset() {
|
| fTs.reset();
|
| fAngles.reset();
|
| @@ -539,7 +475,7 @@ void SkOpSegment::debugShowNewWinding(const char* fun, const SkOpSpan& span, int
|
| } else {
|
| SkDebugf("%d", span.fWindSum);
|
| }
|
| - SkDebugf(" windValue=%d\n", span.fWindValue);
|
| + SkDebugf(" windValue=%d oppValue=%d\n", span.fWindValue, span.fOppValue);
|
| }
|
| #endif
|
|
|
| @@ -590,6 +526,7 @@ void SkOpSegment::debugValidate() const {
|
| SK_ALWAYSBREAK(&fTs[i] == &otherSpan.fOther->fTs[otherSpan.fOtherIndex]);
|
| done += span.fDone;
|
| if (last) {
|
| + SK_ALWAYSBREAK(last->fT != span.fT || last->fOther != span.fOther);
|
| bool tsEqual = last->fT == span.fT;
|
| bool tsPreciselyEqual = precisely_equal(last->fT, span.fT);
|
| SK_ALWAYSBREAK(!tsEqual || tsPreciselyEqual);
|
| @@ -616,8 +553,8 @@ void SkOpSegment::debugValidate() const {
|
| hasLoop |= last->fLoop;
|
| }
|
| SK_ALWAYSBREAK(done == fDoneSpans);
|
| - if (fAngles.count() ) {
|
| - fAngles.begin()->debugValidateLoop();
|
| - }
|
| +// if (fAngles.count() ) {
|
| +// fAngles.begin()->debugValidateLoop();
|
| +// }
|
| #endif
|
| }
|
|
|