reactive_graph_std_color_model/component/
rgb.rs

1use prisma::Rgb;
2
3use crate::NAMESPACE_COLOR;
4use reactive_graph_graph::component_model;
5use reactive_graph_graph::component_ty;
6use reactive_graph_graph::properties;
7
8properties!(RgbProperties, (RED, "red", 0.0), (GREEN, "green", 0.0), (BLUE, "blue", 0.0));
9
10component_ty!(COMPONENT_RGB, NAMESPACE_COLOR, COMPONENT_NAME_RGB, "rgb");
11
12component_model!(
13    RgbComponent,
14    data red f64,
15    data green f64,
16    data blue f64,
17);
18
19pub trait TypedRgbComponent: RgbComponent {
20    fn rgb(&self) -> Option<Rgb<f64>> {
21        let red = self.get_red()?;
22        let green = self.get_green()?;
23        let blue = self.get_blue()?;
24        Some(Rgb::new(red, green, blue))
25    }
26
27    fn set_rgb(&self, rgb: &Rgb<f64>) {
28        self.set_red(rgb.red());
29        self.set_green(rgb.green());
30        self.set_blue(rgb.blue());
31    }
32}