1111mod glfw;
1212mod graphics;
1313
14- use graphics:: { Graphics , Image , get_graphics, get_graphics_mut} ;
14+ use graphics:: { Geometry , Graphics , Image , Topology , get_graphics, get_graphics_mut} ;
1515use pyo3:: { exceptions:: PyRuntimeError , prelude:: * , types:: PyTuple } ;
1616
1717use std:: env;
@@ -20,8 +20,17 @@ use std::env;
2020fn processing ( m : & Bound < ' _ , PyModule > ) -> PyResult < ( ) > {
2121 m. add_class :: < Graphics > ( ) ?;
2222 m. add_class :: < Image > ( ) ?;
23+ m. add_class :: < Geometry > ( ) ?;
24+ m. add_class :: < Topology > ( ) ?;
2325 m. add_function ( wrap_pyfunction ! ( size, m) ?) ?;
2426 m. add_function ( wrap_pyfunction ! ( run, m) ?) ?;
27+ m. add_function ( wrap_pyfunction ! ( mode_3d, m) ?) ?;
28+ m. add_function ( wrap_pyfunction ! ( camera_position, m) ?) ?;
29+ m. add_function ( wrap_pyfunction ! ( camera_look_at, m) ?) ?;
30+ m. add_function ( wrap_pyfunction ! ( push_matrix, m) ?) ?;
31+ m. add_function ( wrap_pyfunction ! ( pop_matrix, m) ?) ?;
32+ m. add_function ( wrap_pyfunction ! ( rotate, m) ?) ?;
33+ m. add_function ( wrap_pyfunction ! ( draw_box, m) ?) ?;
2534 m. add_function ( wrap_pyfunction ! ( background, m) ?) ?;
2635 m. add_function ( wrap_pyfunction ! ( fill, m) ?) ?;
2736 m. add_function ( wrap_pyfunction ! ( no_fill, m) ?) ?;
@@ -30,6 +39,8 @@ fn processing(m: &Bound<'_, PyModule>) -> PyResult<()> {
3039 m. add_function ( wrap_pyfunction ! ( stroke_weight, m) ?) ?;
3140 m. add_function ( wrap_pyfunction ! ( rect, m) ?) ?;
3241 m. add_function ( wrap_pyfunction ! ( image, m) ?) ?;
42+ m. add_function ( wrap_pyfunction ! ( draw_geometry, m) ?) ?;
43+
3344 Ok ( ( ) )
3445}
3546
@@ -97,6 +108,59 @@ fn run(module: &Bound<'_, PyModule>) -> PyResult<()> {
97108 } )
98109}
99110
111+ #[ pyfunction]
112+ #[ pyo3( pass_module) ]
113+ fn mode_3d ( module : & Bound < ' _ , PyModule > ) -> PyResult < ( ) > {
114+ get_graphics ( module) ?. mode_3d ( )
115+ }
116+
117+ #[ pyfunction]
118+ #[ pyo3( pass_module) ]
119+ fn camera_position ( module : & Bound < ' _ , PyModule > , x : f32 , y : f32 , z : f32 ) -> PyResult < ( ) > {
120+ get_graphics ( module) ?. camera_position ( x, y, z)
121+ }
122+
123+ #[ pyfunction]
124+ #[ pyo3( pass_module) ]
125+ fn camera_look_at (
126+ module : & Bound < ' _ , PyModule > ,
127+ target_x : f32 ,
128+ target_y : f32 ,
129+ target_z : f32 ,
130+ ) -> PyResult < ( ) > {
131+ get_graphics ( module) ?. camera_look_at ( target_x, target_y, target_z)
132+ }
133+
134+ #[ pyfunction]
135+ #[ pyo3( pass_module) ]
136+ fn push_matrix ( module : & Bound < ' _ , PyModule > ) -> PyResult < ( ) > {
137+ get_graphics ( module) ?. push_matrix ( )
138+ }
139+
140+ #[ pyfunction]
141+ #[ pyo3( pass_module) ]
142+ fn pop_matrix ( module : & Bound < ' _ , PyModule > ) -> PyResult < ( ) > {
143+ get_graphics ( module) ?. push_matrix ( )
144+ }
145+
146+ #[ pyfunction]
147+ #[ pyo3( pass_module) ]
148+ fn rotate ( module : & Bound < ' _ , PyModule > , angle : f32 ) -> PyResult < ( ) > {
149+ get_graphics ( module) ?. rotate ( angle)
150+ }
151+
152+ #[ pyfunction]
153+ #[ pyo3( pass_module) ]
154+ fn draw_box ( module : & Bound < ' _ , PyModule > , x : f32 , y : f32 , z : f32 ) -> PyResult < ( ) > {
155+ get_graphics ( module) ?. draw_box ( x, y, z)
156+ }
157+
158+ #[ pyfunction]
159+ #[ pyo3( pass_module, signature = ( geometry) ) ]
160+ fn draw_geometry ( module : & Bound < ' _ , PyModule > , geometry : & Bound < ' _ , Geometry > ) -> PyResult < ( ) > {
161+ get_graphics ( module) ?. draw_geometry ( & * geometry. extract :: < PyRef < Geometry > > ( ) ?)
162+ }
163+
100164#[ pyfunction]
101165#[ pyo3( pass_module, signature = ( * args) ) ]
102166fn background ( module : & Bound < ' _ , PyModule > , args : & Bound < ' _ , PyTuple > ) -> PyResult < ( ) > {
0 commit comments