| Index: src/pathops/SkPathOpsDebug.cpp
|
| diff --git a/src/pathops/SkPathOpsDebug.cpp b/src/pathops/SkPathOpsDebug.cpp
|
| index 1f2b01333aa0bf9a875f430a68225ea11639622c..56813b8b1f207171e05c2ad0a2e25ff3323e0f1b 100644
|
| --- a/src/pathops/SkPathOpsDebug.cpp
|
| +++ b/src/pathops/SkPathOpsDebug.cpp
|
| @@ -171,15 +171,15 @@ void SkOpAngle::debugOne(bool functionHeader) const {
|
|
|
| #if DEBUG_ANGLE
|
| void SkOpAngle::debugSameAs(const SkOpAngle* compare) const {
|
| - SK_DEBUGBREAK(fSegment == compare->fSegment);
|
| + SK_ALWAYSBREAK(fSegment == compare->fSegment);
|
| const SkOpSpan& startSpan = fSegment->span(fStart);
|
| const SkOpSpan& oStartSpan = fSegment->span(compare->fStart);
|
| - SK_DEBUGBREAK(startSpan.fToAngleIndex == oStartSpan.fToAngleIndex);
|
| - SK_DEBUGBREAK(startSpan.fFromAngleIndex == oStartSpan.fFromAngleIndex);
|
| + SK_ALWAYSBREAK(startSpan.fToAngleIndex == oStartSpan.fToAngleIndex);
|
| + SK_ALWAYSBREAK(startSpan.fFromAngleIndex == oStartSpan.fFromAngleIndex);
|
| const SkOpSpan& endSpan = fSegment->span(fEnd);
|
| const SkOpSpan& oEndSpan = fSegment->span(compare->fEnd);
|
| - SK_DEBUGBREAK(endSpan.fToAngleIndex == oEndSpan.fToAngleIndex);
|
| - SK_DEBUGBREAK(endSpan.fFromAngleIndex == oEndSpan.fFromAngleIndex);
|
| + SK_ALWAYSBREAK(endSpan.fToAngleIndex == oEndSpan.fToAngleIndex);
|
| + SK_ALWAYSBREAK(endSpan.fFromAngleIndex == oEndSpan.fFromAngleIndex);
|
| }
|
| #endif
|
|
|
| @@ -189,13 +189,13 @@ void SkOpAngle::debugValidateNext() const {
|
| const SkOpAngle* next = first;
|
| SkTDArray<const SkOpAngle*>(angles);
|
| do {
|
| - SK_DEBUGBREAK(next->fSegment->debugContains(next));
|
| + SK_ALWAYSBREAK(next->fSegment->debugContains(next));
|
| angles.push(next);
|
| next = next->next();
|
| if (next == first) {
|
| break;
|
| }
|
| - SK_DEBUGBREAK(!angles.contains(next));
|
| + SK_ALWAYSBREAK(!angles.contains(next));
|
| if (!next) {
|
| return;
|
| }
|
| @@ -205,7 +205,7 @@ void SkOpAngle::debugValidateNext() const {
|
| void SkOpAngle::debugValidateLoop() const {
|
| const SkOpAngle* first = this;
|
| const SkOpAngle* next = first;
|
| - SK_DEBUGBREAK(first->next() != first);
|
| + SK_ALWAYSBREAK(first->next() != first);
|
| int signSum = 0;
|
| int oppSum = 0;
|
| bool firstOperand = fSegment->operand();
|
| @@ -218,12 +218,12 @@ void SkOpAngle::debugValidateLoop() const {
|
| oppSum += operandsMatch ? segment->oppSign(next) : segment->spanSign(next);
|
| const SkOpSpan& span = segment->span(SkMin32(next->fStart, next->fEnd));
|
| if (segment->_xor()) {
|
| -// SK_DEBUGBREAK(span.fWindValue == 1);
|
| -// SK_DEBUGBREAK(span.fWindSum == SK_MinS32 || span.fWindSum == 1);
|
| +// SK_ALWAYSBREAK(span.fWindValue == 1);
|
| +// SK_ALWAYSBREAK(span.fWindSum == SK_MinS32 || span.fWindSum == 1);
|
| }
|
| if (segment->oppXor()) {
|
| - SK_DEBUGBREAK(span.fOppValue == 0 || abs(span.fOppValue) == 1);
|
| -// SK_DEBUGBREAK(span.fOppSum == SK_MinS32 || span.fOppSum == 0 || abs(span.fOppSum) == 1);
|
| + SK_ALWAYSBREAK(span.fOppValue == 0 || abs(span.fOppValue) == 1);
|
| +// SK_ALWAYSBREAK(span.fOppSum == SK_MinS32 || span.fOppSum == 0 || abs(span.fOppSum) == 1);
|
| }
|
| next = next->next();
|
| if (!next) {
|
| @@ -233,8 +233,8 @@ void SkOpAngle::debugValidateLoop() const {
|
| if (unorderable) {
|
| return;
|
| }
|
| - SK_DEBUGBREAK(!signSum || fSegment->_xor());
|
| - SK_DEBUGBREAK(!oppSum || fSegment->oppXor());
|
| + SK_ALWAYSBREAK(!signSum || fSegment->_xor());
|
| + SK_ALWAYSBREAK(!oppSum || fSegment->oppXor());
|
| int lastWinding;
|
| int lastOppWinding;
|
| int winding;
|
| @@ -244,16 +244,16 @@ void SkOpAngle::debugValidateLoop() const {
|
| const SkOpSpan& span = segment->span(SkMin32(next->fStart, next->fEnd));
|
| winding = span.fWindSum;
|
| if (winding != SK_MinS32) {
|
| -// SK_DEBUGBREAK(winding != 0);
|
| - SK_DEBUGBREAK(SkPathOpsDebug::ValidWind(winding));
|
| +// SK_ALWAYSBREAK(winding != 0);
|
| + SK_ALWAYSBREAK(SkPathOpsDebug::ValidWind(winding));
|
| lastWinding = winding;
|
| int diffWinding = segment->spanSign(next);
|
| if (!segment->_xor()) {
|
| - SK_DEBUGBREAK(diffWinding != 0);
|
| + SK_ALWAYSBREAK(diffWinding != 0);
|
| bool sameSign = (winding > 0) == (diffWinding > 0);
|
| winding -= sameSign ? diffWinding : -diffWinding;
|
| - SK_DEBUGBREAK(SkPathOpsDebug::ValidWind(winding));
|
| - SK_DEBUGBREAK(abs(winding) <= abs(lastWinding));
|
| + SK_ALWAYSBREAK(SkPathOpsDebug::ValidWind(winding));
|
| + SK_ALWAYSBREAK(abs(winding) <= abs(lastWinding));
|
| if (!sameSign) {
|
| SkTSwap(winding, lastWinding);
|
| }
|
| @@ -261,12 +261,12 @@ void SkOpAngle::debugValidateLoop() const {
|
| lastOppWinding = oppWinding = span.fOppSum;
|
| if (oppWinding != SK_MinS32 && !segment->oppXor()) {
|
| int oppDiffWinding = segment->oppSign(next);
|
| -// SK_DEBUGBREAK(abs(oppDiffWinding) <= abs(diffWinding) || segment->_xor());
|
| +// SK_ALWAYSBREAK(abs(oppDiffWinding) <= abs(diffWinding) || segment->_xor());
|
| if (oppDiffWinding) {
|
| bool oppSameSign = (oppWinding > 0) == (oppDiffWinding > 0);
|
| oppWinding -= oppSameSign ? oppDiffWinding : -oppDiffWinding;
|
| - SK_DEBUGBREAK(SkPathOpsDebug::ValidWind(oppWinding));
|
| - SK_DEBUGBREAK(abs(oppWinding) <= abs(lastOppWinding));
|
| + SK_ALWAYSBREAK(SkPathOpsDebug::ValidWind(oppWinding));
|
| + SK_ALWAYSBREAK(abs(oppWinding) <= abs(lastOppWinding));
|
| if (!oppSameSign) {
|
| SkTSwap(oppWinding, lastOppWinding);
|
| }
|
| @@ -275,13 +275,13 @@ void SkOpAngle::debugValidateLoop() const {
|
| firstOperand = segment->operand();
|
| break;
|
| }
|
| - SK_DEBUGBREAK(span.fOppSum == SK_MinS32);
|
| + SK_ALWAYSBREAK(span.fOppSum == SK_MinS32);
|
| next = next->next();
|
| } while (next != first);
|
| if (winding == SK_MinS32) {
|
| return;
|
| }
|
| - SK_DEBUGBREAK(oppWinding == SK_MinS32 || SkPathOpsDebug::ValidWind(oppWinding));
|
| + SK_ALWAYSBREAK(oppWinding == SK_MinS32 || SkPathOpsDebug::ValidWind(oppWinding));
|
| first = next;
|
| next = next->next();
|
| do {
|
| @@ -292,27 +292,27 @@ void SkOpAngle::debugValidateLoop() const {
|
| if (operandsMatch) {
|
| if (!segment->_xor()) {
|
| winding -= segment->spanSign(next);
|
| - SK_DEBUGBREAK(winding != lastWinding);
|
| - SK_DEBUGBREAK(SkPathOpsDebug::ValidWind(winding));
|
| + SK_ALWAYSBREAK(winding != lastWinding);
|
| + SK_ALWAYSBREAK(SkPathOpsDebug::ValidWind(winding));
|
| }
|
| if (!segment->oppXor()) {
|
| int oppDiffWinding = segment->oppSign(next);
|
| if (oppWinding != SK_MinS32) {
|
| oppWinding -= oppDiffWinding;
|
| - SK_DEBUGBREAK(SkPathOpsDebug::ValidWind(oppWinding));
|
| + SK_ALWAYSBREAK(SkPathOpsDebug::ValidWind(oppWinding));
|
| } else {
|
| - SK_DEBUGBREAK(oppDiffWinding == 0);
|
| + SK_ALWAYSBREAK(oppDiffWinding == 0);
|
| }
|
| }
|
| } else {
|
| if (!segment->oppXor()) {
|
| winding -= segment->oppSign(next);
|
| - SK_DEBUGBREAK(SkPathOpsDebug::ValidWind(winding));
|
| + SK_ALWAYSBREAK(SkPathOpsDebug::ValidWind(winding));
|
| }
|
| if (!segment->_xor()) {
|
| oppWinding -= segment->spanSign(next);
|
| - SK_DEBUGBREAK(oppWinding != lastOppWinding);
|
| - SK_DEBUGBREAK(SkPathOpsDebug::ValidWind(oppWinding));
|
| + SK_ALWAYSBREAK(oppWinding != lastOppWinding);
|
| + SK_ALWAYSBREAK(SkPathOpsDebug::ValidWind(oppWinding));
|
| }
|
| }
|
| bool useInner = SkOpSegment::UseInnerWinding(lastWinding, winding);
|
| @@ -333,12 +333,12 @@ void SkOpAngle::debugValidateLoop() const {
|
| }
|
| if (oppWinding != SK_MinS32) {
|
| if (span.fOppSum != SK_MinS32) {
|
| - SK_DEBUGBREAK(span.fOppSum == oppSumWinding || segment->oppXor() || segment->_xor());
|
| + SK_ALWAYSBREAK(span.fOppSum == oppSumWinding || segment->oppXor() || segment->_xor());
|
| }
|
| } else {
|
| - SK_DEBUGBREAK(!firstOperand);
|
| - SK_DEBUGBREAK(!segment->operand());
|
| - SK_DEBUGBREAK(!span.fOppValue);
|
| + SK_ALWAYSBREAK(!firstOperand);
|
| + SK_ALWAYSBREAK(!segment->operand());
|
| + SK_ALWAYSBREAK(!span.fOppValue);
|
| }
|
| next = next->next();
|
| } while (next != first);
|
| @@ -356,14 +356,14 @@ bool SkOpSegment::controlsContainedByEnds(int tStart, int tEnd) const {
|
| #endif
|
|
|
| #if DEBUG_CONCIDENT
|
| -// SK_DEBUGBREAK if pair has not already been added
|
| +// SK_ALWAYSBREAK if pair has not already been added
|
| void SkOpSegment::debugAddTPair(double t, const SkOpSegment& other, double otherT) const {
|
| for (int i = 0; i < fTs.count(); ++i) {
|
| if (fTs[i].fT == t && fTs[i].fOther == &other && fTs[i].fOtherT == otherT) {
|
| return;
|
| }
|
| }
|
| - SK_DEBUGBREAK(0);
|
| + SK_ALWAYSBREAK(0);
|
| }
|
| #endif
|
|
|
| @@ -372,7 +372,7 @@ void SkOpSegment::debugCheckPointsEqualish(int tStart, int tEnd) const {
|
| const SkPoint& basePt = fTs[tStart].fPt;
|
| while (++tStart < tEnd) {
|
| const SkPoint& cmpPt = fTs[tStart].fPt;
|
| - SK_DEBUGBREAK(SkDPoint::ApproximatelyEqual(basePt, cmpPt));
|
| + SK_ALWAYSBREAK(SkDPoint::ApproximatelyEqual(basePt, cmpPt));
|
| }
|
| }
|
| #endif
|
| @@ -461,7 +461,7 @@ void SkOpSegment::debugShowActiveSpans() const {
|
| if (fTs[i].fDone) {
|
| continue;
|
| }
|
| - SK_DEBUGBREAK(i < fTs.count() - 1);
|
| + SK_ALWAYSBREAK(i < fTs.count() - 1);
|
| #if DEBUG_ACTIVE_SPANS_SHORT_FORM
|
| if (lastId == fID && lastT == fTs[i].fT) {
|
| continue;
|
| @@ -502,7 +502,7 @@ void SkOpSegment::debugShowNewWinding(const char* fun, const SkOpSpan& span, int
|
| for (int vIndex = 1; vIndex <= SkPathOpsVerbToPoints(fVerb); ++vIndex) {
|
| SkDebugf(" %1.9g,%1.9g", fPts[vIndex].fX, fPts[vIndex].fY);
|
| }
|
| - SK_DEBUGBREAK(&span == &span.fOther->fTs[span.fOtherIndex].fOther->
|
| + SK_ALWAYSBREAK(&span == &span.fOther->fTs[span.fOtherIndex].fOther->
|
| fTs[span.fOther->fTs[span.fOtherIndex].fOtherIndex]);
|
| SkDebugf(") t=%1.9g [%d] (%1.9g,%1.9g) tEnd=%1.9g newWindSum=%d windSum=",
|
| span.fT, span.fOther->fTs[span.fOtherIndex].fOtherIndex, pt.fX, pt.fY,
|
| @@ -523,7 +523,7 @@ void SkOpSegment::debugShowNewWinding(const char* fun, const SkOpSpan& span, int
|
| for (int vIndex = 1; vIndex <= SkPathOpsVerbToPoints(fVerb); ++vIndex) {
|
| SkDebugf(" %1.9g,%1.9g", fPts[vIndex].fX, fPts[vIndex].fY);
|
| }
|
| - SK_DEBUGBREAK(&span == &span.fOther->fTs[span.fOtherIndex].fOther->
|
| + SK_ALWAYSBREAK(&span == &span.fOther->fTs[span.fOtherIndex].fOther->
|
| fTs[span.fOther->fTs[span.fOtherIndex].fOtherIndex]);
|
| SkDebugf(") t=%1.9g [%d] (%1.9g,%1.9g) tEnd=%1.9g newWindSum=%d newOppSum=%d oppSum=",
|
| span.fT, span.fOther->fTs[span.fOtherIndex].fOtherIndex, pt.fX, pt.fY,
|
| @@ -569,9 +569,9 @@ int SkOpSegment::debugShowWindingValues(int slotCount, int ofInterest) const {
|
| void SkOpSegment::debugValidate() const {
|
| #if DEBUG_VALIDATE
|
| int count = fTs.count();
|
| - SK_DEBUGBREAK(count >= 2);
|
| - SK_DEBUGBREAK(fTs[0].fT == 0);
|
| - SK_DEBUGBREAK(fTs[count - 1].fT == 1);
|
| + SK_ALWAYSBREAK(count >= 2);
|
| + SK_ALWAYSBREAK(fTs[0].fT == 0);
|
| + SK_ALWAYSBREAK(fTs[count - 1].fT == 1);
|
| int done = 0;
|
| double t = -1;
|
| const SkOpSpan* last = NULL;
|
| @@ -579,33 +579,33 @@ void SkOpSegment::debugValidate() const {
|
| bool hasLoop = false;
|
| for (int i = 0; i < count; ++i) {
|
| const SkOpSpan& span = fTs[i];
|
| - SK_DEBUGBREAK(t <= span.fT);
|
| + SK_ALWAYSBREAK(t <= span.fT);
|
| t = span.fT;
|
| int otherIndex = span.fOtherIndex;
|
| const SkOpSegment* other = span.fOther;
|
| - SK_DEBUGBREAK(other != this || fVerb == SkPath::kCubic_Verb);
|
| + SK_ALWAYSBREAK(other != this || fVerb == SkPath::kCubic_Verb);
|
| const SkOpSpan& otherSpan = other->fTs[otherIndex];
|
| - SK_DEBUGBREAK(otherSpan.fPt == span.fPt);
|
| - SK_DEBUGBREAK(otherSpan.fOtherT == t);
|
| - SK_DEBUGBREAK(&fTs[i] == &otherSpan.fOther->fTs[otherSpan.fOtherIndex]);
|
| + SK_ALWAYSBREAK(otherSpan.fPt == span.fPt);
|
| + SK_ALWAYSBREAK(otherSpan.fOtherT == t);
|
| + SK_ALWAYSBREAK(&fTs[i] == &otherSpan.fOther->fTs[otherSpan.fOtherIndex]);
|
| done += span.fDone;
|
| if (last) {
|
| bool tsEqual = last->fT == span.fT;
|
| bool tsPreciselyEqual = precisely_equal(last->fT, span.fT);
|
| - SK_DEBUGBREAK(!tsEqual || tsPreciselyEqual);
|
| + SK_ALWAYSBREAK(!tsEqual || tsPreciselyEqual);
|
| bool pointsEqual = last->fPt == span.fPt;
|
| bool pointsNearlyEqual = AlmostEqualUlps(last->fPt, span.fPt);
|
| #if 0 // bufferOverflow test triggers this
|
| - SK_DEBUGBREAK(!tsPreciselyEqual || pointsNearlyEqual);
|
| + SK_ALWAYSBREAK(!tsPreciselyEqual || pointsNearlyEqual);
|
| #endif
|
| -// SK_DEBUGBREAK(!last->fTiny || !tsPreciselyEqual || span.fTiny || tinyTFound);
|
| - SK_DEBUGBREAK(last->fTiny || tsPreciselyEqual || !pointsEqual || hasLoop);
|
| - SK_DEBUGBREAK(!last->fTiny || pointsEqual);
|
| - SK_DEBUGBREAK(!last->fTiny || last->fDone);
|
| - SK_DEBUGBREAK(!last->fSmall || pointsNearlyEqual);
|
| - SK_DEBUGBREAK(!last->fSmall || last->fDone);
|
| -// SK_DEBUGBREAK(!last->fSmall || last->fTiny);
|
| -// SK_DEBUGBREAK(last->fTiny || !pointsEqual || last->fDone == span.fDone);
|
| +// SK_ALWAYSBREAK(!last->fTiny || !tsPreciselyEqual || span.fTiny || tinyTFound);
|
| + SK_ALWAYSBREAK(last->fTiny || tsPreciselyEqual || !pointsEqual || hasLoop);
|
| + SK_ALWAYSBREAK(!last->fTiny || pointsEqual);
|
| + SK_ALWAYSBREAK(!last->fTiny || last->fDone);
|
| + SK_ALWAYSBREAK(!last->fSmall || pointsNearlyEqual);
|
| + SK_ALWAYSBREAK(!last->fSmall || last->fDone);
|
| +// SK_ALWAYSBREAK(!last->fSmall || last->fTiny);
|
| +// SK_ALWAYSBREAK(last->fTiny || !pointsEqual || last->fDone == span.fDone);
|
| if (last->fTiny) {
|
| tinyTFound |= !tsPreciselyEqual;
|
| } else {
|
| @@ -615,7 +615,7 @@ void SkOpSegment::debugValidate() const {
|
| last = &span;
|
| hasLoop |= last->fLoop;
|
| }
|
| - SK_DEBUGBREAK(done == fDoneSpans);
|
| + SK_ALWAYSBREAK(done == fDoneSpans);
|
| if (fAngles.count() ) {
|
| fAngles.begin()->debugValidateLoop();
|
| }
|
|
|