Lines Matching defs:winding

258     // advance the span with zero winding
259 // if the following span exists (not past the end, non-zero winding)
308 // if either is > 0, add a pointer to the other, copying adjacent winding
555 // between the winding values?
703 // each ends up with +2/0 pairs for winding count
872 int winding;
878 winding = base->windSum(angle);
879 if (winding != SK_MinS32) {
887 // turn winding into contourWinding
889 bool inner = UseInnerWinding(winding + spanWinding, winding);
891 SkDebugf("%s spanWinding=%d winding=%d sign=%d inner=%d result=%d\n", __FUNCTION__,
892 spanWinding, winding, angle->sign(), inner,
893 inner ? winding + spanWinding : winding);
896 winding += spanWinding;
899 base->debugShowSort(__FUNCTION__, sorted, firstIndex, winding, oWinding, sortable);
903 winding -= base->spanSign(angle);
918 maxWinding = winding;
920 winding -= oppoSign;
923 maxWinding = winding;
924 winding -= spanSign;
935 if (oppoSign && UseInnerWinding(maxWinding, winding)) {
936 maxWinding = winding;
944 if (UseInnerWinding(maxWinding, winding)) {
945 maxWinding = winding;
1258 // iterate through the angle, and compute everyone's winding
1376 // iterate through the angle, and compute everyone's winding
1453 // FIXME: I don't know why the logic here is difference from the winding case
1832 If the supplied sign (winding) is zero, then we didn't hit another vertical span, so dx is needed.
1833 If there was a winding, then it may or may not need adjusting. If the span the winding was borrowed
1834 from has the same x direction as this span, the winding should change. If the dx is opposite, then
1835 the same winding is shared by both.
1837 void SkOpSegment::initWinding(int start, int end, double tHit, int winding, SkScalar hitDx,
1839 SkASSERT(hitDx || !winding);
1844 SkDebugf("%s oldWinding=%d hitDx=%c dx=%c windVal=%d", __FUNCTION__, winding,
1847 if (!winding) {
1848 winding = dx < 0 ? windVal : -windVal;
1849 } else if (winding * dx < 0) {
1850 int sideWind = winding + (dx < 0 ? windVal : -windVal);
1851 if (abs(winding) < abs(sideWind)) {
1852 winding = sideWind;
1856 SkDebugf(" winding=%d\n", winding);
1869 (void) markAndChaseWinding(start, end, winding, oppWind);
1913 // this span is excluded by the winding rule -- chase the ends
1915 // and give them the same winding value
1916 SkOpSpan* SkOpSegment::markAndChaseDone(int index, int endIndex, int winding) {
1919 markDone(min, winding);
1923 other->markDone(min, winding);
1928 SkOpSpan* SkOpSegment::markAndChaseDoneBinary(const SkOpAngle* angle, int winding, int oppWinding) {
1933 markDoneBinary(min, winding, oppWinding);
1937 other->markDoneBinary(min, winding, oppWinding);
1972 SkOpSpan* SkOpSegment::markAndChaseDoneUnary(const SkOpAngle* angle, int winding) {
1975 return markAndChaseDone(index, endIndex, winding);
1978 SkOpSpan* SkOpSegment::markAndChaseWinding(const SkOpAngle* angle, const int winding) {
1983 markWinding(min, winding);
1988 SkASSERT(other->fTs[min].fWindSum == winding);
1991 other->markWinding(min, winding);
1996 SkOpSpan* SkOpSegment::markAndChaseWinding(int index, int endIndex, int winding, int oppWinding) {
1999 markWinding(min, winding, oppWinding);
2004 SkASSERT(other->fTs[min].fWindSum == winding || other->fTs[min].fLoop);
2007 other->markWinding(min, winding, oppWinding);
2012 SkOpSpan* SkOpSegment::markAndChaseWinding(const SkOpAngle* angle, int winding, int oppWinding) {
2015 return markAndChaseWinding(start, end, winding, oppWinding);
2056 void SkOpSegment::markDone(int index, int winding) {
2058 SkASSERT(winding);
2062 markOneDone(__FUNCTION__, lesser, winding);
2065 markOneDone(__FUNCTION__, index, winding);
2069 void SkOpSegment::markDoneBinary(int index, int winding, int oppWinding) {
2071 SkASSERT(winding || oppWinding);
2075 markOneDoneBinary(__FUNCTION__, lesser, winding, oppWinding);
2078 markOneDoneBinary(__FUNCTION__, index, winding, oppWinding);
2104 void SkOpSegment::markOneDone(const char* funName, int tIndex, int winding) {
2105 SkOpSpan* span = markOneWinding(funName, tIndex, winding);
2122 void SkOpSegment::markOneDoneBinary(const char* funName, int tIndex, int winding, int oppWinding) {
2123 SkOpSpan* span = markOneWinding(funName, tIndex, winding, oppWinding);
2140 SkOpSpan* SkOpSegment::markOneWinding(const char* funName, int tIndex, int winding) {
2146 debugShowNewWinding(funName, span, winding);
2148 SkASSERT(span.fWindSum == SK_MinS32 || span.fWindSum == winding);
2150 SkASSERT(abs(winding) <= gDebugMaxWindSum);
2152 span.fWindSum = winding;
2156 SkOpSpan* SkOpSegment::markOneWinding(const char* funName, int tIndex, int winding,
2163 debugShowNewWinding(funName, span, winding, oppWinding);
2165 SkASSERT(span.fWindSum == SK_MinS32 || span.fWindSum == winding);
2167 SkASSERT(abs(winding) <= gDebugMaxWindSum);
2169 span.fWindSum = winding;
2275 void SkOpSegment::markWinding(int index, int winding) {
2277 SkASSERT(winding);
2281 markOneWinding(__FUNCTION__, lesser, winding);
2284 markOneWinding(__FUNCTION__, index, winding);
2288 void SkOpSegment::markWinding(int index, int winding, int oppWinding) {
2290 SkASSERT(winding || oppWinding);
2294 markOneWinding(__FUNCTION__, lesser, winding, oppWinding);
2297 markOneWinding(__FUNCTION__, index, winding, oppWinding);
2616 int winding = windSum(lesser);
2618 if (winding && UseInnerWinding(winding - spanWinding, winding) && winding != SK_MaxS32) {
2619 winding -= spanWinding;
2621 return winding;
2640 int winding = crossOpp ? oppSum(tIndex) : windSum(tIndex);
2641 SkASSERT(winding != SK_MinS32);
2644 SkDebugf("%s oldWinding=%d windValue=%d", __FUNCTION__, winding, windVal);
2653 SkDebugf(" dx=0 winding=SK_MinS32\n");
2660 if (winding * *dx > 0) { // if same signs, result is negative
2661 winding += *dx > 0 ? -windVal : windVal;
2664 SkDebugf(" dx=%c winding=%d\n", *dx > 0 ? '+' : '-', winding);
2666 return winding;
2812 void SkOpSegment::debugShowNewWinding(const char* fun, const SkOpSpan& span, int winding) {
2823 (&span)[1].fT, winding);
2832 void SkOpSegment::debugShowNewWinding(const char* fun, const SkOpSpan& span, int winding,
2844 (&span)[1].fT, winding, oppWinding);
2975 int winding = segment->updateWinding(firstAngle);
2977 debugShowSort(fun, angles, first, winding, oppWinding, sortable);