1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//! Utilities for creating these widgets.

use egui::Color32;

/// Additively modify the hue, saturation, and lightness [0, 1] values of a color.
pub fn add_hsv(color: Color32, h: f32, s: f32, v: f32) -> Color32 {
    let mut hsv = egui::color::Hsva::from(color);
    hsv.h += h;
    hsv.s += s;
    hsv.v += v;
    hsv.into()
}

/// Multiplicatively modify the hue, saturation, and lightness [0, 1] values of a color.
pub fn scale_hsv(color: Color32, h: f32, s: f32, v: f32) -> Color32 {
    let mut hsv = egui::color::Hsva::from(color);
    hsv.h *= h;
    hsv.s *= s;
    hsv.v *= v;
    hsv.into()
}