%module{Slic3r::XS};

%{
#include <myinit.h>
#include "libslic3r/Geometry.hpp"
%}


%package{Slic3r::Geometry};

%{

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

Polygon*
convex_hull(points)
    Points      points
    CODE:
        RETVAL = new Polygon ();
        Slic3r::Geometry::convex_hull(points, RETVAL);
    OUTPUT:
        RETVAL

std::vector<Points::size_type>
chained_path(points)
    Points      points
    CODE:
        Slic3r::Geometry::chained_path(points, RETVAL);
    OUTPUT:
        RETVAL

std::vector<Points::size_type>
chained_path_from(points, start_from)
    Points      points
    Point*      start_from
    CODE:
        Slic3r::Geometry::chained_path(points, RETVAL, *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

%}