#ifndef slic3r_MultiMaterialSegmentation_hpp_ #define slic3r_MultiMaterialSegmentation_hpp_ #include #include namespace Slic3r { class PrintObject; class ExPolygon; using ExPolygons = std::vector; struct ColoredLine { Line line; int color; int poly_idx = -1; int local_line_idx = -1; }; using ColoredLines = std::vector; // Returns MMU segmentation based on painting in MMU segmentation gizmo std::vector> multi_material_segmentation_by_painting(const PrintObject &print_object, const std::function &throw_on_cancel_callback); } // namespace Slic3r namespace boost::polygon { template<> struct geometry_concept { typedef segment_concept type; }; template<> struct segment_traits { typedef coord_t coordinate_type; typedef Slic3r::Point point_type; static inline point_type get(const Slic3r::ColoredLine &line, const direction_1d &dir) { return dir.to_int() ? line.line.b : line.line.a; } }; } // namespace boost::polygon #endif // slic3r_MultiMaterialSegmentation_hpp_