fast image operations
-rw-r--r--Cargo.toml2
-rw-r--r--src/lib.rs11
2 files changed, 12 insertions, 1 deletions
diff --git a/Cargo.toml b/Cargo.toml
index 5a3e147..1cacaa4 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,6 +1,6 @@
[package]
name = "fimg"
-version = "0.3.1"
+version = "0.3.2"
authors = ["bend-n <[email protected]>"]
license = "MIT"
edition = "2021"
diff --git a/src/lib.rs b/src/lib.rs
index 79eb558..57cfa24 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -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> {