Lines Matching refs:span
104 SkOpSpanBase* oSpan = oPtT->span();
228 // break the span so that the coincident part does not change the angle of the remainder
245 writableTest->mergeMatches(newPtT->span());
263 SkOpSpan* prev = result->span()->prev();
265 // marks in global state that new op span has been allocated
266 SkOpSpan* span = this->insert(prev);
267 span->init(this, prev, t, pt);
271 span->segment()->debugID(), span->debugID());
273 span->bumpSpanAdds();
274 return span->ptT();
299 SkOpSpan* span = spanBase->upCast();
300 bool active = !span->isCanceled();
301 SkOpSpanBase* next = span->next();
304 angle->set(span, next);
305 span->setToAngle(angle);
308 prior = span;
318 SkOpSpan* span = &fHead;
320 this->clearOne(span);
321 } while ((span = span->next()->upCastable()));
326 void SkOpSegment::clearOne(SkOpSpan* span) {
327 span->setWindValue(0);
328 span->setOppValue(0);
329 this->markDone(span);
333 const SkOpSpanBase* span = &fHead;
335 SkOpSpanBase::Collapsed result = span->collapsed(s, e);
339 } while (span->upCastable() && (span = span->upCast()->next()));
413 // at this point, the span is already ordered, or unorderable
498 void SkOpSegment::release(const SkOpSpan* span) {
499 if (span->done()) {
622 SkDebugf("%s chase.append segment=%d span=%d", __FUNCTION__,
718 SkDebugf("%s chase.append segment=%d span=%d", __FUNCTION__,
853 SkOpSpan* span = this->head();
855 this->markDone(span);
856 } while ((span = span->next()->upCastable()));
966 SkDebugf("%s last seg=%d span=%d", __FUNCTION__,
995 SkDebugf("%s last segment=%d span=%d", __FUNCTION__,
1008 void SkOpSegment::markDone(SkOpSpan* span) {
1009 SkASSERT(this == span->segment());
1010 if (span->done()) {
1014 debugShowNewWinding(__FUNCTION__, span, span->windSum(), span->oppSum());
1016 span->setDone(true);
1021 bool SkOpSegment::markWinding(SkOpSpan* span, int winding) {
1022 SkASSERT(this == span->segment());
1024 if (span->done()) {
1028 debugShowNewWinding(__FUNCTION__, span, winding);
1030 span->setWindSum(winding);
1035 bool SkOpSegment::markWinding(SkOpSpan* span, int winding, int oppWinding) {
1036 SkASSERT(this == span->segment());
1038 if (span->done()) {
1042 debugShowNewWinding(__FUNCTION__, span, winding, oppWinding);
1044 span->setWindSum(winding);
1045 span->setOppSum(oppWinding);
1087 foundSpan = otherPtT->span();
1134 void SkOpSegment::ClearVisited(SkOpSpanBase* span) {
1137 SkOpPtT* ptT = span->ptT(), * stopPtT = ptT;
1142 } while (!span->final() && (span = span->upCast()->next()));
1165 SkOPASSERT(ptT->span() == spanBase);
1173 SkOpSegment* opp = ptT->span()->segment();
1187 SkOpSpan* span = spanBase->upCastable();
1190 if (span && span->containsCoincidence(opp)) {
1197 // find prior span containing opp segment
1206 SkOpSegment* segment = priorPtT->span()->segment();
1230 SkOpPtT* rootPriorPtT = priorPtT->span()->ptT();
1231 SkOpPtT* rootPtT = ptT->span()->ptT();
1232 SkOpPtT* rootOppStart = oppStart->span()->ptT();
1233 SkOpPtT* rootOppEnd = oppEnd->span()->ptT();
1264 // if a span has more than one intersection, merge the other segments' span as needed
1281 SkOpSpanBase* oppSpan = testPtT->span();
1434 // Move nearby t values and pts so they all hang off the same span. Alignment happens later.
1437 // release undeleted spans pointing to this seg that are linked to the primary span
1447 SkOpSpanBase* test = ptT->span();
1544 SkOpSpanBase* span = &this->fHead;
1546 SkOpAngle* fromAngle = span->fromAngle();
1547 SkOpAngle* toAngle = span->final() ? nullptr : span->upCast()->toAngle();
1557 SkDebugf("%s [%d] tStart=%1.9g [%d]\n", __FUNCTION__, debugID(), span->t(),
1558 span->debugID());
1565 SkOpPtT* ptT = span->ptT(), * stopPtT = ptT;
1571 SkOpSpanBase* oSpan = ptT->span();
1572 if (oSpan == span) {
1580 span->t(), span->debugID());
1594 span->t(), span->debugID());
1605 span->setFromAngle(nullptr);
1607 span->upCast()->setToAngle(nullptr);
1614 } while (!span->final() && (span = span->upCast()->next()));
1674 if (priorPtT->span() == ptT->span()) {
1685 opp->subDivide(priorPtT->span(), ptT->span(), &oppPart);
1703 SkOpSpan* span = &fHead;
1706 next = span->next();
1707 if (!span->done()) {
1708 return span;
1710 } while (!next->final() && (span = next->upCast()));