reactive_graph_std_color_model/entity/
hsv.rs1use angular_units::Deg;
2
3use crate::Brightness;
4use crate::HueSaturationComponent;
5use crate::NAMESPACE_COLOR;
6use reactive_graph_graph::entity_ty;
7use reactive_graph_reactive_model_api::entity_model;
8
9entity_ty!(ENTITY_TYPE_HSV, NAMESPACE_COLOR, ENTITY_TYPE_NAME_HSV, "hsv");
10
11entity_model!(Hsv);
12impl HueSaturationComponent for Hsv {}
13impl Brightness for Hsv {}
14
15pub trait TypedHsv: HueSaturationComponent + Brightness {
16 fn hsv(&self) -> Option<prisma::Hsv<f64>> {
17 let hue = self.get_hue()?;
18 let saturation = self.get_saturation()?;
19 let brightness = self.get_brightness()?;
20 Some(prisma::Hsv::new(Deg(hue), saturation, brightness))
21 }
22
23 fn set_hsv(&self, hsv: &prisma::Hsv<f64>) {
24 self.set_hue(hsv.hue().0);
25 self.set_saturation(hsv.saturation());
26 self.set_brightness(hsv.value());
27 }
28}
29impl TypedHsv for Hsv {}