fast image operations
use into_flattened
| -rw-r--r-- | src/affine.rs | 7 | ||||
| -rw-r--r-- | src/drawing/box.rs | 1 | ||||
| -rw-r--r-- | src/lib.rs | 1 |
3 files changed, 2 insertions, 7 deletions
diff --git a/src/affine.rs b/src/affine.rs index f7bfadd..893be81 100644 --- a/src/affine.rs +++ b/src/affine.rs @@ -98,12 +98,7 @@ impl<const CHANNELS: usize> ImageCloner<'_, CHANNELS> { } // SAFETY: we just wrote the right amount unsafe { v.set_len(s) }; - let (v, _, c) = v.into_raw_parts(); - let s = s * CHANNELS; - // SAFETY: init with with_cap, set len to s, s is init amount, chunked returns nm, capacity handled, flatten vec - let v = unsafe { Vec::from_raw_parts(v.cast::<u8>(), s, c * CHANNELS) }; - // SAFETY: s is w * h. - unsafe { Image::new(self.width, self.height, v) } + Image::build(self.width(), self.height()).buf(v.into_flattened()) } /// Rotate an image 90 degrees clockwise. diff --git a/src/drawing/box.rs b/src/drawing/box.rs index 8cb3450..d59b01b 100644 --- a/src/drawing/box.rs +++ b/src/drawing/box.rs @@ -106,6 +106,5 @@ mod tests { i.stroked_box((2, 2), 4, 17, 2, [255]); // ideally the bottom would have a 2 stroke line, alas tis difficult. assert_eq!(i.buffer(), b"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\x00\x00\x00\xff\xff\x00\x00\x00\x00\x00\x00\x00\x00\xff\xff\xff\xff\xff\xff\xff\x00\x00\x00\x00\x00\x00\x00"); - panic!(); } } @@ -8,6 +8,7 @@ vec_into_raw_parts, slice_as_chunks, unchecked_math, + slice_flatten, portable_simd, array_windows, const_option, |