fast image operations
use into_flattened
bendn 2023-09-27
parent e09c667 · commit af0be2a
-rw-r--r--src/affine.rs7
-rw-r--r--src/drawing/box.rs1
-rw-r--r--src/lib.rs1
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!();
}
}
diff --git a/src/lib.rs b/src/lib.rs
index 4d31ef3..21fe345 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -8,6 +8,7 @@
vec_into_raw_parts,
slice_as_chunks,
unchecked_math,
+ slice_flatten,
portable_simd,
array_windows,
const_option,