13using Ring = std::vector<Point>;
Rings shape_rings(const Shape &s, Coord grow, Coord max_error)
s grown by grow, every approximated arc outside the true one (KiCad's ERROR_OUTSIDE),...
std::vector< Polygon > polygons(const Rings &rs)
The region as separate polygons (a fill's islands), each with its holes.
Ring fracture(const Polygon &p)
One ring with zero-width bridges from every hole to the outline, as KiCad writes a zone's filled_poly...
Ring circle_ring(Point centre, Coord radius, Coord max_error)
Regular polygon around a circle with every edge outside it, chord error <= max_error.
Rings unite(const Rings &a)
std::vector< Ring > Rings
a region under the non-zero fill rule: outer rings and holes
Rings offset(const Rings &a, Coord delta, Corners corners, Coord max_error)
Grows (delta > 0) or shrinks a region; round corners stay within max_error of the true arc.
bool contains(const Rings &rs, Point p)
Inside the region or on its boundary.
std::vector< Point > Ring
closed, first point not repeated
Rings subtract(const Rings &a, const Rings &b)
double area(const Ring &r)
signed: outer rings positive, holes negative (as returned by these functions)
Rings even_odd(const Rings &loops)
Region of closed loops under the even-odd rule (a board outline with cut-outs).
Rings intersect(const Rings &a, const Rings &b)
std::int64_t Coord
Engine coordinate: signed 64-bit nanometres.
Integer-nanometre points and KiCad-compatible rotation.
Exact integer geometry for clearance checks (design doc 03 §1).