libobs_wrapper\graphics/
vec2.rs

1use getters0::Getters;
2
3#[derive(Debug, Clone, Copy, Getters)]
4pub struct Vec2 {
5    #[get_mut]
6    x: f32,
7    #[get_mut]
8    y: f32,
9}
10
11impl From<libobs::vec2> for Vec2 {
12    fn from(raw: libobs::vec2) -> Self {
13        let inner = unsafe { raw.__bindgen_anon_1.__bindgen_anon_1 };
14        Self {
15            x: inner.x,
16            y: inner.y,
17        }
18    }
19}
20
21impl From<Vec2> for libobs::vec2 {
22    fn from(val: Vec2) -> Self {
23        libobs::vec2 {
24            __bindgen_anon_1: libobs::vec2__bindgen_ty_1 {
25                __bindgen_anon_1: libobs::vec2__bindgen_ty_1__bindgen_ty_1 { x: val.x, y: val.y },
26            },
27        }
28    }
29}
30
31#[test]
32fn test_vec2() {
33    let vec_val = Vec2::new(1.0, 2.0);
34    let libobs_vec: libobs::vec2 = vec_val.into();
35
36    let original = Vec2::from(libobs_vec);
37    assert_eq!(original.x, 1.0);
38    assert_eq!(original.y, 2.0);
39    assert_ne!(original.x, 0.0);
40    assert_ne!(original.y, 0.0);
41}
42
43#[test]
44fn test_vec2_new() {
45    let vec = Vec2::new(3.5, 4.5);
46    assert_eq!(vec.x, 3.5);
47    assert_eq!(vec.y, 4.5);
48}
49
50#[test]
51fn test_vec2_clone() {
52    let vec1 = Vec2::new(1.0, 2.0);
53    #[allow(clippy::clone_on_copy)]
54    let vec2 = vec1.clone();
55    assert_eq!(vec1.x, vec2.x);
56    assert_eq!(vec1.y, vec2.y);
57}
58
59#[test]
60fn test_vec2_copy() {
61    let vec1 = Vec2::new(1.0, 2.0);
62    let vec2 = vec1; // Copy, not move
63    assert_eq!(vec1.x, vec2.x);
64    assert_eq!(vec1.y, vec2.y);
65}
66
67#[test]
68fn test_vec2_debug() {
69    let vec = Vec2::new(1.0, 2.0);
70    let debug_str = format!("{:?}", vec);
71    assert!(debug_str.contains("Vec2"));
72}