summaryrefslogtreecommitdiff
path: root/thirdparty/msdfgen/core/Contour.h
blob: f79b269582236e5a5712e20184e18041b0b2a364 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34

#pragma once

#include <vector>
#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<EdgeHolder> 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(double &l, double &b, double &r, double &t) const;
    /// Adjusts the bounding box to fit the contour border's mitered corners.
    void boundMiters(double &l, double &b, double &r, double &t, double border, double 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();

};

}