%module{Slic3r::XS}; %{ #include #include "libslic3r/Layer.hpp" %} %name{Slic3r::Layer::Region} class LayerRegion { // owned by Layer, no constructor/destructor Ref layer(); Ref region(); Ref slices() %code%{ RETVAL = &THIS->slices; %}; Ref thin_fills() %code%{ RETVAL = &THIS->thin_fills; %}; Ref fill_surfaces() %code%{ RETVAL = &THIS->fill_surfaces; %}; Polygons bridged() %code%{ RETVAL = THIS->bridged; %}; Ref unsupported_bridge_edges() %code%{ RETVAL = &THIS->unsupported_bridge_edges; %}; Ref perimeters() %code%{ RETVAL = &THIS->perimeters; %}; Ref fills() %code%{ RETVAL = &THIS->fills; %}; Clone flow(FlowRole role, bool bridge = false, double width = -1) %code%{ RETVAL = THIS->flow(role, bridge, width); %}; void merge_slices(); void prepare_fill_surfaces(); void make_perimeters(SurfaceCollection* slices, SurfaceCollection* fill_surfaces) %code%{ THIS->make_perimeters(*slices, fill_surfaces); %}; double infill_area_threshold(); }; %name{Slic3r::Layer} class Layer { // owned by PrintObject, no constructor/destructor Ref as_layer() %code%{ RETVAL = THIS; %}; int id(); void set_id(int id); Ref object(); Ref upper_layer() %code%{ RETVAL = THIS->upper_layer; %}; Ref lower_layer() %code%{ RETVAL = THIS->lower_layer; %}; bool slicing_errors() %code%{ RETVAL = THIS->slicing_errors; %}; coordf_t slice_z() %code%{ RETVAL = THIS->slice_z; %}; coordf_t print_z() %code%{ RETVAL = THIS->print_z; %}; coordf_t height() %code%{ RETVAL = THIS->height; %}; void set_upper_layer(Layer *layer) %code%{ THIS->upper_layer = layer; %}; void set_lower_layer(Layer *layer) %code%{ THIS->lower_layer = layer; %}; bool has_upper_layer() %code%{ RETVAL = (THIS->upper_layer != NULL); %}; bool has_lower_layer() %code%{ RETVAL = (THIS->lower_layer != NULL); %}; size_t region_count(); Ref get_region(int idx); Ref add_region(PrintRegion* print_region); Ref slices() %code%{ RETVAL = &THIS->slices; %}; int ptr() %code%{ RETVAL = (int)(intptr_t)THIS; %}; Ref as_support_layer() %code%{ RETVAL = dynamic_cast(THIS); %}; void make_slices(); void merge_slices(); bool any_internal_region_slice_contains_polyline(Polyline* polyline) %code%{ RETVAL = THIS->any_internal_region_slice_contains(*polyline); %}; bool any_bottom_region_slice_contains_polyline(Polyline* polyline) %code%{ RETVAL = THIS->any_bottom_region_slice_contains(*polyline); %}; }; %name{Slic3r::Layer::Support} class SupportLayer { // owned by PrintObject, no constructor/destructor Ref as_layer() %code%{ RETVAL = THIS; %}; Ref support_islands() %code%{ RETVAL = &THIS->support_islands; %}; Ref support_fills() %code%{ RETVAL = &THIS->support_fills; %}; Ref support_interface_fills() %code%{ RETVAL = &THIS->support_interface_fills; %}; // copies of some Layer methods, because the parameter wrapper code // gets confused about getting a Layer::Support instead of a Layer int id(); void set_id(int id); Ref object(); Ref upper_layer() %code%{ RETVAL = (SupportLayer*)THIS->upper_layer; %}; Ref lower_layer() %code%{ RETVAL = (SupportLayer*)THIS->lower_layer; %}; bool slicing_errors() %code%{ RETVAL = THIS->slicing_errors; %}; coordf_t slice_z() %code%{ RETVAL = THIS->slice_z; %}; coordf_t print_z() %code%{ RETVAL = THIS->print_z; %}; coordf_t height() %code%{ RETVAL = THIS->height; %}; void set_upper_layer(SupportLayer *layer) %code%{ THIS->upper_layer = layer; %}; void set_lower_layer(SupportLayer *layer) %code%{ THIS->lower_layer = layer; %}; bool has_upper_layer() %code%{ RETVAL = (THIS->upper_layer != NULL); %}; bool has_lower_layer() %code%{ RETVAL = (THIS->lower_layer != NULL); %}; size_t region_count(); Ref get_region(int idx); Ref add_region(PrintRegion* print_region); Ref slices() %code%{ RETVAL = &THIS->slices; %}; bool any_internal_region_slice_contains_polyline(Polyline* polyline) %code%{ RETVAL = THIS->any_internal_region_slice_contains(*polyline); %}; bool any_bottom_region_slice_contains_polyline(Polyline* polyline) %code%{ RETVAL = THIS->any_bottom_region_slice_contains(*polyline); %}; };