1use crate::{ffi, EulerOrder, Matrix, Quaternion, Vec3};
6use glib::translate::*;
7
8glib::wrapper! {
9 pub struct Euler(BoxedInline<ffi::graphene_euler_t>);
10
11 match fn {
12 copy => |ptr| glib::gobject_ffi::g_boxed_copy(ffi::graphene_euler_get_type(), ptr as *mut _) as *mut ffi::graphene_euler_t,
13 free => |ptr| glib::gobject_ffi::g_boxed_free(ffi::graphene_euler_get_type(), ptr as *mut _),
14 type_ => || ffi::graphene_euler_get_type(),
15 }
16}
17
18impl Euler {
19 #[doc(alias = "graphene_euler_equal")]
20 fn equal(&self, b: &Euler) -> bool {
21 unsafe { ffi::graphene_euler_equal(self.to_glib_none().0, b.to_glib_none().0) }
22 }
23
24 #[doc(alias = "graphene_euler_get_alpha")]
25 #[doc(alias = "get_alpha")]
26 pub fn alpha(&self) -> f32 {
27 unsafe { ffi::graphene_euler_get_alpha(self.to_glib_none().0) }
28 }
29
30 #[doc(alias = "graphene_euler_get_beta")]
31 #[doc(alias = "get_beta")]
32 pub fn beta(&self) -> f32 {
33 unsafe { ffi::graphene_euler_get_beta(self.to_glib_none().0) }
34 }
35
36 #[doc(alias = "graphene_euler_get_gamma")]
37 #[doc(alias = "get_gamma")]
38 pub fn gamma(&self) -> f32 {
39 unsafe { ffi::graphene_euler_get_gamma(self.to_glib_none().0) }
40 }
41
42 #[doc(alias = "graphene_euler_get_order")]
43 #[doc(alias = "get_order")]
44 pub fn order(&self) -> EulerOrder {
45 unsafe { from_glib(ffi::graphene_euler_get_order(self.to_glib_none().0)) }
46 }
47
48 #[doc(alias = "graphene_euler_get_x")]
49 #[doc(alias = "get_x")]
50 pub fn x(&self) -> f32 {
51 unsafe { ffi::graphene_euler_get_x(self.to_glib_none().0) }
52 }
53
54 #[doc(alias = "graphene_euler_get_y")]
55 #[doc(alias = "get_y")]
56 pub fn y(&self) -> f32 {
57 unsafe { ffi::graphene_euler_get_y(self.to_glib_none().0) }
58 }
59
60 #[doc(alias = "graphene_euler_get_z")]
61 #[doc(alias = "get_z")]
62 pub fn z(&self) -> f32 {
63 unsafe { ffi::graphene_euler_get_z(self.to_glib_none().0) }
64 }
65
66 #[doc(alias = "graphene_euler_reorder")]
67 #[must_use]
68 pub fn reorder(&self, order: EulerOrder) -> Euler {
69 unsafe {
70 let mut res = Euler::uninitialized();
71 ffi::graphene_euler_reorder(
72 self.to_glib_none().0,
73 order.into_glib(),
74 res.to_glib_none_mut().0,
75 );
76 res
77 }
78 }
79
80 #[doc(alias = "graphene_euler_to_matrix")]
81 pub fn to_matrix(&self) -> Matrix {
82 unsafe {
83 let mut res = Matrix::uninitialized();
84 ffi::graphene_euler_to_matrix(self.to_glib_none().0, res.to_glib_none_mut().0);
85 res
86 }
87 }
88
89 #[doc(alias = "graphene_euler_to_quaternion")]
90 pub fn to_quaternion(&self) -> Quaternion {
91 unsafe {
92 let mut res = Quaternion::uninitialized();
93 ffi::graphene_euler_to_quaternion(self.to_glib_none().0, res.to_glib_none_mut().0);
94 res
95 }
96 }
97
98 #[doc(alias = "graphene_euler_to_vec3")]
99 pub fn to_vec3(&self) -> Vec3 {
100 unsafe {
101 let mut res = Vec3::uninitialized();
102 ffi::graphene_euler_to_vec3(self.to_glib_none().0, res.to_glib_none_mut().0);
103 res
104 }
105 }
106}
107
108impl PartialEq for Euler {
109 #[inline]
110 fn eq(&self, other: &Self) -> bool {
111 self.equal(other)
112 }
113}
114
115impl Eq for Euler {}