1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Deserialize, Serialize)]
5#[typeshare::typeshare]
6pub struct Color {
7 #[serde(rename = "r")]
8 pub red: f64,
9 #[serde(rename = "g")]
10 pub green: f64,
11 #[serde(rename = "b")]
12 pub blue: f64,
13 #[serde(rename = "a")]
14 pub alpha: f64,
15}
16
17impl Color {
18 pub fn to_rgb_string(&self) -> String {
19 format!(
20 "rgb({}, {}, {}, {})",
21 (self.red * 255.0).floor(),
22 (self.green * 255.0).floor(),
23 (self.blue * 255.0).floor(),
24 self.alpha
25 )
26 }
27
28 pub fn to_option_rgb_string(&self) -> Option<String> {
29 if self.alpha == 0.0 {
30 None
31 } else {
32 Some(self.to_rgb_string())
33 }
34 }
35}