| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2013 Google Inc. | 2 * Copyright 2013 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 "SkMutex.h" | 8 #include "SkMutex.h" |
| 9 #include "SkOpCoincidence.h" | 9 #include "SkOpCoincidence.h" |
| 10 #include "SkOpContour.h" | 10 #include "SkOpContour.h" |
| (...skipping 386 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 397 cubic[0] = fPts[0]; | 397 cubic[0] = fPts[0]; |
| 398 cubic[2] = fPts[1]; | 398 cubic[2] = fPts[1]; |
| 399 cubic[3] = fPts[2]; | 399 cubic[3] = fPts[2]; |
| 400 cubic[1].fX = (cubic[0].fX + cubic[2].fX * 2) / 3; | 400 cubic[1].fX = (cubic[0].fX + cubic[2].fX * 2) / 3; |
| 401 cubic[1].fY = (cubic[0].fY + cubic[2].fY * 2) / 3; | 401 cubic[1].fY = (cubic[0].fY + cubic[2].fY * 2) / 3; |
| 402 cubic[2].fX = (cubic[3].fX + cubic[2].fX * 2) / 3; | 402 cubic[2].fX = (cubic[3].fX + cubic[2].fX * 2) / 3; |
| 403 cubic[2].fY = (cubic[3].fY + cubic[2].fY * 2) / 3; | 403 cubic[2].fY = (cubic[3].fY + cubic[2].fY * 2) / 3; |
| 404 return cubic; | 404 return cubic; |
| 405 } | 405 } |
| 406 | 406 |
| 407 void SkDRect::debugInit() { | |
| 408 fLeft = fTop = fRight = fBottom = SK_ScalarNaN; | |
| 409 } | |
| 410 | |
| 411 #include "SkOpAngle.h" | 407 #include "SkOpAngle.h" |
| 412 #include "SkOpSegment.h" | 408 #include "SkOpSegment.h" |
| 413 | 409 |
| 414 #if DEBUG_COINCIDENCE | 410 #if DEBUG_COINCIDENCE |
| 415 void SkOpSegment::debugAddAlignIntersection(const char* id, SkPathOpsDebug::Glit
chLog* log, | 411 void SkOpSegment::debugAddAlignIntersection(const char* id, SkPathOpsDebug::Glit
chLog* log, |
| 416 const SkOpPtT& endPtT, const SkPoint& oldPt, const SkOpContourHead* con
tourList) const { | 412 const SkOpPtT& endPtT, const SkPoint& oldPt, const SkOpContourHead* con
tourList) const { |
| 417 const SkPoint& newPt = endPtT.fPt; | 413 const SkPoint& newPt = endPtT.fPt; |
| 418 if (newPt == oldPt) { | 414 if (newPt == oldPt) { |
| 419 return; | 415 return; |
| 420 } | 416 } |
| (...skipping 689 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1110 | 1106 |
| 1111 | 1107 |
| 1112 #if DEBUG_COINCIDENCE | 1108 #if DEBUG_COINCIDENCE |
| 1113 void SkOpCoincidence::debugAddExpanded(const char* id, SkPathOpsDebug::GlitchLog
* log) const { | 1109 void SkOpCoincidence::debugAddExpanded(const char* id, SkPathOpsDebug::GlitchLog
* log) const { |
| 1114 // for each coincident pair, match the spans | 1110 // for each coincident pair, match the spans |
| 1115 // if the spans don't match, add the mssing pt to the segment and loop it in
the opposite span | 1111 // if the spans don't match, add the mssing pt to the segment and loop it in
the opposite span |
| 1116 const SkCoincidentSpans* coin = this->fHead; | 1112 const SkCoincidentSpans* coin = this->fHead; |
| 1117 if (!coin) { | 1113 if (!coin) { |
| 1118 coin = this->fTop; | 1114 coin = this->fTop; |
| 1119 } | 1115 } |
| 1120 if (!coin) { | 1116 SkASSERT(coin); |
| 1121 return; | |
| 1122 } | |
| 1123 do { | 1117 do { |
| 1124 const SkOpPtT* startPtT = coin->fCoinPtTStart; | 1118 const SkOpPtT* startPtT = coin->fCoinPtTStart; |
| 1125 const SkOpPtT* oStartPtT = coin->fOppPtTStart; | 1119 const SkOpPtT* oStartPtT = coin->fOppPtTStart; |
| 1126 SkASSERT(startPtT->contains(oStartPtT)); | 1120 SkASSERT(startPtT->contains(oStartPtT)); |
| 1127 SkASSERT(coin->fCoinPtTEnd->contains(coin->fOppPtTEnd)); | 1121 SkASSERT(coin->fCoinPtTEnd->contains(coin->fOppPtTEnd)); |
| 1128 const SkOpSpanBase* start = startPtT->span(); | 1122 const SkOpSpanBase* start = startPtT->span(); |
| 1129 const SkOpSpanBase* oStart = oStartPtT->span(); | 1123 const SkOpSpanBase* oStart = oStartPtT->span(); |
| 1130 const SkOpSpanBase* end = coin->fCoinPtTEnd->span(); | 1124 const SkOpSpanBase* end = coin->fCoinPtTEnd->span(); |
| 1131 const SkOpSpanBase* oEnd = coin->fOppPtTEnd->span(); | 1125 const SkOpSpanBase* oEnd = coin->fOppPtTEnd->span(); |
| 1132 const SkOpSpanBase* test = start->upCast()->next(); | 1126 const SkOpSpanBase* test = start->upCast()->next(); |
| (...skipping 712 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1845 #endif | 1839 #endif |
| 1846 SkPath::FillType fillType = path.getFillType(); | 1840 SkPath::FillType fillType = path.getFillType(); |
| 1847 SkASSERT(fillType >= SkPath::kWinding_FillType && fillType <= SkPath::kInver
seEvenOdd_FillType); | 1841 SkASSERT(fillType >= SkPath::kWinding_FillType && fillType <= SkPath::kInver
seEvenOdd_FillType); |
| 1848 if (includeDeclaration) { | 1842 if (includeDeclaration) { |
| 1849 SkDebugf(" SkPath %s;\n", name); | 1843 SkDebugf(" SkPath %s;\n", name); |
| 1850 } | 1844 } |
| 1851 SkDebugf(" %s.setFillType(SkPath::%s);\n", name, gFillTypeStr[fillType]); | 1845 SkDebugf(" %s.setFillType(SkPath::%s);\n", name, gFillTypeStr[fillType]); |
| 1852 iter.setPath(path); | 1846 iter.setPath(path); |
| 1853 showPathContours(iter, name); | 1847 showPathContours(iter, name); |
| 1854 } | 1848 } |
| OLD | NEW |