fast image operations
-rw-r--r--src/sub.rs16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/sub.rs b/src/sub.rs
index f353e97..d4b6395 100644
--- a/src/sub.rs
+++ b/src/sub.rs
@@ -130,17 +130,15 @@ impl<T, const C: usize> Image<T, C> {
impl<T: Clone, const C: usize> SubImage<&[T], C> {
/// Clones this [`SubImage`] into its own [`Image`]
pub fn own(&self) -> Image<Box<[T]>, C> {
- let mut out =
- Vec::with_capacity(self.real_width.get() as usize * self.inner.height() as usize * C);
- for row in self
- .inner
- .buffer
- .chunks_exact(self.inner.width.get() as usize)
- .take(self.real_height.get() as usize)
- {
+ let mut out = Vec::with_capacity(
+ self.real_width.get() as usize * self.real_height.get() as usize * C,
+ );
+
+ for row in self.inner.rows().take(self.real_height.get() as usize) {
out.extend_from_slice(
&row[self.offset_x as usize
- ..self.offset_x as usize + self.real_width.get() as usize],
+ ..self.offset_x as usize + self.real_width.get() as usize]
+ .as_flattened(),
);
}
// SAFETY: ctor