Index: src/pathops/SkPathOpsQuadSect.h |
diff --git a/src/pathops/SkPathOpsQuadSect.h b/src/pathops/SkPathOpsQuadSect.h |
deleted file mode 100644 |
index 57f1aa08d862a201d3a8d98f40cd61211f913d8e..0000000000000000000000000000000000000000 |
--- a/src/pathops/SkPathOpsQuadSect.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 SkQuadSpan_DEFINE |
-#define SkQuadSpan_DEFINE |
- |
-#include "SkChunkAlloc.h" |
-#include "SkPathOpsRect.h" |
-#include "SkPathOpsQuad.h" |
-#include "SkTArray.h" |
- |
-class SkIntersections; |
- |
-class SkQuadCoincident { |
-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 SkDQuad& quad1, double t, const SkDPoint& qPt, const SkDQuad& quad2); |
- |
-private: |
- SkDPoint fPerpPt; |
- double fPerpT; // perpendicular intersection on opposite quad |
- bool fCoincident; |
-}; |
- |
-class SkQuadSect; // used only by debug id |
- |
-class SkQuadSpan { |
-public: |
- void init(const SkDQuad& quad); |
- void initBounds(const SkDQuad& quad); |
- |
- bool contains(double t) const { |
- return !! const_cast<SkQuadSpan*>(this)->innerFind(t); |
- } |
- |
- bool contains(const SkQuadSpan* span) const; |
- |
- SkQuadSpan* find(double t) { |
- SkQuadSpan* result = innerFind(t); |
- SkASSERT(result); |
- return result; |
- } |
- |
- bool intersects(const SkQuadSpan* span) const; |
- |
- const SkQuadSpan* next() const { |
- return fNext; |
- } |
- |
- void reset() { |
- fBounded.reset(); |
- } |
- |
- bool split(SkQuadSpan* work) { |
- return splitAt(work, (work->fStartT + work->fEndT) * 0.5); |
- } |
- |
- bool splitAt(SkQuadSpan* work, double t); |
- bool tightBoundsIntersects(const SkQuadSpan* span) const; |
- |
- // implementation is for testing only |
- void dump() const; |
- |
-private: |
- bool hullIntersects(const SkDQuad& q2) const; |
- SkQuadSpan* innerFind(double t); |
- bool linearIntersects(const SkDQuad& q2) const; |
- |
- // implementation is for testing only |
-#if DEBUG_BINARY_QUAD |
- int debugID(const SkQuadSect* ) const { return fDebugID; } |
-#else |
- int debugID(const SkQuadSect* ) const; |
-#endif |
- void dump(const SkQuadSect* ) const; |
- void dumpID(const SkQuadSect* ) const; |
- |
-#if DEBUG_BINARY_QUAD |
- void validate() const; |
-#endif |
- |
- SkDQuad fPart; |
- SkQuadCoincident fCoinStart; |
- SkQuadCoincident fCoinEnd; |
- SkSTArray<4, SkQuadSpan*, true> fBounded; |
- SkQuadSpan* fPrev; |
- SkQuadSpan* fNext; |
- SkDRect fBounds; |
- double fStartT; |
- double fEndT; |
- double fBoundsMax; |
- bool fCollapsed; |
- bool fHasPerp; |
- mutable bool fIsLinear; |
-#if DEBUG_BINARY_QUAD |
- int fDebugID; |
- bool fDebugDeleted; |
-#endif |
- friend class SkQuadSect; |
-}; |
- |
-class SkQuadSect { |
-public: |
- SkQuadSect(const SkDQuad& quad PATH_OPS_DEBUG_PARAMS(int id)); |
- static void BinarySearch(SkQuadSect* sect1, SkQuadSect* sect2, SkIntersections* intersections); |
- |
- // for testing only |
- void dumpQuads() const; |
-private: |
- SkQuadSpan* addOne(); |
- bool binarySearchCoin(const SkQuadSect& , double tStart, double tStep, double* t, double* oppT); |
- SkQuadSpan* boundsMax() const; |
- void coincidentCheck(SkQuadSect* sect2); |
- bool intersects(const SkQuadSpan* span, const SkQuadSect* opp, const SkQuadSpan* oppSpan) const; |
- void onCurveCheck(SkQuadSect* sect2, SkQuadSpan* first, SkQuadSpan* last); |
- void recoverCollapsed(); |
- void removeSpan(SkQuadSpan* span); |
- void removeOne(const SkQuadSpan* test, SkQuadSpan* span); |
- void removeSpans(SkQuadSpan* span, SkQuadSect* opp); |
- void setPerp(const SkDQuad& opp, SkQuadSpan* first, SkQuadSpan* last); |
- const SkQuadSpan* tail() const; |
- void trim(SkQuadSpan* span, SkQuadSect* opp); |
- |
- // for testing only |
- void dump() const; |
- void dumpBoth(const SkQuadSect& opp) const; |
- void dumpBoth(const SkQuadSect* opp) const; |
- |
-#if DEBUG_BINARY_QUAD |
- int debugID() const { return fDebugID; } |
- void validate() const; |
-#else |
- int debugID() const { return 0; } |
-#endif |
- const SkDQuad& fQuad; |
- SkChunkAlloc fHeap; |
- SkQuadSpan* fHead; |
- SkQuadSpan* fDeleted; |
- int fActiveCount; |
-#if DEBUG_BINARY_QUAD |
- int fDebugID; |
- int fDebugCount; |
- int fDebugAllocatedCount; |
-#endif |
- friend class SkQuadSpan; // only used by debug id |
-}; |
- |
-#endif |