From 156a977c6b240c6a7d50e9d9736c998ce2350688 Mon Sep 17 00:00:00 2001 From: awxkee Date: Wed, 5 Jun 2024 16:58:06 +0100 Subject: [PATCH] Fix Scaling trait for Linear Scaler --- Cargo.lock | 2 +- Cargo.toml | 2 +- src/linear_scaler.rs | 19 +++++++++++++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f43fec5..a0661a6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -587,7 +587,7 @@ checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "pic-scale" -version = "0.1.0" +version = "0.1.1" dependencies = [ "colorutils-rs", "num-traits", diff --git a/Cargo.toml b/Cargo.toml index a96e87c..4df35c4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,7 +2,7 @@ workspace = { members = ["app"] } [package] name = "pic-scale" -version = "0.1.0" +version = "0.1.1" edition = "2021" description = "High performance image scaling" readme = "README.md" diff --git a/src/linear_scaler.rs b/src/linear_scaler.rs index d4a55a9..916f099 100644 --- a/src/linear_scaler.rs +++ b/src/linear_scaler.rs @@ -18,19 +18,22 @@ pub struct LinearScaler { pub(crate) transfer_function: TransferFunction, } -impl<'a> LinearScaler { +impl LinearScaler { pub fn new(filter: ResamplingFunction) -> Self { LinearScaler { scaler: Scaler::new(filter), transfer_function: TransferFunction::Srgb, } } +} + +impl<'a> Scaling for LinearScaler { - pub fn set_threading_policy(&mut self, threading_policy: ThreadingPolicy) { + fn set_threading_policy(&mut self, threading_policy: ThreadingPolicy) { self.scaler.threading_policy = threading_policy; } - pub fn resize_rgb(&self, new_size: ImageSize, store: ImageStore) -> ImageStore { + fn resize_rgb(&self, new_size: ImageSize, store: ImageStore) -> ImageStore { const CHANNELS: usize = 3; let mut linear_store = ImageStore::::alloc(store.width, store.height); rgb_to_linear_u8( @@ -58,7 +61,11 @@ impl<'a> LinearScaler { gamma_store } - pub fn resize_rgba( + fn resize_rgb_f32(&self, new_size: ImageSize, store: ImageStore) -> ImageStore { + self.scaler.resize_rgb_f32(new_size, store) + } + + fn resize_rgba( &self, new_size: ImageSize, store: ImageStore, @@ -103,4 +110,8 @@ impl<'a> LinearScaler { } gamma_store } + + fn resize_rgba_f32(&self, new_size: ImageSize, store: ImageStore) -> ImageStore { + self.scaler.resize_rgba_f32(new_size, store) + } }