diff --git a/cbindgen.toml b/cbindgen.toml index 221e915..363d001 100644 --- a/cbindgen.toml +++ b/cbindgen.toml @@ -24,7 +24,7 @@ sort_by = "Name" [parse] parse_deps = true -include = ["servicepoint", "std"] +include = ["servicepoint"] extra_bindings = ["servicepoint"] [parse.expand] diff --git a/include/servicepoint.h b/include/servicepoint.h index 51b00ca..9edeaf9 100644 --- a/include/servicepoint.h +++ b/include/servicepoint.h @@ -388,15 +388,6 @@ void sp_bitmap_fill(Bitmap */*notnull*/ bitmap, bool value); */ void sp_bitmap_free(Bitmap */*notnull*/ bitmap); -/** - * Tries to convert the BitVec to a Bitmap. - * - * The provided BitVec gets consumed. - * - * Returns NULL in case of error. - */ -Bitmap *sp_bitmap_from_bitvec(size_t width, SPBitVec */*notnull*/ bitvec); - /** * Gets the current value at the specified position in the [Bitmap]. * @@ -420,11 +411,6 @@ bool sp_bitmap_get(Bitmap */*notnull*/ bitmap, size_t x, size_t y); */ size_t sp_bitmap_height(Bitmap */*notnull*/ bitmap); -/** - * Consumes the Bitmap and returns the contained BitVec - */ -SPBitVec */*notnull*/ sp_bitmap_into_bitvec(Bitmap */*notnull*/ bitmap); - /** * Loads a [Bitmap] with the specified dimensions from the provided data. * diff --git a/src/bitmap.rs b/src/bitmap.rs index f203395..c166881 100644 --- a/src/bitmap.rs +++ b/src/bitmap.rs @@ -1,5 +1,5 @@ use crate::byte_slice::ByteSlice; -use crate::{heap_drop, heap_move, heap_move_nonnull, SPBitVec}; +use crate::{heap_drop, heap_move, heap_move_nonnull}; use servicepoint::{Bitmap, DataRef, Grid}; use std::ptr::NonNull; @@ -68,24 +68,6 @@ pub unsafe extern "C" fn sp_bitmap_load( } } -/// Tries to convert the BitVec to a Bitmap. -/// -/// The provided BitVec gets consumed. -/// -/// Returns NULL in case of error. -#[no_mangle] -pub unsafe extern "C" fn sp_bitmap_from_bitvec( - width: usize, - bitvec: NonNull, -) -> *mut Bitmap { - let bitvec = unsafe { *Box::from_raw(bitvec.as_ptr()) }; - if let Ok(bitmap) = Bitmap::from_bitvec(width, bitvec.0) { - heap_move(bitmap) - } else { - std::ptr::null_mut() - } -} - /// Clones a [Bitmap]. #[no_mangle] pub unsafe extern "C" fn sp_bitmap_clone( @@ -190,12 +172,3 @@ pub unsafe extern "C" fn sp_bitmap_unsafe_data_ref( ) -> ByteSlice { unsafe { ByteSlice::from_slice(bitmap.as_mut().data_ref_mut()) } } - -/// Consumes the Bitmap and returns the contained BitVec -#[no_mangle] -pub unsafe extern "C" fn sp_bitmap_into_bitvec( - bitmap: NonNull, -) -> NonNull { - let bitmap = unsafe { *Box::from_raw(bitmap.as_ptr()) }; - heap_move_nonnull(SPBitVec(bitmap.into())) -} diff --git a/src/brightness_grid.rs b/src/brightness_grid.rs index 823a1fd..a283d0a 100644 --- a/src/brightness_grid.rs +++ b/src/brightness_grid.rs @@ -30,8 +30,6 @@ pub unsafe extern "C" fn sp_brightness_grid_new( /// Loads a [BrightnessGrid] with the specified dimensions from the provided data. /// -/// Any out of range values will be set to [Brightness::MAX] or [Brightness::MIN]. -/// /// returns: new [BrightnessGrid] instance, or NULL in case of an error. #[no_mangle] pub unsafe extern "C" fn sp_brightness_grid_load( @@ -40,12 +38,14 @@ pub unsafe extern "C" fn sp_brightness_grid_load( data: ByteSlice, ) -> *mut BrightnessGrid { let data = unsafe { data.as_slice() }; - - match ByteGrid::load(width, height, data) - .map(move |grid| grid.map(Brightness::saturating_from)) - { - None => std::ptr::null_mut(), - Some(grid) => heap_move(grid), + let grid = match ByteGrid::load(width, height, data) { + None => return std::ptr::null_mut(), + Some(grid) => grid, + }; + if let Ok(grid) = BrightnessGrid::try_from(grid) { + heap_move(grid) + } else { + std::ptr::null_mut() } }