diff --git a/color-module/src/convert/mod.rs b/color-module/src/convert/mod.rs index e365909..b1429fb 100644 --- a/color-module/src/convert/mod.rs +++ b/color-module/src/convert/mod.rs @@ -2,9 +2,10 @@ use palette::{ cam16::{Cam16Jch, Parameters}, convert::FromColorUnclamped, luma::Luma, - Hsl, IntoColor, IsWithinBounds, Lchuv, Oklab, Oklch, Srgb, + Hsl, IntoColor, IsWithinBounds, Lch, Lchuv, Oklab, Oklch, Srgb, }; +#[allow(dead_code)] pub fn map_cam16jch_to_srgb(origin: &Cam16Jch) -> Srgb { let original_xyz = origin.into_xyz(Parameters::default_static_wp(40.0)); let mut new_srgb = Srgb::from_color_unclamped(original_xyz); @@ -28,10 +29,36 @@ pub fn map_cam16jch_to_srgb(origin: &Cam16Jch) -> Srgb { } } +#[allow(dead_code)] pub fn map_cam16jch_to_srgb_hex(origin: &Cam16Jch) -> String { format!("{:x}", map_cam16jch_to_srgb(origin).into_format::()) } +pub fn map_lch_to_srgb(origin: &Lch) -> Srgb { + let mut new_srgb: Srgb = (*origin).into_color(); + if new_srgb.is_within_bounds() { + return new_srgb; + } + + let mut c: f32 = origin.chroma; + let original_c = c; + let h = origin.hue; + let l = origin.l; + + loop { + let new_lch = Lch::new(l, c, h); + new_srgb = new_lch.into_color(); + c -= original_c / 1000.0; + if c > 0.0 && (new_srgb.is_within_bounds()) { + break new_srgb; + } + } +} + +pub fn map_lch_to_srgb_hex(origin: &Lch) -> String { + format!("{:x}", map_lch_to_srgb(origin).into_format::()) +} + pub fn map_hsl_to_srgb(origin: &Hsl) -> Srgb { let mut new_original = Hsl::new(origin.hue, origin.saturation, origin.lightness); const FACTOR: f32 = 0.99; diff --git a/color-module/src/schemes/material_design_3/baseline.rs b/color-module/src/schemes/material_design_3/baseline.rs index e8555f6..92b643b 100644 --- a/color-module/src/schemes/material_design_3/baseline.rs +++ b/color-module/src/schemes/material_design_3/baseline.rs @@ -2,7 +2,7 @@ use std::collections::HashMap; use serde::Serialize; -use crate::convert::map_cam16jch_to_srgb_hex; +use crate::convert::map_lch_to_srgb_hex; use super::{color_set::M3ColorSet, surface::M3SurfaceSet, tonal_palette::TonalPalette}; @@ -62,10 +62,10 @@ impl M3BaselineColors { tertiary, error, surface, - outline: map_cam16jch_to_srgb_hex(&outline), - outline_variant: map_cam16jch_to_srgb_hex(&outline_variant), - scrim: map_cam16jch_to_srgb_hex(&scrim), - shadow: map_cam16jch_to_srgb_hex(&shadow), + outline: map_lch_to_srgb_hex(&outline), + outline_variant: map_lch_to_srgb_hex(&outline_variant), + scrim: map_lch_to_srgb_hex(&scrim), + shadow: map_lch_to_srgb_hex(&shadow), customs: HashMap::new(), dark_set, } diff --git a/color-module/src/schemes/material_design_3/color_set.rs b/color-module/src/schemes/material_design_3/color_set.rs index 1f8f0f7..da9f1fa 100644 --- a/color-module/src/schemes/material_design_3/color_set.rs +++ b/color-module/src/schemes/material_design_3/color_set.rs @@ -1,6 +1,6 @@ use serde::Serialize; -use crate::convert::map_cam16jch_to_srgb_hex; +use crate::convert::map_lch_to_srgb_hex; use super::tonal_palette::TonalPalette; @@ -22,7 +22,7 @@ impl M3ColorSet { let root = palette.tone(40.0); let on_root = palette.tone(100.0); let container = palette.tone(90.0); - let on_container = palette.tone(10.0); + let on_container = palette.tone(30.0); let fixed = palette.tone(90.0); let fixed_dim = palette.tone(80.0); let on_fixed = palette.tone(10.0); @@ -30,15 +30,15 @@ impl M3ColorSet { let inverse = palette.tone(80.0); Self { - root: map_cam16jch_to_srgb_hex(&root), - on_root: map_cam16jch_to_srgb_hex(&on_root), - container: map_cam16jch_to_srgb_hex(&container), - on_conatiner: map_cam16jch_to_srgb_hex(&on_container), - fixed: map_cam16jch_to_srgb_hex(&fixed), - fixed_dim: map_cam16jch_to_srgb_hex(&fixed_dim), - on_fixed: map_cam16jch_to_srgb_hex(&on_fixed), - fixed_variant: map_cam16jch_to_srgb_hex(&fixed_variant), - inverse: map_cam16jch_to_srgb_hex(&inverse), + root: map_lch_to_srgb_hex(&root), + on_root: map_lch_to_srgb_hex(&on_root), + container: map_lch_to_srgb_hex(&container), + on_conatiner: map_lch_to_srgb_hex(&on_container), + fixed: map_lch_to_srgb_hex(&fixed), + fixed_dim: map_lch_to_srgb_hex(&fixed_dim), + on_fixed: map_lch_to_srgb_hex(&on_fixed), + fixed_variant: map_lch_to_srgb_hex(&fixed_variant), + inverse: map_lch_to_srgb_hex(&inverse), } } @@ -54,15 +54,15 @@ impl M3ColorSet { let inverse = palette.tone(40.0); Self { - root: map_cam16jch_to_srgb_hex(&root), - on_root: map_cam16jch_to_srgb_hex(&on_root), - container: map_cam16jch_to_srgb_hex(&container), - on_conatiner: map_cam16jch_to_srgb_hex(&on_container), - fixed: map_cam16jch_to_srgb_hex(&fixed), - fixed_dim: map_cam16jch_to_srgb_hex(&fixed_dim), - on_fixed: map_cam16jch_to_srgb_hex(&on_fixed), - fixed_variant: map_cam16jch_to_srgb_hex(&fixed_variant), - inverse: map_cam16jch_to_srgb_hex(&inverse), + root: map_lch_to_srgb_hex(&root), + on_root: map_lch_to_srgb_hex(&on_root), + container: map_lch_to_srgb_hex(&container), + on_conatiner: map_lch_to_srgb_hex(&on_container), + fixed: map_lch_to_srgb_hex(&fixed), + fixed_dim: map_lch_to_srgb_hex(&fixed_dim), + on_fixed: map_lch_to_srgb_hex(&on_fixed), + fixed_variant: map_lch_to_srgb_hex(&fixed_variant), + inverse: map_lch_to_srgb_hex(&inverse), } } diff --git a/color-module/src/schemes/material_design_3/mod.rs b/color-module/src/schemes/material_design_3/mod.rs index d3cbc2c..d590326 100644 --- a/color-module/src/schemes/material_design_3/mod.rs +++ b/color-module/src/schemes/material_design_3/mod.rs @@ -1,12 +1,11 @@ use std::str::FromStr; use baseline::M3BaselineColors; -use palette::cam16::{Cam16Jch, Parameters}; -use palette::{IntoColor, Srgb}; +use palette::{IntoColor, Lch, Srgb}; use serde::Serialize; use tonal_palette::TonalPalette; -use crate::convert::map_cam16jch_to_srgb_hex; +use crate::convert::map_lch_to_srgb_hex; use crate::errors; use super::SchemeExport; @@ -26,20 +25,14 @@ pub struct MaterialDesign3Scheme { impl MaterialDesign3Scheme { pub fn new(source_color: &str, error_color: &str) -> Result { - let source = Cam16Jch::from_xyz( - Srgb::from_str(source_color) - .map_err(|_| errors::ColorError::UnrecogniazedRGB(source_color.to_string()))? - .into_format::() - .into_color(), - Parameters::default_static_wp(40.0), - ); - let error = Cam16Jch::from_xyz( - Srgb::from_str(error_color) - .map_err(|_| errors::ColorError::UnrecogniazedRGB(error_color.to_string()))? - .into_format::() - .into_color(), - Parameters::default_static_wp(40.0), - ); + let source: Lch = Srgb::from_str(source_color) + .map_err(|_| errors::ColorError::UnrecogniazedRGB(source_color.to_string()))? + .into_format::() + .into_color(); + let error: Lch = Srgb::from_str(error_color) + .map_err(|_| errors::ColorError::UnrecogniazedRGB(error_color.to_string()))? + .into_format::() + .into_color(); let source_hue = source.hue.into_positive_degrees(); let p = TonalPalette::from_hue_and_chroma(source_hue, source.chroma); let s = TonalPalette::from_hue_and_chroma(source_hue, source.chroma / 3.0); @@ -49,8 +42,8 @@ impl MaterialDesign3Scheme { let e = TonalPalette::from_hue_and_chroma(error.hue.into_positive_degrees(), 84.0); Ok(Self { - white: map_cam16jch_to_srgb_hex(&Cam16Jch::new(100.0, 0.0, 0.0)), - black: map_cam16jch_to_srgb_hex(&Cam16Jch::new(0.0, 0.0, 0.0)), + white: map_lch_to_srgb_hex(&Lch::new(100.0, 0.0, 0.0)), + black: map_lch_to_srgb_hex(&Lch::new(0.0, 0.0, 0.0)), light_baseline: M3BaselineColors::new(&p, &s, &t, &n, &nv, &e, false), dark_baseline: M3BaselineColors::new(&p, &s, &t, &n, &nv, &e, true), }) @@ -61,13 +54,10 @@ impl MaterialDesign3Scheme { name: String, color: String, ) -> Result<(), errors::ColorError> { - let custom_color = Cam16Jch::from_xyz( - Srgb::from_str(&color) - .map_err(|_| errors::ColorError::UnrecogniazedRGB(color.clone()))? - .into_format::() - .into_color(), - Parameters::default_static_wp(40.0), - ); + let custom_color: Lch = Srgb::from_str(&color) + .map_err(|_| errors::ColorError::UnrecogniazedRGB(color.clone()))? + .into_format::() + .into_color(); let hue = custom_color.hue.into_positive_degrees(); let palette = TonalPalette::from_hue_and_chroma(hue, custom_color.chroma); self.light_baseline.add_custom_set(name.clone(), &palette); diff --git a/color-module/src/schemes/material_design_3/surface.rs b/color-module/src/schemes/material_design_3/surface.rs index 55874f8..ad62315 100644 --- a/color-module/src/schemes/material_design_3/surface.rs +++ b/color-module/src/schemes/material_design_3/surface.rs @@ -1,6 +1,6 @@ use serde::Serialize; -use crate::convert::map_cam16jch_to_srgb_hex; +use crate::convert::map_lch_to_srgb_hex; use super::tonal_palette::TonalPalette; @@ -36,18 +36,18 @@ impl M3SurfaceSet { let on_inverse = neutral_variant.tone(95.0); Self { - root: map_cam16jch_to_srgb_hex(&root), - dim: map_cam16jch_to_srgb_hex(&dim), - bright: map_cam16jch_to_srgb_hex(&bright), - container: map_cam16jch_to_srgb_hex(&container), - container_lowest: map_cam16jch_to_srgb_hex(&container_lowest), - container_low: map_cam16jch_to_srgb_hex(&container_low), - container_high: map_cam16jch_to_srgb_hex(&container_high), - container_highest: map_cam16jch_to_srgb_hex(&container_highest), - on_root: map_cam16jch_to_srgb_hex(&on_root), - on_root_variant: map_cam16jch_to_srgb_hex(&on_root_variant), - inverse: map_cam16jch_to_srgb_hex(&inverse), - on_inverse: map_cam16jch_to_srgb_hex(&on_inverse), + root: map_lch_to_srgb_hex(&root), + dim: map_lch_to_srgb_hex(&dim), + bright: map_lch_to_srgb_hex(&bright), + container: map_lch_to_srgb_hex(&container), + container_lowest: map_lch_to_srgb_hex(&container_lowest), + container_low: map_lch_to_srgb_hex(&container_low), + container_high: map_lch_to_srgb_hex(&container_high), + container_highest: map_lch_to_srgb_hex(&container_highest), + on_root: map_lch_to_srgb_hex(&on_root), + on_root_variant: map_lch_to_srgb_hex(&on_root_variant), + inverse: map_lch_to_srgb_hex(&inverse), + on_inverse: map_lch_to_srgb_hex(&on_inverse), } } @@ -66,18 +66,18 @@ impl M3SurfaceSet { let on_inverse = neutral_variant.tone(20.0); Self { - root: map_cam16jch_to_srgb_hex(&root), - dim: map_cam16jch_to_srgb_hex(&dim), - bright: map_cam16jch_to_srgb_hex(&bright), - container: map_cam16jch_to_srgb_hex(&container), - container_lowest: map_cam16jch_to_srgb_hex(&container_lowest), - container_low: map_cam16jch_to_srgb_hex(&container_low), - container_high: map_cam16jch_to_srgb_hex(&container_high), - container_highest: map_cam16jch_to_srgb_hex(&container_highest), - on_root: map_cam16jch_to_srgb_hex(&on_root), - on_root_variant: map_cam16jch_to_srgb_hex(&on_root_variant), - inverse: map_cam16jch_to_srgb_hex(&inverse), - on_inverse: map_cam16jch_to_srgb_hex(&on_inverse), + root: map_lch_to_srgb_hex(&root), + dim: map_lch_to_srgb_hex(&dim), + bright: map_lch_to_srgb_hex(&bright), + container: map_lch_to_srgb_hex(&container), + container_lowest: map_lch_to_srgb_hex(&container_lowest), + container_low: map_lch_to_srgb_hex(&container_low), + container_high: map_lch_to_srgb_hex(&container_high), + container_highest: map_lch_to_srgb_hex(&container_highest), + on_root: map_lch_to_srgb_hex(&on_root), + on_root_variant: map_lch_to_srgb_hex(&on_root_variant), + inverse: map_lch_to_srgb_hex(&inverse), + on_inverse: map_lch_to_srgb_hex(&on_inverse), } } diff --git a/color-module/src/schemes/material_design_3/tonal_palette.rs b/color-module/src/schemes/material_design_3/tonal_palette.rs index 9f5ed2f..aa26b28 100644 --- a/color-module/src/schemes/material_design_3/tonal_palette.rs +++ b/color-module/src/schemes/material_design_3/tonal_palette.rs @@ -1,15 +1,12 @@ use std::str::FromStr; -use palette::{ - cam16::{Cam16Jch, Parameters}, - IntoColor, Srgb, -}; +use palette::{cam16::Cam16Jch, IntoColor, Lch, Srgb}; use crate::errors; #[derive(Debug, Clone)] pub struct TonalPalette { - pub key_color: Cam16Jch, + pub key_color: Lch, } #[inline] @@ -30,7 +27,7 @@ fn find_max_chroma(cache: &mut Vec<(f32, f32)>, hue: f32, tone: f32) -> f32 { chroma } -fn from_hue_and_chroma(hue: f32, chroma: f32) -> Cam16Jch { +fn from_hue_and_chroma(hue: f32, chroma: f32) -> Lch { let mut max_chroma_cache = Vec::new(); let hue = if hue >= 360.0 { hue - 360.0 } else { hue }; const PIVOT_TONE: f32 = 50.0; @@ -51,7 +48,7 @@ fn from_hue_and_chroma(hue: f32, chroma: f32) -> Cam16Jch { upper_tone = mid_tone; } else { if approximately_equal(lower_tone, mid_tone) { - return Cam16Jch::new(lower_tone, chroma, hue); + return Lch::new(lower_tone, chroma, hue); } lower_tone = mid_tone; } @@ -63,20 +60,17 @@ fn from_hue_and_chroma(hue: f32, chroma: f32) -> Cam16Jch { } } } - Cam16Jch::new(lower_tone, chroma, hue) + Lch::new(lower_tone, chroma, hue) } impl TryFrom for TonalPalette { type Error = errors::ColorError; fn try_from(value: String) -> Result { - let key_color = Cam16Jch::from_xyz( - Srgb::from_str(&value) - .map_err(|_| errors::ColorError::UnrecogniazedRGB(value))? - .into_format::() - .into_color(), - Parameters::default_static_wp(40.0), - ); + let key_color: Lch = Srgb::from_str(&value) + .map_err(|_| errors::ColorError::UnrecogniazedRGB(value))? + .into_format::() + .into_color(); Ok(TonalPalette { key_color }) } } @@ -87,8 +81,8 @@ impl TonalPalette { TonalPalette { key_color } } - pub fn tone(&self, tone: f32) -> Cam16Jch { - let toned_color = Cam16Jch::new(tone, self.key_color.chroma, self.key_color.hue); + pub fn tone(&self, tone: f32) -> Lch { + let toned_color = Lch::new(tone, self.key_color.chroma, self.key_color.hue); toned_color } diff --git a/src/color_functions/color_module.d.ts b/src/color_functions/color_module.d.ts index 1f025e4..71ef8ea 100644 --- a/src/color_functions/color_module.d.ts +++ b/src/color_functions/color_module.d.ts @@ -24,6 +24,14 @@ export function darken_absolute(color: string, value: number): string; export function mix(color1: string, color2: string, percent: number): string; export function tint(color: string, percent: number): string; export function shade(color: string, percent: number): string; +export function generate_palette_from_color(reference_color: string, swatch_amount: number, minimum_lightness: number, maximum_lightness: number, use_reference_color?: boolean | null, reference_color_bias?: number | null): string[]; +export function swatch_scheme_default_settings(): SwatchSchemeSetting; +export function series(color: string, expand_amount: number, step: number): string[]; +export function tonal_lighten_series(color: string, expand_amount: number, step: number): string[]; +export function tonal_darken_series(color: string, expand_amount: number, step: number): string[]; +export function q_scheme_color_expanding_methods(): any; +export function q_scheme_wacg_settings(): any; +export function q_scheme_default_settings(): SchemeSetting; export function shift_hue(color: string, degree: number): string; export function analogous_30(color: string): string[]; export function analogous_60(color: string): string[]; @@ -42,14 +50,6 @@ export function oklch_to_hex(l: number, c: number, h: number): string; export function represent_hct(color: string): Float32Array; export function hct_to_hex(hue: number, chroma: number, tone: number): string; export function wacg_relative_contrast(fg_color: string, bg_color: string): number; -export function generate_palette_from_color(reference_color: string, swatch_amount: number, minimum_lightness: number, maximum_lightness: number, use_reference_color?: boolean | null, reference_color_bias?: number | null): string[]; -export function swatch_scheme_default_settings(): SwatchSchemeSetting; -export function series(color: string, expand_amount: number, step: number): string[]; -export function tonal_lighten_series(color: string, expand_amount: number, step: number): string[]; -export function tonal_darken_series(color: string, expand_amount: number, step: number): string[]; -export function q_scheme_color_expanding_methods(): any; -export function q_scheme_wacg_settings(): any; -export function q_scheme_default_settings(): SchemeSetting; export enum ColorExpand { Complementary = 0, Analogous = 1, @@ -210,36 +210,6 @@ export interface InitOutput { readonly __wbg_set_hctdiffference_chroma: (a: number, b: number) => void; readonly __wbg_get_hctdiffference_lightness: (a: number) => number; readonly __wbg_set_hctdiffference_lightness: (a: number, b: number) => void; - readonly __wbg_differ_free: (a: number, b: number) => void; - readonly __wbg_get_differ_delta: (a: number) => number; - readonly __wbg_set_differ_delta: (a: number, b: number) => void; - readonly __wbg_get_differ_percent: (a: number) => number; - readonly __wbg_set_differ_percent: (a: number, b: number) => void; - readonly shift_hue: (a: number, b: number, c: number) => [number, number, number, number]; - readonly analogous_30: (a: number, b: number) => [number, number, number, number]; - readonly analogous_60: (a: number, b: number) => [number, number, number, number]; - readonly complementary: (a: number, b: number) => [number, number, number, number]; - readonly split_complementary: (a: number, b: number) => [number, number, number, number]; - readonly tetradic: (a: number, b: number) => [number, number, number, number]; - readonly triadic: (a: number, b: number) => [number, number, number, number]; - readonly represent_rgb: (a: number, b: number) => [number, number, number, number]; - readonly rgb_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; - readonly represent_hsl: (a: number, b: number) => [number, number, number, number]; - readonly hsl_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; - readonly represent_lab: (a: number, b: number) => [number, number, number, number]; - readonly lab_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; - readonly represent_oklch: (a: number, b: number) => [number, number, number, number]; - readonly oklch_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; - readonly represent_hct: (a: number, b: number) => [number, number, number, number]; - readonly hct_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; - readonly wacg_relative_contrast: (a: number, b: number, c: number, d: number) => [number, number, number]; - readonly __wbg_hsldifference_free: (a: number, b: number) => void; - readonly __wbg_get_hsldifference_hue: (a: number) => number; - readonly __wbg_set_hsldifference_hue: (a: number, b: number) => void; - readonly __wbg_get_hsldifference_saturation: (a: number) => number; - readonly __wbg_set_hsldifference_saturation: (a: number, b: number) => void; - readonly __wbg_get_hsldifference_lightness: (a: number) => number; - readonly __wbg_set_hsldifference_lightness: (a: number, b: number) => void; readonly __wbg_mixreversing_free: (a: number, b: number) => void; readonly __wbg_get_mixreversing_r_factor: (a: number) => number; readonly __wbg_set_mixreversing_r_factor: (a: number, b: number) => void; @@ -249,6 +219,18 @@ export interface InitOutput { readonly __wbg_set_mixreversing_b_factor: (a: number, b: number) => void; readonly __wbg_get_mixreversing_average: (a: number) => number; readonly __wbg_set_mixreversing_average: (a: number, b: number) => void; + readonly __wbg_differ_free: (a: number, b: number) => void; + readonly __wbg_get_differ_delta: (a: number) => number; + readonly __wbg_set_differ_delta: (a: number, b: number) => void; + readonly __wbg_get_differ_percent: (a: number) => number; + readonly __wbg_set_differ_percent: (a: number, b: number) => void; + readonly __wbg_hsldifference_free: (a: number, b: number) => void; + readonly __wbg_get_hsldifference_hue: (a: number) => number; + readonly __wbg_set_hsldifference_hue: (a: number, b: number) => void; + readonly __wbg_get_hsldifference_saturation: (a: number) => number; + readonly __wbg_set_hsldifference_saturation: (a: number, b: number) => void; + readonly __wbg_get_hsldifference_lightness: (a: number) => number; + readonly __wbg_set_hsldifference_lightness: (a: number, b: number) => void; readonly __wbg_rgbdifference_free: (a: number, b: number) => void; readonly __wbg_get_rgbdifference_r: (a: number) => number; readonly __wbg_set_rgbdifference_r: (a: number, b: number) => void; @@ -284,6 +266,24 @@ export interface InitOutput { readonly q_scheme_color_expanding_methods: () => [number, number, number]; readonly q_scheme_wacg_settings: () => [number, number, number]; readonly q_scheme_default_settings: () => number; + readonly shift_hue: (a: number, b: number, c: number) => [number, number, number, number]; + readonly analogous_30: (a: number, b: number) => [number, number, number, number]; + readonly analogous_60: (a: number, b: number) => [number, number, number, number]; + readonly complementary: (a: number, b: number) => [number, number, number, number]; + readonly split_complementary: (a: number, b: number) => [number, number, number, number]; + readonly tetradic: (a: number, b: number) => [number, number, number, number]; + readonly triadic: (a: number, b: number) => [number, number, number, number]; + readonly represent_rgb: (a: number, b: number) => [number, number, number, number]; + readonly rgb_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; + readonly represent_hsl: (a: number, b: number) => [number, number, number, number]; + readonly hsl_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; + readonly represent_lab: (a: number, b: number) => [number, number, number, number]; + readonly lab_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; + readonly represent_oklch: (a: number, b: number) => [number, number, number, number]; + readonly oklch_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; + readonly represent_hct: (a: number, b: number) => [number, number, number, number]; + readonly hct_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; + readonly wacg_relative_contrast: (a: number, b: number, c: number, d: number) => [number, number, number]; readonly __wbindgen_malloc: (a: number, b: number) => number; readonly __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; readonly __wbindgen_exn_store: (a: number) => void; diff --git a/src/color_functions/color_module.js b/src/color_functions/color_module.js index ad01a7c..97a911d 100644 --- a/src/color_functions/color_module.js +++ b/src/color_functions/color_module.js @@ -704,6 +704,129 @@ export function shade(color, percent) { } } +function getArrayJsValueFromWasm0(ptr, len) { + ptr = ptr >>> 0; + const mem = getDataViewMemory0(); + const result = []; + for (let i = ptr; i < ptr + 4 * len; i += 4) { + result.push(wasm.__wbindgen_export_4.get(mem.getUint32(i, true))); + } + wasm.__externref_drop_slice(ptr, len); + return result; +} +/** + * @param {string} reference_color + * @param {number} swatch_amount + * @param {number} minimum_lightness + * @param {number} maximum_lightness + * @param {boolean | null} [use_reference_color] + * @param {number | null} [reference_color_bias] + * @returns {string[]} + */ +export function generate_palette_from_color(reference_color, swatch_amount, minimum_lightness, maximum_lightness, use_reference_color, reference_color_bias) { + const ptr0 = passStringToWasm0(reference_color, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.generate_palette_from_color(ptr0, len0, swatch_amount, minimum_lightness, maximum_lightness, isLikeNone(use_reference_color) ? 0xFFFFFF : use_reference_color ? 1 : 0, isLikeNone(reference_color_bias) ? 0xFFFFFF : reference_color_bias); + if (ret[3]) { + throw takeFromExternrefTable0(ret[2]); + } + var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v2; +} + +/** + * @returns {SwatchSchemeSetting} + */ +export function swatch_scheme_default_settings() { + const ret = wasm.swatch_scheme_default_settings(); + return SwatchSchemeSetting.__wrap(ret); +} + +/** + * @param {string} color + * @param {number} expand_amount + * @param {number} step + * @returns {string[]} + */ +export function series(color, expand_amount, step) { + const ptr0 = passStringToWasm0(color, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.series(ptr0, len0, expand_amount, step); + if (ret[3]) { + throw takeFromExternrefTable0(ret[2]); + } + var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v2; +} + +/** + * @param {string} color + * @param {number} expand_amount + * @param {number} step + * @returns {string[]} + */ +export function tonal_lighten_series(color, expand_amount, step) { + const ptr0 = passStringToWasm0(color, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.tonal_lighten_series(ptr0, len0, expand_amount, step); + if (ret[3]) { + throw takeFromExternrefTable0(ret[2]); + } + var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v2; +} + +/** + * @param {string} color + * @param {number} expand_amount + * @param {number} step + * @returns {string[]} + */ +export function tonal_darken_series(color, expand_amount, step) { + const ptr0 = passStringToWasm0(color, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); + const len0 = WASM_VECTOR_LEN; + const ret = wasm.tonal_darken_series(ptr0, len0, expand_amount, step); + if (ret[3]) { + throw takeFromExternrefTable0(ret[2]); + } + var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); + wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); + return v2; +} + +/** + * @returns {any} + */ +export function q_scheme_color_expanding_methods() { + const ret = wasm.q_scheme_color_expanding_methods(); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); +} + +/** + * @returns {any} + */ +export function q_scheme_wacg_settings() { + const ret = wasm.q_scheme_wacg_settings(); + if (ret[2]) { + throw takeFromExternrefTable0(ret[1]); + } + return takeFromExternrefTable0(ret[0]); +} + +/** + * @returns {SchemeSetting} + */ +export function q_scheme_default_settings() { + const ret = wasm.q_scheme_default_settings(); + return SchemeSetting.__wrap(ret); +} + /** * @param {string} color * @param {number} degree @@ -730,16 +853,6 @@ export function shift_hue(color, degree) { } } -function getArrayJsValueFromWasm0(ptr, len) { - ptr = ptr >>> 0; - const mem = getDataViewMemory0(); - const result = []; - for (let i = ptr; i < ptr + 4 * len; i += 4) { - result.push(wasm.__wbindgen_export_4.get(mem.getUint32(i, true))); - } - wasm.__externref_drop_slice(ptr, len); - return result; -} /** * @param {string} color * @returns {string[]} @@ -1084,119 +1197,6 @@ export function wacg_relative_contrast(fg_color, bg_color) { return ret[0]; } -/** - * @param {string} reference_color - * @param {number} swatch_amount - * @param {number} minimum_lightness - * @param {number} maximum_lightness - * @param {boolean | null} [use_reference_color] - * @param {number | null} [reference_color_bias] - * @returns {string[]} - */ -export function generate_palette_from_color(reference_color, swatch_amount, minimum_lightness, maximum_lightness, use_reference_color, reference_color_bias) { - const ptr0 = passStringToWasm0(reference_color, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.generate_palette_from_color(ptr0, len0, swatch_amount, minimum_lightness, maximum_lightness, isLikeNone(use_reference_color) ? 0xFFFFFF : use_reference_color ? 1 : 0, isLikeNone(reference_color_bias) ? 0xFFFFFF : reference_color_bias); - if (ret[3]) { - throw takeFromExternrefTable0(ret[2]); - } - var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v2; -} - -/** - * @returns {SwatchSchemeSetting} - */ -export function swatch_scheme_default_settings() { - const ret = wasm.swatch_scheme_default_settings(); - return SwatchSchemeSetting.__wrap(ret); -} - -/** - * @param {string} color - * @param {number} expand_amount - * @param {number} step - * @returns {string[]} - */ -export function series(color, expand_amount, step) { - const ptr0 = passStringToWasm0(color, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.series(ptr0, len0, expand_amount, step); - if (ret[3]) { - throw takeFromExternrefTable0(ret[2]); - } - var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v2; -} - -/** - * @param {string} color - * @param {number} expand_amount - * @param {number} step - * @returns {string[]} - */ -export function tonal_lighten_series(color, expand_amount, step) { - const ptr0 = passStringToWasm0(color, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.tonal_lighten_series(ptr0, len0, expand_amount, step); - if (ret[3]) { - throw takeFromExternrefTable0(ret[2]); - } - var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v2; -} - -/** - * @param {string} color - * @param {number} expand_amount - * @param {number} step - * @returns {string[]} - */ -export function tonal_darken_series(color, expand_amount, step) { - const ptr0 = passStringToWasm0(color, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc); - const len0 = WASM_VECTOR_LEN; - const ret = wasm.tonal_darken_series(ptr0, len0, expand_amount, step); - if (ret[3]) { - throw takeFromExternrefTable0(ret[2]); - } - var v2 = getArrayJsValueFromWasm0(ret[0], ret[1]).slice(); - wasm.__wbindgen_free(ret[0], ret[1] * 4, 4); - return v2; -} - -/** - * @returns {any} - */ -export function q_scheme_color_expanding_methods() { - const ret = wasm.q_scheme_color_expanding_methods(); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return takeFromExternrefTable0(ret[0]); -} - -/** - * @returns {any} - */ -export function q_scheme_wacg_settings() { - const ret = wasm.q_scheme_wacg_settings(); - if (ret[2]) { - throw takeFromExternrefTable0(ret[1]); - } - return takeFromExternrefTable0(ret[0]); -} - -/** - * @returns {SchemeSetting} - */ -export function q_scheme_default_settings() { - const ret = wasm.q_scheme_default_settings(); - return SchemeSetting.__wrap(ret); -} - /** * @enum {0 | 1 | 2 | 3 | 4 | 5 | 6} */ diff --git a/src/color_functions/color_module_bg.wasm b/src/color_functions/color_module_bg.wasm index b7e8043..4807c3a 100644 Binary files a/src/color_functions/color_module_bg.wasm and b/src/color_functions/color_module_bg.wasm differ diff --git a/src/color_functions/color_module_bg.wasm.d.ts b/src/color_functions/color_module_bg.wasm.d.ts index 4a8a549..1de2131 100644 --- a/src/color_functions/color_module_bg.wasm.d.ts +++ b/src/color_functions/color_module_bg.wasm.d.ts @@ -63,36 +63,6 @@ export const __wbg_get_hctdiffference_chroma: (a: number) => number; export const __wbg_set_hctdiffference_chroma: (a: number, b: number) => void; export const __wbg_get_hctdiffference_lightness: (a: number) => number; export const __wbg_set_hctdiffference_lightness: (a: number, b: number) => void; -export const __wbg_differ_free: (a: number, b: number) => void; -export const __wbg_get_differ_delta: (a: number) => number; -export const __wbg_set_differ_delta: (a: number, b: number) => void; -export const __wbg_get_differ_percent: (a: number) => number; -export const __wbg_set_differ_percent: (a: number, b: number) => void; -export const shift_hue: (a: number, b: number, c: number) => [number, number, number, number]; -export const analogous_30: (a: number, b: number) => [number, number, number, number]; -export const analogous_60: (a: number, b: number) => [number, number, number, number]; -export const complementary: (a: number, b: number) => [number, number, number, number]; -export const split_complementary: (a: number, b: number) => [number, number, number, number]; -export const tetradic: (a: number, b: number) => [number, number, number, number]; -export const triadic: (a: number, b: number) => [number, number, number, number]; -export const represent_rgb: (a: number, b: number) => [number, number, number, number]; -export const rgb_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; -export const represent_hsl: (a: number, b: number) => [number, number, number, number]; -export const hsl_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; -export const represent_lab: (a: number, b: number) => [number, number, number, number]; -export const lab_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; -export const represent_oklch: (a: number, b: number) => [number, number, number, number]; -export const oklch_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; -export const represent_hct: (a: number, b: number) => [number, number, number, number]; -export const hct_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; -export const wacg_relative_contrast: (a: number, b: number, c: number, d: number) => [number, number, number]; -export const __wbg_hsldifference_free: (a: number, b: number) => void; -export const __wbg_get_hsldifference_hue: (a: number) => number; -export const __wbg_set_hsldifference_hue: (a: number, b: number) => void; -export const __wbg_get_hsldifference_saturation: (a: number) => number; -export const __wbg_set_hsldifference_saturation: (a: number, b: number) => void; -export const __wbg_get_hsldifference_lightness: (a: number) => number; -export const __wbg_set_hsldifference_lightness: (a: number, b: number) => void; export const __wbg_mixreversing_free: (a: number, b: number) => void; export const __wbg_get_mixreversing_r_factor: (a: number) => number; export const __wbg_set_mixreversing_r_factor: (a: number, b: number) => void; @@ -102,6 +72,18 @@ export const __wbg_get_mixreversing_b_factor: (a: number) => number; export const __wbg_set_mixreversing_b_factor: (a: number, b: number) => void; export const __wbg_get_mixreversing_average: (a: number) => number; export const __wbg_set_mixreversing_average: (a: number, b: number) => void; +export const __wbg_differ_free: (a: number, b: number) => void; +export const __wbg_get_differ_delta: (a: number) => number; +export const __wbg_set_differ_delta: (a: number, b: number) => void; +export const __wbg_get_differ_percent: (a: number) => number; +export const __wbg_set_differ_percent: (a: number, b: number) => void; +export const __wbg_hsldifference_free: (a: number, b: number) => void; +export const __wbg_get_hsldifference_hue: (a: number) => number; +export const __wbg_set_hsldifference_hue: (a: number, b: number) => void; +export const __wbg_get_hsldifference_saturation: (a: number) => number; +export const __wbg_set_hsldifference_saturation: (a: number, b: number) => void; +export const __wbg_get_hsldifference_lightness: (a: number) => number; +export const __wbg_set_hsldifference_lightness: (a: number, b: number) => void; export const __wbg_rgbdifference_free: (a: number, b: number) => void; export const __wbg_get_rgbdifference_r: (a: number) => number; export const __wbg_set_rgbdifference_r: (a: number, b: number) => void; @@ -137,6 +119,24 @@ export const tonal_darken_series: (a: number, b: number, c: number, d: number) = export const q_scheme_color_expanding_methods: () => [number, number, number]; export const q_scheme_wacg_settings: () => [number, number, number]; export const q_scheme_default_settings: () => number; +export const shift_hue: (a: number, b: number, c: number) => [number, number, number, number]; +export const analogous_30: (a: number, b: number) => [number, number, number, number]; +export const analogous_60: (a: number, b: number) => [number, number, number, number]; +export const complementary: (a: number, b: number) => [number, number, number, number]; +export const split_complementary: (a: number, b: number) => [number, number, number, number]; +export const tetradic: (a: number, b: number) => [number, number, number, number]; +export const triadic: (a: number, b: number) => [number, number, number, number]; +export const represent_rgb: (a: number, b: number) => [number, number, number, number]; +export const rgb_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; +export const represent_hsl: (a: number, b: number) => [number, number, number, number]; +export const hsl_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; +export const represent_lab: (a: number, b: number) => [number, number, number, number]; +export const lab_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; +export const represent_oklch: (a: number, b: number) => [number, number, number, number]; +export const oklch_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; +export const represent_hct: (a: number, b: number) => [number, number, number, number]; +export const hct_to_hex: (a: number, b: number, c: number) => [number, number, number, number]; +export const wacg_relative_contrast: (a: number, b: number, c: number, d: number) => [number, number, number]; export const __wbindgen_malloc: (a: number, b: number) => number; export const __wbindgen_realloc: (a: number, b: number, c: number, d: number) => number; export const __wbindgen_exn_store: (a: number) => void;