use serde::Serialize;
#[derive(Debug, Clone, Default, Serialize)]
pub struct BorderSettings {
#[serde(skip_serializing_if = "Option::is_none")]
bottom: Option<BorderSpecification>,
#[serde(skip_serializing_if = "Option::is_none")]
top: Option<BorderSpecification>,
#[serde(skip_serializing_if = "Option::is_none")]
left: Option<BorderSpecification>,
#[serde(skip_serializing_if = "Option::is_none")]
right: Option<BorderSpecification>,
}
#[derive(Debug, Clone, Serialize)]
pub struct BorderSpecification {
width: f32,
#[serde(skip_serializing_if = "Option::is_none")]
color: Option<String>,
}
impl BorderSpecification {
pub fn new(width: f32) -> Self {
Self {
width,
color: None,
}
}
pub fn color(mut self, color: String) -> Self {
self.color = Some(color);
self
}
}
impl BorderSettings {
pub fn new() -> Self {
Self::default()
}
pub fn bottom(mut self, spec: BorderSpecification) -> Self {
self.bottom = Some(spec);
self
}
pub fn top(mut self, spec: BorderSpecification) -> Self {
self.top = Some(spec);
self
}
pub fn left(mut self, spec: BorderSpecification) -> Self {
self.left = Some(spec);
self
}
pub fn right(mut self, spec: BorderSpecification) -> Self {
self.right = Some(spec);
self
}
}