img_gen_spec/validators/layers/
ellipse.rs1#[cfg(feature = "pyo3")]
2use pyo3::prelude::*;
3
4use serde::{Deserialize, Serialize};
5
6use super::{Border, ColorKind};
7
8#[derive(Debug, Clone, Default, Serialize, Deserialize)]
10#[cfg_attr(
11 feature = "pyo3",
12 pyclass(module = "img_gen", get_all, set_all, from_py_object)
13)]
14pub struct Arc {
15 pub start: f32,
17 pub end: f32,
19}
20
21#[derive(Debug, Clone, Default, Serialize, Deserialize)]
23#[cfg_attr(
24 feature = "pyo3",
25 pyclass(module = "img_gen", get_all, set_all, from_py_object)
26)]
27pub struct Ellipse {
28 pub border: Option<Border>,
30 #[serde(default = "ColorKind::transparent_default")]
32 pub color: ColorKind,
33 pub arc: Option<Arc>,
35 #[serde(default, alias = "border-to-origin")]
39 pub border_to_origin: bool,
40}
41
42#[cfg(test)]
43mod tests {
44 #![allow(clippy::unwrap_used)]
45
46 use super::*;
47
48 #[test]
49 fn deserialize_default_ellipse() {
50 let json = r#"{}"#;
51 let ellipse: Ellipse = serde_json::from_str(json).unwrap();
52 assert_eq!(ellipse.color.get_color_tuple_at(0, 0), (0, 0, 0, 0));
53 assert!(ellipse.border.is_none());
54 assert!(ellipse.arc.is_none());
55 assert!(!ellipse.border_to_origin);
56 }
57}