Lines Matching refs:SkTSpan
74 template<typename TCurve, typename OppCurve> class SkTSpan; variable
78 SkTSpan<TCurve, OppCurve>* fBounded;
84 class SkTSpan {
86 void addBounded(SkTSpan<OppCurve, TCurve>* , SkChunkAlloc* );
100 const SkTSpan* debugSpan(int ) const;
101 const SkTSpan* debugT(double t) const;
103 bool debugIsBefore(const SkTSpan* span) const;
115 SkTSpan<OppCurve, TCurve>* findOppSpan(const SkTSpan<OppCurve, TCurve>* opp) const;
117 SkTSpan<OppCurve, TCurve>* findOppT(double t) const { in findOppT()
118 SkTSpan<OppCurve, TCurve>* result = oppT(t); in findOppT()
127 int hullsIntersect(SkTSpan<OppCurve, TCurve>* span, bool* start, bool* oppStart);
135 bool linearsIntersect(SkTSpan<OppCurve, TCurve>* span);
143 const SkTSpan* next() const { in next()
147 bool onlyEndPointsInCommon(const SkTSpan<OppCurve, TCurve>* opp, bool* start,
155 bool removeBounded(const SkTSpan<OppCurve, TCurve>* opp);
166 bool split(SkTSpan* work, SkChunkAlloc* heap) { in split()
170 bool splitAt(SkTSpan* work, double t, SkChunkAlloc* heap);
185 int hullCheck(const SkTSpan<OppCurve, TCurve>* opp, bool* start, bool* oppStart);
187 SkTSpan<OppCurve, TCurve>* oppT(double t) const;
198 SkTSpan* fPrev;
199 SkTSpan* fNext;
213 friend class SkTSpan<OppCurve, TCurve>; variable
224 bool debugHasBounded(const SkTSpan<OppCurve, TCurve>* ) const;
230 const SkTSpan<TCurve, OppCurve>* debugSpan(int id) const;
231 const SkTSpan<TCurve, OppCurve>* debugT(double t) const;
248 SkTSpan<TCurve, OppCurve>* addFollowing(SkTSpan<TCurve, OppCurve>* prior);
249 void addForPerp(SkTSpan<OppCurve, TCurve>* span, double t);
250 SkTSpan<TCurve, OppCurve>* addOne();
252 SkTSpan<TCurve, OppCurve>* addSplitAt(SkTSpan<TCurve, OppCurve>* span, double t) { in addSplitAt()
253 SkTSpan<TCurve, OppCurve>* result = this->addOne(); in addSplitAt()
262 SkTSpan<TCurve, OppCurve>* boundsMax() const;
267 void computePerpendiculars(SkTSect<OppCurve, TCurve>* sect2, SkTSpan<TCurve, OppCurve>* first,
268 SkTSpan<TCurve, OppCurve>* last);
269 int countConsecutiveSpans(SkTSpan<TCurve, OppCurve>* first,
270 SkTSpan<TCurve, OppCurve>** last) const;
277 void dumpCommon(const SkTSpan<TCurve, OppCurve>* ) const;
278 void dumpCommonCurves(const SkTSpan<TCurve, OppCurve>* ) const;
281 SkTSpan<TCurve, OppCurve>* extractCoincident(SkTSect<OppCurve, TCurve>* sect2,
282 SkTSpan<TCurve, OppCurve>* first,
283 SkTSpan<TCurve, OppCurve>* last);
284 SkTSpan<TCurve, OppCurve>* findCoincidentRun(SkTSpan<TCurve, OppCurve>* first,
285 SkTSpan<TCurve, OppCurve>** lastPtr);
286 int intersects(SkTSpan<TCurve, OppCurve>* span, SkTSect<OppCurve, TCurve>* opp,
287 SkTSpan<OppCurve, TCurve>* oppSpan, int* oppResult);
289 int linesIntersect(SkTSpan<TCurve, OppCurve>* span, SkTSect<OppCurve, TCurve>* opp,
290 SkTSpan<OppCurve, TCurve>* oppSpan, SkIntersections* );
291 void markSpanGone(SkTSpan<TCurve, OppCurve>* span);
296 SkTSpan<TCurve, OppCurve>* prev(SkTSpan<TCurve, OppCurve>* ) const;
299 void removeCoincident(SkTSpan<TCurve, OppCurve>* span, bool isBetween);
300 void removeAllBut(const SkTSpan<OppCurve, TCurve>* keep, SkTSpan<TCurve, OppCurve>* span,
302 void removeSpan(SkTSpan<TCurve, OppCurve>* span);
303 void removeSpanRange(SkTSpan<TCurve, OppCurve>* first, SkTSpan<TCurve, OppCurve>* last);
304 void removeSpans(SkTSpan<TCurve, OppCurve>* span, SkTSect<OppCurve, TCurve>* opp);
305 SkTSpan<TCurve, OppCurve>* spanAtT(double t, SkTSpan<TCurve, OppCurve>** priorSpan);
306 SkTSpan<TCurve, OppCurve>* tail();
307 void trim(SkTSpan<TCurve, OppCurve>* span, SkTSect<OppCurve, TCurve>* opp);
308 void unlinkSpan(SkTSpan<TCurve, OppCurve>* span);
309 bool updateBounded(SkTSpan<TCurve, OppCurve>* first, SkTSpan<TCurve, OppCurve>* last,
310 SkTSpan<OppCurve, TCurve>* oppFirst);
316 SkTSpan<TCurve, OppCurve>* fHead;
317 SkTSpan<TCurve, OppCurve>* fCoincident;
318 SkTSpan<TCurve, OppCurve>* fDeleted;
326 friend class SkTSpan<TCurve, OppCurve>; variable
327 friend class SkTSpan<OppCurve, TCurve>; variable
370 void SkTSpan<TCurve, OppCurve>::addBounded(SkTSpan<OppCurve, TCurve>* span, SkChunkAlloc* heap) { in addBounded()
379 SkTSpan<TCurve, OppCurve>* SkTSect<TCurve, OppCurve>::addFollowing( in addFollowing()
380 SkTSpan<TCurve, OppCurve>* prior) { in addFollowing()
381 SkTSpan<TCurve, OppCurve>* result = this->addOne(); in addFollowing()
383 SkTSpan<TCurve, OppCurve>* next = prior ? prior->fNext : fHead; in addFollowing()
400 void SkTSect<TCurve, OppCurve>::addForPerp(SkTSpan<OppCurve, TCurve>* span, double t) { in addForPerp()
402 SkTSpan<TCurve, OppCurve>* priorSpan; in addForPerp()
403 SkTSpan<TCurve, OppCurve>* opp = this->spanAtT(t, &priorSpan); in addForPerp()
426 double SkTSpan<TCurve, OppCurve>::closestBoundedT(const SkDPoint& pt) const { in closestBoundedT()
431 const SkTSpan<OppCurve, TCurve>* test = testBounded->fBounded; in closestBoundedT()
450 bool SkTSpan<TCurve, OppCurve>::debugIsBefore(const SkTSpan* span) const { in debugIsBefore()
451 const SkTSpan* work = this; in debugIsBefore()
462 bool SkTSpan<TCurve, OppCurve>::contains(double t) const { in contains()
463 const SkTSpan* work = this; in contains()
473 const SkTSect<OppCurve, TCurve>* SkTSpan<TCurve, OppCurve>::debugOpp() const { in debugOpp()
478 SkTSpan<OppCurve, TCurve>* SkTSpan<TCurve, OppCurve>::findOppSpan( in findOppSpan()
479 const SkTSpan<OppCurve, TCurve>* opp) const { in findOppSpan()
482 SkTSpan<OppCurve, TCurve>* test = bounded->fBounded; in findOppSpan()
496 int SkTSpan<TCurve, OppCurve>::hullCheck(const SkTSpan<OppCurve, TCurve>* opp, in hullCheck()
524 int SkTSpan<TCurve, OppCurve>::hullsIntersect(SkTSpan<OppCurve, TCurve>* opp, in hullsIntersect()
541 void SkTSpan<TCurve, OppCurve>::init(const TCurve& c) { in init()
550 void SkTSpan<TCurve, OppCurve>::initBounds(const TCurve& c) { in initBounds()
567 bool SkTSpan<TCurve, OppCurve>::linearsIntersect(SkTSpan<OppCurve, TCurve>* span) { in linearsIntersect()
579 double SkTSpan<TCurve, OppCurve>::linearT(const SkDPoint& pt) const { in linearT()
587 int SkTSpan<TCurve, OppCurve>::linearIntersects(const OppCurve& q2) const { in linearIntersects()
634 bool SkTSpan<TCurve, OppCurve>::onlyEndPointsInCommon(const SkTSpan<OppCurve, TCurve>* opp, in onlyEndPointsInCommon()
669 SkTSpan<OppCurve, TCurve>* SkTSpan<TCurve, OppCurve>::oppT(double t) const { in oppT()
672 SkTSpan<OppCurve, TCurve>* test = bounded->fBounded; in oppT()
682 bool SkTSpan<TCurve, OppCurve>::removeAllBounded() { in removeAllBounded()
686 SkTSpan<OppCurve, TCurve>* opp = bounded->fBounded; in removeAllBounded()
694 bool SkTSpan<TCurve, OppCurve>::removeBounded(const SkTSpan<OppCurve, TCurve>* opp) { in removeBounded()
700 SkTSpan<OppCurve, TCurve>* test = bounded->fBounded; in removeBounded()
734 bool SkTSpan<TCurve, OppCurve>::splitAt(SkTSpan* work, double t, SkChunkAlloc* heap) { in splitAt()
770 void SkTSpan<TCurve, OppCurve>::validate() const { in validate()
796 void SkTSpan<TCurve, OppCurve>::validateBounded() const { in validateBounded()
800 SkDEBUGCODE_(const SkTSpan<OppCurve, TCurve>* overlap = testBounded->fBounded); in validateBounded()
810 void SkTSpan<TCurve, OppCurve>::validatePerpT(double oppT) const { in validatePerpT()
813 const SkTSpan<OppCurve, TCurve>* overlap = testBounded->fBounded; in validatePerpT()
823 void SkTSpan<TCurve, OppCurve>::validatePerpPt(double t, const SkDPoint& pt) const { in validatePerpPt()
831 , fHeap(sizeof(SkTSpan<TCurve, OppCurve>) * 4) in SkTSect()
844 SkTSpan<TCurve, OppCurve>* SkTSect<TCurve, OppCurve>::addOne() { in addOne()
845 SkTSpan<TCurve, OppCurve>* result; in addOne()
850 result = new (fHeap.allocThrow(sizeof(SkTSpan<TCurve, OppCurve>)))( in addOne()
851 SkTSpan<TCurve, OppCurve>); in addOne()
877 SkTSpan<TCurve, OppCurve> work; in binarySearchCoin()
935 SkTSpan<TCurve, OppCurve>* SkTSect<TCurve, OppCurve>::boundsMax() const { in boundsMax()
936 SkTSpan<TCurve, OppCurve>* test = fHead; in boundsMax()
937 SkTSpan<TCurve, OppCurve>* largest = fHead; in boundsMax()
952 SkTSpan<TCurve, OppCurve>* first = fHead; in coincidentCheck()
953 SkTSpan<TCurve, OppCurve>* last, * next; in coincidentCheck()
966 SkTSpan<TCurve, OppCurve>* coinStart = first; in coincidentCheck()
976 SkTSpan<TCurve, OppCurve>* first = fHead; in coincidentForce()
977 SkTSpan<TCurve, OppCurve>* last = this->tail(); in coincidentForce()
978 SkTSpan<OppCurve, TCurve>* oppFirst = sect2->fHead; in coincidentForce()
979 SkTSpan<OppCurve, TCurve>* oppLast = sect2->tail(); in coincidentForce()
1008 SkTSpan<TCurve, OppCurve>* test = fCoincident; in coincidentHasT()
1021 const SkTSpan<TCurve, OppCurve>* test = fHead; in collapsed()
1033 SkTSpan<TCurve, OppCurve>* first, SkTSpan<TCurve, OppCurve>* last) { in computePerpendiculars()
1035 SkTSpan<TCurve, OppCurve>* work = first; in computePerpendiculars()
1036 SkTSpan<TCurve, OppCurve>* prior = nullptr; in computePerpendiculars()
1073 int SkTSect<TCurve, OppCurve>::countConsecutiveSpans(SkTSpan<TCurve, OppCurve>* first, in countConsecutiveSpans()
1074 SkTSpan<TCurve, OppCurve>** lastPtr) const { in countConsecutiveSpans()
1076 SkTSpan<TCurve, OppCurve>* last = first; in countConsecutiveSpans()
1078 SkTSpan<TCurve, OppCurve>* next = last->fNext; in countConsecutiveSpans()
1093 bool SkTSect<TCurve, OppCurve>::debugHasBounded(const SkTSpan<OppCurve, TCurve>* span) const { in debugHasBounded()
1094 const SkTSpan<TCurve, OppCurve>* test = fHead; in debugHasBounded()
1108 SkTSpan<TCurve, OppCurve>* test; in deleteEmptySpans()
1109 SkTSpan<TCurve, OppCurve>* next = fHead; in deleteEmptySpans()
1119 SkTSpan<TCurve, OppCurve>* SkTSect<TCurve, OppCurve>::extractCoincident( in extractCoincident()
1121 SkTSpan<TCurve, OppCurve>* first, SkTSpan<TCurve, OppCurve>* last) { in extractCoincident()
1130 SkTSpan<TCurve, OppCurve>* prev = first->fPrev; in extractCoincident()
1132 SkTSpan<OppCurve, TCurve>* oppFirst = first->findOppT(first->fCoinStart.perpT()); in extractCoincident()
1137 SkTSpan<OppCurve, TCurve>* cutFirst; in extractCoincident()
1148 SkTSpan<OppCurve, TCurve>* oppHalf = sect2->addSplitAt(oppFirst, oppStartT); in extractCoincident()
1163 SkTSpan<OppCurve, TCurve>* oppLast; in extractCoincident()
1213 SkTSpan<TCurve, OppCurve>* SkTSect<TCurve, OppCurve>::findCoincidentRun( in findCoincidentRun()
1214 SkTSpan<TCurve, OppCurve>* first, SkTSpan<TCurve, OppCurve>** lastPtr) { in findCoincidentRun()
1215 SkTSpan<TCurve, OppCurve>* work = first; in findCoincidentRun()
1216 SkTSpan<TCurve, OppCurve>* lastCandidate = nullptr; in findCoincidentRun()
1253 int SkTSect<TCurve, OppCurve>::intersects(SkTSpan<TCurve, OppCurve>* span, in intersects()
1255 SkTSpan<OppCurve, TCurve>* oppSpan, int* oppResult) { in intersects()
1334 int SkTSect<TCurve, OppCurve>::linesIntersect(SkTSpan<TCurve, OppCurve>* span, in linesIntersect()
1336 SkTSpan<OppCurve, TCurve>* oppSpan, SkIntersections* i) { in linesIntersect()
1492 void SkTSect<TCurve, OppCurve>::markSpanGone(SkTSpan<TCurve, OppCurve>* span) { in markSpanGone()
1524 SkTSpan<TCurve, OppCurve>* smaller = nullptr; in mergeCoincidence()
1525 SkTSpan<TCurve, OppCurve>* test = fCoincident; in mergeCoincidence()
1540 SkTSpan<TCurve, OppCurve>* prior = nullptr; in mergeCoincidence()
1541 SkTSpan<TCurve, OppCurve>* larger = nullptr; in mergeCoincidence()
1542 SkTSpan<TCurve, OppCurve>* largerPrior = nullptr; in mergeCoincidence()
1576 SkTSpan<TCurve, OppCurve>* SkTSect<TCurve, OppCurve>::prev( in prev()
1577 SkTSpan<TCurve, OppCurve>* span) const { in prev()
1578 SkTSpan<TCurve, OppCurve>* result = nullptr; in prev()
1579 SkTSpan<TCurve, OppCurve>* test = fHead; in prev()
1590 SkTSpan<TCurve, OppCurve>* deleted = fDeleted; in recoverCollapsed()
1592 SkTSpan<TCurve, OppCurve>* delNext = deleted->fNext; in recoverCollapsed()
1594 SkTSpan<TCurve, OppCurve>** spanPtr = &fHead; in recoverCollapsed()
1606 void SkTSect<TCurve, OppCurve>::removeAllBut(const SkTSpan<OppCurve, TCurve>* keep, in removeAllBut()
1607 SkTSpan<TCurve, OppCurve>* span, SkTSect<OppCurve, TCurve>* opp) { in removeAllBut()
1610 SkTSpan<OppCurve, TCurve>* bounded = testBounded->fBounded; in removeAllBut()
1628 SkTSpan<TCurve, OppCurve>* test = fHead; in removeByPerpendicular()
1629 SkTSpan<TCurve, OppCurve>* next; in removeByPerpendicular()
1649 void SkTSect<TCurve, OppCurve>::removeCoincident(SkTSpan<TCurve, OppCurve>* span, bool isBetween) { in removeCoincident()
1661 void SkTSect<TCurve, OppCurve>::removeSpan(SkTSpan<TCurve, OppCurve>* span) { in removeSpan()
1667 void SkTSect<TCurve, OppCurve>::removeSpanRange(SkTSpan<TCurve, OppCurve>* first, in removeSpanRange()
1668 SkTSpan<TCurve, OppCurve>* last) { in removeSpanRange()
1672 SkTSpan<TCurve, OppCurve>* span = first; in removeSpanRange()
1674 SkTSpan<TCurve, OppCurve>* final = last->fNext; in removeSpanRange()
1675 SkTSpan<TCurve, OppCurve>* next = span->fNext; in removeSpanRange()
1687 void SkTSect<TCurve, OppCurve>::removeSpans(SkTSpan<TCurve, OppCurve>* span, in removeSpans()
1691 SkTSpan<OppCurve, TCurve>* spanBounded = bounded->fBounded; in removeSpans()
1705 SkTSpan<TCurve, OppCurve>* SkTSect<TCurve, OppCurve>::spanAtT(double t, in spanAtT()
1706 SkTSpan<TCurve, OppCurve>** priorSpan) { in spanAtT()
1707 SkTSpan<TCurve, OppCurve>* test = fHead; in spanAtT()
1708 SkTSpan<TCurve, OppCurve>* prev = nullptr; in spanAtT()
1718 SkTSpan<TCurve, OppCurve>* SkTSect<TCurve, OppCurve>::tail() { in tail()
1719 SkTSpan<TCurve, OppCurve>* result = fHead; in tail()
1720 SkTSpan<TCurve, OppCurve>* next = fHead; in tail()
1732 void SkTSect<TCurve, OppCurve>::trim(SkTSpan<TCurve, OppCurve>* span, in trim()
1737 SkTSpan<OppCurve, TCurve>* test = testBounded->fBounded; in trim()
1763 void SkTSect<TCurve, OppCurve>::unlinkSpan(SkTSpan<TCurve, OppCurve>* span) { in unlinkSpan()
1764 SkTSpan<TCurve, OppCurve>* prev = span->fPrev; in unlinkSpan()
1765 SkTSpan<TCurve, OppCurve>* next = span->fNext; in unlinkSpan()
1780 bool SkTSect<TCurve, OppCurve>::updateBounded(SkTSpan<TCurve, OppCurve>* first, in updateBounded()
1781 SkTSpan<TCurve, OppCurve>* last, SkTSpan<OppCurve, TCurve>* oppFirst) { in updateBounded()
1782 SkTSpan<TCurve, OppCurve>* test = first; in updateBounded()
1783 const SkTSpan<TCurve, OppCurve>* final = last->next(); in updateBounded()
1800 const SkTSpan<TCurve, OppCurve>* span = fHead; in validate()
1813 const SkTSpan<TCurve, OppCurve>* deleted = fDeleted; in validate()
1818 const SkTSpan<TCurve, OppCurve>* coincident = fCoincident; in validate()
1833 const SkTSpan<TCurve, OppCurve>* span = fHead; in validateBounded()
1899 void findEnd(const SkTSpan<TCurve, OppCurve>* span1, const SkTSpan<OppCurve, TCurve>* span2, in findEnd()
1955 const SkTSpan<TCurve, OppCurve>* fC1Span;
1956 const SkTSpan<OppCurve, TCurve>* fC2Span;
1973 bool find(const SkTSpan<TCurve, OppCurve>* span1, const SkTSpan<OppCurve, TCurve>* span2) { in find()
2028 SkTSpan<TCurve, OppCurve>* span1 = sect1->fHead; in BinarySearch()
2029 SkTSpan<OppCurve, TCurve>* span2 = sect2->fHead; in BinarySearch()
2047 SkTSpan<TCurve, OppCurve>* largest1 = sect1->boundsMax(); in BinarySearch()
2051 SkTSpan<OppCurve, TCurve>* largest2 = sect2->boundsMax(); in BinarySearch()
2059 SkTSpan<TCurve, OppCurve>* half1 = sect1->addOne(); in BinarySearch()
2070 SkTSpan<OppCurve, TCurve>* half2 = sect2->addOne(); in BinarySearch()
2127 SkTSpan<TCurve, OppCurve>* coincident = sect1->fCoincident; in BinarySearch()
2157 SkTSpan<TCurve, OppCurve>* result1 = sect1->fHead; in BinarySearch()
2159 const SkTSpan<TCurve, OppCurve>* head1 = result1; in BinarySearch()
2169 const SkTSpan<OppCurve, TCurve>* head2 = sect2->fHead; in BinarySearch()
2179 const SkTSpan<TCurve, OppCurve>* tail1 = sect1->tail(); in BinarySearch()
2189 const SkTSpan<OppCurve, TCurve>* tail2 = sect2->tail(); in BinarySearch()
2207 SkTSpan<OppCurve, TCurve>* result2 = sect2->fHead; in BinarySearch()