use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum Paint {
SolidPaint(Box<models::SolidPaint>),
GradientPaint(Box<models::GradientPaint>),
ImagePaint(Box<models::ImagePaint>),
PatternPaint(Box<models::PatternPaint>),
}
impl Default for Paint {
fn default() -> Self {
Self::SolidPaint(Default::default())
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
#[serde(rename = "SOLID")]
Solid,
#[serde(rename = "GRADIENT_LINEAR")]
GradientLinear,
#[serde(rename = "GRADIENT_RADIAL")]
GradientRadial,
#[serde(rename = "GRADIENT_ANGULAR")]
GradientAngular,
#[serde(rename = "GRADIENT_DIAMOND")]
GradientDiamond,
#[serde(rename = "IMAGE")]
Image,
#[serde(rename = "PATTERN")]
Pattern,
}
impl Default for Type {
fn default() -> Type {
Self::Solid
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum ScaleMode {
#[serde(rename = "FILL")]
Fill,
#[serde(rename = "FIT")]
Fit,
#[serde(rename = "TILE")]
Tile,
#[serde(rename = "STRETCH")]
Stretch,
}
impl Default for ScaleMode {
fn default() -> ScaleMode {
Self::Fill
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TileType {
#[serde(rename = "RECTANGULAR")]
Rectangular,
#[serde(rename = "HORIZONTAL_HEXAGONAL")]
HorizontalHexagonal,
#[serde(rename = "VERTICAL_HEXAGONAL")]
VerticalHexagonal,
}
impl Default for TileType {
fn default() -> TileType {
Self::Rectangular
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum HorizontalAlignment {
#[serde(rename = "START")]
Start,
#[serde(rename = "CENTER")]
Center,
#[serde(rename = "END")]
End,
}
impl Default for HorizontalAlignment {
fn default() -> HorizontalAlignment {
Self::Start
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum VerticalAlignment {
#[serde(rename = "START")]
Start,
#[serde(rename = "CENTER")]
Center,
#[serde(rename = "END")]
End,
}
impl Default for VerticalAlignment {
fn default() -> VerticalAlignment {
Self::Start
}
}