use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ImageSize {
pub width: f64,
pub height: f64,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ImagePadding {
#[serde(skip_serializing_if = "Option::is_none")]
pub top: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bottom: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub left: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub right: Option<f64>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ImageCrop {
#[serde(skip_serializing_if = "Option::is_none")]
pub left: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub top: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub right: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bottom: Option<f64>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ImageEffect {
#[serde(skip_serializing_if = "Option::is_none")]
pub kind: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub amount: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub threshold: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub colors: Option<Vec<String>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub raw_name: Option<String>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ImageEffects {
#[serde(skip_serializing_if = "Option::is_none")]
pub brightness: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub contrast: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub saturation: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ordered: Option<Vec<ImageEffect>>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ImageRotationBounds {
#[serde(skip_serializing_if = "Option::is_none")]
pub width: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub height: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offset_x: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub offset_y: Option<f64>,
}
#[derive(Clone, Debug, Default, PartialEq, Serialize, Deserialize)]
pub struct ImageHyperlink {
#[serde(skip_serializing_if = "Option::is_none")]
pub href: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tooltip: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub target: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub history: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub doc_location: Option<String>,
}