Browse Source

Interface to a filler, ported from Perl to C++.

bubnikv 9 years ago
parent
commit
9716ee8eca
1 changed files with 68 additions and 0 deletions
  1. 68 0
      xs/xsp/Filler.xsp

+ 68 - 0
xs/xsp/Filler.xsp

@@ -0,0 +1,68 @@
+%module{Slic3r::XS};
+
+%{
+#include <xsinit.h>
+#include "libslic3r/Fill/FillBase.hpp"
+%}
+
+%name{Slic3r::Filler} class Filler {
+    ~Filler();
+
+    void set_bounding_box(BoundingBox *bbox)
+        %code{% THIS->fill->set_bounding_box(*bbox); %};
+    void set_spacing(coordf_t spacing)
+        %code{% THIS->fill->spacing = spacing; %};
+    coordf_t spacing()
+        %code{% RETVAL = THIS->fill->spacing; %};
+    void set_layer_id(size_t layer_id)
+        %code{% THIS->fill->layer_id = layer_id; %};
+    void set_z(coordf_t z)
+        %code{% THIS->fill->z = z; %};
+    void set_angle(float angle)
+        %code{% THIS->fill->angle = angle; %};
+    void set_loop_clipping(coordf_t clipping)
+        %code{% THIS->fill->loop_clipping = clipping; %};
+
+    bool use_bridge_flow()
+        %code{% RETVAL = THIS->fill->use_bridge_flow(); %};
+    bool no_sort()
+        %code{% RETVAL = THIS->fill->no_sort(); %};
+
+    void set_width(float width)
+        %code{% THIS->params.width = width; %};
+    void set_density(float density)
+        %code{% THIS->params.density = density; %};
+    void set_distance(float distance)
+        %code{% THIS->params.distance = distance; %};
+    void set_dont_connect(bool dont_connect)
+        %code{% THIS->params.dont_connect = dont_connect; %};
+    void set_dont_adjust(bool dont_adjust)
+        %code{% THIS->params.dont_adjust = dont_adjust; %};
+    void set_complete(bool complete)
+        %code{% THIS->params.complete = complete; %};
+
+    PolylineCollection* _fill_surface(Surface *surface)
+        %code{% 
+            PolylineCollection *pc = NULL;
+            if (THIS->fill != NULL) {
+                pc = new PolylineCollection();
+                pc->polylines = THIS->fill->fill_surface(surface, THIS->params);
+            }
+            RETVAL =  pc;
+        %};
+
+%{
+
+Filler*
+new_from_type(CLASS, type)
+    char*               CLASS;
+    std::string         type;
+    CODE:
+        Filler *filler = new Filler();
+        filler->fill = Fill::new_from_type(type);
+        RETVAL = filler;
+    OUTPUT:
+        RETVAL
+
+%}
+};