Lines Matching refs:contour

97     return winding;  // note winding indicates containership, not contour direction
204 int nextEdge(Contour& contour, Edge edge) {
212 if (++verbCount < contour.fVerbStart) {
215 if (verbCount >= contour.fVerbEnd) {
232 winding += contains_edge(pts, verb, conic_weight(iter, verb), contour.fMinXY);
238 if (minXY.fX > contour.fMinXY.fX) {
241 if (minXY.fX == contour.fMinXY.fX) {
242 if (minXY.fY != contour.fMinXY.fY) {
245 if (direction == contour.fDirection) {
254 contour.fMinXY = minXY;
255 contour.fDirection = direction;
260 bool containerContains(Contour& contour, Contour& test) {
261 // find outside point on lesser contour
269 contour.fMinXY = test.fMinXY;
270 int winding = this->nextEdge(contour, Edge::kCompare);
271 // if edge is up, mark contour cw, otherwise, ccw
277 void inParent(Contour& contour, Contour& parent) {
278 // move contour into sibling list contained by parent
280 if (test->fBounds.contains(contour.fBounds)) {
281 inParent(contour, *test);
285 // move parent's children into contour's children if contained by contour
287 if (contour.fBounds.contains((*iter)->fBounds)) {
288 contour.fChildren.push_back(*iter);
294 parent.fChildren.push_back(&contour);
331 for (const Contour& contour : contours) {
333 SkPathBuilder* temp = contour.fReverse ? &reverse : &result;
334 for (; iter != iterate.end() && verbCount < contour.fVerbEnd; ++iter, ++verbCount) {
357 if (contour.fReverse) {
390 vector<Contour> contours; // one per contour
396 // create contour bounding box tree
398 for (auto& contour : contours) {
399 winder.inParent(contour, sorted);
403 [](const Contour* contour) -> bool { return !contour->fChildren.size(); } )) {
407 for (auto contour : sorted.fChildren) {
408 winder.nextEdge(*contour, OpAsWinding::Edge::kInitial);
409 if (!winder.checkContainerChildren(nullptr, contour)) {
415 for (auto contour : sorted.fChildren) {
416 reversed |= winder.markReverse(nullptr, contour);