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 #ifndef SkOpContour_DEFINED | 7 #ifndef SkOpContour_DEFINED |
8 #define SkOpContour_DEFINED | 8 #define SkOpContour_DEFINED |
9 | 9 |
10 #include "SkOpSegment.h" | 10 #include "SkOpSegment.h" |
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
107 } | 107 } |
108 | 108 |
109 void alignTPt(int segmentIndex, const SkOpContour* other, int otherIndex, | 109 void alignTPt(int segmentIndex, const SkOpContour* other, int otherIndex, |
110 bool swap, int tIndex, SkIntersections* ts, SkPoint* point) co
nst; | 110 bool swap, int tIndex, SkIntersections* ts, SkPoint* point) co
nst; |
111 | 111 |
112 const SkPathOpsBounds& bounds() const { | 112 const SkPathOpsBounds& bounds() const { |
113 return fBounds; | 113 return fBounds; |
114 } | 114 } |
115 | 115 |
116 bool calcAngles(); | 116 bool calcAngles(); |
117 void calcCoincidentWinding(); | 117 bool calcCoincidentWinding(); |
118 void calcPartialCoincidentWinding(); | 118 void calcPartialCoincidentWinding(); |
119 | 119 |
120 void checkDuplicates() { | 120 void checkDuplicates() { |
121 int segmentCount = fSegments.count(); | 121 int segmentCount = fSegments.count(); |
122 for (int sIndex = 0; sIndex < segmentCount; ++sIndex) { | 122 for (int sIndex = 0; sIndex < segmentCount; ++sIndex) { |
123 SkOpSegment& segment = fSegments[sIndex]; | 123 SkOpSegment& segment = fSegments[sIndex]; |
124 if (segment.count() > 2) { | 124 if (segment.count() > 2) { |
125 segment.checkDuplicates(); | 125 segment.checkDuplicates(); |
126 } | 126 } |
127 } | 127 } |
(...skipping 190 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
318 void dumpCoincidence(const SkCoincidence& ) const; | 318 void dumpCoincidence(const SkCoincidence& ) const; |
319 void dumpCoincidences() const; | 319 void dumpCoincidences() const; |
320 void dumpPt(int ) const; | 320 void dumpPt(int ) const; |
321 void dumpPts() const; | 321 void dumpPts() const; |
322 void dumpSpan(int ) const; | 322 void dumpSpan(int ) const; |
323 void dumpSpans() const; | 323 void dumpSpans() const; |
324 | 324 |
325 private: | 325 private: |
326 void alignPt(int index, SkPoint* point, int zeroPt) const; | 326 void alignPt(int index, SkPoint* point, int zeroPt) const; |
327 int alignT(bool swap, int tIndex, SkIntersections* ts) const; | 327 int alignT(bool swap, int tIndex, SkIntersections* ts) const; |
328 void calcCommonCoincidentWinding(const SkCoincidence& ); | 328 bool calcCommonCoincidentWinding(const SkCoincidence& ); |
329 void checkCoincidentPair(const SkCoincidence& oneCoin, int oneIdx, | 329 void checkCoincidentPair(const SkCoincidence& oneCoin, int oneIdx, |
330 const SkCoincidence& twoCoin, int twoIdx, bool part
ial); | 330 const SkCoincidence& twoCoin, int twoIdx, bool part
ial); |
331 void joinCoincidence(const SkTArray<SkCoincidence, true>& , bool partial); | 331 void joinCoincidence(const SkTArray<SkCoincidence, true>& , bool partial); |
332 void setBounds(); | 332 void setBounds(); |
333 | 333 |
334 SkTArray<SkOpSegment> fSegments; | 334 SkTArray<SkOpSegment> fSegments; |
335 SkTArray<SkOpSegment*, true> fSortedSegments; | 335 SkTArray<SkOpSegment*, true> fSortedSegments; |
336 int fFirstSorted; | 336 int fFirstSorted; |
337 SkTArray<SkCoincidence, true> fCoincidences; | 337 SkTArray<SkCoincidence, true> fCoincidences; |
338 SkTArray<SkCoincidence, true> fPartialCoincidences; | 338 SkTArray<SkCoincidence, true> fPartialCoincidences; |
339 SkTArray<const SkOpContour*, true> fCrosses; | 339 SkTArray<const SkOpContour*, true> fCrosses; |
340 SkPathOpsBounds fBounds; | 340 SkPathOpsBounds fBounds; |
341 bool fContainsIntercepts; // FIXME: is this used by anybody? | 341 bool fContainsIntercepts; // FIXME: is this used by anybody? |
342 bool fContainsCubics; | 342 bool fContainsCubics; |
343 bool fContainsCurves; | 343 bool fContainsCurves; |
344 bool fDone; | 344 bool fDone; |
345 bool fMultiples; // set if some segment has multiple identical intersection
s with other curves | 345 bool fMultiples; // set if some segment has multiple identical intersection
s with other curves |
346 bool fOperand; // true for the second argument to a binary operator | 346 bool fOperand; // true for the second argument to a binary operator |
347 bool fXor; | 347 bool fXor; |
348 bool fOppXor; | 348 bool fOppXor; |
349 #if defined(SK_DEBUG) || !FORCE_RELEASE | 349 #if defined(SK_DEBUG) || !FORCE_RELEASE |
350 int debugID() const { return fID; } | 350 int debugID() const { return fID; } |
351 int fID; | 351 int fID; |
352 #else | 352 #else |
353 int debugID() const { return -1; } | 353 int debugID() const { return -1; } |
354 #endif | 354 #endif |
355 }; | 355 }; |
356 | 356 |
357 #endif | 357 #endif |
OLD | NEW |