InputEdgeCrossings represents all pairs of intersecting input edges. It is sorted in lexicographic order.
Given a set of clipping instructions encoded as a set of intersections between input edges, EdgeClippingLayer determines which graph edges correspond to clipped portions of input edges and removes them. It assembles the remaining edges into a new S2Builder::Graph and passes the result to the given output layer for assembly.
Given a set of clipping instructions encoded as a set of InputEdgeCrossings, GraphEdgeClipper determines which graph edges correspond to clipped portions of input edges and removes them.
This class implements boolean operations (intersection, union, difference, and symmetric difference) for regions whose boundaries are defined by geodesic edges.
Given two input edges A and B that intersect, suppose that A maps to a chain of snapped edges A_0, A_1, ..., A_m and B maps to a chain of snapped edges B_0, B_1, ..., B_n. CrossingGraphEdge represents an edge from chain B that shares a vertex with chain A. It is used as a temporary data representation while processing chain A. The arguments are:
CrossingInputEdge represents an input edge B that crosses some other input edge A. It stores the input edge id of edge B and also whether it crosses edge A from left to right (or vice versa).