diff --git a/xs/xsp/Filler.xsp b/xs/xsp/Filler.xsp new file mode 100644 index 000000000..b7871664f --- /dev/null +++ b/xs/xsp/Filler.xsp @@ -0,0 +1,68 @@ +%module{Slic3r::XS}; + +%{ +#include +#include "libslic3r/Fill/FillBase.hpp" +%} + +%name{Slic3r::Filler} class Filler { + ~Filler(); + + void set_bounding_box(BoundingBox *bbox) + %code{% THIS->fill->set_bounding_box(*bbox); %}; + void set_spacing(coordf_t spacing) + %code{% THIS->fill->spacing = spacing; %}; + coordf_t spacing() + %code{% RETVAL = THIS->fill->spacing; %}; + void set_layer_id(size_t layer_id) + %code{% THIS->fill->layer_id = layer_id; %}; + void set_z(coordf_t z) + %code{% THIS->fill->z = z; %}; + void set_angle(float angle) + %code{% THIS->fill->angle = angle; %}; + void set_loop_clipping(coordf_t clipping) + %code{% THIS->fill->loop_clipping = clipping; %}; + + bool use_bridge_flow() + %code{% RETVAL = THIS->fill->use_bridge_flow(); %}; + bool no_sort() + %code{% RETVAL = THIS->fill->no_sort(); %}; + + void set_width(float width) + %code{% THIS->params.width = width; %}; + void set_density(float density) + %code{% THIS->params.density = density; %}; + void set_distance(float distance) + %code{% THIS->params.distance = distance; %}; + void set_dont_connect(bool dont_connect) + %code{% THIS->params.dont_connect = dont_connect; %}; + void set_dont_adjust(bool dont_adjust) + %code{% THIS->params.dont_adjust = dont_adjust; %}; + void set_complete(bool complete) + %code{% THIS->params.complete = complete; %}; + + PolylineCollection* _fill_surface(Surface *surface) + %code{% + PolylineCollection *pc = NULL; + if (THIS->fill != NULL) { + pc = new PolylineCollection(); + pc->polylines = THIS->fill->fill_surface(surface, THIS->params); + } + RETVAL = pc; + %}; + +%{ + +Filler* +new_from_type(CLASS, type) + char* CLASS; + std::string type; + CODE: + Filler *filler = new Filler(); + filler->fill = Fill::new_from_type(type); + RETVAL = filler; + OUTPUT: + RETVAL + +%} +};