123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- %module{Slic3r::XS};
- %{
- #include <xsinit.h>
- #include "libslic3r/ExtrusionEntity.hpp"
- #include "libslic3r/ExtrusionEntityCollection.hpp"
- %}
- %name{Slic3r::ExtrusionPath} class ExtrusionPath {
- ~ExtrusionPath();
- SV* arrayref()
- %code{% RETVAL = to_AV(&THIS->polyline); %};
- SV* pp()
- %code{% RETVAL = to_SV_pureperl(&THIS->polyline); %};
- void pop_back()
- %code{% THIS->polyline.points.pop_back(); %};
- void reverse();
- Lines lines()
- %code{% RETVAL = THIS->polyline.lines(); %};
- Clone<Point> first_point();
- Clone<Point> last_point();
- void clip_end(double distance);
- void simplify(double tolerance);
- double length();
- ExtrusionRole role() const;
- bool is_bridge()
- %code{% RETVAL = is_bridge(THIS->role()); %};
- Polygons polygons_covered_by_width();
- Polygons polygons_covered_by_spacing();
- %{
- 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 (role);
- from_SV_check(polyline_sv, &RETVAL->polyline);
- RETVAL->mm3_per_mm = mm3_per_mm;
- RETVAL->width = width;
- RETVAL->height = height;
- OUTPUT:
- RETVAL
- Ref<Polyline>
- ExtrusionPath::polyline(...)
- CODE:
- if (items > 1) {
- from_SV_check(ST(1), &THIS->polyline);
- }
- RETVAL = &(THIS->polyline);
- 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;
- from_SV_check(ST(i), &p);
- 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_NONE = erNone
- EXTR_ROLE_PERIMETER = erPerimeter
- EXTR_ROLE_EXTERNAL_PERIMETER = erExternalPerimeter
- EXTR_ROLE_OVERHANG_PERIMETER = erOverhangPerimeter
- EXTR_ROLE_FILL = erInternalInfill
- EXTR_ROLE_SOLIDFILL = erSolidInfill
- EXTR_ROLE_TOPSOLIDFILL = erTopSolidInfill
- EXTR_ROLE_BRIDGE = erBridgeInfill
- EXTR_ROLE_GAPFILL = erGapFill
- EXTR_ROLE_SKIRT = erSkirt
- EXTR_ROLE_SUPPORTMATERIAL = erSupportMaterial
- EXTR_ROLE_SUPPORTMATERIAL_INTERFACE = erSupportMaterialInterface
- EXTR_ROLE_MIXED = erMixed
- PROTOTYPE:
- CODE:
- RETVAL = ix;
- OUTPUT: RETVAL
- %}
|