GUI_3DScene.xsp 21 KB

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