Index: tests/PathOpsTSectDebug.h |
diff --git a/tests/PathOpsTSectDebug.h b/tests/PathOpsTSectDebug.h |
index e28cba8bc266227b702b3a6296514f563dca3cd1..5780610c9b036c026239b7f90a60a155206f54b3 100644 |
--- a/tests/PathOpsTSectDebug.h |
+++ b/tests/PathOpsTSectDebug.h |
@@ -7,29 +7,27 @@ |
#include "SkPathOpsTSect.h" |
-template<typename TCurve> |
-const SkTSpan<TCurve>* SkTSect<TCurve>::debugSpan(int id) const { |
- const SkTSpan<TCurve>* test = fHead; |
- do { |
- if (test->debugID() == id) { |
- return test; |
- } |
- } while ((test = test->next())); |
-#ifndef SK_RELEASE |
- test = fOppSect->fHead; |
+template<typename TCurve, typename OppCurve> |
+void SkTCoincident<TCurve, OppCurve>::dump() const { |
+ SkDebugf("t=%1.9g pt=(%1.9g,%1.9g)%s\n", fPerpT, fPerpPt.fX, fPerpPt.fY, |
+ fCoincident ? " coincident" : ""); |
+} |
+ |
+template<typename TCurve, typename OppCurve> |
+const SkTSpan<TCurve, OppCurve>* SkTSect<TCurve, OppCurve>::debugSpan(int id) const { |
+ const SkTSpan<TCurve, OppCurve>* test = fHead; |
do { |
if (test->debugID() == id) { |
return test; |
} |
} while ((test = test->next())); |
-#endif |
return NULL; |
} |
-template<typename TCurve> |
-const SkTSpan<TCurve>* SkTSect<TCurve>::debugT(double t) const { |
- const SkTSpan<TCurve>* test = fHead; |
- const SkTSpan<TCurve>* closest = NULL; |
+template<typename TCurve, typename OppCurve> |
+const SkTSpan<TCurve, OppCurve>* SkTSect<TCurve, OppCurve>::debugT(double t) const { |
+ const SkTSpan<TCurve, OppCurve>* test = fHead; |
+ const SkTSpan<TCurve, OppCurve>* closest = NULL; |
double bestDist = DBL_MAX; |
do { |
if (between(test->fStartT, t, test->fEndT)) { |
@@ -45,15 +43,15 @@ const SkTSpan<TCurve>* SkTSect<TCurve>::debugT(double t) const { |
return closest; |
} |
-template<typename TCurve> |
-void SkTSect<TCurve>::dump() const { |
+template<typename TCurve, typename OppCurve> |
+void SkTSect<TCurve, OppCurve>::dump() const { |
dumpCommon(fHead); |
} |
extern int gDumpTSectNum; |
-template<typename TCurve> |
-void SkTSect<TCurve>::dumpBoth(SkTSect* opp) const { |
+template<typename TCurve, typename OppCurve> |
+void SkTSect<TCurve, OppCurve>::dumpBoth(SkTSect<OppCurve, TCurve>* opp) const { |
#if DEBUG_T_SECT_DUMP <= 2 |
#if DEBUG_T_SECT_DUMP == 2 |
SkDebugf("%d ", ++gDumpTSectNum); |
@@ -68,20 +66,20 @@ void SkTSect<TCurve>::dumpBoth(SkTSect* opp) const { |
this->dumpCurves(); |
} |
if (opp->fHead) { |
- PATH_OPS_DEBUG_CODE(opp->dumpCurves()); |
+ opp->dumpCurves(); |
} |
SkDebugf("</div>\n\n"); |
#endif |
} |
-template<typename TCurve> |
-void SkTSect<TCurve>::dumpBounds(int id) const { |
- const SkTSpan<TCurve>* bounded = debugSpan(id); |
+template<typename TCurve, typename OppCurve> |
+void SkTSect<TCurve, OppCurve>::dumpBounded(int id) const { |
+ const SkTSpan<TCurve, OppCurve>* bounded = debugSpan(id); |
if (!bounded) { |
SkDebugf("no span matches %d\n", id); |
return; |
} |
- const SkTSpan<TCurve>* test = bounded->debugOpp()->fHead; |
+ const SkTSpan<OppCurve, TCurve>* test = bounded->debugOpp()->fHead; |
do { |
if (test->findOppSpan(bounded)) { |
test->dump(); |
@@ -89,18 +87,26 @@ void SkTSect<TCurve>::dumpBounds(int id) const { |
} while ((test = test->next())); |
} |
-template<typename TCurve> |
-void SkTSect<TCurve>::dumpCoin() const { |
+template<typename TCurve, typename OppCurve> |
+void SkTSect<TCurve, OppCurve>::dumpBounds() const { |
+ const SkTSpan<TCurve, OppCurve>* test = fHead; |
+ do { |
+ test->dumpBounds(); |
+ } while ((test = test->next())); |
+} |
+ |
+template<typename TCurve, typename OppCurve> |
+void SkTSect<TCurve, OppCurve>::dumpCoin() const { |
dumpCommon(fCoincident); |
} |
-template<typename TCurve> |
-void SkTSect<TCurve>::dumpCoinCurves() const { |
+template<typename TCurve, typename OppCurve> |
+void SkTSect<TCurve, OppCurve>::dumpCoinCurves() const { |
dumpCommonCurves(fCoincident); |
} |
-template<typename TCurve> |
-void SkTSect<TCurve>::dumpCommon(const SkTSpan<TCurve>* test) const { |
+template<typename TCurve, typename OppCurve> |
+void SkTSect<TCurve, OppCurve>::dumpCommon(const SkTSpan<TCurve, OppCurve>* test) const { |
SkDebugf("id=%d", debugID()); |
if (!test) { |
SkDebugf(" (empty)"); |
@@ -112,36 +118,36 @@ void SkTSect<TCurve>::dumpCommon(const SkTSpan<TCurve>* test) const { |
} while ((test = test->next())); |
} |
-template<typename TCurve> |
-void SkTSect<TCurve>::dumpCommonCurves(const SkTSpan<TCurve>* test) const { |
+template<typename TCurve, typename OppCurve> |
+void SkTSect<TCurve, OppCurve>::dumpCommonCurves(const SkTSpan<TCurve, OppCurve>* test) const { |
do { |
test->fPart.dumpID(test->debugID()); |
} while ((test = test->next())); |
} |
-template<typename TCurve> |
-void SkTSect<TCurve>::dumpCurves() const { |
+template<typename TCurve, typename OppCurve> |
+void SkTSect<TCurve, OppCurve>::dumpCurves() const { |
dumpCommonCurves(fHead); |
} |
-template<typename TCurve> |
-const SkTSpan<TCurve>* SkTSpan<TCurve>::debugSpan(int id) const { |
- return PATH_OPS_DEBUG_RELEASE(fDebugSect->debugSpan(id), NULL); |
+template<typename TCurve, typename OppCurve> |
+const SkTSpan<TCurve, OppCurve>* SkTSpan<TCurve, OppCurve>::debugSpan(int id) const { |
+ return SkDEBUGRELEASE(fDebugSect->debugSpan(id), NULL); |
} |
-template<typename TCurve> |
-const SkTSpan<TCurve>* SkTSpan<TCurve>::debugT(double t) const { |
- return PATH_OPS_DEBUG_RELEASE(fDebugSect->debugT(t), NULL); |
+template<typename TCurve, typename OppCurve> |
+const SkTSpan<TCurve, OppCurve>* SkTSpan<TCurve, OppCurve>::debugT(double t) const { |
+ return SkDEBUGRELEASE(fDebugSect->debugT(t), NULL); |
} |
-template<typename TCurve> |
-void SkTSpan<TCurve>::dump() const { |
+template<typename TCurve, typename OppCurve> |
+void SkTSpan<TCurve, OppCurve>::dump() const { |
dumpID(); |
SkDebugf("=(%g,%g) [", fStartT, fEndT); |
- const SkTSpanBounded<TCurve>* testBounded = fBounded; |
+ const SkTSpanBounded<OppCurve, TCurve>* testBounded = fBounded; |
while (testBounded) { |
- const SkTSpan* span = testBounded->fBounded; |
- const SkTSpanBounded<TCurve>* next = testBounded->fNext; |
+ const SkTSpan<OppCurve, TCurve>* span = testBounded->fBounded; |
+ const SkTSpanBounded<OppCurve, TCurve>* next = testBounded->fNext; |
span->dumpID(); |
if (next) { |
SkDebugf(","); |
@@ -151,13 +157,30 @@ void SkTSpan<TCurve>::dump() const { |
SkDebugf("]"); |
} |
-template<typename TCurve> |
-void SkTSpan<TCurve>::dumpBounds(int id) const { |
- PATH_OPS_DEBUG_CODE(fDebugSect->dumpBounds(id)); |
+template<typename TCurve, typename OppCurve> |
+void SkTSpan<TCurve, OppCurve>::dumpBounded(int id) const { |
+ SkDEBUGCODE(fDebugSect->dumpBounded(id)); |
+} |
+ |
+template<typename TCurve, typename OppCurve> |
+void SkTSpan<TCurve, OppCurve>::dumpBounds() const { |
+ dumpID(); |
+ SkDebugf(" bounds=(%1.9g,%1.9g, %1.9g,%1.9g) boundsMax=%1.9g%s\n", |
+ fBounds.fLeft, fBounds.fTop, fBounds.fRight, fBounds.fBottom, fBoundsMax, |
+ fCollapsed ? " collapsed" : ""); |
+} |
+ |
+template<typename TCurve, typename OppCurve> |
+void SkTSpan<TCurve, OppCurve>::dumpCoin() const { |
+ dumpID(); |
+ SkDebugf(" coinStart "); |
+ fCoinStart.dump(); |
+ SkDebugf(" coinEnd "); |
+ fCoinEnd.dump(); |
} |
-template<typename TCurve> |
-void SkTSpan<TCurve>::dumpID() const { |
+template<typename TCurve, typename OppCurve> |
+void SkTSpan<TCurve, OppCurve>::dumpID() const { |
if (fCoinStart.isCoincident()) { |
SkDebugf("%c", '*'); |
} |