servicepoint-binding-uniffi/src/containers/bitmap.rs
Vinzenz Schroeter f4c7519658 export some builtin traits,
brightness conversion fails for invalid values,

macros for wrapping attrs
2025-09-28 23:14:11 +02:00

38 lines
990 B
Rust

use crate::{
containers::{wrap_get_set_fill_2d, wrap_width_height},
macros::wrap_object,
};
use servicepoint::Grid;
use std::{ops::Deref, sync::Arc};
wrap_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> {
// TODO: throw exception
Self::internal_new(
servicepoint::Bitmap::load(width as usize, height as usize, &data)
.unwrap(),
)
}
pub fn copy_raw(&self) -> Vec<u8> {
self.read().deref().into()
}
}