From 025d92e552178d075bfe0ac0ff547cf27d7f2427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=90=E6=B6=9B?= Date: Fri, 3 Jan 2025 05:52:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E4=BD=BF=E7=94=A8=E4=BA=AE?= =?UTF-8?q?=E5=BA=A6=E7=94=9F=E6=88=90=E7=B3=BB=E5=88=97=E9=A2=9C=E8=89=B2?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- color-module/src/lib.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/color-module/src/lib.rs b/color-module/src/lib.rs index d4f08f2..e2ce429 100644 --- a/color-module/src/lib.rs +++ b/color-module/src/lib.rs @@ -270,3 +270,29 @@ pub fn triadic(color: &str) -> Result, errors::ColorError> { format!("{:x}", srgb_p240.into_format::()), ]) } + +#[wasm_bindgen] +pub fn series( + color: &str, + expand_amount: i16, + step: f32, +) -> Result, errors::ColorError> { + let origin_color = Srgb::from_str(color) + .map_err(|_| errors::ColorError::UnrecogniazedRGB(color.to_string()))? + .into_format::(); + let oklch = Oklch::from_color(origin_color.clone()); + + let mut color_series = Vec::new(); + for s in expand_amount..1 { + let darkened_color = oklch.darken(s as f32 * step); + let srgb = Srgb::from_color(darkened_color); + color_series.push(format!("{:x}", srgb.into_format::())); + } + color_series.push(format!("{:x}", origin_color.into_format::())); + for s in 1..expand_amount { + let lightened_color = oklch.lighten(s as f32 * step); + let srgb = Srgb::from_color(lightened_color); + color_series.push(format!("{:x}", srgb.into_format::())); + } + Ok(color_series) +}