diff --git a/color-module/src/lib.rs b/color-module/src/lib.rs index 429f3c7..bb9c464 100644 --- a/color-module/src/lib.rs +++ b/color-module/src/lib.rs @@ -1,4 +1,4 @@ -use std::str::FromStr; +use std::{str::FromStr, sync::Arc}; use palette::{ cam16::{Cam16Jch, Parameters}, @@ -309,17 +309,17 @@ pub fn series( 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 oklch = Arc::new(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); + for s in (1..=expand_amount).rev() { + let darkened_color = Arc::clone(&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 lightened_color = Arc::clone(&oklch).lighten(s as f32 * step); let srgb = Srgb::from_color(lightened_color); color_series.push(format!("{:x}", srgb.into_format::())); }