#pragma once #include #include "types.h" #include "EdgeHolder.h" namespace msdfgen { /// A single closed contour of a shape. class Contour { public: /// The sequence of edges that make up the contour. std::vector edges; /// Adds an edge to the contour. void addEdge(const EdgeHolder &edge); #ifdef MSDFGEN_USE_CPP11 void addEdge(EdgeHolder &&edge); #endif /// Creates a new edge in the contour and returns its reference. EdgeHolder &addEdge(); /// Adjusts the bounding box to fit the contour. void bound(real &l, real &b, real &r, real &t) const; /// Adjusts the bounding box to fit the contour border's mitered corners. void boundMiters(real &l, real &b, real &r, real &t, real border, real miterLimit, int polarity) const; /// Computes the winding of the contour. Returns 1 if positive, -1 if negative. int winding() const; /// Reverses the sequence of edges on the contour. void reverse(); }; }