1#pragma once23#include <vector>4#include "EdgeHolder.h"56namespace msdfgen {78/// A single closed contour of a shape.9class Contour {1011public:12/// The sequence of edges that make up the contour.13std::vector<EdgeHolder> edges;1415/// Adds an edge to the contour.16void addEdge(const EdgeHolder &edge);17#ifdef MSDFGEN_USE_CPP1118void addEdge(EdgeHolder &&edge);19#endif20/// Creates a new edge in the contour and returns its reference.21EdgeHolder &addEdge();22/// Adjusts the bounding box to fit the contour.23void bound(double &l, double &b, double &r, double &t) const;24/// Adjusts the bounding box to fit the contour border's mitered corners.25void boundMiters(double &l, double &b, double &r, double &t, double border, double miterLimit, int polarity) const;26/// Computes the winding of the contour. Returns 1 if positive, -1 if negative.27int winding() const;28/// Reverses the sequence of edges on the contour.29void reverse();3031};3233}343536