%module{Slic3r::XS}; %{ #include #include "ExtrusionEntity.hpp" #include "perlglue.hpp" %} %name{Slic3r::ExtrusionLoop} class ExtrusionLoop { ~ExtrusionLoop(); SV* arrayref() %code{% Polygon polygon; THIS->polygon(&polygon); RETVAL = polygon.to_AV(); %}; SV* pp() %code{% Polygon polygon; THIS->polygon(&polygon); RETVAL = polygon.to_SV_pureperl(); %}; void reverse(); ExtrusionPath* split_at_index(int index) %code{% RETVAL = new ExtrusionPath (); THIS->split_at_index(index, RETVAL); %}; ExtrusionPath* split_at_first_point() %code{% RETVAL = new ExtrusionPath (); THIS->split_at_first_point(RETVAL); %}; bool make_counter_clockwise(); Clone first_point(); Clone last_point(); bool is_perimeter(); bool is_fill(); bool is_bridge(); %{ ExtrusionLoop* _new(CLASS, polygon_sv, role, mm3_per_mm, width, height) char* CLASS; SV* polygon_sv; ExtrusionRole role; double mm3_per_mm; float width; float height; CODE: Polygon polygon; polygon.from_SV_check(polygon_sv); RETVAL = new ExtrusionLoop (polygon, role); RETVAL->mm3_per_mm = mm3_per_mm; RETVAL->width = width; RETVAL->height = height; OUTPUT: RETVAL Polygon* ExtrusionLoop::polygon(...) CODE: if (items > 1) { Polygon polygon; polygon.from_SV_check( ST(1) ); THIS->set_polygon(polygon); } RETVAL = new Polygon (); THIS->polygon(RETVAL); OUTPUT: RETVAL ExtrusionRole ExtrusionLoop::role(...) CODE: if (items > 1) { THIS->role = (ExtrusionRole)SvUV(ST(1)); } RETVAL = THIS->role; OUTPUT: RETVAL double ExtrusionLoop::mm3_per_mm(...) CODE: if (items > 1) { THIS->mm3_per_mm = (double)SvNV(ST(1)); } RETVAL = THIS->mm3_per_mm; OUTPUT: RETVAL float ExtrusionLoop::width(...) CODE: if (items > 1) { THIS->width = (float)SvNV(ST(1)); } RETVAL = THIS->width; OUTPUT: RETVAL float ExtrusionLoop::height(...) CODE: if (items > 1) { THIS->height = (float)SvNV(ST(1)); } RETVAL = THIS->height; OUTPUT: RETVAL %} };