use serde::{Deserialize, Serialize};
use crate::model::graphics::PageBlock;
use crate::types::{StBox, StId, StLoc, StRefId};
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Annotations {
#[serde(rename = "Page", default)]
pub pages: Vec<AnnotPageRef>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct AnnotPageRef {
#[serde(rename = "@PageID")]
pub page_id: StRefId,
#[serde(rename = "FileLoc")]
pub file_loc: StLoc,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct PageAnnot {
#[serde(rename = "Annot", default)]
pub annots: Vec<Annot>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Annot {
#[serde(rename = "@ID")]
pub id: Option<StId>,
#[serde(rename = "@Type")]
pub annot_type: Option<String>,
#[serde(rename = "@Visible")]
pub visible: Option<bool>,
#[serde(rename = "Appearance")]
pub appearance: Option<Appearance>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize)]
pub struct Appearance {
#[serde(rename = "@Boundary", default)]
pub boundary: StBox,
#[serde(rename = "$value", default)]
pub objects: Vec<PageBlock>,
}