fast image operations
Diffstat (limited to 'src/lib.rs')
| -rw-r--r-- | src/lib.rs | 11 |
1 files changed, 11 insertions, 0 deletions
@@ -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 pub const fn buffer(&self) -> &T { &self.buffer @@ -165,6 +170,12 @@ impl<const CHANNELS: usize> Image<&[u8], CHANNELS> { 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> { |