Lines Matching refs:Edge
102 struct Edge;
163 Edge* fFirstEdgeAbove; // Linked list of edges above this vertex.
164 Edge* fLastEdgeAbove; // "
165 Edge* fFirstEdgeBelow; // Linked list of edges below this vertex.
166 Edge* fLastEdgeBelow; // "
167 Edge* fLeftEnclosingEdge; // Nearest edge in the AEL left of this vertex.
168 Edge* fRightEnclosingEdge; // Nearest edge in the AEL right of this vertex.
355 struct Edge { struct
357 Edge(Vertex* top, Vertex* bottom, int winding, Type type) in Edge() function
384 Edge* fLeft; // The linked list of edges in the active edge list. argument
385 Edge* fRight; // " argument
386 Edge* fPrevEdgeAbove; // The linked list of edges in the bottom Vertex's "edges above". argument
387 Edge* fNextEdgeAbove; // " argument
388 Edge* fPrevEdgeBelow; // The linked list of edges in the top Vertex's "edges below". argument
389 Edge* fNextEdgeBelow; // " argument
393 Edge* fLeftPolyPrev; argument
394 Edge* fLeftPolyNext; argument
395 Edge* fRightPolyPrev; argument
396 Edge* fRightPolyNext; argument
413 bool intersect(const Edge& other, SkPoint* p, uint8_t* alpha = nullptr) const { in intersect() argument
456 Edge* fHead;
457 Edge* fTail;
458 void insert(Edge* edge, Edge* prev, Edge* next) { in insert()
459 list_insert<Edge, &Edge::fLeft, &Edge::fRight>(edge, prev, next, &fHead, &fTail); in insert()
461 void append(Edge* e) { in append()
464 void remove(Edge* edge) { in remove()
465 list_remove<Edge, &Edge::fLeft, &Edge::fRight>(edge, &fHead, &fTail); in remove()
478 bool contains(Edge* edge) const { in contains()
485 Event(Edge* edge, const SkPoint& point, uint8_t alpha) in Event()
488 Edge* fEdge;
502 void create_event(Edge* e, EventList* events, SkArenaAlloc& alloc) { in create_event()
503 Edge bisector1(e->fTop, e->fTop->fPartner, 1, Edge::Type::kConnector); in create_event()
504 Edge bisector2(e->fBottom, e->fBottom->fPartner, 1, Edge::Type::kConnector); in create_event()
536 MonotonePoly(Edge* edge, Side side) in MonotonePoly()
545 Edge* fFirstEdge;
546 Edge* fLastEdge;
549 void addEdge(Edge* edge) { in addEdge()
552 list_insert<Edge, &Edge::fRightPolyPrev, &Edge::fRightPolyNext>( in addEdge()
557 list_insert<Edge, &Edge::fLeftPolyPrev, &Edge::fLeftPolyNext>( in addEdge()
564 Edge* e = fFirstEdge; in emit()
609 Poly* addEdge(Edge* e, Side side, SkArenaAlloc& alloc) { in addEdge()
635 e = alloc.make<Edge>(fTail->fLastEdge->fBottom, e->fBottom, 1, Edge::Type::kInner); in addEdge()
840 Edge* new_edge(Vertex* prev, Vertex* next, Edge::Type type, Comparator& c, SkArenaAlloc& alloc) { in new_edge()
844 return alloc.make<Edge>(top, bottom, winding, type); in new_edge()
847 void remove_edge(Edge* edge, EdgeList* edges) { in remove_edge()
853 void insert_edge(Edge* edge, Edge* prev, EdgeList* edges) { in insert_edge()
856 Edge* next = prev ? prev->fRight : edges->fHead; in insert_edge()
860 void find_enclosing_edges(Vertex* v, EdgeList* edges, Edge** left, Edge** right) { in find_enclosing_edges()
866 Edge* next = nullptr; in find_enclosing_edges()
867 Edge* prev; in find_enclosing_edges()
878 void insert_edge_above(Edge* edge, Vertex* v, Comparator& c) { in insert_edge_above()
884 Edge* prev = nullptr; in insert_edge_above()
885 Edge* next; in insert_edge_above()
892 list_insert<Edge, &Edge::fPrevEdgeAbove, &Edge::fNextEdgeAbove>( in insert_edge_above()
896 void insert_edge_below(Edge* edge, Vertex* v, Comparator& c) { in insert_edge_below()
902 Edge* prev = nullptr; in insert_edge_below()
903 Edge* next; in insert_edge_below()
910 list_insert<Edge, &Edge::fPrevEdgeBelow, &Edge::fNextEdgeBelow>( in insert_edge_below()
914 void remove_edge_above(Edge* edge) { in remove_edge_above()
917 list_remove<Edge, &Edge::fPrevEdgeAbove, &Edge::fNextEdgeAbove>( in remove_edge_above()
921 void remove_edge_below(Edge* edge) { in remove_edge_below()
924 list_remove<Edge, &Edge::fPrevEdgeBelow, &Edge::fNextEdgeBelow>( in remove_edge_below()
928 void disconnect(Edge* edge) in disconnect()
934 void merge_collinear_edges(Edge* edge, EdgeList* activeEdges, Vertex** current, Comparator& c);
944 for (Edge* e = v->fFirstEdgeBelow; e; e = e->fNextEdgeBelow) { in rewind()
947 Edge* leftEdge = v->fLeftEnclosingEdge; in rewind()
948 for (Edge* e = v->fFirstEdgeAbove; e; e = e->fNextEdgeAbove) { in rewind()
956 void rewind_if_necessary(Edge* edge, EdgeList* activeEdges, Vertex** current, Comparator& c) { in rewind_if_necessary()
993 void set_top(Edge* edge, Vertex* v, EdgeList* activeEdges, Vertex** current, Comparator& c) { in set_top()
1002 void set_bottom(Edge* edge, Vertex* v, EdgeList* activeEdges, Vertex** current, Comparator& c) { in set_bottom()
1011 void merge_edges_above(Edge* edge, Edge* other, EdgeList* activeEdges, Vertex** current, in merge_edges_above()
1031 void merge_edges_below(Edge* edge, Edge* other, EdgeList* activeEdges, Vertex** current, in merge_edges_below()
1051 void merge_collinear_edges(Edge* edge, EdgeList* activeEdges, Vertex** current, Comparator& c) { in merge_collinear_edges()
1075 void split_edge(Edge* edge, Vertex* v, EdgeList* activeEdges, Vertex** current, Comparator& c, in split_edge()
1098 Edge* newEdge = alloc.make<Edge>(top, bottom, edge->fWinding, edge->fType); in split_edge()
1104 Edge* connect(Vertex* prev, Vertex* next, Edge::Type type, Comparator& c, SkArenaAlloc& alloc, in connect()
1109 Edge* edge = new_edge(prev, next, type, c, alloc); in connect()
1125 for (Edge* edge = src->fFirstEdgeAbove; edge;) { in merge_vertices()
1126 Edge* next = edge->fNextEdgeAbove; in merge_vertices()
1130 for (Edge* edge = src->fFirstEdgeBelow; edge;) { in merge_vertices()
1131 Edge* next = edge->fNextEdgeBelow; in merge_vertices()
1139 uint8_t max_edge_alpha(Edge* a, Edge* b) { in max_edge_alpha()
1140 if (a->fType == Edge::Type::kInner || b->fType == Edge::Type::kInner) { in max_edge_alpha()
1142 } else if (a->fType == Edge::Type::kOuter && b->fType == Edge::Type::kOuter) { in max_edge_alpha()
1151 bool out_of_range_and_collinear(const SkPoint& p, Edge* edge, Comparator& c) { in out_of_range_and_collinear()
1194 bool check_for_intersection(Edge* edge, Edge* other, EdgeList* activeEdges, Vertex** current, in check_for_intersection()
1230 int dir = edge->fType == Edge::Type::kOuter ? -1 : 1; in check_for_intersection()
1303 connect(prev, v, Edge::Type::kInner, c, alloc); in build_edges()
1318 connect(outer, inner, Edge::Type::kConnector, c, alloc, 0); in connect_partners()
1397 for (Edge* e = v->fFirstEdgeAbove; e; e = e->fNextEdgeAbove) { in dump_mesh()
1400 for (Edge* e = v->fFirstEdgeBelow; e; e = e->fNextEdgeBelow) { in dump_mesh()
1417 Edge* leftEnclosingEdge; in simplify()
1418 Edge* rightEnclosingEdge; in simplify()
1433 for (Edge* edge = v->fFirstEdgeBelow; edge; edge = edge->fNextEdgeBelow) { in simplify()
1462 for (Edge* e = v->fFirstEdgeAbove; e; e = e->fNextEdgeAbove) { in simplify()
1465 Edge* leftEdge = leftEnclosingEdge; in simplify()
1466 for (Edge* e = v->fFirstEdgeBelow; e; e = e->fNextEdgeBelow) { in simplify()
1485 Edge* leftEnclosingEdge; in is_complex()
1486 Edge* rightEnclosingEdge; in is_complex()
1490 for (Edge* edge = v->fFirstEdgeBelow; edge; edge = edge->fNextEdgeBelow) { in is_complex()
1505 for (Edge* e = v->fFirstEdgeAbove; e; e = e->fNextEdgeAbove) { in is_complex()
1508 Edge* leftEdge = leftEnclosingEdge; in is_complex()
1509 for (Edge* e = v->fFirstEdgeBelow; e; e = e->fNextEdgeBelow) { in is_complex()
1532 Edge* leftEnclosingEdge; in tessellate()
1533 Edge* rightEnclosingEdge; in tessellate()
1546 for (Edge* e = v->fFirstEdgeAbove; e; e = e->fNextEdgeAbove) { in tessellate()
1551 for (Edge* e = v->fFirstEdgeBelow; e; e = e->fNextEdgeBelow) { in tessellate()
1563 for (Edge* e = v->fFirstEdgeAbove; e != v->fLastEdgeAbove; e = e->fNextEdgeAbove) { in tessellate()
1564 Edge* rightEdge = e->fNextEdgeAbove; in tessellate()
1596 Edge* join = alloc.make<Edge>(leftPoly->lastVertex(), v, 1, Edge::Type::kInner); in tessellate()
1601 Edge* leftEdge = v->fFirstEdgeBelow; in tessellate()
1604 for (Edge* rightEdge = leftEdge->fNextEdgeBelow; rightEdge; in tessellate()
1619 for (Edge* e = activeEdges.fHead; e != nullptr; e = e->fRight) { in tessellate()
1636 Edge* leftEnclosingEdge; in remove_non_boundary_edges()
1637 Edge* rightEnclosingEdge; in remove_non_boundary_edges()
1641 for (Edge* e = v->fFirstEdgeAbove; e;) { in remove_non_boundary_edges()
1642 Edge* next = e->fNextEdgeAbove; in remove_non_boundary_edges()
1651 Edge* prev = leftEnclosingEdge; in remove_non_boundary_edges()
1652 for (Edge* e = v->fFirstEdgeBelow; e; e = e->fNextEdgeBelow) { in remove_non_boundary_edges()
1663 void get_edge_normal(const Edge* e, SkVector* normal) { in get_edge_normal()
1674 void reconnect(Edge* edge, Vertex* src, Vertex* dst, Comparator& c) { in reconnect()
1704 Edge* prevEdge = boundary->fTail; in simplify_boundary()
1707 for (Edge* e = boundary->fHead; e != nullptr;) { in simplify_boundary()
1719 Edge* join = new_edge(prev, next, Edge::Type::kInner, c, alloc); in simplify_boundary()
1746 void fix_inversions(Vertex* prev, Vertex* next, Edge* prevBisector, Edge* nextBisector, in fix_inversions()
1747 Edge* prevEdge, Comparator& c) { in fix_inversions()
1760 void reconnect_all_overlap_edges(Vertex* src, Vertex* dst, Edge* current, Comparator& c) { in reconnect_all_overlap_edges()
1764 for (Edge* e = src->fFirstEdgeAbove; e; ) { in reconnect_all_overlap_edges()
1765 Edge* next = e->fNextEdgeAbove; in reconnect_all_overlap_edges()
1771 for (Edge* e = src->fFirstEdgeBelow; e; ) { in reconnect_all_overlap_edges()
1772 Edge* next = e->fNextEdgeBelow; in reconnect_all_overlap_edges()
1803 bool is_overlap_edge(Edge* e) { in is_overlap_edge()
1804 if (e->fType == Edge::Type::kOuter) { in is_overlap_edge()
1806 } else if (e->fType == Edge::Type::kInner) { in is_overlap_edge()
1823 Edge* leftEnclosingEdge; in collapse_overlap_regions()
1824 Edge* rightEnclosingEdge; in collapse_overlap_regions()
1826 for (Edge* e = v->fLastEdgeAbove; e; e = e->fPrevEdgeAbove) { in collapse_overlap_regions()
1827 Edge* prev = e->fPrevEdgeAbove ? e->fPrevEdgeAbove : leftEnclosingEdge; in collapse_overlap_regions()
1833 Edge* prev = leftEnclosingEdge; in collapse_overlap_regions()
1834 for (Edge* e = v->fFirstEdgeBelow; e; e = e->fNextEdgeBelow) { in collapse_overlap_regions()
1859 bool inversion(Vertex* prev, Vertex* next, Edge* origEdge, Comparator& c) { in inversion()
1879 Edge* prevEdge = boundary->fTail; in stroke_boundary()
1888 Edge* prevBisector = nullptr; in stroke_boundary()
1889 for (Edge* e = boundary->fHead; e != nullptr; e = e->fRight) { in stroke_boundary()
1900 Edge* bisector = new_edge(outerVertex, innerVertex, Edge::Type::kConnector, c, alloc); in stroke_boundary()
1919 Edge* bisector = new_edge(outerVertices.fHead, innerVertices.fHead, Edge::Type::kConnector, c, in stroke_boundary()
1929 connect(prevOuterVertex, outerVertex, Edge::Type::kOuter, c, alloc); in stroke_boundary()
1930 connect(prevInnerVertex, innerVertex, Edge::Type::kInner, c, alloc, -2); in stroke_boundary()
1947 Edge* prevEdge = boundary->fTail; in stroke_boundary()
1960 for (Edge* e = boundary->fHead; e != nullptr; e = e->fRight) { in stroke_boundary()
2083 connect(v, v->fNext, Edge::Type::kInner, c, alloc, innerWinding); in stroke_boundary()
2085 connect(innerVertices.fTail, innerVertices.fHead, Edge::Type::kInner, c, alloc, innerWinding); in stroke_boundary()
2087 connect(v, v->fNext, Edge::Type::kOuter, c, alloc, outerWinding); in stroke_boundary()
2089 connect(outerVertices.fTail, outerVertices.fHead, Edge::Type::kOuter, c, alloc, outerWinding); in stroke_boundary()
2095 void extract_boundary(EdgeList* boundary, Edge* e, SkPath::FillType fillType, SkArenaAlloc& alloc) { in extract_boundary()
2100 Edge* next; in extract_boundary()
2290 for (Edge* e = v->fFirstEdgeBelow; e; e = e->fNextEdgeBelow) { in contours_to_polys()
2299 for (Edge* e = v->fFirstEdgeBelow; e; e = e->fNextEdgeBelow) { in contours_to_polys()