Lines Matching refs:current
181 // Compute intersection based on current segment vertices; if an intersection is found but the
710 static void rewind(EdgeList* activeEdges, Vertex** current, Vertex* dst, const Comparator& c) {
711 if (!current || *current == dst || c.sweep_lt((*current)->fPoint, dst->fPoint)) {
714 Vertex* v = *current;
733 *current = v;
736 static void rewind_if_necessary(Edge* edge, EdgeList* activeEdges, Vertex** current,
738 if (!activeEdges || !current) {
747 rewind(activeEdges, current, leftTop, c);
749 rewind(activeEdges, current, top, c);
752 rewind(activeEdges, current, leftTop, c);
754 rewind(activeEdges, current, top, c);
761 rewind(activeEdges, current, rightTop, c);
763 rewind(activeEdges, current, top, c);
766 rewind(activeEdges, current, rightTop, c);
769 rewind(activeEdges, current, top, c);
774 void GrTriangulator::setTop(Edge* edge, Vertex* v, EdgeList* activeEdges, Vertex** current,
784 rewind_if_necessary(edge, activeEdges, current, c);
785 this->mergeCollinearEdges(edge, activeEdges, current, c);
788 void GrTriangulator::setBottom(Edge* edge, Vertex* v, EdgeList* activeEdges, Vertex** current,
798 rewind_if_necessary(edge, activeEdges, current, c);
799 this->mergeCollinearEdges(edge, activeEdges, current, c);
803 Vertex** current, const Comparator& c) const {
808 rewind(activeEdges, current, edge->fTop, c);
813 rewind(activeEdges, current, edge->fTop, c);
815 this->setBottom(edge, other->fTop, activeEdges, current, c);
817 rewind(activeEdges, current, other->fTop, c);
819 this->setBottom(other, edge->fTop, activeEdges, current, c);
824 Vertex** current, const Comparator& c) const {
829 rewind(activeEdges, current, edge->fTop, c);
834 rewind(activeEdges, current, other->fTop, c);
836 this->setTop(other, edge->fBottom, activeEdges, current, c);
838 rewind(activeEdges, current, edge->fTop, c);
840 this->setTop(edge, other->fBottom, activeEdges, current, c);
860 void GrTriangulator::mergeCollinearEdges(Edge* edge, EdgeList* activeEdges, Vertex** current,
864 this->mergeEdgesAbove(edge->fPrevEdgeAbove, edge, activeEdges, current, c);
866 this->mergeEdgesAbove(edge->fNextEdgeAbove, edge, activeEdges, current, c);
868 this->mergeEdgesBelow(edge->fPrevEdgeBelow, edge, activeEdges, current, c);
870 this->mergeEdgesBelow(edge->fNextEdgeBelow, edge, activeEdges, current, c);
881 bool GrTriangulator::splitEdge(Edge* edge, Vertex* v, EdgeList* activeEdges, Vertex** current,
900 this->setTop(edge, v, activeEdges, current, c);
907 this->setBottom(edge, v, activeEdges, current, c);
913 this->setBottom(edge, v, activeEdges, current, c);
918 this->mergeCollinearEdges(newEdge, activeEdges, current, c);
923 Vertex** current, const Comparator& c) const {
932 rewind(activeEdges, current, right->fTop, c);
933 return this->splitEdge(left, right->fTop, activeEdges, current, c);
937 rewind(activeEdges, current, left->fTop, c);
938 return this->splitEdge(right, left->fTop, activeEdges, current, c);
943 rewind(activeEdges, current, right->fBottom, c);
944 return this->splitEdge(left, right->fBottom, activeEdges, current, c);
948 rewind(activeEdges, current, left->fBottom, c);
949 return this->splitEdge(right, left->fBottom, activeEdges, current, c);
1057 Vertex** current, VertexList* mesh,
1067 Vertex* top = *current;
1068 // If the intersection point is above the current vertex, rewind to the vertex above the
1096 rewind(activeEdges, current, top ? top : v, c);
1097 this->splitEdge(left, v, activeEdges, current, c);
1098 this->splitEdge(right, v, activeEdges, current, c);
1102 return this->intersectEdgePair(left, right, activeEdges, current, c);