ExtrusionMultiPath.xsp 1000 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. %module{Slic3r::XS};
  2. %{
  3. #include <xsinit.h>
  4. #include "libslic3r/ExtrusionEntity.hpp"
  5. %}
  6. %name{Slic3r::ExtrusionMultiPath} class ExtrusionMultiPath {
  7. ExtrusionMultiPath();
  8. ~ExtrusionMultiPath();
  9. Clone<ExtrusionMultiPath> clone()
  10. %code{% RETVAL = THIS; %};
  11. void reverse();
  12. Clone<Point> first_point();
  13. Clone<Point> last_point();
  14. void append(ExtrusionPath* path)
  15. %code{% THIS->paths.push_back(*path); %};
  16. double length();
  17. bool is_perimeter();
  18. bool is_infill();
  19. bool is_solid_infill();
  20. Polygons polygons_covered_by_width();
  21. Polygons polygons_covered_by_spacing();
  22. %{
  23. SV*
  24. ExtrusionMultiPath::arrayref()
  25. CODE:
  26. AV* av = newAV();
  27. av_fill(av, THIS->paths.size()-1);
  28. for (ExtrusionPaths::iterator it = THIS->paths.begin(); it != THIS->paths.end(); ++it) {
  29. av_store(av, it - THIS->paths.begin(), perl_to_SV_ref(*it));
  30. }
  31. RETVAL = newRV_noinc((SV*)av);
  32. OUTPUT:
  33. RETVAL
  34. %}
  35. };