Index: src/pathops/SkPathOpsCubicSect.h |
diff --git a/src/pathops/SkPathOpsCubicSect.h b/src/pathops/SkPathOpsCubicSect.h |
deleted file mode 100644 |
index d7634449b6ce2031d4bbf66bba083f4c6c253381..0000000000000000000000000000000000000000 |
--- a/src/pathops/SkPathOpsCubicSect.h |
+++ /dev/null |
@@ -1,175 +0,0 @@ |
-/* |
- * Copyright 2014 Google Inc. |
- * |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
-#ifndef SkCubicSpan_DEFINE |
-#define SkCubicSpan_DEFINE |
- |
-#include "SkChunkAlloc.h" |
-#include "SkPathOpsRect.h" |
-#include "SkPathOpsCubic.h" |
-#include "SkTArray.h" |
- |
-class SkIntersections; |
- |
-class SkCubicCoincident { |
-public: |
- bool isCoincident() const { |
- return fCoincident; |
- } |
- |
- void init() { |
- fCoincident = false; |
- SkDEBUGCODE(fPerpPt.fX = fPerpPt.fY = SK_ScalarNaN); |
- SkDEBUGCODE(fPerpT = SK_ScalarNaN); |
- } |
- |
- void markCoincident() { |
- if (!fCoincident) { |
- fPerpT = -1; |
- } |
- fCoincident = true; |
- } |
- |
- const SkDPoint& perpPt() const { |
- return fPerpPt; |
- } |
- |
- double perpT() const { |
- return fPerpT; |
- } |
- |
- void setPerp(const SkDCubic& cubic1, double t, const SkDPoint& qPt, const SkDCubic& cubic2); |
- |
-private: |
- SkDPoint fPerpPt; |
- double fPerpT; // perpendicular intersection on opposite Cubic |
- bool fCoincident; |
-}; |
- |
-class SkCubicSect; // used only by debug id |
- |
-class SkCubicSpan { |
-public: |
- void init(const SkDCubic& Cubic); |
- void initBounds(const SkDCubic& Cubic); |
- |
- bool contains(double t) const { |
- return !! const_cast<SkCubicSpan*>(this)->innerFind(t); |
- } |
- |
- bool contains(const SkCubicSpan* span) const; |
- |
- SkCubicSpan* find(double t) { |
- SkCubicSpan* result = innerFind(t); |
- SkASSERT(result); |
- return result; |
- } |
- |
- bool intersects(const SkCubicSpan* span) const; |
- |
- const SkCubicSpan* next() const { |
- return fNext; |
- } |
- |
- void reset() { |
- fBounded.reset(); |
- } |
- |
- bool split(SkCubicSpan* work) { |
- return splitAt(work, (work->fStartT + work->fEndT) * 0.5); |
- } |
- |
- bool splitAt(SkCubicSpan* work, double t); |
- bool tightBoundsIntersects(const SkCubicSpan* span) const; |
- |
- // implementation is for testing only |
- void dump() const; |
- |
-private: |
- bool hullIntersects(const SkDCubic& ) const; |
- SkCubicSpan* innerFind(double t); |
- bool linearIntersects(const SkDCubic& ) const; |
- |
- // implementation is for testing only |
-#if DEBUG_BINARY_CUBIC |
- int debugID(const SkCubicSect* ) const { return fDebugID; } |
-#else |
- int debugID(const SkCubicSect* ) const; |
-#endif |
- void dump(const SkCubicSect* ) const; |
- void dumpID(const SkCubicSect* ) const; |
- |
-#if DEBUG_BINARY_CUBIC |
- void validate() const; |
-#endif |
- |
- SkDCubic fPart; |
- SkCubicCoincident fCoinStart; |
- SkCubicCoincident fCoinEnd; |
- SkSTArray<4, SkCubicSpan*, true> fBounded; |
- SkCubicSpan* fPrev; |
- SkCubicSpan* fNext; |
- SkDRect fBounds; |
- double fStartT; |
- double fEndT; |
- double fBoundsMax; |
- bool fCollapsed; |
- bool fHasPerp; |
- mutable bool fIsLinear; |
-#if DEBUG_BINARY_CUBIC |
- int fDebugID; |
- bool fDebugDeleted; |
-#endif |
- friend class SkCubicSect; |
-}; |
- |
-class SkCubicSect { |
-public: |
- SkCubicSect(const SkDCubic& Cubic PATH_OPS_DEBUG_PARAMS(int id)); |
- static void BinarySearch(SkCubicSect* sect1, SkCubicSect* sect2, SkIntersections* intersections); |
- |
- // for testing only |
- void dumpCubics() const; |
-private: |
- SkCubicSpan* addOne(); |
- bool binarySearchCoin(const SkCubicSect& , double tStart, double tStep, double* t, |
- double* oppT); |
- SkCubicSpan* boundsMax() const; |
- void coincidentCheck(SkCubicSect* sect2); |
- bool intersects(const SkCubicSpan* span, const SkCubicSect* opp, const SkCubicSpan* oppSpan) const; |
- void onCurveCheck(SkCubicSect* sect2, SkCubicSpan* first, SkCubicSpan* last); |
- void recoverCollapsed(); |
- void removeSpan(SkCubicSpan* span); |
- void removeOne(const SkCubicSpan* test, SkCubicSpan* span); |
- void removeSpans(SkCubicSpan* span, SkCubicSect* opp); |
- void setPerp(const SkDCubic& opp, SkCubicSpan* first, SkCubicSpan* last); |
- void trim(SkCubicSpan* span, SkCubicSect* opp); |
- |
- // for testing only |
- void dump() const; |
- void dumpBoth(const SkCubicSect& opp) const; |
- void dumpBoth(const SkCubicSect* opp) const; |
- |
-#if DEBUG_BINARY_CUBIC |
- int debugID() const { return fDebugID; } |
- void validate() const; |
-#else |
- int debugID() const { return 0; } |
-#endif |
- const SkDCubic& fCubic; |
- SkChunkAlloc fHeap; |
- SkCubicSpan* fHead; |
- SkCubicSpan* fDeleted; |
- int fActiveCount; |
-#if DEBUG_BINARY_CUBIC |
- int fDebugID; |
- int fDebugCount; |
- int fDebugAllocatedCount; |
-#endif |
- friend class SkCubicSpan; // only used by debug id |
-}; |
- |
-#endif |