use serde::{Deserialize, Serialize};
use crate::types::{StId, StLoc, StRefId};
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Actions {
#[serde(rename = "Action", default)]
pub actions: Vec<CtAction>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct CtAction {
#[serde(rename = "@Event")]
pub event: Option<String>,
#[serde(rename = "@Type")]
pub action_type: Option<String>,
#[serde(rename = "Dest")]
pub dest: Option<CtDest>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct CtDest {
#[serde(rename = "@Type")]
pub dest_type: Option<String>,
#[serde(rename = "@PageID")]
pub page_id: Option<StRefId>,
#[serde(rename = "@Left")]
pub left: Option<f64>,
#[serde(rename = "@Top")]
pub top: Option<f64>,
#[serde(rename = "@Right")]
pub right: Option<f64>,
#[serde(rename = "@Bottom")]
pub bottom: Option<f64>,
#[serde(rename = "@Zoom")]
pub zoom: Option<f64>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Versions {
#[serde(rename = "Version", default)]
pub versions: Vec<Version>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Version {
#[serde(rename = "@ID")]
pub id: Option<StId>,
#[serde(rename = "@Index")]
pub index: Option<i64>,
#[serde(rename = "@Current")]
pub current: Option<bool>,
#[serde(rename = "@BaseLoc")]
pub base_loc: Option<StLoc>,
}