reactive_graph_std_color_model/component/
rgb.rs1use 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}