get rid of palette dependency

This commit is contained in:
edwloef 2025-03-13 16:32:53 +01:00 committed by Héctor Ramón Jiménez
parent 2b7d8eaaca
commit 44e13db1ef
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
7 changed files with 119 additions and 99 deletions

View file

@ -9,4 +9,4 @@ publish = false
iced.workspace = true
iced.features = ["canvas"]
palette.workspace = true
palette = "0.7"

View file

@ -46,7 +46,7 @@ pub enum Message {
impl ColorPalette {
fn update(&mut self, message: Message) {
let srgb = match message {
Message::RgbColorChanged(rgb) => Rgb::from(rgb),
Message::RgbColorChanged(rgb) => to_rgb(rgb),
Message::HslColorChanged(hsl) => Rgb::from_color(hsl),
Message::HsvColorChanged(hsv) => Rgb::from_color(hsv),
Message::HwbColorChanged(hwb) => Rgb::from_color(hwb),
@ -54,13 +54,13 @@ impl ColorPalette {
Message::LchColorChanged(lch) => Rgb::from_color(lch),
};
self.theme = Theme::new(srgb);
self.theme = Theme::new(to_color(srgb));
}
fn view(&self) -> Element<Message> {
let base = self.theme.base;
let srgb = Rgb::from(base);
let srgb = to_rgb(base);
let hsl = palette::Hsl::from_color(srgb);
let hsv = palette::Hsv::from_color(srgb);
let hwb = palette::Hwb::from_color(srgb);
@ -109,7 +109,7 @@ impl Theme {
let base = base.into();
// Convert to HSL color for manipulation
let hsl = Hsl::from_color(Rgb::from(base));
let hsl = Hsl::from_color(to_rgb(base));
let lower = [
hsl.shift_hue(-135.0).lighten(0.075),
@ -128,12 +128,12 @@ impl Theme {
Theme {
lower: lower
.iter()
.map(|&color| Rgb::from_color(color).into())
.map(|&color| to_color(Rgb::from_color(color)))
.collect(),
base,
higher: higher
.iter()
.map(|&color| Rgb::from_color(color).into())
.map(|&color| to_color(Rgb::from_color(color)))
.collect(),
canvas_cache: canvas::Cache::default(),
}
@ -216,14 +216,14 @@ impl Theme {
text.align_y = alignment::Vertical::Bottom;
let hsl = Hsl::from_color(Rgb::from(self.base));
let hsl = Hsl::from_color(to_rgb(self.base));
for i in 0..self.len() {
let pct = (i as f32 + 1.0) / (self.len() as f32 + 1.0);
let graded = Hsl {
lightness: 1.0 - pct,
..hsl
};
let color: Color = Rgb::from_color(graded).into();
let color: Color = to_color(Rgb::from_color(graded));
let anchor = Point {
x: (i as f32) * box_size.width,
@ -475,3 +475,21 @@ impl ColorSpace for palette::Lch {
)
}
}
fn to_rgb(color: Color) -> Rgb {
Rgb {
red: color.r,
green: color.g,
blue: color.b,
..Rgb::default()
}
}
fn to_color(rgb: Rgb) -> Color {
Color {
r: rgb.red,
g: rgb.green,
b: rgb.blue,
a: 1.0,
}
}