#include "src/gpu/ganesh/geometry/GrAATriangulator.h"
#if !defined(SK_ENABLE_OPTIMIZE_SIZE)
#include "include/core/SkPathTypes.h"
#include "include/private/base/SkDebug.h"
#include "include/private/base/SkMath.h"
#include "src/gpu/BufferWriter.h"
#include "src/gpu/ganesh/GrEagerVertexAllocator.h"
#include <cstddef>
#include <queue>
#include <unordered_map>
#include <utility>
#include <vector>
#if TRIANGULATOR_LOGGING
#define TESS_LOG …
#define DUMP_MESH …
#else
#define TESS_LOG(...) …
#define DUMP_MESH(MESH) …
#endif
constexpr static float kCosMiterAngle = …;
EdgeType;
Vertex;
VertexList;
Line;
Edge;
EdgeList;
Poly;
Comparator;
SSEdge;
EventList;
Event;
EventComparator;
struct SSVertex { … };
struct GrAATriangulator::SSEdge { … };
SSVertexMap;
SSEdgeList;
EventPQ;
struct GrAATriangulator::EventList : EventPQ { … };
void GrAATriangulator::makeEvent(SSEdge* e, EventList* events) const { … }
void GrAATriangulator::makeEvent(SSEdge* edge, Vertex* v, SSEdge* other, Vertex* dest,
EventList* events, const Comparator& c) const { … }
void GrAATriangulator::connectPartners(VertexList* mesh, const Comparator& c) { … }
static void dump_skel(const SSEdgeList& ssEdges) { … }
void GrAATriangulator::removeNonBoundaryEdges(const VertexList& mesh) const { … }
static void get_edge_normal(const Edge* e, SkVector* normal) { … }
void GrAATriangulator::simplifyBoundary(EdgeList* boundary, const Comparator& c) { … }
void GrAATriangulator::connectSSEdge(Vertex* v, Vertex* dest, const Comparator& c) { … }
void GrAATriangulator::Event::apply(VertexList* mesh, const Comparator& c, EventList* events,
GrAATriangulator* triangulator) { … }
static bool is_overlap_edge(Edge* e) { … }
bool GrAATriangulator::collapseOverlapRegions(VertexList* mesh, const Comparator& c,
EventComparator comp) { … }
static bool inversion(Vertex* prev, Vertex* next, Edge* origEdge, const Comparator& c) { … }
void GrAATriangulator::strokeBoundary(EdgeList* boundary, VertexList* innerMesh,
const Comparator& c) { … }
void GrAATriangulator::extractBoundary(EdgeList* boundary, Edge* e) const { … }
void GrAATriangulator::extractBoundaries(const VertexList& inMesh, VertexList* innerVertices,
const Comparator& c) { … }
std::tuple<Poly*, bool> GrAATriangulator::tessellate(const VertexList& mesh, const Comparator& c) { … }
int GrAATriangulator::polysToAATriangles(Poly* polys,
GrEagerVertexAllocator* vertexAllocator) const { … }
#endif