reactive_graph_std_color_model/entity/
hsv.rs

1use 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 {}