leaflet/
point.rs

1use wasm_bindgen::prelude::*;
2
3#[wasm_bindgen]
4extern "C" {
5    #[derive(Debug)]
6    pub type Point;
7
8    #[wasm_bindgen(constructor, js_namespace = L)]
9    pub fn new(x: f64, y: f64) -> Point;
10
11    #[wasm_bindgen(method, getter)]
12    pub fn x(this: &Point) -> f64;
13
14    #[wasm_bindgen(method, getter)]
15    pub fn y(this: &Point) -> f64;
16
17    #[wasm_bindgen(method)]
18    pub fn add(this: &Point, other: &Point) -> Point;
19
20    #[wasm_bindgen(method)]
21    pub fn subtract(this: &Point, other: &Point) -> Point;
22
23    #[wasm_bindgen(method, js_name = multiplyBy)]
24    pub fn multiply_by(this: &Point, scalar: f64) -> Point;
25
26    #[wasm_bindgen(method, js_name = divideBy)]
27    pub fn divide_by(this: &Point, scalar: f64) -> Point;
28
29    #[wasm_bindgen(method, js_name = scaleBy)]
30    pub fn scale_by(this: &Point, other: &Point) -> Point;
31
32    #[wasm_bindgen(method, js_name = unscaleByTo)]
33    pub fn unscale_by_to(this: &Point, other: &Point) -> Point;
34
35    #[wasm_bindgen(method)]
36    pub fn round(this: &Point) -> Point;
37
38    #[wasm_bindgen(method)]
39    pub fn floor(this: &Point) -> Point;
40
41    #[wasm_bindgen(method)]
42    pub fn ceil(this: &Point) -> Point;
43
44    #[wasm_bindgen(method)]
45    pub fn trunc(this: &Point) -> bool;
46
47    #[wasm_bindgen(method)]
48    pub fn equals(this: &Point, other: &Point) -> bool;
49
50    #[wasm_bindgen(method)]
51    pub fn contains(this: &Point, other: &Point) -> f64;
52
53    #[wasm_bindgen(method, js_name = distanceTo)]
54    pub fn distance_to(this: &Point, other: &Point) -> f64;
55}
56
57impl From<(u32, u32)> for Point {
58    fn from((x, y): (u32, u32)) -> Point {
59        Point::new(f64::from(x), f64::from(y))
60    }
61}
62
63impl From<(f64, f64)> for Point {
64    fn from((x, y): (f64, f64)) -> Point {
65        Point::new(x, y)
66    }
67}