增加QScheme主题样式的生成与导出。

This commit is contained in:
徐涛
2025-01-22 14:59:40 +08:00
parent 826e526ba2
commit 86ecb5a258
7 changed files with 1075 additions and 1 deletions

View File

@@ -1,7 +1,8 @@
use palette::{
cam16::{Cam16Jch, Parameters},
convert::FromColorUnclamped,
Hsl, IsWithinBounds, Srgb,
luma::Luma,
Hsl, IntoColor, IsWithinBounds, Oklab, Oklch, Srgb,
};
pub fn map_cam16jch_to_srgb(origin: &Cam16Jch<f32>) -> Srgb {
@@ -44,3 +45,43 @@ pub fn map_hsl_to_srgb(origin: &Hsl) -> Srgb {
pub fn map_hsl_to_srgb_hex(origin: &Hsl) -> String {
format!("{:x}", map_hsl_to_srgb(origin).into_format::<u8>())
}
pub fn map_oklch_to_luma(origin: &Oklch) -> Luma {
let lab_color: Oklab = (*origin).into_color();
let linear_rgb = Srgb::from_linear(lab_color.into_color());
let luma_color: Luma = linear_rgb.into_color();
luma_color
}
pub fn map_oklch_to_srgb(origin: &Oklch) -> Srgb {
Srgb::from_linear::<f32>((*origin).into_color())
}
pub fn map_oklch_to_srgb_hex(origin: &Oklch) -> String {
format!("{:x}", map_oklch_to_srgb(origin).into_format::<u8>())
}
#[macro_export]
macro_rules! parse_to_oklch {
($origin: ident) => {
palette::Oklch::from_color(
palette::Srgb::from_str($origin)
.map_err(|_| crate::errors::ColorError::UnrecogniazedRGB($origin.to_string()))?
.into_format::<f32>(),
)
};
}
#[macro_export]
macro_rules! parse_option_to_oklch {
($origin: ident) => {
$origin
.map(|color| {
let rgb = palette::Srgb::from_str(color)
.map_err(|_| crate::errors::ColorError::UnrecogniazedRGB(color.to_string()))?
.into_format::<f32>();
Ok(palette::Oklch::from_color(rgb))
})
.transpose()?
};
}