GUI_3DScene.xsp 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728
  1. %module{Slic3r::XS};
  2. #include <xsinit.h>
  3. #include "slic3r/GUI/GLShader.hpp"
  4. #include "slic3r/GUI/3DScene.hpp"
  5. %name{Slic3r::GUI::_3DScene::GLShader} class GLShader {
  6. GLShader();
  7. ~GLShader();
  8. bool load_from_text(const char *fragment_shader, const char *vertex_shader);
  9. bool load_from_file(const char *fragment_shader, const char *vertex_shader);
  10. void release();
  11. int get_attrib_location(const char *name) const;
  12. int get_uniform_location(const char *name) const;
  13. bool set_uniform(const char *name, float value) const;
  14. void enable() const;
  15. void disable() const;
  16. int shader_program_id() const
  17. %code%{ RETVAL = THIS->shader_program_id; %};
  18. std::string last_error() const
  19. %code%{ RETVAL = THIS->last_error; %};
  20. };
  21. %name{Slic3r::GUI::_3DScene::GLVolume} class GLVolume {
  22. GLVolume();
  23. ~GLVolume();
  24. std::vector<double> color()
  25. %code%{ RETVAL.reserve(4); RETVAL.push_back(THIS->color[0]); RETVAL.push_back(THIS->color[1]); RETVAL.push_back(THIS->color[2]); RETVAL.push_back(THIS->color[3]); %};
  26. int select_group_id()
  27. %code%{ RETVAL = THIS->select_group_id; %};
  28. int drag_group_id()
  29. %code%{ RETVAL = THIS->drag_group_id; %};
  30. int selected()
  31. %code%{ RETVAL = THIS->selected; %};
  32. void set_selected(int i)
  33. %code%{ THIS->selected = i; %};
  34. int hover()
  35. %code%{ RETVAL = THIS->hover; %};
  36. void set_hover(int i)
  37. %code%{ THIS->hover = i; %};
  38. int zoom_to_volumes()
  39. %code%{ RETVAL = THIS->zoom_to_volumes; %};
  40. void set_layer_height_texture_data(unsigned int texture_id, unsigned int shader_id, PrintObject* print_object, float z_cursor_relative, float edit_band_width);
  41. void reset_layer_height_texture_data();
  42. int object_idx() const;
  43. int volume_idx() const;
  44. int instance_idx() const;
  45. Clone<Pointf3> origin() const
  46. %code%{ RETVAL = THIS->origin; %};
  47. void translate(double x, double y, double z)
  48. %code%{ THIS->origin.translate(x, y, z); %};
  49. Clone<BoundingBoxf3> bounding_box() const
  50. %code%{ RETVAL = THIS->bounding_box; %};
  51. Clone<BoundingBoxf3> transformed_bounding_box() const;
  52. bool empty() const;
  53. bool indexed() const;
  54. void render() const;
  55. bool has_layer_height_texture();
  56. int layer_height_texture_width();
  57. int layer_height_texture_height();
  58. int layer_height_texture_cells();
  59. void* layer_height_texture_data_ptr_level0();
  60. void* layer_height_texture_data_ptr_level1();
  61. double layer_height_texture_z_to_row_id() const;
  62. void generate_layer_height_texture(PrintObject *print_object, bool force);
  63. };
  64. %name{Slic3r::GUI::_3DScene::GLVolume::Collection} class GLVolumeCollection {
  65. GLVolumeCollection();
  66. ~GLVolumeCollection();
  67. std::vector<int> load_object(ModelObject *object, int obj_idx, std::vector<int> instance_idxs, std::string color_by, std::string select_by, std::string drag_by, bool use_VBOs);
  68. int load_wipe_tower_preview(int obj_idx, float pos_x, float pos_y, float width, float depth, float height, float rotation_angle, bool use_VBOs);
  69. void erase()
  70. %code{% THIS->clear(); %};
  71. int count()
  72. %code{% RETVAL = THIS->volumes.size(); %};
  73. void set_range(double low, double high);
  74. void render_VBOs() const;
  75. void render_legacy() const;
  76. void finalize_geometry(bool use_VBOs);
  77. void release_geometry();
  78. void set_print_box(float min_x, float min_y, float min_z, float max_x, float max_y, float max_z);
  79. bool check_outside_state(DynamicPrintConfig* config)
  80. %code%{
  81. RETVAL = THIS->check_outside_state(config);
  82. %};
  83. void reset_outside_state();
  84. void update_colors_by_extruder(DynamicPrintConfig* config);
  85. bool move_volume_up(int idx)
  86. %code%{
  87. if (idx > 0 && idx < int(THIS->volumes.size())) {
  88. std::swap(THIS->volumes[idx-1], THIS->volumes[idx]);
  89. std::swap(THIS->volumes[idx-1]->composite_id, THIS->volumes[idx]->composite_id);
  90. std::swap(THIS->volumes[idx-1]->select_group_id, THIS->volumes[idx]->select_group_id);
  91. std::swap(THIS->volumes[idx-1]->drag_group_id, THIS->volumes[idx]->drag_group_id);
  92. RETVAL = true;
  93. } else
  94. RETVAL = false;
  95. %};
  96. bool move_volume_down(int idx)
  97. %code%{
  98. if (idx >= 0 && idx + 1 < int(THIS->volumes.size())) {
  99. std::swap(THIS->volumes[idx+1], THIS->volumes[idx]);
  100. std::swap(THIS->volumes[idx+1]->composite_id, THIS->volumes[idx]->composite_id);
  101. std::swap(THIS->volumes[idx+1]->select_group_id, THIS->volumes[idx]->select_group_id);
  102. std::swap(THIS->volumes[idx+1]->drag_group_id, THIS->volumes[idx]->drag_group_id);
  103. RETVAL = true;
  104. } else
  105. RETVAL = false;
  106. %};
  107. %{
  108. SV*
  109. GLVolumeCollection::arrayref()
  110. CODE:
  111. AV* av = newAV();
  112. av_fill(av, THIS->volumes.size()-1);
  113. int i = 0;
  114. for (GLVolume *v : THIS->volumes) {
  115. av_store(av, i++, perl_to_SV_ref(*v));
  116. }
  117. RETVAL = newRV_noinc((SV*)av);
  118. OUTPUT:
  119. RETVAL
  120. %}
  121. };
  122. %package{Slic3r::GUI::_3DScene};
  123. %{
  124. std::string
  125. get_gl_info(format_as_html, extensions)
  126. bool format_as_html;
  127. bool extensions;
  128. CODE:
  129. RETVAL = _3DScene::get_gl_info(format_as_html, extensions);
  130. OUTPUT:
  131. RETVAL
  132. bool
  133. use_VBOs()
  134. CODE:
  135. RETVAL = _3DScene::use_VBOs();
  136. OUTPUT:
  137. RETVAL
  138. bool
  139. add_canvas(canvas)
  140. SV *canvas;
  141. CODE:
  142. RETVAL = _3DScene::add_canvas((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  143. OUTPUT:
  144. RETVAL
  145. bool
  146. remove_canvas(canvas)
  147. SV *canvas;
  148. CODE:
  149. RETVAL = _3DScene::remove_canvas((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  150. OUTPUT:
  151. RETVAL
  152. void
  153. remove_all_canvases()
  154. CODE:
  155. _3DScene::remove_all_canvases();
  156. void
  157. set_active(canvas, active)
  158. SV *canvas;
  159. bool active;
  160. CODE:
  161. _3DScene::set_active((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), active);
  162. void
  163. set_as_dirty(canvas)
  164. SV *canvas;
  165. CODE:
  166. _3DScene::set_as_dirty((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  167. unsigned int
  168. get_volumes_count(canvas)
  169. SV *canvas;
  170. CODE:
  171. RETVAL = _3DScene::get_volumes_count((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  172. OUTPUT:
  173. RETVAL
  174. void
  175. reset_volumes(canvas)
  176. SV *canvas;
  177. CODE:
  178. _3DScene::reset_volumes((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  179. void
  180. deselect_volumes(canvas)
  181. SV *canvas;
  182. CODE:
  183. _3DScene::deselect_volumes((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  184. void
  185. select_volume(canvas, id)
  186. SV *canvas;
  187. unsigned int id;
  188. CODE:
  189. _3DScene::select_volume((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), id);
  190. void
  191. update_volumes_selection(canvas, selections)
  192. SV *canvas;
  193. std::vector<int> selections;
  194. CODE:
  195. _3DScene::update_volumes_selection((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), selections);
  196. bool
  197. check_volumes_outside_state(canvas, config)
  198. SV *canvas;
  199. DynamicPrintConfig *config;
  200. CODE:
  201. RETVAL = _3DScene::check_volumes_outside_state((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), config);
  202. OUTPUT:
  203. RETVAL
  204. bool
  205. move_volume_up(canvas, id)
  206. SV *canvas;
  207. unsigned int id;
  208. CODE:
  209. RETVAL = _3DScene::move_volume_up((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), id);
  210. OUTPUT:
  211. RETVAL
  212. bool
  213. move_volume_down(canvas, id)
  214. SV *canvas;
  215. unsigned int id;
  216. CODE:
  217. RETVAL = _3DScene::move_volume_down((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), id);
  218. OUTPUT:
  219. RETVAL
  220. void
  221. set_objects_selections(canvas, selections)
  222. SV *canvas;
  223. std::vector<int> selections;
  224. CODE:
  225. _3DScene::set_objects_selections((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), selections);
  226. void
  227. set_config(canvas, config)
  228. SV *canvas;
  229. DynamicPrintConfig *config;
  230. CODE:
  231. _3DScene::set_config((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), config);
  232. void
  233. set_print(canvas, print)
  234. SV *canvas;
  235. Print *print;
  236. CODE:
  237. _3DScene::set_print((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), print);
  238. void
  239. set_model(canvas, model)
  240. SV *canvas;
  241. Model *model;
  242. CODE:
  243. _3DScene::set_model((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), model);
  244. void
  245. set_bed_shape(canvas, shape)
  246. SV *canvas;
  247. Pointfs shape;
  248. CODE:
  249. _3DScene::set_bed_shape((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), shape);
  250. void
  251. set_auto_bed_shape(canvas)
  252. SV *canvas;
  253. CODE:
  254. _3DScene::set_auto_bed_shape((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  255. Clone<BoundingBoxf3>
  256. get_volumes_bounding_box(canvas)
  257. SV *canvas;
  258. CODE:
  259. RETVAL = _3DScene::get_volumes_bounding_box((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  260. OUTPUT:
  261. RETVAL
  262. void
  263. set_axes_length(canvas, length)
  264. SV *canvas;
  265. float length;
  266. CODE:
  267. _3DScene::set_axes_length((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), length);
  268. void
  269. set_cutting_plane(canvas, z, polygons)
  270. SV *canvas;
  271. float z;
  272. ExPolygons polygons;
  273. CODE:
  274. _3DScene::set_cutting_plane((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), z, polygons);
  275. void
  276. set_color_by(canvas, value)
  277. SV *canvas;
  278. std::string value;
  279. CODE:
  280. _3DScene::set_color_by((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), value);
  281. void
  282. set_select_by(canvas, value)
  283. SV *canvas;
  284. std::string value;
  285. CODE:
  286. _3DScene::set_select_by((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), value);
  287. void
  288. set_drag_by(canvas, value)
  289. SV *canvas;
  290. std::string value;
  291. CODE:
  292. _3DScene::set_drag_by((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), value);
  293. bool
  294. is_layers_editing_enabled(canvas)
  295. SV *canvas;
  296. CODE:
  297. RETVAL = _3DScene::is_layers_editing_enabled((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  298. OUTPUT:
  299. RETVAL
  300. bool
  301. is_layers_editing_allowed(canvas)
  302. SV *canvas;
  303. CODE:
  304. RETVAL = _3DScene::is_layers_editing_allowed((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  305. OUTPUT:
  306. RETVAL
  307. bool
  308. is_shader_enabled(canvas)
  309. SV *canvas;
  310. CODE:
  311. RETVAL = _3DScene::is_shader_enabled((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  312. OUTPUT:
  313. RETVAL
  314. bool
  315. is_reload_delayed(canvas)
  316. SV *canvas;
  317. CODE:
  318. RETVAL = _3DScene::is_reload_delayed((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  319. OUTPUT:
  320. RETVAL
  321. void
  322. enable_layers_editing(canvas, enable)
  323. SV *canvas;
  324. bool enable;
  325. CODE:
  326. _3DScene::enable_layers_editing((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), enable);
  327. void
  328. enable_warning_texture(canvas, enable)
  329. SV *canvas;
  330. bool enable;
  331. CODE:
  332. _3DScene::enable_warning_texture((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), enable);
  333. void
  334. enable_legend_texture(canvas, enable)
  335. SV *canvas;
  336. bool enable;
  337. CODE:
  338. _3DScene::enable_legend_texture((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), enable);
  339. void
  340. enable_picking(canvas, enable)
  341. SV *canvas;
  342. bool enable;
  343. CODE:
  344. _3DScene::enable_picking((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), enable);
  345. void
  346. enable_moving(canvas, enable)
  347. SV *canvas;
  348. bool enable;
  349. CODE:
  350. _3DScene::enable_moving((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), enable);
  351. void
  352. enable_gizmos(canvas, enable)
  353. SV *canvas;
  354. bool enable;
  355. CODE:
  356. _3DScene::enable_gizmos((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), enable);
  357. void
  358. enable_shader(canvas, enable)
  359. SV *canvas;
  360. bool enable;
  361. CODE:
  362. _3DScene::enable_shader((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), enable);
  363. void
  364. enable_force_zoom_to_bed(canvas, enable)
  365. SV *canvas;
  366. bool enable;
  367. CODE:
  368. _3DScene::enable_force_zoom_to_bed((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), enable);
  369. void
  370. allow_multisample(canvas, allow)
  371. SV *canvas;
  372. bool allow;
  373. CODE:
  374. _3DScene::allow_multisample((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), allow);
  375. void
  376. zoom_to_bed(canvas)
  377. SV *canvas;
  378. CODE:
  379. _3DScene::zoom_to_bed((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  380. void
  381. zoom_to_volumes(canvas)
  382. SV *canvas;
  383. CODE:
  384. _3DScene::zoom_to_volumes((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  385. void
  386. select_view(canvas, direction)
  387. SV *canvas;
  388. std::string direction;
  389. CODE:
  390. _3DScene::select_view((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), direction);
  391. void
  392. set_viewport_from_scene(canvas, other)
  393. SV *canvas;
  394. SV *other;
  395. CODE:
  396. _3DScene::set_viewport_from_scene((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (wxGLCanvas*)wxPli_sv_2_object(aTHX_ other, "Wx::GLCanvas"));
  397. void
  398. update_volumes_colors_by_extruder(canvas)
  399. SV *canvas;
  400. CODE:
  401. _3DScene::update_volumes_colors_by_extruder((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  402. void
  403. render(canvas)
  404. SV *canvas;
  405. CODE:
  406. _3DScene::render((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  407. std::vector<double>
  408. get_current_print_zs(canvas, active_only)
  409. SV *canvas;
  410. bool active_only;
  411. CODE:
  412. RETVAL = _3DScene::get_current_print_zs((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), active_only);
  413. OUTPUT:
  414. RETVAL
  415. void
  416. set_toolpaths_range(canvas, low, high)
  417. SV *canvas;
  418. double low;
  419. double high;
  420. CODE:
  421. _3DScene::set_toolpaths_range((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), low, high);
  422. void
  423. register_on_viewport_changed_callback(canvas, callback)
  424. SV *canvas;
  425. SV *callback;
  426. CODE:
  427. _3DScene::register_on_viewport_changed_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  428. void
  429. register_on_double_click_callback(canvas, callback)
  430. SV *canvas;
  431. SV *callback;
  432. CODE:
  433. _3DScene::register_on_double_click_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  434. void
  435. register_on_right_click_callback(canvas, callback)
  436. SV *canvas;
  437. SV *callback;
  438. CODE:
  439. _3DScene::register_on_right_click_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  440. void
  441. register_on_select_object_callback(canvas, callback)
  442. SV *canvas;
  443. SV *callback;
  444. CODE:
  445. _3DScene::register_on_select_object_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  446. void
  447. register_on_model_update_callback(canvas, callback)
  448. SV *canvas;
  449. SV *callback;
  450. CODE:
  451. _3DScene::register_on_model_update_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  452. void
  453. register_on_remove_object_callback(canvas, callback)
  454. SV *canvas;
  455. SV *callback;
  456. CODE:
  457. _3DScene::register_on_remove_object_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  458. void
  459. register_on_arrange_callback(canvas, callback)
  460. SV *canvas;
  461. SV *callback;
  462. CODE:
  463. _3DScene::register_on_arrange_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  464. void
  465. register_on_rotate_object_left_callback(canvas, callback)
  466. SV *canvas;
  467. SV *callback;
  468. CODE:
  469. _3DScene::register_on_rotate_object_left_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  470. void
  471. register_on_rotate_object_right_callback(canvas, callback)
  472. SV *canvas;
  473. SV *callback;
  474. CODE:
  475. _3DScene::register_on_rotate_object_right_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  476. void
  477. register_on_scale_object_uniformly_callback(canvas, callback)
  478. SV *canvas;
  479. SV *callback;
  480. CODE:
  481. _3DScene::register_on_scale_object_uniformly_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  482. void
  483. register_on_increase_objects_callback(canvas, callback)
  484. SV *canvas;
  485. SV *callback;
  486. CODE:
  487. _3DScene::register_on_increase_objects_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  488. void
  489. register_on_decrease_objects_callback(canvas, callback)
  490. SV *canvas;
  491. SV *callback;
  492. CODE:
  493. _3DScene::register_on_decrease_objects_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  494. void
  495. register_on_instance_moved_callback(canvas, callback)
  496. SV *canvas;
  497. SV *callback;
  498. CODE:
  499. _3DScene::register_on_instance_moved_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  500. void
  501. register_on_wipe_tower_moved_callback(canvas, callback)
  502. SV *canvas;
  503. SV *callback;
  504. CODE:
  505. _3DScene::register_on_wipe_tower_moved_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  506. void
  507. register_on_enable_action_buttons_callback(canvas, callback)
  508. SV *canvas;
  509. SV *callback;
  510. CODE:
  511. _3DScene::register_on_enable_action_buttons_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  512. void
  513. register_on_gizmo_scale_uniformly_callback(canvas, callback)
  514. SV *canvas;
  515. SV *callback;
  516. CODE:
  517. _3DScene::register_on_gizmo_scale_uniformly_callback((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), (void*)callback);
  518. unsigned int
  519. finalize_legend_texture()
  520. CODE:
  521. RETVAL = _3DScene::finalize_legend_texture();
  522. OUTPUT:
  523. RETVAL
  524. unsigned int
  525. get_legend_texture_width()
  526. CODE:
  527. RETVAL = _3DScene::get_legend_texture_width();
  528. OUTPUT:
  529. RETVAL
  530. unsigned int
  531. get_legend_texture_height()
  532. CODE:
  533. RETVAL = _3DScene::get_legend_texture_height();
  534. OUTPUT:
  535. RETVAL
  536. void
  537. reset_legend_texture()
  538. CODE:
  539. _3DScene::reset_legend_texture();
  540. void
  541. generate_warning_texture(std::string msg)
  542. CODE:
  543. _3DScene::generate_warning_texture(msg);
  544. unsigned int
  545. finalize_warning_texture()
  546. CODE:
  547. RETVAL = _3DScene::finalize_warning_texture();
  548. OUTPUT:
  549. RETVAL
  550. unsigned int
  551. get_warning_texture_width()
  552. CODE:
  553. RETVAL = _3DScene::get_warning_texture_width();
  554. OUTPUT:
  555. RETVAL
  556. unsigned int
  557. get_warning_texture_height()
  558. CODE:
  559. RETVAL = _3DScene::get_warning_texture_height();
  560. OUTPUT:
  561. RETVAL
  562. void
  563. reset_warning_texture()
  564. CODE:
  565. _3DScene::reset_warning_texture();
  566. std::vector<int>
  567. load_model_object(canvas, model_object, obj_idx, instance_idxs)
  568. SV *canvas;
  569. ModelObject *model_object;
  570. int obj_idx;
  571. std::vector<int> instance_idxs;
  572. CODE:
  573. RETVAL = _3DScene::load_object((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), model_object, obj_idx, instance_idxs);
  574. OUTPUT:
  575. RETVAL
  576. std::vector<int>
  577. load_model(canvas, model, obj_idx)
  578. SV *canvas;
  579. Model *model;
  580. int obj_idx;
  581. CODE:
  582. RETVAL = _3DScene::load_object((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), model, obj_idx);
  583. OUTPUT:
  584. RETVAL
  585. void
  586. reload_scene(canvas, force)
  587. SV *canvas;
  588. bool force;
  589. CODE:
  590. _3DScene::reload_scene((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), force);
  591. void
  592. load_print_toolpaths(canvas)
  593. SV *canvas;
  594. CODE:
  595. _3DScene::load_print_toolpaths((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"));
  596. void
  597. load_print_object_toolpaths(canvas, print_object, tool_colors)
  598. SV *canvas;
  599. PrintObject *print_object;
  600. std::vector<std::string> tool_colors;
  601. CODE:
  602. _3DScene::load_print_object_toolpaths((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), print_object, tool_colors);
  603. void
  604. load_wipe_tower_toolpaths(canvas, tool_colors)
  605. SV *canvas;
  606. std::vector<std::string> tool_colors;
  607. CODE:
  608. _3DScene::load_wipe_tower_toolpaths((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), tool_colors);
  609. void
  610. load_gcode_preview(canvas, preview_data, str_tool_colors)
  611. SV *canvas;
  612. GCodePreviewData *preview_data;
  613. std::vector<std::string> str_tool_colors;
  614. CODE:
  615. _3DScene::load_gcode_preview((wxGLCanvas*)wxPli_sv_2_object(aTHX_ canvas, "Wx::GLCanvas"), preview_data, str_tool_colors);
  616. %}