summaryrefslogtreecommitdiff
path: root/examples/wasm-minipng/src/lib.rs
blob: aebf88b385f964f9a0a5fdfb0f995b1949e37e09 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#[no_mangle]
pub unsafe fn decode_png(input: *const u8, input_len: usize, output: *mut u8, output_len: usize) -> usize {
	let input = core::slice::from_raw_parts(input, input_len);
	let output = core::slice::from_raw_parts_mut(output, output_len);
	let Ok(header) = minipng::decode_png_header(input) else {
		return 0;
	};
	let required_bytes = header.required_bytes();
	if output_len >= required_bytes {
		if minipng::decode_png(input, output).is_err() {
			return 0;
		}
	}
	required_bytes
}