Documentation
use super::prelude::*;

#[derive(Object, Debug, Clone, DataSize)]
pub struct OutlineItem {
    #[pdf(key = "Title")]
    pub title: Option<PdfString>,

    #[pdf(key = "Prev")]
    pub prev: Option<Ref<OutlineItem>>,

    #[pdf(key = "Next")]
    pub next: Option<Ref<OutlineItem>>,

    #[pdf(key = "First")]
    pub first: Option<Ref<OutlineItem>>,

    #[pdf(key = "Last")]
    pub last: Option<Ref<OutlineItem>>,

    #[pdf(key = "Count", default = "0")]
    pub count: i32,

    #[pdf(key = "Dest")]
    pub dest: Option<Primitive>,

    #[pdf(key = "A")]
    pub action: Option<Action>,

    #[pdf(key = "SE")]
    pub se: Option<Dictionary>,

    #[pdf(key = "C")]
    pub color: Option<Vec<f32>>,

    #[pdf(key = "F")]
    pub flags: Option<i32>,
}

#[derive(Object, ObjectWrite, Clone, Debug, DataSize)]
#[pdf(Type = "Outlines?")]
pub struct Outlines {
    #[pdf(key = "Count", default = "0")]
    pub count: i32,

    #[pdf(key = "First")]
    pub first: Option<Ref<OutlineItem>>,

    #[pdf(key = "Last")]
    pub last: Option<Ref<OutlineItem>>,
}