%module{Slic3r::XS};

%{
#include <xsinit.h>
#include "libslic3r/BridgeDetector.hpp"
%}

%name{Slic3r::BridgeDetector} class BridgeDetector {
    ~BridgeDetector();
    
    bool detect_angle();
    Polygons coverage();
    %name{coverage_by_angle} Polygons coverage(double angle);
    Polylines unsupported_edges();
    %name{unsupported_edges_by_angle} Polylines unsupported_edges(double angle);
    double angle()
        %code{% RETVAL = THIS->angle; %};
    double resolution()
        %code{% RETVAL = THIS->resolution; %};
%{

BridgeDetector*
BridgeDetector::new(expolygon, lower_slices, extrusion_width)
    ExPolygon*              expolygon;
    ExPolygonCollection*    lower_slices;
    int                     extrusion_width;
    CODE:
        RETVAL = new BridgeDetector(*expolygon, *lower_slices, extrusion_width);
    OUTPUT:
        RETVAL

BridgeDetector*
BridgeDetector::new_expolygons(expolygons, lower_slices, extrusion_width)
    ExPolygonCollection*    expolygons;
    ExPolygonCollection*    lower_slices;
    int                     extrusion_width;
    CODE:
        RETVAL = new BridgeDetector(expolygons->expolygons, *lower_slices, extrusion_width);
    OUTPUT:
        RETVAL

%}
};