%module{Slic3r::XS}; %{ #include #include "ExtrusionEntity.hpp" #include "ExtrusionEntityCollection.hpp" #include "perlglue.hpp" %} %name{Slic3r::ExtrusionPath} class ExtrusionPath { ~ExtrusionPath(); SV* arrayref() %code{% RETVAL = THIS->polyline.to_AV(); %}; SV* pp() %code{% RETVAL = THIS->polyline.to_SV_pureperl(); %}; void pop_back() %code{% THIS->polyline.points.pop_back(); %}; void reverse(); Lines lines() %code{% RETVAL = THIS->polyline.lines(); %}; Clone first_point(); Clone last_point(); void clip_end(double distance); void simplify(double tolerance); double length(); bool is_perimeter(); bool is_fill(); bool is_bridge(); std::string gcode(Extruder* extruder, double e, double F, double xofs, double yofs, std::string extrusion_axis, std::string gcode_line_suffix); %{ ExtrusionPath* _new(CLASS, polyline_sv, role, mm3_per_mm, width, height) char* CLASS; SV* polyline_sv; ExtrusionRole role; double mm3_per_mm; float width; float height; CODE: RETVAL = new ExtrusionPath (); RETVAL->polyline.from_SV_check(polyline_sv); RETVAL->role = role; RETVAL->mm3_per_mm = mm3_per_mm; RETVAL->width = width; RETVAL->height = height; OUTPUT: RETVAL Ref ExtrusionPath::polyline(...) CODE: if (items > 1) { THIS->polyline.from_SV_check( ST(1) ); } RETVAL = &(THIS->polyline); OUTPUT: RETVAL ExtrusionRole ExtrusionPath::role(...) CODE: if (items > 1) { THIS->role = (ExtrusionRole)SvUV(ST(1)); } RETVAL = THIS->role; OUTPUT: RETVAL double ExtrusionPath::mm3_per_mm(...) CODE: if (items > 1) { THIS->mm3_per_mm = (double)SvNV(ST(1)); } RETVAL = THIS->mm3_per_mm; OUTPUT: RETVAL float ExtrusionPath::width(...) CODE: if (items > 1) { THIS->width = (float)SvNV(ST(1)); } RETVAL = THIS->width; OUTPUT: RETVAL float ExtrusionPath::height(...) CODE: if (items > 1) { THIS->height = (float)SvNV(ST(1)); } RETVAL = THIS->height; OUTPUT: RETVAL void ExtrusionPath::append(...) CODE: for (unsigned int i = 1; i < items; i++) { Point p; p.from_SV_check(ST(i)); THIS->polyline.points.push_back(p); } ExtrusionEntityCollection* ExtrusionPath::intersect_expolygons(ExPolygonCollection* collection) CODE: RETVAL = new ExtrusionEntityCollection (); THIS->intersect_expolygons(*collection, RETVAL); OUTPUT: RETVAL ExtrusionEntityCollection* ExtrusionPath::subtract_expolygons(ExPolygonCollection* collection) CODE: RETVAL = new ExtrusionEntityCollection (); THIS->subtract_expolygons(*collection, RETVAL); OUTPUT: RETVAL %} }; %package{Slic3r::ExtrusionPath}; %{ IV _constant() ALIAS: EXTR_ROLE_PERIMETER = erPerimeter EXTR_ROLE_EXTERNAL_PERIMETER = erExternalPerimeter EXTR_ROLE_OVERHANG_PERIMETER = erOverhangPerimeter EXTR_ROLE_CONTOUR_INTERNAL_PERIMETER = erContourInternalPerimeter EXTR_ROLE_FILL = erFill EXTR_ROLE_SOLIDFILL = erSolidFill EXTR_ROLE_TOPSOLIDFILL = erTopSolidFill EXTR_ROLE_BRIDGE = erBridge EXTR_ROLE_INTERNALBRIDGE = erInternalBridge EXTR_ROLE_SKIRT = erSkirt EXTR_ROLE_SUPPORTMATERIAL = erSupportMaterial EXTR_ROLE_GAPFILL = erGapFill PROTOTYPE: CODE: RETVAL = ix; OUTPUT: RETVAL %}