use super::{Color, Gradient};
use crate::types::{CornerSquareType, CornerDotType};
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CornersSquareOptions {
pub square_type: CornerSquareType,
pub color: Color,
pub gradient: Option<Gradient>,
}
impl Default for CornersSquareOptions {
fn default() -> Self {
Self {
square_type: CornerSquareType::Square,
color: Color::BLACK,
gradient: None,
}
}
}
impl CornersSquareOptions {
pub fn new(square_type: CornerSquareType) -> Self {
Self {
square_type,
..Default::default()
}
}
pub fn with_type(mut self, square_type: CornerSquareType) -> Self {
self.square_type = square_type;
self
}
pub fn with_color(mut self, color: Color) -> Self {
self.color = color;
self
}
pub fn with_gradient(mut self, gradient: Gradient) -> Self {
self.gradient = Some(gradient);
self
}
}
#[derive(Debug, Clone, PartialEq)]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct CornersDotOptions {
pub dot_type: CornerDotType,
pub color: Color,
pub gradient: Option<Gradient>,
}
impl Default for CornersDotOptions {
fn default() -> Self {
Self {
dot_type: CornerDotType::Dot,
color: Color::BLACK,
gradient: None,
}
}
}
impl CornersDotOptions {
pub fn new(dot_type: CornerDotType) -> Self {
Self {
dot_type,
..Default::default()
}
}
pub fn with_type(mut self, dot_type: CornerDotType) -> Self {
self.dot_type = dot_type;
self
}
pub fn with_color(mut self, color: Color) -> Self {
self.color = color;
self
}
pub fn with_gradient(mut self, gradient: Gradient) -> Self {
self.gradient = Some(gradient);
self
}
}