1use serde::{Deserialize, Serialize};
9
10use crate::types::{StId, StLoc, StRefId};
11
12#[derive(Debug, Clone, Default, Deserialize, Serialize)]
14pub struct Actions {
15 #[serde(rename = "Action", default)]
17 pub actions: Vec<CtAction>,
18}
19
20#[derive(Debug, Clone, Default, Deserialize, Serialize)]
22pub struct CtAction {
23 #[serde(rename = "@Event")]
25 pub event: Option<String>,
26 #[serde(rename = "@Type")]
28 pub action_type: Option<String>,
29 #[serde(rename = "Dest")]
31 pub dest: Option<CtDest>,
32}
33
34#[derive(Debug, Clone, Default, Deserialize, Serialize)]
36pub struct CtDest {
37 #[serde(rename = "@Type")]
39 pub dest_type: Option<String>,
40 #[serde(rename = "@PageID")]
42 pub page_id: Option<StRefId>,
43 #[serde(rename = "@Left")]
45 pub left: Option<f64>,
46 #[serde(rename = "@Top")]
48 pub top: Option<f64>,
49 #[serde(rename = "@Right")]
51 pub right: Option<f64>,
52 #[serde(rename = "@Bottom")]
54 pub bottom: Option<f64>,
55 #[serde(rename = "@Zoom")]
57 pub zoom: Option<f64>,
58}
59
60#[derive(Debug, Clone, Default, Deserialize, Serialize)]
62pub struct Versions {
63 #[serde(rename = "Version", default)]
65 pub versions: Vec<Version>,
66}
67
68#[derive(Debug, Clone, Default, Deserialize, Serialize)]
70pub struct Version {
71 #[serde(rename = "@ID")]
73 pub id: Option<StId>,
74 #[serde(rename = "@Index")]
76 pub index: Option<i64>,
77 #[serde(rename = "@Current")]
79 pub current: Option<bool>,
80 #[serde(rename = "@BaseLoc")]
82 pub base_loc: Option<StLoc>,
83}