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

Side by Side Diff: tests/PathOpsDebug.cpp

Issue 1111333002: compute initial winding from projected rays (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: add missing test reference Created 5 years, 7 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 unified diff | Download patch
« no previous file with comments | « tests/PathOpsDVectorTest.cpp ('k') | tests/PathOpsExtendedTest.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2014 Google Inc. 2 * Copyright 2014 Google Inc.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #include "PathOpsTSectDebug.h" 8 #include "PathOpsTSectDebug.h"
9 #include "SkOpCoincidence.h" 9 #include "SkOpCoincidence.h"
10 #include "SkOpContour.h" 10 #include "SkOpContour.h"
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 } 291 }
292 292
293 const SkOpSegment* SkPathOpsDebug::DebugSpanSegment(const SkOpSpanBase* span, in t id) { 293 const SkOpSegment* SkPathOpsDebug::DebugSpanSegment(const SkOpSpanBase* span, in t id) {
294 return span->debugSegment(id); 294 return span->debugSegment(id);
295 } 295 }
296 296
297 const SkOpSpanBase* SkPathOpsDebug::DebugSpanSpan(const SkOpSpanBase* span, int id) { 297 const SkOpSpanBase* SkPathOpsDebug::DebugSpanSpan(const SkOpSpanBase* span, int id) {
298 return span->debugSpan(id); 298 return span->debugSpan(id);
299 } 299 }
300 300
301 void SkPathOpsDebug::DumpContours(SkTDArray<SkOpContour* >* contours) { 301 void SkOpContour::dumpContours() const {
302 int count = contours->count(); 302 SkOpContour* contour = this->globalState()->contourHead();
303 for (int index = 0; index < count; ++index) { 303 do {
304 (*contours)[index]->dump(); 304 contour->dump();
305 } 305 } while ((contour = contour->next()));
306 } 306 }
307 307
308 void SkPathOpsDebug::DumpContoursAll(SkTDArray<SkOpContour* >* contours) { 308 void SkOpContour::dumpContoursAll() const {
309 int count = contours->count(); 309 SkOpContour* contour = this->globalState()->contourHead();
310 for (int index = 0; index < count; ++index) { 310 do {
311 (*contours)[index]->dumpAll(); 311 contour->dumpAll();
312 } 312 } while ((contour = contour->next()));
313 } 313 }
314 314
315 void SkPathOpsDebug::DumpContoursAngles(const SkTDArray<SkOpContour* >* contours ) { 315 void SkOpContour::dumpContoursAngles() const {
316 int count = contours->count(); 316 SkOpContour* contour = this->globalState()->contourHead();
317 for (int index = 0; index < count; ++index) { 317 do {
318 (*contours)[index]->dumpAngles(); 318 contour->dumpAngles();
319 } 319 } while ((contour = contour->next()));
320 } 320 }
321 321
322 void SkPathOpsDebug::DumpContoursPts(const SkTDArray<SkOpContour* >* contours) { 322 void SkOpContour::dumpContoursPts() const {
323 int count = contours->count(); 323 SkOpContour* contour = this->globalState()->contourHead();
324 for (int index = 0; index < count; ++index) { 324 do {
325 (*contours)[index]->dumpPts(); 325 contour->dumpPts();
326 } 326 } while ((contour = contour->next()));
327 } 327 }
328 328
329 void SkPathOpsDebug::DumpContoursPt(const SkTDArray<SkOpContour* >* contours, in t segmentID) { 329 void SkOpContour::dumpContoursPt(int segmentID) const {
330 int count = contours->count(); 330 SkOpContour* contour = this->globalState()->contourHead();
331 for (int index = 0; index < count; ++index) { 331 do {
332 (*contours)[index]->dumpPt(segmentID); 332 contour->dumpPt(segmentID);
333 } 333 } while ((contour = contour->next()));
334 } 334 }
335 335
336 void SkPathOpsDebug::DumpContoursSegment(const SkTDArray<SkOpContour* >* contour s, 336 void SkOpContour::dumpContoursSegment(int segmentID) const {
337 int segmentID) { 337 SkOpContour* contour = this->globalState()->contourHead();
338 if (contours->count()) { 338 do {
339 (*contours)[0]->dumpSegment(segmentID); 339 contour->dumpSegment(segmentID);
340 } 340 } while ((contour = contour->next()));
341 } 341 }
342 342
343 void SkPathOpsDebug::DumpContoursSpan(const SkTDArray<SkOpContour* >* contours, 343 void SkOpContour::dumpContoursSpan(int spanID) const {
344 int spanID) { 344 SkOpContour* contour = this->globalState()->contourHead();
345 if (contours->count()) { 345 do {
346 (*contours)[0]->dumpSpan(spanID); 346 contour->dumpSpan(spanID);
347 } 347 } while ((contour = contour->next()));
348 } 348 }
349 349
350 void SkPathOpsDebug::DumpContoursSpans(const SkTDArray<SkOpContour* >* contours) { 350 void SkOpContour::dumpContoursSpans() const {
351 int count = contours->count(); 351 SkOpContour* contour = this->globalState()->contourHead();
352 for (int index = 0; index < count; ++index) { 352 do {
353 (*contours)[index]->dumpSpans(); 353 contour->dumpSpans();
354 } 354 } while ((contour = contour->next()));
355 } 355 }
356 356
357 template <typename TCurve, typename OppCurve> 357 template <typename TCurve, typename OppCurve>
358 const SkTSpan<TCurve, OppCurve>* DebugSpan(const SkTSect<TCurve, OppCurve>* sect , int id) { 358 const SkTSpan<TCurve, OppCurve>* DebugSpan(const SkTSect<TCurve, OppCurve>* sect , int id) {
359 return sect->debugSpan(id); 359 return sect->debugSpan(id);
360 } 360 }
361 361
362 void DontCallDebugSpan(int id); 362 void DontCallDebugSpan(int id);
363 void DontCallDebugSpan(int id) { // exists to instantiate the templates 363 void DontCallDebugSpan(int id) { // exists to instantiate the templates
364 SkDQuad quad; 364 SkDQuad quad;
(...skipping 356 matching lines...) Expand 10 before | Expand all | Expand 10 after
721 } 721 }
722 722
723 const SkOpPtT* SkOpAngle::debugPtT(int id) const { 723 const SkOpPtT* SkOpAngle::debugPtT(int id) const {
724 return this->segment()->debugPtT(id); 724 return this->segment()->debugPtT(id);
725 } 725 }
726 726
727 const SkOpSegment* SkOpAngle::debugSegment(int id) const { 727 const SkOpSegment* SkOpAngle::debugSegment(int id) const {
728 return this->segment()->debugSegment(id); 728 return this->segment()->debugSegment(id);
729 } 729 }
730 730
731 int SkOpAngle::debugSign() const {
732 SkASSERT(fStart->t() != fEnd->t());
733 return fStart->t() < fEnd->t() ? -1 : 1;
734 }
735
731 const SkOpSpanBase* SkOpAngle::debugSpan(int id) const { 736 const SkOpSpanBase* SkOpAngle::debugSpan(int id) const {
732 return this->segment()->debugSpan(id); 737 return this->segment()->debugSpan(id);
733 } 738 }
734 739
735 void SkOpAngle::dump() const { 740 void SkOpAngle::dump() const {
736 dumpOne(true); 741 dumpOne(true);
737 SkDebugf("\n"); 742 SkDebugf("\n");
738 } 743 }
739 744
740 void SkOpAngle::dumpOne(bool functionHeader) const { 745 void SkOpAngle::dumpOne(bool functionHeader) const {
741 // fSegment->debugValidate(); 746 // fSegment->debugValidate();
742 const SkOpSegment* segment = this->segment(); 747 const SkOpSegment* segment = this->segment();
743 const SkOpSpan& mSpan = *fStart->starter(fEnd); 748 const SkOpSpan& mSpan = *fStart->starter(fEnd);
744 if (functionHeader) { 749 if (functionHeader) {
745 SkDebugf("%s ", __FUNCTION__); 750 SkDebugf("%s ", __FUNCTION__);
746 } 751 }
747 SkDebugf("[%d", segment->debugID()); 752 SkDebugf("[%d", segment->debugID());
748 SkDebugf("/%d", debugID()); 753 SkDebugf("/%d", debugID());
749 SkDebugf("] next="); 754 SkDebugf("] next=");
750 if (fNext) { 755 if (fNext) {
751 SkDebugf("%d", fNext->fStart->segment()->debugID()); 756 SkDebugf("%d", fNext->fStart->segment()->debugID());
752 SkDebugf("/%d", fNext->debugID()); 757 SkDebugf("/%d", fNext->debugID());
753 } else { 758 } else {
754 SkDebugf("?"); 759 SkDebugf("?");
755 } 760 }
756 SkDebugf(" sect=%d/%d ", fSectorStart, fSectorEnd); 761 SkDebugf(" sect=%d/%d ", fSectorStart, fSectorEnd);
757 SkDebugf(" s=%1.9g [%d] e=%1.9g [%d]", fStart->t(), fStart->debugID(), 762 SkDebugf(" s=%1.9g [%d] e=%1.9g [%d]", fStart->t(), fStart->debugID(),
758 fEnd->t(), fEnd->debugID()); 763 fEnd->t(), fEnd->debugID());
759 SkDebugf(" sgn=%d windVal=%d", this->sign(), mSpan.windValue()); 764 SkDebugf(" sgn=%d windVal=%d", this->debugSign(), mSpan.windValue());
760 765
761 SkDebugf(" windSum="); 766 SkDebugf(" windSum=");
762 SkPathOpsDebug::WindingPrintf(mSpan.windSum()); 767 SkPathOpsDebug::WindingPrintf(mSpan.windSum());
763 if (mSpan.oppValue() != 0 || mSpan.oppSum() != SK_MinS32) { 768 if (mSpan.oppValue() != 0 || mSpan.oppSum() != SK_MinS32) {
764 SkDebugf(" oppVal=%d", mSpan.oppValue()); 769 SkDebugf(" oppVal=%d", mSpan.oppValue());
765 SkDebugf(" oppSum="); 770 SkDebugf(" oppSum=");
766 SkPathOpsDebug::WindingPrintf(mSpan.oppSum()); 771 SkPathOpsDebug::WindingPrintf(mSpan.oppSum());
767 } 772 }
768 if (mSpan.done()) { 773 if (mSpan.done()) {
769 SkDebugf(" done"); 774 SkDebugf(" done");
770 } 775 }
771 if (unorderable()) { 776 if (unorderable()) {
772 SkDebugf(" unorderable"); 777 SkDebugf(" unorderable");
773 } 778 }
774 if (segment->operand()) { 779 if (segment->operand()) {
775 SkDebugf(" operand"); 780 SkDebugf(" operand");
776 } 781 }
777 if (fStop) {
778 SkDebugf(" stop");
779 }
780 } 782 }
781 783
782 void SkOpAngle::dumpTo(const SkOpSegment* segment, const SkOpAngle* to) const { 784 void SkOpAngle::dumpTo(const SkOpSegment* segment, const SkOpAngle* to) const {
783 const SkOpAngle* first = this; 785 const SkOpAngle* first = this;
784 const SkOpAngle* next = this; 786 const SkOpAngle* next = this;
785 const char* indent = ""; 787 const char* indent = "";
786 do { 788 do {
787 SkDebugf("%s", indent); 789 SkDebugf("%s", indent);
788 next->dumpOne(false); 790 next->dumpOne(false);
789 if (segment == next->fStart->segment()) { 791 if (segment == next->fStart->segment()) {
(...skipping 264 matching lines...) Expand 10 before | Expand all | Expand 10 after
1054 } while (!span->final() && (span = span->upCast()->next())); 1056 } while (!span->final() && (span = span->upCast()->next()));
1055 } 1057 }
1056 1058
1057 void SkOpSegment::dumpCoin() const { 1059 void SkOpSegment::dumpCoin() const {
1058 const SkOpSpan* span = &fHead; 1060 const SkOpSpan* span = &fHead;
1059 do { 1061 do {
1060 span->dumpCoin(); 1062 span->dumpCoin();
1061 } while ((span = span->next()->upCastable())); 1063 } while ((span = span->next()->upCastable()));
1062 } 1064 }
1063 1065
1064 void SkOpSegment::dumpPts() const { 1066 void SkOpSegment::dumpPtsInner() const {
1065 int last = SkPathOpsVerbToPoints(fVerb); 1067 int last = SkPathOpsVerbToPoints(fVerb);
1066 SkDebugf("seg=%d {{", this->debugID()); 1068 SkDebugf("seg=%d {{", this->debugID());
1067 if (fVerb == SkPath::kConic_Verb) { 1069 if (fVerb == SkPath::kConic_Verb) {
1068 SkDebugf("{"); 1070 SkDebugf("{");
1069 } 1071 }
1070 int index = 0; 1072 int index = 0;
1071 do { 1073 do {
1072 SkDPoint::Dump(fPts[index]); 1074 SkDPoint::Dump(fPts[index]);
1073 SkDebugf(", "); 1075 SkDebugf(", ");
1074 } while (++index < last); 1076 } while (++index < last);
1075 SkDPoint::Dump(fPts[index]); 1077 SkDPoint::Dump(fPts[index]);
1076 SkDebugf("}}"); 1078 SkDebugf("}}");
1077 if (fVerb == SkPath::kConic_Verb) { 1079 if (fVerb == SkPath::kConic_Verb) {
1078 SkDebugf(", %1.9gf}", fWeight); 1080 SkDebugf(", %1.9gf}", fWeight);
1079 } 1081 }
1082 }
1083
1084 void SkOpSegment::dumpPts() const {
1085 dumpPtsInner();
1080 SkDebugf("\n"); 1086 SkDebugf("\n");
1081 } 1087 }
1082 1088
1083 void SkCoincidentSpans::dump() const { 1089 void SkCoincidentSpans::dump() const {
1084 SkDebugf("- seg=%d span=%d ptT=%d ", fCoinPtTStart->segment()->debugID(), 1090 SkDebugf("- seg=%d span=%d ptT=%d ", fCoinPtTStart->segment()->debugID(),
1085 fCoinPtTStart->span()->debugID(), fCoinPtTStart->debugID()); 1091 fCoinPtTStart->span()->debugID(), fCoinPtTStart->debugID());
1086 fCoinPtTStart->dumpBase(); 1092 fCoinPtTStart->dumpBase();
1087 SkDebugf(" span=%d ptT=%d ", fCoinPtTEnd->span()->debugID(), fCoinPtTEnd->de bugID()); 1093 SkDebugf(" span=%d ptT=%d ", fCoinPtTEnd->span()->debugID(), fCoinPtTEnd->de bugID());
1088 fCoinPtTEnd->dumpBase(); 1094 fCoinPtTEnd->dumpBase();
1089 if (fCoinPtTStart->segment()->operand()) { 1095 if (fCoinPtTStart->segment()->operand()) {
(...skipping 18 matching lines...) Expand all
1108 } 1114 }
1109 1115
1110 void SkOpCoincidence::dump() const { 1116 void SkOpCoincidence::dump() const {
1111 SkCoincidentSpans* span = fHead; 1117 SkCoincidentSpans* span = fHead;
1112 while (span) { 1118 while (span) {
1113 span->dump(); 1119 span->dump();
1114 span = span->fNext; 1120 span = span->fNext;
1115 } 1121 }
1116 } 1122 }
1117 1123
1118 void SkOpContour::dump() { 1124 void SkOpContour::dump() const {
1119 SkDebugf("contour=%d count=%d op=%d xor=%d\n", this->debugID(), fCount, fOpe rand, fXor); 1125 SkDebugf("contour=%d count=%d op=%d xor=%d\n", this->debugID(), fCount, fOpe rand, fXor);
1120 if (!fCount) { 1126 if (!fCount) {
1121 return; 1127 return;
1122 } 1128 }
1123 const SkOpSegment* segment = &fHead; 1129 const SkOpSegment* segment = &fHead;
1124 SkDEBUGCODE(fIndent = 0); 1130 SkDEBUGCODE(fDebugIndent = 0);
1125 indentDump(); 1131 this->indentDump();
1126 do { 1132 do {
1127 segment->dump(); 1133 segment->dump();
1128 } while ((segment = segment->next())); 1134 } while ((segment = segment->next()));
1129 outdentDump(); 1135 this->outdentDump();
1130 } 1136 }
1131 1137
1132 void SkOpContour::dumpAll() { 1138 void SkOpContour::dumpAll() const {
1133 SkDebugf("contour=%d count=%d op=%d xor=%d\n", this->debugID(), fCount, fOpe rand, fXor); 1139 SkDebugf("contour=%d count=%d op=%d xor=%d\n", this->debugID(), fCount, fOpe rand, fXor);
1134 if (!fCount) { 1140 if (!fCount) {
1135 return; 1141 return;
1136 } 1142 }
1137 const SkOpSegment* segment = &fHead; 1143 const SkOpSegment* segment = &fHead;
1138 SkDEBUGCODE(fIndent = 0); 1144 SkDEBUGCODE(fDebugIndent = 0);
1139 indentDump(); 1145 this->indentDump();
1140 do { 1146 do {
1141 segment->dumpAll(); 1147 segment->dumpAll();
1142 } while ((segment = segment->next())); 1148 } while ((segment = segment->next()));
1143 outdentDump(); 1149 this->outdentDump();
1144 } 1150 }
1145 1151
1146 1152
1147 void SkOpContour::dumpAngles() const { 1153 void SkOpContour::dumpAngles() const {
1148 SkDebugf("contour=%d\n", this->debugID()); 1154 SkDebugf("contour=%d\n", this->debugID());
1149 const SkOpSegment* segment = &fHead; 1155 const SkOpSegment* segment = &fHead;
1150 do { 1156 do {
1151 SkDebugf(" seg=%d ", segment->debugID()); 1157 SkDebugf(" seg=%d ", segment->debugID());
1152 segment->dumpAngles(); 1158 segment->dumpAngles();
1153 } while ((segment = segment->next())); 1159 } while ((segment = segment->next()));
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
1218 SkDebugf("{{"); 1224 SkDebugf("{{");
1219 int index; 1225 int index;
1220 for (index = 0; index <= count - 1; ++index) { 1226 for (index = 0; index <= count - 1; ++index) {
1221 SkDebugf("{%1.9gf,%1.9gf}, ", fPts[index].fX, fPts[index].fY); 1227 SkDebugf("{%1.9gf,%1.9gf}, ", fPts[index].fX, fPts[index].fY);
1222 } 1228 }
1223 SkDebugf("{%1.9gf,%1.9gf}}}\n", fPts[index].fX, fPts[index].fY); 1229 SkDebugf("{%1.9gf,%1.9gf}}}\n", fPts[index].fX, fPts[index].fY);
1224 } 1230 }
1225 1231
1226 #ifdef SK_DEBUG 1232 #ifdef SK_DEBUG
1227 const SkOpAngle* SkOpGlobalState::debugAngle(int id) const { 1233 const SkOpAngle* SkOpGlobalState::debugAngle(int id) const {
1228 const SkOpContour* contour = fHead; 1234 const SkOpContour* contour = fContourHead;
1229 do { 1235 do {
1230 const SkOpSegment* segment = contour->first(); 1236 const SkOpSegment* segment = contour->first();
1231 while (segment) { 1237 while (segment) {
1232 const SkOpSpan* span = segment->head(); 1238 const SkOpSpan* span = segment->head();
1233 do { 1239 do {
1234 SkOpAngle* angle = span->fromAngle(); 1240 SkOpAngle* angle = span->fromAngle();
1235 if (angle && angle->debugID() == id) { 1241 if (angle && angle->debugID() == id) {
1236 return angle; 1242 return angle;
1237 } 1243 }
1238 angle = span->toAngle(); 1244 angle = span->toAngle();
1239 if (angle && angle->debugID() == id) { 1245 if (angle && angle->debugID() == id) {
1240 return angle; 1246 return angle;
1241 } 1247 }
1242 } while ((span = span->next()->upCastable())); 1248 } while ((span = span->next()->upCastable()));
1243 const SkOpSpanBase* tail = segment->tail(); 1249 const SkOpSpanBase* tail = segment->tail();
1244 SkOpAngle* angle = tail->fromAngle(); 1250 SkOpAngle* angle = tail->fromAngle();
1245 if (angle && angle->debugID() == id) { 1251 if (angle && angle->debugID() == id) {
1246 return angle; 1252 return angle;
1247 } 1253 }
1248 segment = segment->next(); 1254 segment = segment->next();
1249 } 1255 }
1250 } while ((contour = contour->next())); 1256 } while ((contour = contour->next()));
1251 return NULL; 1257 return NULL;
1252 } 1258 }
1253 1259
1254 SkOpContour* SkOpGlobalState::debugContour(int id) { 1260 SkOpContour* SkOpGlobalState::debugContour(int id) {
1255 SkOpContour* contour = fHead; 1261 SkOpContour* contour = fContourHead;
1256 do { 1262 do {
1257 if (contour->debugID() == id) { 1263 if (contour->debugID() == id) {
1258 return contour; 1264 return contour;
1259 } 1265 }
1260 } while ((contour = contour->next())); 1266 } while ((contour = contour->next()));
1261 return NULL; 1267 return NULL;
1262 } 1268 }
1263 1269
1264 const SkOpPtT* SkOpGlobalState::debugPtT(int id) const { 1270 const SkOpPtT* SkOpGlobalState::debugPtT(int id) const {
1265 const SkOpContour* contour = fHead; 1271 const SkOpContour* contour = fContourHead;
1266 do { 1272 do {
1267 const SkOpSegment* segment = contour->first(); 1273 const SkOpSegment* segment = contour->first();
1268 while (segment) { 1274 while (segment) {
1269 const SkOpSpan* span = segment->head(); 1275 const SkOpSpan* span = segment->head();
1270 do { 1276 do {
1271 const SkOpPtT* ptT = span->ptT(); 1277 const SkOpPtT* ptT = span->ptT();
1272 if (ptT->debugMatchID(id)) { 1278 if (ptT->debugMatchID(id)) {
1273 return ptT; 1279 return ptT;
1274 } 1280 }
1275 } while ((span = span->next()->upCastable())); 1281 } while ((span = span->next()->upCastable()));
1276 const SkOpSpanBase* tail = segment->tail(); 1282 const SkOpSpanBase* tail = segment->tail();
1277 const SkOpPtT* ptT = tail->ptT(); 1283 const SkOpPtT* ptT = tail->ptT();
1278 if (ptT->debugMatchID(id)) { 1284 if (ptT->debugMatchID(id)) {
1279 return ptT; 1285 return ptT;
1280 } 1286 }
1281 segment = segment->next(); 1287 segment = segment->next();
1282 } 1288 }
1283 } while ((contour = contour->next())); 1289 } while ((contour = contour->next()));
1284 return NULL; 1290 return NULL;
1285 } 1291 }
1286 1292
1287 const SkOpSegment* SkOpGlobalState::debugSegment(int id) const { 1293 const SkOpSegment* SkOpGlobalState::debugSegment(int id) const {
1288 const SkOpContour* contour = fHead; 1294 const SkOpContour* contour = fContourHead;
1289 do { 1295 do {
1290 const SkOpSegment* segment = contour->first(); 1296 const SkOpSegment* segment = contour->first();
1291 while (segment) { 1297 while (segment) {
1292 if (segment->debugID() == id) { 1298 if (segment->debugID() == id) {
1293 return segment; 1299 return segment;
1294 } 1300 }
1295 segment = segment->next(); 1301 segment = segment->next();
1296 } 1302 }
1297 } while ((contour = contour->next())); 1303 } while ((contour = contour->next()));
1298 return NULL; 1304 return NULL;
1299 } 1305 }
1300 1306
1301 const SkOpSpanBase* SkOpGlobalState::debugSpan(int id) const { 1307 const SkOpSpanBase* SkOpGlobalState::debugSpan(int id) const {
1302 const SkOpContour* contour = fHead; 1308 const SkOpContour* contour = fContourHead;
1303 do { 1309 do {
1304 const SkOpSegment* segment = contour->first(); 1310 const SkOpSegment* segment = contour->first();
1305 while (segment) { 1311 while (segment) {
1306 const SkOpSpan* span = segment->head(); 1312 const SkOpSpan* span = segment->head();
1307 do { 1313 do {
1308 if (span->debugID() == id) { 1314 if (span->debugID() == id) {
1309 return span; 1315 return span;
1310 } 1316 }
1311 } while ((span = span->next()->upCastable())); 1317 } while ((span = span->next()->upCastable()));
1312 const SkOpSpanBase* tail = segment->tail(); 1318 const SkOpSpanBase* tail = segment->tail();
1313 if (tail->debugID() == id) { 1319 if (tail->debugID() == id) {
1314 return tail; 1320 return tail;
1315 } 1321 }
1316 segment = segment->next(); 1322 segment = segment->next();
1317 } 1323 }
1318 } while ((contour = contour->next())); 1324 } while ((contour = contour->next()));
1319 return NULL; 1325 return NULL;
1320 } 1326 }
1321 #endif 1327 #endif
1322 1328
1323 const SkOpAngle* DebugAngle(const SkTDArray<SkOpContour* >* contours, int id) {
1324 return (*contours)[0]->debugAngle(id);
1325 }
1326
1327 SkOpContour* DumpContour(const SkTDArray<SkOpContour* >* contours, int id) {
1328 return (*contours)[0]->debugContour(id);
1329 }
1330
1331 const SkOpPtT* DebugPtT(const SkTDArray<SkOpContour* >* contours, int id) {
1332 return (*contours)[0]->debugPtT(id);
1333 }
1334
1335 const SkOpSegment* DebugSegment(const SkTDArray<SkOpContour* >* contours, int id ) {
1336 return (*contours)[0]->debugSegment(id);
1337 }
1338
1339 const SkOpSpanBase* DebugSpan(const SkTDArray<SkOpContour* >* contours, int id) {
1340 return (*contours)[0]->debugSpan(id);
1341 }
1342
1343 void Dump(SkTDArray<SkOpContour* >* contours) {
1344 SkPathOpsDebug::DumpContours(contours);
1345 }
1346
1347 void DumpAll(SkTDArray<SkOpContour* >* contours) {
1348 SkPathOpsDebug::DumpContoursAll(contours);
1349 }
1350
1351 void DumpAngles(const SkTDArray<SkOpContour* >* contours) {
1352 SkPathOpsDebug::DumpContoursAngles(contours);
1353 }
1354
1355 void DumpSegment(const SkTDArray<SkOpContour* >* contours, int segmentID) {
1356 SkPathOpsDebug::DumpContoursSegment(contours, segmentID);
1357 }
1358
1359 void DumpSpan(const SkTDArray<SkOpContour* >* contours, int spanID) {
1360 SkPathOpsDebug::DumpContoursSpan(contours, spanID);
1361 }
1362
1363 void DumpSpans(const SkTDArray<SkOpContour* >* contours) {
1364 SkPathOpsDebug::DumpContoursSpans(contours);
1365 }
1366
1367 void DumpPt(const SkTDArray<SkOpContour* >* contours, int segmentID) {
1368 SkPathOpsDebug::DumpContoursPt(contours, segmentID);
1369 }
1370
1371 void DumpPts(const SkTDArray<SkOpContour* >* contours) {
1372 SkPathOpsDebug::DumpContoursPts(contours);
1373 }
1374
1375 #if DEBUG_T_SECT_DUMP > 1 1329 #if DEBUG_T_SECT_DUMP > 1
1376 int gDumpTSectNum; 1330 int gDumpTSectNum;
1377 #endif 1331 #endif
OLDNEW
« no previous file with comments | « tests/PathOpsDVectorTest.cpp ('k') | tests/PathOpsExtendedTest.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698