colorsys/hsl/
transform.rs1use crate::{ColorTransform, SaturationInSpace};
2use crate::consts::{ALL_MIN, HUE_MAX};
3use crate::normalize::bound_hue;
4
5use super::Hsl;
6
7impl ColorTransform for Hsl {
8 fn lighten(&mut self, amt: f64) {
9 self.units.list[2].increase(amt);
10 }
11
12 fn saturate(&mut self, sat: SaturationInSpace) {
13 match sat {
14 SaturationInSpace::Hsl(s) => self.units.list[1].increase(s),
15 SaturationInSpace::Hsv(s) => {
16 unimplemented!("{}", s);
17 }
18 }
19 }
20
21 fn adjust_hue(&mut self, hue: f64) {
22 let h = bound_hue(self.units[0] + hue);
23 self.units.list[0].set(h);
24 }
25
26 fn grayscale_simple(&mut self) {
27 self.units.list[0].value = ALL_MIN;
28 self.units.list[1].value = ALL_MIN;
29 }
30 fn invert(&mut self) {
31 let h = (self.units[0] + HUE_MAX * 0.5) % HUE_MAX;
32 self.units.list[0].set(h);
33 }
34}