Lines Matching refs:activeEdges

302     bool isActive(EdgeList* activeEdges) const {  in isActive()
303 return activeEdges && (fLeft || fRight || activeEdges->fHead == this); in isActive()
696 void fix_active_state(Edge* edge, EdgeList* activeEdges, Comparator& c) { in fix_active_state() argument
697 if (edge->isActive(activeEdges)) { in fix_active_state()
699 remove_edge(edge, activeEdges); in fix_active_state()
704 find_enclosing_edges(edge, activeEdges, c, &left, &right); in fix_active_state()
705 insert_edge(edge, left, activeEdges); in fix_active_state()
771 void merge_collinear_edges(Edge* edge, EdgeList* activeEdges, Comparator& c);
773 void set_top(Edge* edge, Vertex* v, EdgeList* activeEdges, Comparator& c) { in set_top() argument
778 fix_active_state(edge, activeEdges, c); in set_top()
779 merge_collinear_edges(edge, activeEdges, c); in set_top()
782 void set_bottom(Edge* edge, Vertex* v, EdgeList* activeEdges, Comparator& c) { in set_bottom() argument
787 fix_active_state(edge, activeEdges, c); in set_bottom()
788 merge_collinear_edges(edge, activeEdges, c); in set_bottom()
791 void merge_edges_above(Edge* edge, Edge* other, EdgeList* activeEdges, Comparator& c) { in merge_edges_above() argument
797 erase_edge_if_zero_winding(other, activeEdges); in merge_edges_above()
799 erase_edge_if_zero_winding(edge, activeEdges); in merge_edges_above()
802 erase_edge_if_zero_winding(other, activeEdges); in merge_edges_above()
803 set_bottom(edge, other->fTop, activeEdges, c); in merge_edges_above()
806 erase_edge_if_zero_winding(edge, activeEdges); in merge_edges_above()
807 set_bottom(other, edge->fTop, activeEdges, c); in merge_edges_above()
811 void merge_edges_below(Edge* edge, Edge* other, EdgeList* activeEdges, Comparator& c) { in merge_edges_below() argument
817 erase_edge_if_zero_winding(other, activeEdges); in merge_edges_below()
819 erase_edge_if_zero_winding(edge, activeEdges); in merge_edges_below()
822 erase_edge_if_zero_winding(edge, activeEdges); in merge_edges_below()
823 set_top(other, edge->fBottom, activeEdges, c); in merge_edges_below()
826 erase_edge_if_zero_winding(other, activeEdges); in merge_edges_below()
827 set_top(edge, other->fBottom, activeEdges, c); in merge_edges_below()
831 void merge_collinear_edges(Edge* edge, EdgeList* activeEdges, Comparator& c) { in merge_collinear_edges() argument
834 merge_edges_above(edge, edge->fPrevEdgeAbove, activeEdges, c); in merge_collinear_edges()
837 merge_edges_above(edge, edge->fNextEdgeAbove, activeEdges, c); in merge_collinear_edges()
841 merge_edges_below(edge, edge->fPrevEdgeBelow, activeEdges, c); in merge_collinear_edges()
844 merge_edges_below(edge, edge->fNextEdgeBelow, activeEdges, c); in merge_collinear_edges()
848 void split_edge(Edge* edge, Vertex* v, EdgeList* activeEdges, Comparator& c, SkChunkAlloc& alloc);
850 void cleanup_active_edges(Edge* edge, EdgeList* activeEdges, Comparator& c, SkChunkAlloc& alloc) { in cleanup_active_edges() argument
857 split_edge(edge->fLeft, edge->fTop, activeEdges, c, alloc); in cleanup_active_edges()
859 split_edge(edge, leftTop, activeEdges, c, alloc); in cleanup_active_edges()
862 split_edge(edge->fLeft, bottom, activeEdges, c, alloc); in cleanup_active_edges()
864 split_edge(edge, leftBottom, activeEdges, c, alloc); in cleanup_active_edges()
871 split_edge(edge->fRight, top, activeEdges, c, alloc); in cleanup_active_edges()
873 split_edge(edge, rightTop, activeEdges, c, alloc); in cleanup_active_edges()
876 split_edge(edge->fRight, bottom, activeEdges, c, alloc); in cleanup_active_edges()
879 split_edge(edge, rightBottom, activeEdges, c, alloc); in cleanup_active_edges()
884 void split_edge(Edge* edge, Vertex* v, EdgeList* activeEdges, Comparator& c, SkChunkAlloc& alloc) { in split_edge() argument
889 set_top(edge, v, activeEdges, c); in split_edge()
891 set_bottom(edge, v, activeEdges, c); in split_edge()
896 set_bottom(edge, v, activeEdges, c); in split_edge()
897 cleanup_active_edges(edge, activeEdges, c, alloc); in split_edge()
898 fix_active_state(newEdge, activeEdges, c); in split_edge()
899 merge_collinear_edges(newEdge, activeEdges, c); in split_edge()
919 Vertex* check_for_intersection(Edge* edge, Edge* other, EdgeList* activeEdges, Comparator& c, in check_for_intersection() argument
929 split_edge(other, edge->fTop, activeEdges, c, alloc); in check_for_intersection()
932 split_edge(other, edge->fBottom, activeEdges, c, alloc); in check_for_intersection()
935 split_edge(edge, other->fTop, activeEdges, c, alloc); in check_for_intersection()
938 split_edge(edge, other->fBottom, activeEdges, c, alloc); in check_for_intersection()
966 split_edge(edge, v, activeEdges, c, alloc); in check_for_intersection()
967 split_edge(other, v, activeEdges, c, alloc); in check_for_intersection()
1123 EdgeList activeEdges; in simplify() local
1136 find_enclosing_edges(v, &activeEdges, &leftEnclosingEdge, &rightEnclosingEdge); in simplify()
1139 if (check_for_intersection(edge, leftEnclosingEdge, &activeEdges, c, alloc)) { in simplify()
1143 if (check_for_intersection(edge, rightEnclosingEdge, &activeEdges, c, alloc)) { in simplify()
1150 &activeEdges, c, alloc)) { in simplify()
1160 remove_edge(e, &activeEdges); in simplify()
1164 insert_edge(e, leftEdge, &activeEdges); in simplify()
1175 EdgeList activeEdges; in tessellate() local
1186 find_enclosing_edges(v, &activeEdges, &leftEnclosingEdge, &rightEnclosingEdge); in tessellate()
1219 remove_edge(leftEdge, &activeEdges); in tessellate()
1227 remove_edge(v->fLastEdgeAbove, &activeEdges); in tessellate()
1264 insert_edge(leftEdge, leftEnclosingEdge, &activeEdges); in tessellate()
1267 insert_edge(rightEdge, leftEdge, &activeEdges); in tessellate()
1280 for (Edge* e = activeEdges.fHead; e != nullptr; e = e->fRight) { in tessellate()