bool SkOpAngle::merge(SkOpAngle* angle) { SkASSERT(fNext); SkASSERT(angle->fNext); SkOpAngle* working = angle; do { if (this == working) { return false; } working = working->fNext; } while (working != angle); do { SkOpAngle* next = working->fNext; working->fNext = NULL; insert(working); working = next; } while (working != angle); // it's likely that a pair of the angles are unorderable #if DEBUG_ANGLE SkOpAngle* last = angle; working = angle->fNext; do { SkASSERT(last->fNext == working); last->fNext = working->fNext; SkASSERT(working->after(last)); last->fNext = working; last = working; working = working->fNext; } while (last != angle); #endif debugValidateNext(); return true; }
static int After(SkOpAngle& lh, SkOpAngle& rh) { return lh.after(&rh); }
static int After(const SkOpAngle& lh, const SkOpAngle& rh) { return lh.after(&rh); }