%module{Slic3r::XS}; %{ #include #include "ExtrusionEntity.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(); %}; Point* first_point() %code{% const char* CLASS = "Slic3r::Point"; RETVAL = THIS->first_point(); %}; Point* last_point() %code{% const char* CLASS = "Slic3r::Point"; RETVAL = THIS->last_point(); %}; ExtrusionEntityCollection* intersect_expolygons(ExPolygonCollection* collection) %code{% const char* CLASS = "Slic3r::ExtrusionPath::Collection"; RETVAL = THIS->intersect_expolygons(collection); %}; ExtrusionEntityCollection* subtract_expolygons(ExPolygonCollection* collection) %code{% const char* CLASS = "Slic3r::ExtrusionPath::Collection"; RETVAL = THIS->subtract_expolygons(collection); %}; void clip_end(double distance); void simplify(double tolerance); double length(); bool is_perimeter(); bool is_fill(); bool is_bridge(); %{ ExtrusionPath* _new(CLASS, polyline_sv, role, height, flow_spacing) char* CLASS; SV* polyline_sv; ExtrusionRole role; double height; double flow_spacing; CODE: RETVAL = new ExtrusionPath (); RETVAL->polyline.from_SV_check(polyline_sv); RETVAL->role = role; RETVAL->height = height; RETVAL->flow_spacing = flow_spacing; OUTPUT: RETVAL Polyline* ExtrusionPath::polyline(...) PREINIT: const char* CLASS = "Slic3r::Polyline::Ref"; 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::height(...) CODE: if (items > 1) { THIS->height = (double)SvNV(ST(1)); } RETVAL = THIS->height; OUTPUT: RETVAL double ExtrusionPath::flow_spacing(...) CODE: if (items > 1) { THIS->flow_spacing = (double)SvNV(ST(1)); } RETVAL = THIS->flow_spacing; 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); } %} }; %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 = erBrige EXTR_ROLE_INTERNALBRIDGE = erInternalBridge EXTR_ROLE_SKIRT = erSkirt EXTR_ROLE_SUPPORTMATERIAL = erSupportMaterial EXTR_ROLE_GAPFILL = erGapFill PROTOTYPE: CODE: RETVAL = ix; OUTPUT: RETVAL %}