68 fInsertionSet.clear();
71 bool hasLower =
false;
74 auto handleLower = [&hasLower](
const Lower& l) {
79 auto handleCross = [
this](
const Cross& c) {
80 fDeletionSet.insert({c.s0, c.s1});
81 fInsertionSet.insert({c.s0, c.s1});
85 auto handleUpper = [
this](
const Upper& u) {
86 fInsertionSet.insert(u.s);
89 SkASSERT(u.s.lower() != u.s.upper());
93 Visitor visitor{handleLower, handleCross, handleUpper};
95 const Point eventPoint = fQueue.begin()->where;
98 SkASSERT(fLastEventPoint < eventPoint);
99 fLastEventPoint = eventPoint;
102 auto cursor = fQueue.begin();
103 const auto queueEnd = fQueue.end();
104 for (; cursor != queueEnd && cursor->where == eventPoint;
106 const Event&
event = *cursor;
107 std::visit(visitor,
event.type);
111 fQueue.erase(fQueue.begin(), cursor);
113 if (hasLower || !fDeletionSet.empty()) {
118 if (hasLower || !fDeletionSet.empty() || !fInsertionSet.empty()) {