Welcome to mirror list, hosted at ThFree Co, Russian Federation.

ExtrusionPath.xsp « xsp « xs - github.com/prusa3d/PrusaSlicer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 078e6fe7212ac7ceffc0d0532c9d5e254833d450 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
%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

%}