1use libc::{c_void, size_t};
2use std::slice;
3
4pub mod librii {
5 #[allow(non_upper_case_globals)]
6 #[allow(non_camel_case_types)]
7 #[allow(non_snake_case)]
8 pub mod bindings {
9 include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
10 }
11
12 pub fn avir_resize(dst: &mut [u8], dx: u32, dy: u32, src: &[u8], sx: u32, sy: u32) {
13 unsafe {
14 bindings::impl_avir_resize(src.as_ptr(), sx, sy, dst.as_mut_ptr(), dx, dy);
15 }
16 }
17
18 pub fn clancir_resize(dst: &mut [u8], dx: u32, dy: u32, src: &[u8], sx: u32, sy: u32) {
19 unsafe {
20 bindings::impl_clancir_resize(src.as_ptr(), sx, sy, dst.as_mut_ptr(), dx, dy);
21 }
22 }
23}
24
25#[no_mangle]
26pub unsafe extern "C" fn avir_resize(
27 dst: *mut c_void,
28 dst_len: size_t,
29 dx: u32,
30 dy: u32,
31 src: *const c_void,
32 src_len: size_t,
33 sx: u32,
34 sy: u32,
35) {
36 let dst_slice = slice::from_raw_parts_mut(dst as *mut u8, dst_len);
37 let src_slice = slice::from_raw_parts(src as *const u8, src_len);
38 librii::avir_resize(dst_slice, dx, dy, src_slice, sx, sy);
39}
40
41#[no_mangle]
42pub unsafe extern "C" fn clancir_resize(
43 dst: *mut c_void,
44 dst_len: size_t,
45 dx: u32,
46 dy: u32,
47 src: *const c_void,
48 src_len: size_t,
49 sx: u32,
50 sy: u32,
51) {
52 let dst_slice = slice::from_raw_parts_mut(dst as *mut u8, dst_len);
53 let src_slice = slice::from_raw_parts(src as *const u8, src_len);
54 librii::clancir_resize(dst_slice, dx, dy, src_slice, sx, sy);
55}