PolylineCollection.xsp 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. %module{Slic3r::XS};
  2. %{
  3. #include <myinit.h>
  4. #include "PolylineCollection.hpp"
  5. %}
  6. %name{Slic3r::Polyline::Collection} class PolylineCollection {
  7. ~PolylineCollection();
  8. PolylineCollection* clone()
  9. %code{% const char* CLASS = "Slic3r::Polyline::Collection"; RETVAL = new PolylineCollection(*THIS); %};
  10. void clear()
  11. %code{% THIS->polylines.clear(); %};
  12. PolylineCollection* chained_path(bool no_reverse)
  13. %code{% const char* CLASS = "Slic3r::Polyline::Collection"; RETVAL = THIS->chained_path(no_reverse); %};
  14. PolylineCollection* chained_path_from(Point* start_near, bool no_reverse)
  15. %code{% const char* CLASS = "Slic3r::Polyline::Collection"; RETVAL = THIS->chained_path_from(start_near, no_reverse); %};
  16. int count()
  17. %code{% RETVAL = THIS->polylines.size(); %};
  18. Point* leftmost_point()
  19. %code{% const char* CLASS = "Slic3r::Point"; RETVAL = THIS->leftmost_point(); %};
  20. %{
  21. PolylineCollection*
  22. PolylineCollection::new(...)
  23. CODE:
  24. RETVAL = new PolylineCollection ();
  25. // ST(0) is class name, others are Polylines
  26. RETVAL->polylines.resize(items-1);
  27. for (unsigned int i = 1; i < items; i++) {
  28. // Note: a COPY of the input is stored
  29. RETVAL->polylines[i-1].from_SV_check(ST(i));
  30. }
  31. OUTPUT:
  32. RETVAL
  33. SV*
  34. PolylineCollection::arrayref()
  35. CODE:
  36. AV* av = newAV();
  37. av_fill(av, THIS->polylines.size()-1);
  38. int i = 0;
  39. for (Polylines::iterator it = THIS->polylines.begin(); it != THIS->polylines.end(); ++it) {
  40. av_store(av, i++, (*it).to_SV_ref());
  41. }
  42. RETVAL = newRV_noinc((SV*)av);
  43. OUTPUT:
  44. RETVAL
  45. SV*
  46. PolylineCollection::pp()
  47. CODE:
  48. AV* av = newAV();
  49. av_fill(av, THIS->polylines.size()-1);
  50. int i = 0;
  51. for (Polylines::iterator it = THIS->polylines.begin(); it != THIS->polylines.end(); ++it) {
  52. av_store(av, i++, (*it).to_SV_pureperl());
  53. }
  54. RETVAL = newRV_noinc((SV*)av);
  55. OUTPUT:
  56. RETVAL
  57. void
  58. PolylineCollection::append(...)
  59. CODE:
  60. for (unsigned int i = 1; i < items; i++) {
  61. Polyline polyline;
  62. polyline.from_SV_check( ST(i) );
  63. THIS->polylines.push_back(polyline);
  64. }
  65. %}
  66. };