OLD | NEW |
1 /* | 1 /* |
2 * Copyright 2015 Google Inc. | 2 * Copyright 2015 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 "SkOpSegment.h" | 8 #include "SkOpSegment.h" |
9 #include "SkPathOpsTSect.h" | 9 #include "SkPathOpsTSect.h" |
10 | 10 |
(...skipping 752 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
763 } | 763 } |
764 const SkOpSegment* outerOpp = oos->segment(); | 764 const SkOpSegment* outerOpp = oos->segment(); |
765 SkASSERT(!outerOpp->done()); | 765 SkASSERT(!outerOpp->done()); |
766 SkOpSegment* outerCoinWritable = const_cast<SkOpSegment*>(outerCoin); | 766 SkOpSegment* outerCoinWritable = const_cast<SkOpSegment*>(outerCoin); |
767 SkOpSegment* outerOppWritable = const_cast<SkOpSegment*>(outerOpp); | 767 SkOpSegment* outerOppWritable = const_cast<SkOpSegment*>(outerOpp); |
768 SkCoincidentSpans* inner = outer; | 768 SkCoincidentSpans* inner = outer; |
769 while ((inner = inner->next())) { | 769 while ((inner = inner->next())) { |
770 this->debugValidate(); | 770 this->debugValidate(); |
771 double overS, overE; | 771 double overS, overE; |
772 const SkOpPtT* ics = inner->coinPtTStart(); | 772 const SkOpPtT* ics = inner->coinPtTStart(); |
773 SkASSERT(!ics->deleted()); | 773 FAIL_IF(ics->deleted()); |
774 const SkOpSegment* innerCoin = ics->segment(); | 774 const SkOpSegment* innerCoin = ics->segment(); |
775 SkASSERT(!innerCoin->done()); | 775 SkASSERT(!innerCoin->done()); |
776 const SkOpPtT* ios = inner->oppPtTStart(); | 776 const SkOpPtT* ios = inner->oppPtTStart(); |
777 SkASSERT(!ios->deleted()); | 777 SkASSERT(!ios->deleted()); |
778 const SkOpSegment* innerOpp = ios->segment(); | 778 const SkOpSegment* innerOpp = ios->segment(); |
779 SkASSERT(!innerOpp->done()); | 779 SkASSERT(!innerOpp->done()); |
780 SkOpSegment* innerCoinWritable = const_cast<SkOpSegment*>(innerCoin)
; | 780 SkOpSegment* innerCoinWritable = const_cast<SkOpSegment*>(innerCoin)
; |
781 SkOpSegment* innerOppWritable = const_cast<SkOpSegment*>(innerOpp); | 781 SkOpSegment* innerOppWritable = const_cast<SkOpSegment*>(innerOpp); |
782 if (outerCoin == innerCoin) { | 782 if (outerCoin == innerCoin) { |
783 const SkOpPtT* oce = outer->coinPtTEnd(); | 783 const SkOpPtT* oce = outer->coinPtTEnd(); |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
839 | 839 |
840 bool SkOpCoincidence::addOverlap(const SkOpSegment* seg1, const SkOpSegment* seg
1o, | 840 bool SkOpCoincidence::addOverlap(const SkOpSegment* seg1, const SkOpSegment* seg
1o, |
841 const SkOpSegment* seg2, const SkOpSegment* seg2o, | 841 const SkOpSegment* seg2, const SkOpSegment* seg2o, |
842 const SkOpPtT* overS, const SkOpPtT* overE) { | 842 const SkOpPtT* overS, const SkOpPtT* overE) { |
843 const SkOpPtT* s1 = overS->find(seg1); | 843 const SkOpPtT* s1 = overS->find(seg1); |
844 const SkOpPtT* e1 = overE->find(seg1); | 844 const SkOpPtT* e1 = overE->find(seg1); |
845 FAIL_IF(!e1); | 845 FAIL_IF(!e1); |
846 if (!s1->starter(e1)->span()->upCast()->windValue()) { | 846 if (!s1->starter(e1)->span()->upCast()->windValue()) { |
847 s1 = overS->find(seg1o); | 847 s1 = overS->find(seg1o); |
848 e1 = overE->find(seg1o); | 848 e1 = overE->find(seg1o); |
| 849 FAIL_IF(!s1); |
849 FAIL_IF(!e1); | 850 FAIL_IF(!e1); |
850 if (!s1->starter(e1)->span()->upCast()->windValue()) { | 851 if (!s1->starter(e1)->span()->upCast()->windValue()) { |
851 return true; | 852 return true; |
852 } | 853 } |
853 } | 854 } |
854 const SkOpPtT* s2 = overS->find(seg2); | 855 const SkOpPtT* s2 = overS->find(seg2); |
855 const SkOpPtT* e2 = overE->find(seg2); | 856 const SkOpPtT* e2 = overE->find(seg2); |
856 if (!s2->starter(e2)->span()->upCast()->windValue()) { | 857 if (!s2->starter(e2)->span()->upCast()->windValue()) { |
857 s2 = overS->find(seg2o); | 858 s2 = overS->find(seg2o); |
858 e2 = overE->find(seg2o); | 859 e2 = overE->find(seg2o); |
(...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1359 } | 1360 } |
1360 do { | 1361 do { |
1361 if (coin->coinPtTStart()->segment() == deleted | 1362 if (coin->coinPtTStart()->segment() == deleted |
1362 || coin->coinPtTEnd()->segment() == deleted | 1363 || coin->coinPtTEnd()->segment() == deleted |
1363 || coin->oppPtTStart()->segment() == deleted | 1364 || coin->oppPtTStart()->segment() == deleted |
1364 || coin->oppPtTEnd()->segment() == deleted) { | 1365 || coin->oppPtTEnd()->segment() == deleted) { |
1365 this->release(fHead, coin); | 1366 this->release(fHead, coin); |
1366 } | 1367 } |
1367 } while ((coin = coin->next())); | 1368 } while ((coin = coin->next())); |
1368 } | 1369 } |
OLD | NEW |