MCPcopy Create free account
hub / github.com/MyGUI/mygui / oneShotDistance

Method oneShotDistance

MyGUIEngine/src/msdfgen/core/ShapeDistanceFinder.hpp:37–58  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

35
36template <class ContourCombiner>
37typename ShapeDistanceFinder<ContourCombiner>::DistanceType ShapeDistanceFinder<ContourCombiner>::oneShotDistance(const Shape &shape, const Point2 &origin) {
38 ContourCombiner contourCombiner(shape);
39 contourCombiner.reset(origin);
40
41 for (std::vector<Contour>::const_iterator contour = shape.contours.begin(); contour != shape.contours.end(); ++contour) {
42 if (!contour->edges.empty()) {
43 typename ContourCombiner::EdgeSelectorType &edgeSelector = contourCombiner.edgeSelector(int(contour-shape.contours.begin()));
44
45 const EdgeSegment *prevEdge = contour->edges.size() >= 2 ? *(contour->edges.end()-2) : *contour->edges.begin();
46 const EdgeSegment *curEdge = contour->edges.back();
47 for (std::vector<EdgeHolder>::const_iterator edge = contour->edges.begin(); edge != contour->edges.end(); ++edge) {
48 const EdgeSegment *nextEdge = *edge;
49 typename ContourCombiner::EdgeSelectorType::EdgeCache dummy;
50 edgeSelector.addEdge(dummy, prevEdge, curEdge, nextEdge);
51 prevEdge = curEdge;
52 curEdge = nextEdge;
53 }
54 }
55 }
56
57 return contourCombiner.distance();
58}
59
60}

Callers

nothing calls this directly

Calls 7

resetMethod · 0.45
beginMethod · 0.45
endMethod · 0.45
emptyMethod · 0.45
sizeMethod · 0.45
addEdgeMethod · 0.45
distanceMethod · 0.45

Tested by

no test coverage detected