use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct TypeStyle {
#[serde(rename = "fontFamily", skip_serializing_if = "Option::is_none")]
pub font_family: Option<String>,
#[serde(rename = "fontPostScriptName", skip_serializing_if = "Option::is_none")]
pub font_post_script_name: Option<String>,
#[serde(rename = "fontStyle", skip_serializing_if = "Option::is_none")]
pub font_style: Option<String>,
#[serde(rename = "italic", skip_serializing_if = "Option::is_none")]
pub italic: Option<bool>,
#[serde(rename = "fontWeight", skip_serializing_if = "Option::is_none")]
pub font_weight: Option<f64>,
#[serde(rename = "fontSize", skip_serializing_if = "Option::is_none")]
pub font_size: Option<f64>,
#[serde(rename = "textCase", skip_serializing_if = "Option::is_none")]
pub text_case: Option<TextCase>,
#[serde(rename = "textAlignHorizontal", skip_serializing_if = "Option::is_none")]
pub text_align_horizontal: Option<TextAlignHorizontal>,
#[serde(rename = "textAlignVertical", skip_serializing_if = "Option::is_none")]
pub text_align_vertical: Option<TextAlignVertical>,
#[serde(rename = "letterSpacing", skip_serializing_if = "Option::is_none")]
pub letter_spacing: Option<f64>,
#[serde(rename = "fills", skip_serializing_if = "Option::is_none")]
pub fills: Option<Vec<models::Paint>>,
#[serde(rename = "hyperlink", skip_serializing_if = "Option::is_none")]
pub hyperlink: Option<Box<models::Hyperlink>>,
#[serde(rename = "opentypeFlags", skip_serializing_if = "Option::is_none")]
pub opentype_flags: Option<std::collections::HashMap<String, f64>>,
#[serde(rename = "semanticWeight", skip_serializing_if = "Option::is_none")]
pub semantic_weight: Option<SemanticWeight>,
#[serde(rename = "semanticItalic", skip_serializing_if = "Option::is_none")]
pub semantic_italic: Option<SemanticItalic>,
#[serde(rename = "paragraphSpacing", skip_serializing_if = "Option::is_none")]
pub paragraph_spacing: Option<f64>,
#[serde(rename = "paragraphIndent", skip_serializing_if = "Option::is_none")]
pub paragraph_indent: Option<f64>,
#[serde(rename = "listSpacing", skip_serializing_if = "Option::is_none")]
pub list_spacing: Option<f64>,
#[serde(rename = "textDecoration", skip_serializing_if = "Option::is_none")]
pub text_decoration: Option<TextDecoration>,
#[serde(rename = "textAutoResize", skip_serializing_if = "Option::is_none")]
pub text_auto_resize: Option<TextAutoResize>,
#[serde(rename = "textTruncation", skip_serializing_if = "Option::is_none")]
pub text_truncation: Option<TextTruncation>,
#[serde(rename = "maxLines", skip_serializing_if = "Option::is_none")]
pub max_lines: Option<f64>,
#[serde(rename = "lineHeightPx", skip_serializing_if = "Option::is_none")]
pub line_height_px: Option<f64>,
#[serde(rename = "lineHeightPercent", skip_serializing_if = "Option::is_none")]
pub line_height_percent: Option<f64>,
#[serde(rename = "lineHeightPercentFontSize", skip_serializing_if = "Option::is_none")]
pub line_height_percent_font_size: Option<f64>,
#[serde(rename = "lineHeightUnit", skip_serializing_if = "Option::is_none")]
pub line_height_unit: Option<LineHeightUnit>,
#[serde(rename = "isOverrideOverTextStyle", skip_serializing_if = "Option::is_none")]
pub is_override_over_text_style: Option<bool>,
#[serde(rename = "boundVariables", skip_serializing_if = "Option::is_none")]
pub bound_variables: Option<Box<models::TypeStyleAllOfBoundVariables>>,
}
impl TypeStyle {
pub fn new() -> TypeStyle {
TypeStyle {
font_family: None,
font_post_script_name: None,
font_style: None,
italic: None,
font_weight: None,
font_size: None,
text_case: None,
text_align_horizontal: None,
text_align_vertical: None,
letter_spacing: None,
fills: None,
hyperlink: None,
opentype_flags: None,
semantic_weight: None,
semantic_italic: None,
paragraph_spacing: None,
paragraph_indent: None,
list_spacing: None,
text_decoration: None,
text_auto_resize: None,
text_truncation: None,
max_lines: None,
line_height_px: None,
line_height_percent: None,
line_height_percent_font_size: None,
line_height_unit: None,
is_override_over_text_style: None,
bound_variables: None,
}
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TextCase {
#[serde(rename = "UPPER")]
Upper,
#[serde(rename = "LOWER")]
Lower,
#[serde(rename = "TITLE")]
Title,
#[serde(rename = "SMALL_CAPS")]
SmallCaps,
#[serde(rename = "SMALL_CAPS_FORCED")]
SmallCapsForced,
}
impl Default for TextCase {
fn default() -> TextCase {
Self::Upper
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TextAlignHorizontal {
#[serde(rename = "LEFT")]
Left,
#[serde(rename = "RIGHT")]
Right,
#[serde(rename = "CENTER")]
Center,
#[serde(rename = "JUSTIFIED")]
Justified,
}
impl Default for TextAlignHorizontal {
fn default() -> TextAlignHorizontal {
Self::Left
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TextAlignVertical {
#[serde(rename = "TOP")]
Top,
#[serde(rename = "CENTER")]
Center,
#[serde(rename = "BOTTOM")]
Bottom,
}
impl Default for TextAlignVertical {
fn default() -> TextAlignVertical {
Self::Top
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum SemanticWeight {
#[serde(rename = "BOLD")]
Bold,
#[serde(rename = "NORMAL")]
Normal,
}
impl Default for SemanticWeight {
fn default() -> SemanticWeight {
Self::Bold
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum SemanticItalic {
#[serde(rename = "ITALIC")]
Italic,
#[serde(rename = "NORMAL")]
Normal,
}
impl Default for SemanticItalic {
fn default() -> SemanticItalic {
Self::Italic
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TextDecoration {
#[serde(rename = "NONE")]
None,
#[serde(rename = "STRIKETHROUGH")]
Strikethrough,
#[serde(rename = "UNDERLINE")]
Underline,
}
impl Default for TextDecoration {
fn default() -> TextDecoration {
Self::None
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TextAutoResize {
#[serde(rename = "NONE")]
None,
#[serde(rename = "WIDTH_AND_HEIGHT")]
WidthAndHeight,
#[serde(rename = "HEIGHT")]
Height,
#[serde(rename = "TRUNCATE")]
Truncate,
}
impl Default for TextAutoResize {
fn default() -> TextAutoResize {
Self::None
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum TextTruncation {
#[serde(rename = "DISABLED")]
Disabled,
#[serde(rename = "ENDING")]
Ending,
}
impl Default for TextTruncation {
fn default() -> TextTruncation {
Self::Disabled
}
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
pub enum LineHeightUnit {
#[serde(rename = "PIXELS")]
Pixels,
#[serde(rename = "FONT_SIZE_%")]
FontSizePercent,
#[serde(rename = "INTRINSIC_%")]
IntrinsicPercent,
}
impl Default for LineHeightUnit {
fn default() -> LineHeightUnit {
Self::Pixels
}
}