exact_poly/wasm/
spatial.rs1use wasm_bindgen::prelude::*;
2
3use super::helpers::*;
4
5#[wasm_bindgen]
6pub fn point_strictly_inside_convex(px: i64, py: i64, ring_flat: &[i64]) -> Result<bool, JsValue> {
7 let ring = parse_flat_ring(ring_flat)?;
8 Ok(crate::spatial::point_strictly_inside_convex(px, py, &ring))
9}
10
11#[wasm_bindgen]
12pub fn point_on_polygon_boundary(px: i64, py: i64, ring_flat: &[i64]) -> Result<bool, JsValue> {
13 let ring = parse_flat_ring(ring_flat)?;
14 Ok(crate::spatial::point_on_polygon_boundary(px, py, &ring))
15}
16
17#[wasm_bindgen]
18pub fn point_inside_or_on_boundary(px: i64, py: i64, ring_flat: &[i64]) -> Result<bool, JsValue> {
19 let ring = parse_flat_ring(ring_flat)?;
20 Ok(crate::spatial::point_inside_or_on_boundary(px, py, &ring))
21}
22
23#[wasm_bindgen]
24pub fn collinear_segments_overlap_area(
25 a1x: i64,
26 a1y: i64,
27 a2x: i64,
28 a2y: i64,
29 b1x: i64,
30 b1y: i64,
31 b2x: i64,
32 b2y: i64,
33 a_flat: &[i64],
34 b_flat: &[i64],
35) -> Result<bool, JsValue> {
36 let a_ring = parse_flat_ring(a_flat)?;
37 let b_ring = parse_flat_ring(b_flat)?;
38 Ok(crate::spatial::collinear_segments_overlap_area(
39 a1x, a1y, a2x, a2y, b1x, b1y, b2x, b2y, &a_ring, &b_ring,
40 ))
41}
42
43#[wasm_bindgen(skip_typescript)]
44pub fn point_inside_any_part(parts_flat: JsValue, x: i64, y: i64) -> Result<bool, JsValue> {
45 let parts = parse_flat_parts(parts_flat)?;
46 Ok(crate::containment::point_inside_any_part(&parts, x, y))
47}
48
49#[wasm_bindgen(skip_typescript)]
50pub fn contains_polygon(
51 outer_parts_flat: JsValue,
52 inner_parts_flat: JsValue,
53) -> Result<bool, JsValue> {
54 let outer_parts = parse_flat_parts(outer_parts_flat)?;
55 let inner_parts = parse_flat_parts(inner_parts_flat)?;
56 Ok(crate::containment::contains_polygon(
57 &outer_parts,
58 &inner_parts,
59 ))
60}