diff --git a/nih_plug_egui/src/widgets.rs b/nih_plug_egui/src/widgets.rs index fcb3b751..de1a222c 100644 --- a/nih_plug_egui/src/widgets.rs +++ b/nih_plug_egui/src/widgets.rs @@ -6,6 +6,7 @@ //! to copy the widgets and modify them to your personal taste. mod param_slider; +pub mod util; pub use param_slider::ParamSlider; diff --git a/nih_plug_egui/src/widgets/util.rs b/nih_plug_egui/src/widgets/util.rs new file mode 100644 index 00000000..eed19ce1 --- /dev/null +++ b/nih_plug_egui/src/widgets/util.rs @@ -0,0 +1,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() +}