use crate::{ containers::{wrap_get_set_fill_2d, wrap_width_height}, macros::wrap_object, }; use servicepoint::{Brightness, Grid}; use std::{ops::Deref, sync::Arc}; wrap_object!(BrightnessGrid); wrap_width_height!(BrightnessGrid); wrap_get_set_fill_2d!(BrightnessGrid, Brightness); #[uniffi::export] impl BrightnessGrid { #[uniffi::constructor] pub fn new(width: u64, height: u64) -> Arc { Self::internal_new(servicepoint::BrightnessGrid::new( width as usize, height as usize, )) } #[uniffi::constructor] pub fn load(width: u64, height: u64, data: Vec) -> Arc { Self::internal_new( servicepoint::BrightnessGrid::saturating_load( width as usize, height as usize, &data, ) .unwrap(), ) } pub fn copy_raw(&self) -> Vec { self.read().deref().into() } }