%module{Slic3r::XS}; %{ #include #include "libslic3r/Geometry.hpp" #include "libslic3r/Geometry/ConvexHull.hpp" #include "libslic3r/ShortestPath.hpp" %} %package{Slic3r::Geometry}; Pointfs arrange(size_t total_parts, Vec2d* part, coordf_t dist, BoundingBoxf* bb = NULL) %code{% Pointfs points; if (! Slic3r::Geometry::arrange(total_parts, *part, dist, bb, points)) CONFESS("%zu parts won't fit in your print area!\n", total_parts); RETVAL = points; %}; %{ bool directions_parallel(angle1, angle2) double angle1 double angle2 CODE: RETVAL = Slic3r::Geometry::directions_parallel(angle1, angle2); OUTPUT: RETVAL bool directions_parallel_within(angle1, angle2, max_diff) double angle1 double angle2 double max_diff CODE: RETVAL = Slic3r::Geometry::directions_parallel(angle1, angle2, max_diff); OUTPUT: RETVAL Clone convex_hull(points) Points points CODE: RETVAL = Slic3r::Geometry::convex_hull(points); OUTPUT: RETVAL std::vector chained_path(points) Points points CODE: RETVAL = chain_points(points); OUTPUT: RETVAL std::vector chained_path_from(points, start_from) Points points Point* start_from CODE: RETVAL = chain_points(points, start_from); OUTPUT: RETVAL double rad2deg(angle) double angle CODE: RETVAL = Slic3r::Geometry::rad2deg(angle); OUTPUT: RETVAL double rad2deg_dir(angle) double angle CODE: RETVAL = Slic3r::Geometry::rad2deg_dir(angle); OUTPUT: RETVAL double deg2rad(angle) double angle CODE: RETVAL = Slic3r::Geometry::deg2rad(angle); OUTPUT: RETVAL Polygons simplify_polygons(polygons, tolerance) Polygons polygons double tolerance CODE: Slic3r::Geometry::simplify_polygons(polygons, tolerance, &RETVAL); OUTPUT: RETVAL IV _constant() ALIAS: X = X Y = Y Z = Z PROTOTYPE: CODE: RETVAL = ix; OUTPUT: RETVAL %}