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 #ifndef SkIntersections_DEFINE | 7 #ifndef SkIntersections_DEFINE |
8 #define SkIntersections_DEFINE | 8 #define SkIntersections_DEFINE |
9 | 9 |
10 #include "SkPathOpsConic.h" | 10 #include "SkPathOpsConic.h" |
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 | 105 |
106 #ifdef SK_DEBUG | 106 #ifdef SK_DEBUG |
107 SkOpGlobalState* debugGlobalState() { return fDebugGlobalState; } | 107 SkOpGlobalState* debugGlobalState() { return fDebugGlobalState; } |
108 #endif | 108 #endif |
109 | 109 |
110 bool hasT(double t) const { | 110 bool hasT(double t) const { |
111 SkASSERT(t == 0 || t == 1); | 111 SkASSERT(t == 0 || t == 1); |
112 return fUsed > 0 && (t == 0 ? fT[0][0] == 0 : fT[0][fUsed - 1] == 1); | 112 return fUsed > 0 && (t == 0 ? fT[0][0] == 0 : fT[0][fUsed - 1] == 1); |
113 } | 113 } |
114 | 114 |
| 115 bool hasOppT(double t) const { |
| 116 SkASSERT(t == 0 || t == 1); |
| 117 return fUsed > 0 && (fT[1][0] == t || fT[1][fUsed - 1] == t); |
| 118 } |
| 119 |
115 int insertSwap(double one, double two, const SkDPoint& pt) { | 120 int insertSwap(double one, double two, const SkDPoint& pt) { |
116 if (fSwap) { | 121 if (fSwap) { |
117 return insert(two, one, pt); | 122 return insert(two, one, pt); |
118 } else { | 123 } else { |
119 return insert(one, two, pt); | 124 return insert(one, two, pt); |
120 } | 125 } |
121 } | 126 } |
122 | 127 |
123 bool isCoincident(int index) { | 128 bool isCoincident(int index) { |
124 return (fIsCoincident[0] & 1 << index) != 0; | 129 return (fIsCoincident[0] & 1 << index) != 0; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 quad.set(a); | 178 quad.set(a); |
174 fMax = 2; | 179 fMax = 2; |
175 return vertical(quad, top, bottom, x, flipped); | 180 return vertical(quad, top, bottom, x, flipped); |
176 } | 181 } |
177 | 182 |
178 int quadLine(const SkPoint a[3], const SkPoint b[2]) { | 183 int quadLine(const SkPoint a[3], const SkPoint b[2]) { |
179 SkDQuad quad; | 184 SkDQuad quad; |
180 quad.set(a); | 185 quad.set(a); |
181 SkDLine line; | 186 SkDLine line; |
182 line.set(b); | 187 line.set(b); |
183 fMax = 3; // 2; permit small coincident segment + non-coincident inters
ection | |
184 return intersect(quad, line); | 188 return intersect(quad, line); |
185 } | 189 } |
186 | 190 |
187 // leaves swap, max alone | 191 // leaves swap, max alone |
188 void reset() { | 192 void reset() { |
189 fAllowNear = true; | 193 fAllowNear = true; |
190 fUsed = 0; | 194 fUsed = 0; |
191 sk_bzero(fIsCoincident, sizeof(fIsCoincident)); | 195 sk_bzero(fIsCoincident, sizeof(fIsCoincident)); |
192 } | 196 } |
193 | 197 |
194 void set(bool swap, int tIndex, double t) { | 198 void set(bool swap, int tIndex, double t) { |
195 fT[(int) swap][tIndex] = t; | 199 fT[(int) swap][tIndex] = t; |
196 } | 200 } |
197 | 201 |
198 void setMax(int max) { | 202 void setMax(int max) { |
199 SkASSERT(max <= (int) SK_ARRAY_COUNT(fPt)); | 203 SkASSERT(max <= (int) SK_ARRAY_COUNT(fPt)); |
200 fMax = max; | 204 fMax = max; |
201 } | 205 } |
202 | 206 |
203 void swap() { | 207 void swap() { |
204 fSwap ^= true; | 208 fSwap ^= true; |
205 } | 209 } |
206 | 210 |
207 bool swapped() const { | 211 bool swapped() const { |
208 return fSwap; | 212 return fSwap; |
209 } | 213 } |
210 | 214 |
211 int used() const { | 215 int used() const { |
212 return fUsed; | 216 return fUsed; |
213 } | 217 } |
214 | 218 |
215 void downDepth() { | 219 void downDepth() { |
216 SkASSERT(--fDepth >= 0); | 220 SkASSERT(--fDepth >= 0); |
217 } | 221 } |
218 | 222 |
219 bool unBumpT(int index) { | 223 bool unBumpT(int index) { |
220 SkASSERT(fUsed == 1); | 224 SkASSERT(fUsed == 1); |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
316 #ifdef SK_DEBUG | 320 #ifdef SK_DEBUG |
317 SkOpGlobalState* fDebugGlobalState; | 321 SkOpGlobalState* fDebugGlobalState; |
318 int fDepth; | 322 int fDepth; |
319 #endif | 323 #endif |
320 #if DEBUG_T_SECT_LOOP_COUNT | 324 #if DEBUG_T_SECT_LOOP_COUNT |
321 int fDebugLoopCount[3]; | 325 int fDebugLoopCount[3]; |
322 #endif | 326 #endif |
323 }; | 327 }; |
324 | 328 |
325 #endif | 329 #endif |
OLD | NEW |