fast image operations
| -rw-r--r-- | src/builder.rs | 10 | ||||
| -rw-r--r-- | src/indexed/builder.rs | 2 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/builder.rs b/src/builder.rs index c3e4164..ec0e518 100644 --- a/src/builder.rs +++ b/src/builder.rs @@ -48,6 +48,16 @@ impl<B, const C: usize> Builder<B, C> { "invalid buffer size (expected {len}, got {})", buffer.as_ref().len() ); + // SAFETY: checked! + unsafe { self.buf_unchecked(buffer) } + } + /// apply a buffer, and build (length unchecked) + #[track_caller] + #[must_use = "what is it going to do?"] + pub unsafe fn buf_unchecked<I>(self, buffer: B) -> Image<B, C> + where + B: AsRef<[I]>, + { Image { buffer, width: self.width.try_into().expect("passed zero width to builder"), diff --git a/src/indexed/builder.rs b/src/indexed/builder.rs index e8b5ad1..faa38c7 100644 --- a/src/indexed/builder.rs +++ b/src/indexed/builder.rs @@ -62,7 +62,7 @@ impl<B, P> Builder<B, P> { B: AsRef<[I]>, { Image { - buffer: crate::Image::build(self.width, self.height).buf(buffer), + buffer: unsafe { crate::Image::build(self.width, self.height).buf_unchecked(buffer) }, palette: self.palette.expect("require palette"), } } |