#include "edge-coloring.h"
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <cfloat>
#include <vector>
#include <queue>
#include "arithmetics.hpp"
namespace msdfgen {
static bool isCorner(const Vector2 &aDir, const Vector2 &bDir, double crossThreshold) { … }
static double estimateEdgeLength(const EdgeSegment *edge) { … }
static void switchColor(EdgeColor &color, unsigned long long &seed, EdgeColor banned = BLACK) { … }
void edgeColoringSimple(Shape &shape, double angleThreshold, unsigned long long seed) { … }
struct EdgeColoringInkTrapCorner { … };
void edgeColoringInkTrap(Shape &shape, double angleThreshold, unsigned long long seed) { … }
#define MAX_RECOLOR_STEPS …
#define EDGE_DISTANCE_PRECISION …
static double edgeToEdgeDistance(const EdgeSegment &a, const EdgeSegment &b, int precision) { … }
static double splineToSplineDistance(EdgeSegment *const *edgeSegments, int aStart, int aEnd, int bStart, int bEnd, int precision) { … }
static void colorSecondDegreeGraph(int *coloring, const int *const *edgeMatrix, int vertexCount, unsigned long long seed) { … }
static int vertexPossibleColors(const int *coloring, const int *edgeVector, int vertexCount) { … }
static void uncolorSameNeighbors(std::queue<int> &uncolored, int *coloring, const int *const *edgeMatrix, int vertex, int vertexCount) { … }
static bool tryAddEdge(int *coloring, int *const *edgeMatrix, int vertexCount, int vertexA, int vertexB, int *coloringBuffer) { … }
static int cmpDoublePtr(const void *a, const void *b) { … }
void edgeColoringByDistance(Shape &shape, double angleThreshold, unsigned long long seed) { … }
}