| 295 | #[no_mangle] |
| 296 | #[inline(never)] |
| 297 | pub unsafe extern "C" fn liq_write_remapped_image(result: &mut liq_result, input_image: &mut liq_image, buffer_bytes: *mut MaybeUninit<u8>, buffer_size: usize) -> liq_error { |
| 298 | if bad_object!(result, LIQ_RESULT_MAGIC) || |
| 299 | bad_object!(input_image, LIQ_IMAGE_MAGIC) { return Error::InvalidPointer; } |
| 300 | let input_image = &mut input_image.inner; |
| 301 | let result = &mut result.inner; |
| 302 | |
| 303 | if liq_received_invalid_pointer(buffer_bytes.cast()) { return Error::InvalidPointer; } |
| 304 | |
| 305 | let required_size = (input_image.width()) * (input_image.height()); |
| 306 | if buffer_size < required_size { return Error::BufferTooSmall; } |
| 307 | let buffer_bytes = std::slice::from_raw_parts_mut(buffer_bytes, required_size); |
| 308 | liq_write_remapped_image_impl(result, input_image, buffer_bytes).err().unwrap_or(LIQ_OK) |
| 309 | } |
| 310 | |
| 311 | #[no_mangle] |
| 312 | #[inline(never)] |