Image::take_buffer && Image::to_owned

This commit is contained in:
bendn 2023-09-06 18:49:51 +07:00
parent 5139fa82f7
commit b618a22c88
No known key found for this signature in database
GPG key ID: 0D9D3A2A3B2A93D6
2 changed files with 12 additions and 1 deletions

View file

@ -1,6 +1,6 @@
[package] [package]
name = "fimg" name = "fimg"
version = "0.3.1" version = "0.3.2"
authors = ["bend-n <bend.n@outlook.com>"] authors = ["bend-n <bend.n@outlook.com>"]
license = "MIT" license = "MIT"
edition = "2021" edition = "2021"

View file

@ -116,6 +116,11 @@ impl<T, const CHANNELS: usize> Image<T, CHANNELS> {
} }
} }
/// consumes the image, returning the image buffer
pub fn take_buffer(self) -> T {
self.buffer
}
/// returns a immutable reference to the backing buffer /// returns a immutable reference to the backing buffer
pub const fn buffer(&self) -> &T { pub const fn buffer(&self) -> &T {
&self.buffer &self.buffer
@ -165,6 +170,12 @@ impl<const CHANNELS: usize> Image<&[u8], CHANNELS> {
buffer: &[0; CHANNELS * WIDTH as usize * HEIGHT as usize], buffer: &[0; CHANNELS * WIDTH as usize * HEIGHT as usize],
} }
} }
/// Allocate a new Image<Vec<u8>>.
pub fn to_owned(&self) -> Image<Vec<u8>, CHANNELS> {
// SAFETY: we have been constructed already, so must be valid
unsafe { Image::new(self.width, self.height, self.buffer.to_vec()) }
}
} }
impl<T: std::ops::Deref<Target = [u8]>, const CHANNELS: usize> Image<T, CHANNELS> { impl<T: std::ops::Deref<Target = [u8]>, const CHANNELS: usize> Image<T, CHANNELS> {