1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- #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;
- };
- }
|