rust_minifb/src/buffer_helper.rs

24 lines
848 B
Rust
Raw Normal View History

use crate::error::Error;
use crate::Result;
2019-11-27 08:03:33 +01:00
pub fn check_buffer_size(
buffer_width: usize,
buffer_height: usize,
buffer_stride: usize,
2019-11-27 08:03:33 +01:00
buffer: &[u32],
) -> Result<()> {
let width = usize::max(buffer_width, buffer_stride);
let buffer_size = buffer.len() * 4; // len is the number of entries so * 4 as we want bytes
let required_buffer_size = width * buffer_height * 4; // * 4 for 32-bit buffer
if buffer_size < required_buffer_size {
let err = format!(
"Update failed because input buffer is too small. Required size for {} ({} stride) x {} buffer is {}
bytes but the size of the input buffer has the size {} bytes",
buffer_width, buffer_stride, buffer_height, required_buffer_size, buffer_size);
Err(Error::UpdateFailed(err))
} else {
Ok(())
}
}