rpgx_wasm/eucl/
delta.rs

1use rpgx::prelude::Delta;
2use wasm_bindgen::prelude::*;
3
4use crate::traits::WasmWrapper;
5
6#[wasm_bindgen(js_name = Delta)]
7#[derive(Clone, Debug, PartialEq, Eq)]
8pub struct WasmDelta {
9    inner: Delta,
10}
11
12impl WasmWrapper<Delta> for WasmDelta {
13    fn from_inner(inner: Delta) -> Self {
14        WasmDelta { inner }
15    }
16
17    fn inner(&self) -> &Delta {
18        &self.inner
19    }
20
21    fn into_inner(self) -> Delta {
22        self.inner
23    }
24}
25
26#[wasm_bindgen(js_class = Delta)]
27impl WasmDelta {
28    #[wasm_bindgen(constructor)]
29    pub fn new(dx: i32, dy: i32) -> WasmDelta {
30        WasmDelta {
31            inner: Delta::new(dx, dy),
32        }
33    }
34
35    #[wasm_bindgen(getter)]
36    pub fn dx(&self) -> i32 {
37        self.inner.dx
38    }
39
40    #[wasm_bindgen(getter)]
41    pub fn dy(&self) -> i32 {
42        self.inner.dy
43    }
44
45    #[wasm_bindgen]
46    pub fn zero() -> WasmDelta {
47        WasmDelta {
48            inner: Delta::zero(),
49        }
50    }
51
52    #[wasm_bindgen]
53    pub fn invert(&self) -> WasmDelta {
54        WasmDelta {
55            inner: self.inner.invert(),
56        }
57    }
58
59    #[wasm_bindgen(js_name = isZero)]
60    pub fn is_zero(&self) -> bool {
61        self.inner.is_zero()
62    }
63
64    #[wasm_bindgen]
65    pub fn manhattan(&self) -> u32 {
66        self.inner.manhattan()
67    }
68
69    #[wasm_bindgen(js_name = isAxisAligned)]
70    pub fn is_axis_aligned(&self) -> bool {
71        self.inner.is_axis_aligned()
72    }
73
74    #[wasm_bindgen(js_name = isDiagonal)]
75    pub fn is_diagonal(&self) -> bool {
76        self.inner.is_diagonal()
77    }
78
79    #[wasm_bindgen]
80    pub fn add(&self, other: &WasmDelta) -> WasmDelta {
81        WasmDelta {
82            inner: self.inner + other.inner,
83        }
84    }
85
86    #[wasm_bindgen]
87    pub fn sub(&self, other: &WasmDelta) -> WasmDelta {
88        WasmDelta {
89            inner: self.inner - other.inner,
90        }
91    }
92
93    #[wasm_bindgen]
94    pub fn neg(&self) -> WasmDelta {
95        WasmDelta { inner: -self.inner }
96    }
97}