use js_sys::{Int32Array, Uint32Array};
use mlt_core::GeometryValues;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub struct LayerGeometry {
pub(crate) geometry_offsets: Uint32Array,
pub(crate) part_offsets: Uint32Array,
pub(crate) ring_offsets: Uint32Array,
pub(crate) vertices: Int32Array,
}
#[wasm_bindgen]
impl LayerGeometry {
#[must_use]
pub fn geometry_offsets(&self) -> Uint32Array {
self.geometry_offsets.clone()
}
#[must_use]
pub fn part_offsets(&self) -> Uint32Array {
self.part_offsets.clone()
}
#[must_use]
pub fn ring_offsets(&self) -> Uint32Array {
self.ring_offsets.clone()
}
#[must_use]
pub fn vertices(&self) -> Int32Array {
self.vertices.clone()
}
}
impl LayerGeometry {
pub(crate) fn from_values(geom: &GeometryValues) -> Self {
let geometry_offsets = geom
.geometry_offsets()
.map_or_else(|| Uint32Array::new_with_length(0), Uint32Array::from);
let part_offsets = geom
.part_offsets()
.map_or_else(|| Uint32Array::new_with_length(0), Uint32Array::from);
let ring_offsets = geom
.ring_offsets()
.map_or_else(|| Uint32Array::new_with_length(0), Uint32Array::from);
let vertices = geom
.vertices()
.map_or_else(|| Int32Array::new_with_length(0), Int32Array::from);
Self {
geometry_offsets,
part_offsets,
ring_offsets,
vertices,
}
}
}