43 lines
1.1 KiB
Rust
43 lines
1.1 KiB
Rust
use crate::macros::{
|
|
wrap_get_set_fill_2d, wrap_uniffi_object, wrap_width_height,
|
|
};
|
|
use servicepoint::{DataRef, Grid};
|
|
use std::sync::Arc;
|
|
|
|
wrap_uniffi_object!(Bitmap);
|
|
wrap_width_height!(Bitmap);
|
|
wrap_get_set_fill_2d!(Bitmap, bool);
|
|
|
|
#[uniffi::export]
|
|
impl Bitmap {
|
|
#[uniffi::constructor]
|
|
pub fn new(width: u64, height: u64) -> Arc<Self> {
|
|
Self::internal_new(
|
|
servicepoint::Bitmap::new(width as usize, height as usize).unwrap(),
|
|
)
|
|
}
|
|
|
|
#[uniffi::constructor]
|
|
pub fn new_max_sized() -> Arc<Self> {
|
|
Self::internal_new(servicepoint::Bitmap::max_sized())
|
|
}
|
|
|
|
#[uniffi::constructor]
|
|
pub fn load(width: u64, height: u64, data: Vec<u8>) -> Arc<Self> {
|
|
Self::internal_new(
|
|
servicepoint::Bitmap::load(width as usize, height as usize, &data)
|
|
.unwrap(),
|
|
)
|
|
}
|
|
|
|
pub fn equals(&self, other: &Bitmap) -> bool {
|
|
let a = self.actual.read().unwrap();
|
|
let b = other.actual.read().unwrap();
|
|
*a == *b
|
|
}
|
|
|
|
pub fn copy_raw(&self) -> Vec<u8> {
|
|
self.actual.read().unwrap().data_ref().to_vec()
|
|
}
|
|
}
|