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

Side by Side Diff: src/pathops/SkOpCoincidence.h

Issue 2186973002: fuzz wednesday (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: add 631992 Created 4 years, 4 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 | « no previous file | src/pathops/SkOpCoincidence.cpp » ('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 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 #ifndef SkOpCoincidence_DEFINED 7 #ifndef SkOpCoincidence_DEFINED
8 #define SkOpCoincidence_DEFINED 8 #define SkOpCoincidence_DEFINED
9 9
10 #include "SkTDArray.h" 10 #include "SkTDArray.h"
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
42 void debugShow() const; 42 void debugShow() const;
43 #ifdef SK_DEBUG 43 #ifdef SK_DEBUG
44 void debugStartCheck(const SkOpSpanBase* outer, const SkOpSpanBase* over, 44 void debugStartCheck(const SkOpSpanBase* outer, const SkOpSpanBase* over,
45 const SkOpGlobalState* debugState) const; 45 const SkOpGlobalState* debugState) const;
46 #endif 46 #endif
47 void dump() const; 47 void dump() const;
48 bool expand(); 48 bool expand();
49 bool extend(const SkOpPtT* coinPtTStart, const SkOpPtT* coinPtTEnd, 49 bool extend(const SkOpPtT* coinPtTStart, const SkOpPtT* coinPtTEnd,
50 const SkOpPtT* oppPtTStart, const SkOpPtT* oppPtTEnd); 50 const SkOpPtT* oppPtTStart, const SkOpPtT* oppPtTEnd);
51 bool flipped() const { return fOppPtTStart->fT > fOppPtTEnd->fT; } 51 bool flipped() const { return fOppPtTStart->fT > fOppPtTEnd->fT; }
52 void init() { sk_bzero(this, sizeof(*this)); } 52 SkDEBUGCODE(SkOpGlobalState* globalState() { return fGlobalState; })
53
54 void init(SkDEBUGCODE(SkOpGlobalState* globalState)) {
55 sk_bzero(this, sizeof(*this));
56 SkDEBUGCODE(fGlobalState = globalState);
57 }
58
53 const SkOpPtT* oppPtTStart() const { return fOppPtTStart; } 59 const SkOpPtT* oppPtTStart() const { return fOppPtTStart; }
54 const SkOpPtT* oppPtTEnd() const { return fOppPtTEnd; } 60 const SkOpPtT* oppPtTEnd() const { return fOppPtTEnd; }
55 // These return non-const pointers so that, as copies, they can be added 61 // These return non-const pointers so that, as copies, they can be added
56 // to a new span pair 62 // to a new span pair
57 SkOpPtT* oppPtTStartWritable() const { return const_cast<SkOpPtT*>(fOppPtTSt art); } 63 SkOpPtT* oppPtTStartWritable() const { return const_cast<SkOpPtT*>(fOppPtTSt art); }
58 SkOpPtT* oppPtTEndWritable() const { return const_cast<SkOpPtT*>(fOppPtTEnd) ; } 64 SkOpPtT* oppPtTEndWritable() const { return const_cast<SkOpPtT*>(fOppPtTEnd) ; }
59 SkCoincidentSpans* next() { return fNext; } 65 SkCoincidentSpans* next() { return fNext; }
60 const SkCoincidentSpans* next() const { return fNext; } 66 const SkCoincidentSpans* next() const { return fNext; }
61 SkCoincidentSpans** nextPtr() { return &fNext; } 67 SkCoincidentSpans** nextPtr() { return &fNext; }
62 int spanCount() const; 68 int spanCount() const;
63 69
64 void set(SkCoincidentSpans* next, const SkOpPtT* coinPtTStart, const SkOpPtT * coinPtTEnd, 70 void set(SkCoincidentSpans* next, const SkOpPtT* coinPtTStart, const SkOpPtT * coinPtTEnd,
65 const SkOpPtT* oppPtTStart, const SkOpPtT* oppPtTEnd 71 const SkOpPtT* oppPtTStart, const SkOpPtT* oppPtTEnd
66 SkDEBUGPARAMS(int id)); 72 SkDEBUGPARAMS(int id));
67 73
68 void setCoinPtTEnd(const SkOpPtT* ptT) { 74 void setCoinPtTEnd(const SkOpPtT* ptT) {
69 SkASSERT(ptT == ptT->span()->ptT()) 75 SkOPASSERT(ptT == ptT->span()->ptT())
70 SkASSERT(!fCoinPtTStart || ptT->fT != fCoinPtTStart->fT); 76 SkASSERT(!fCoinPtTStart || ptT->fT != fCoinPtTStart->fT);
71 SkASSERT(!fCoinPtTStart || fCoinPtTStart->segment() == ptT->segment()); 77 SkASSERT(!fCoinPtTStart || fCoinPtTStart->segment() == ptT->segment());
72 fCoinPtTEnd = ptT; 78 fCoinPtTEnd = ptT;
73 ptT->setCoincident(); 79 ptT->setCoincident();
74 } 80 }
75 81
76 void setCoinPtTStart(const SkOpPtT* ptT) { 82 void setCoinPtTStart(const SkOpPtT* ptT) {
77 SkASSERT(ptT == ptT->span()->ptT()) 83 SkASSERT(ptT == ptT->span()->ptT())
78 SkASSERT(!fCoinPtTEnd || ptT->fT != fCoinPtTEnd->fT); 84 SkASSERT(!fCoinPtTEnd || ptT->fT != fCoinPtTEnd->fT);
79 SkASSERT(!fCoinPtTEnd || fCoinPtTEnd->segment() == ptT->segment()); 85 SkASSERT(!fCoinPtTEnd || fCoinPtTEnd->segment() == ptT->segment());
80 fCoinPtTStart = ptT; 86 fCoinPtTStart = ptT;
81 ptT->setCoincident(); 87 ptT->setCoincident();
82 } 88 }
83 89
84 void setEnds(const SkOpPtT* coinPtTEnd, const SkOpPtT* oppPtTEnd) { 90 void setEnds(const SkOpPtT* coinPtTEnd, const SkOpPtT* oppPtTEnd) {
85 this->setCoinPtTEnd(coinPtTEnd); 91 this->setCoinPtTEnd(coinPtTEnd);
86 this->setOppPtTEnd(oppPtTEnd); 92 this->setOppPtTEnd(oppPtTEnd);
87 } 93 }
88 94
89 void setOppPtTEnd(const SkOpPtT* ptT) { 95 void setOppPtTEnd(const SkOpPtT* ptT) {
90 SkASSERT(ptT == ptT->span()->ptT()) 96 SkOPASSERT(ptT == ptT->span()->ptT())
91 SkASSERT(!fOppPtTStart || ptT->fT != fOppPtTStart->fT); 97 SkASSERT(!fOppPtTStart || ptT->fT != fOppPtTStart->fT);
92 SkASSERT(!fOppPtTStart || fOppPtTStart->segment() == ptT->segment()); 98 SkASSERT(!fOppPtTStart || fOppPtTStart->segment() == ptT->segment());
93 fOppPtTEnd = ptT; 99 fOppPtTEnd = ptT;
94 ptT->setCoincident(); 100 ptT->setCoincident();
95 } 101 }
96 102
97 void setOppPtTStart(const SkOpPtT* ptT) { 103 void setOppPtTStart(const SkOpPtT* ptT) {
98 SkASSERT(ptT == ptT->span()->ptT()) 104 SkASSERT(ptT == ptT->span()->ptT())
99 SkASSERT(!fOppPtTEnd || ptT->fT != fOppPtTEnd->fT); 105 SkASSERT(!fOppPtTEnd || ptT->fT != fOppPtTEnd->fT);
100 SkASSERT(!fOppPtTEnd || fOppPtTEnd->segment() == ptT->segment()); 106 SkASSERT(!fOppPtTEnd || fOppPtTEnd->segment() == ptT->segment());
(...skipping 10 matching lines...) Expand all
111 117
112 bool startEquals(const SkOpSpanBase* outer, const SkOpSpanBase* over) const { 118 bool startEquals(const SkOpSpanBase* outer, const SkOpSpanBase* over) const {
113 return fCoinPtTStart->span() == over && fOppPtTStart->span() == outer; 119 return fCoinPtTStart->span() == over && fOppPtTStart->span() == outer;
114 } 120 }
115 private: 121 private:
116 SkCoincidentSpans* fNext; 122 SkCoincidentSpans* fNext;
117 const SkOpPtT* fCoinPtTStart; 123 const SkOpPtT* fCoinPtTStart;
118 const SkOpPtT* fCoinPtTEnd; 124 const SkOpPtT* fCoinPtTEnd;
119 const SkOpPtT* fOppPtTStart; 125 const SkOpPtT* fOppPtTStart;
120 const SkOpPtT* fOppPtTEnd; 126 const SkOpPtT* fOppPtTEnd;
127 SkDEBUGCODE(SkOpGlobalState* fGlobalState);
121 SkDEBUGCODE(int fID); 128 SkDEBUGCODE(int fID);
122 }; 129 };
123 130
124 class SkOpCoincidence { 131 class SkOpCoincidence {
125 public: 132 public:
126 SkOpCoincidence(SkOpGlobalState* globalState) 133 SkOpCoincidence(SkOpGlobalState* globalState)
127 : fHead(nullptr) 134 : fHead(nullptr)
128 , fTop(nullptr) 135 , fTop(nullptr)
129 , fGlobalState(globalState) 136 , fGlobalState(globalState)
130 , fContinue(false) 137 , fContinue(false)
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
297 SkCoincidentSpans* fTop; 304 SkCoincidentSpans* fTop;
298 SkOpGlobalState* fGlobalState; 305 SkOpGlobalState* fGlobalState;
299 bool fContinue; 306 bool fContinue;
300 bool fSpanDeleted; 307 bool fSpanDeleted;
301 bool fPtAllocated; 308 bool fPtAllocated;
302 bool fCoinExtended; 309 bool fCoinExtended;
303 bool fSpanMerged; 310 bool fSpanMerged;
304 }; 311 };
305 312
306 #endif 313 #endif
OLDNEW
« no previous file with comments | « no previous file | src/pathops/SkOpCoincidence.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698