use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct PatternPaint {
#[serde(rename = "visible", skip_serializing_if = "Option::is_none")]
pub visible: Option<bool>,
#[serde(rename = "opacity", skip_serializing_if = "Option::is_none")]
pub opacity: Option<f64>,
#[serde(rename = "blendMode")]
pub blend_mode: models::BlendMode,
#[serde(rename = "type")]
pub r#type: Type,
#[serde(rename = "sourceNodeId")]
pub source_node_id: String,
#[serde(rename = "tileType")]
pub tile_type: TileType,
#[serde(rename = "scalingFactor")]
pub scaling_factor: f64,
#[serde(rename = "spacing")]
pub spacing: Box<models::Vector>,
#[serde(rename = "horizontalAlignment")]
pub horizontal_alignment: HorizontalAlignment,
#[serde(rename = "verticalAlignment")]
pub vertical_alignment: VerticalAlignment,
}
impl PatternPaint {
pub fn new(blend_mode: models::BlendMode, r#type: Type, source_node_id: String, tile_type: TileType, scaling_factor: f64, spacing: models::Vector, horizontal_alignment: HorizontalAlignment, vertical_alignment: VerticalAlignment) -> PatternPaint {
PatternPaint {
visible: None,
opacity: None,
blend_mode,
r#type,
source_node_id,
tile_type,
scaling_factor,
spacing: Box::new(spacing),
horizontal_alignment,
vertical_alignment,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum Type {
#[serde(rename = "PATTERN")]
Pattern,
}
impl Default for Type {
fn default() -> Type {
Self::Pattern
}
}
#[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
}
}