123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #pragma once
- #include "Shape.h"
- #include "edge-selectors.h"
- namespace msdfgen {
- /// Simply selects the nearest contour.
- template <class EdgeSelector>
- class SimpleContourCombiner {
- public:
- typedef EdgeSelector EdgeSelectorType;
- typedef typename EdgeSelector::DistanceType DistanceType;
- explicit SimpleContourCombiner(const Shape &shape);
- void reset(const Point2 &p);
- EdgeSelector & edgeSelector(int i);
- DistanceType distance() const;
- private:
- EdgeSelector shapeEdgeSelector;
- };
- /// Selects the nearest contour that actually forms a border between filled and unfilled area.
- template <class EdgeSelector>
- class OverlappingContourCombiner {
- public:
- typedef EdgeSelector EdgeSelectorType;
- typedef typename EdgeSelector::DistanceType DistanceType;
- explicit OverlappingContourCombiner(const Shape &shape);
- void reset(const Point2 &p);
- EdgeSelector & edgeSelector(int i);
- DistanceType distance() const;
- private:
- Point2 p;
- std::vector<int> windings;
- std::vector<EdgeSelector> edgeSelectors;
- };
- }
|