OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 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 #include "SkOpCoincidence.h" | 7 #include "SkOpCoincidence.h" |
8 #include "SkOpContour.h" | 8 #include "SkOpContour.h" |
9 #include "SkOpSegment.h" | 9 #include "SkOpSegment.h" |
10 #include "SkPathWriter.h" | 10 #include "SkPathWriter.h" |
(...skipping 1040 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1051 otherEnd = next->end(); | 1051 otherEnd = next->end(); |
1052 } | 1052 } |
1053 if (!otherEnd) { | 1053 if (!otherEnd) { |
1054 return nullptr; | 1054 return nullptr; |
1055 } | 1055 } |
1056 int foundStep = foundSpan->step(otherEnd); | 1056 int foundStep = foundSpan->step(otherEnd); |
1057 if (*stepPtr != foundStep) { | 1057 if (*stepPtr != foundStep) { |
1058 return set_last(last, endSpan); | 1058 return set_last(last, endSpan); |
1059 } | 1059 } |
1060 SkASSERT(*startPtr); | 1060 SkASSERT(*startPtr); |
1061 if (!otherEnd) { | |
1062 return nullptr; | |
1063 } | |
1064 // SkASSERT(otherEnd >= 0); | 1061 // SkASSERT(otherEnd >= 0); |
1065 SkOpSpan* origMin = step < 0 ? origStart->prev() : origStart->upCast(); | 1062 SkOpSpan* origMin = step < 0 ? origStart->prev() : origStart->upCast(); |
1066 SkOpSpan* foundMin = foundSpan->starter(otherEnd); | 1063 SkOpSpan* foundMin = foundSpan->starter(otherEnd); |
1067 if (foundMin->windValue() != origMin->windValue() | 1064 if (foundMin->windValue() != origMin->windValue() |
1068 || foundMin->oppValue() != origMin->oppValue()) { | 1065 || foundMin->oppValue() != origMin->oppValue()) { |
1069 return set_last(last, endSpan); | 1066 return set_last(last, endSpan); |
1070 } | 1067 } |
1071 *startPtr = foundSpan; | 1068 *startPtr = foundSpan; |
1072 *stepPtr = foundStep; | 1069 *stepPtr = foundStep; |
1073 if (minPtr) { | 1070 if (minPtr) { |
(...skipping 614 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1688 int absOut = SkTAbs(outerWinding); | 1685 int absOut = SkTAbs(outerWinding); |
1689 int absIn = SkTAbs(innerWinding); | 1686 int absIn = SkTAbs(innerWinding); |
1690 bool result = absOut == absIn ? outerWinding < 0 : absOut < absIn; | 1687 bool result = absOut == absIn ? outerWinding < 0 : absOut < absIn; |
1691 return result; | 1688 return result; |
1692 } | 1689 } |
1693 | 1690 |
1694 int SkOpSegment::windSum(const SkOpAngle* angle) const { | 1691 int SkOpSegment::windSum(const SkOpAngle* angle) const { |
1695 const SkOpSpan* minSpan = angle->start()->starter(angle->end()); | 1692 const SkOpSpan* minSpan = angle->start()->starter(angle->end()); |
1696 return minSpan->windSum(); | 1693 return minSpan->windSum(); |
1697 } | 1694 } |
OLD | NEW |