mirror of
https://github.com/bend-n/fimg.git
synced 2024-12-22 18:38:21 -06:00
Image::to_owned for &mut [T] too
This commit is contained in:
parent
b618a22c88
commit
c997bf1990
|
@ -1,6 +1,6 @@
|
||||||
[package]
|
[package]
|
||||||
name = "fimg"
|
name = "fimg"
|
||||||
version = "0.3.2"
|
version = "0.3.3"
|
||||||
authors = ["bend-n <bend.n@outlook.com>"]
|
authors = ["bend-n <bend.n@outlook.com>"]
|
||||||
license = "MIT"
|
license = "MIT"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
25
src/lib.rs
25
src/lib.rs
|
@ -136,6 +136,22 @@ impl<T, const CHANNELS: usize> Image<T, CHANNELS> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl<const CHANNELS: usize, T: Clone> Image<&[T], CHANNELS> {
|
||||||
|
/// Allocate a new `Image<Vec<T>>` from this imageref.
|
||||||
|
pub fn to_owned(&self) -> Image<Vec<T>, CHANNELS> {
|
||||||
|
// SAFETY: we have been constructed already, so must be valid
|
||||||
|
unsafe { Image::new(self.width, self.height, self.buffer.to_vec()) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<const CHANNELS: usize, T: Clone> Image<&mut [T], CHANNELS> {
|
||||||
|
/// Allocate a new `Image<Vec<T>>` from this mutable imageref.
|
||||||
|
pub fn to_owned(&self) -> Image<Vec<T>, CHANNELS> {
|
||||||
|
// SAFETY: we have been constructed already, so must be valid
|
||||||
|
unsafe { Image::new(self.width, self.height, self.buffer.to_vec()) }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<const CHANNELS: usize> Image<&[u8], CHANNELS> {
|
impl<const CHANNELS: usize> Image<&[u8], CHANNELS> {
|
||||||
#[inline]
|
#[inline]
|
||||||
#[must_use]
|
#[must_use]
|
||||||
|
@ -159,7 +175,6 @@ impl<const CHANNELS: usize> Image<&[u8], CHANNELS> {
|
||||||
/// let img = Image::make::<5, 5>();
|
/// let img = Image::make::<5, 5>();
|
||||||
/// # let img: Image<_, 4> = img;
|
/// # let img: Image<_, 4> = img;
|
||||||
/// ```
|
/// ```
|
||||||
|
|
||||||
pub const fn make<'a, const WIDTH: u32, const HEIGHT: u32>() -> Image<&'a [u8], CHANNELS>
|
pub const fn make<'a, const WIDTH: u32, const HEIGHT: u32>() -> Image<&'a [u8], CHANNELS>
|
||||||
where
|
where
|
||||||
[(); CHANNELS * WIDTH as usize * HEIGHT as usize]: Sized,
|
[(); CHANNELS * WIDTH as usize * HEIGHT as usize]: Sized,
|
||||||
|
@ -170,12 +185,6 @@ 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> {
|
||||||
|
@ -266,9 +275,7 @@ impl<const CHANNELS: usize> Image<&mut [u8], CHANNELS> {
|
||||||
// SAFETY: we got constructed okay, parameters must be valid
|
// SAFETY: we got constructed okay, parameters must be valid
|
||||||
unsafe { Image::new(self.width, self.height, self.buffer) }
|
unsafe { Image::new(self.width, self.height, self.buffer) }
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
impl<const CHANNELS: usize> Image<&mut [u8], CHANNELS> {
|
|
||||||
/// Copy this ref image
|
/// Copy this ref image
|
||||||
pub fn copy(&mut self) -> Image<&mut [u8], CHANNELS> {
|
pub fn copy(&mut self) -> Image<&mut [u8], CHANNELS> {
|
||||||
#[allow(clippy::undocumented_unsafe_blocks)]
|
#[allow(clippy::undocumented_unsafe_blocks)]
|
||||||
|
|
Loading…
Reference in a new issue