figma_schema/
color.rs

1use serde::{Deserialize, Serialize};
2
3/// [Figma documentation](https://www.figma.com/developers/api#color-type)
4#[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}