use crate::model::dimension::{Dimension, FractionPoints, Twips};
use super::formatting::NumberFormat;
use super::identifiers::{RelId, SectionRevisionIds};
#[derive(Clone, Debug, Default)]
pub struct SectionProperties {
pub page_size: Option<PageSize>,
pub page_margins: Option<PageMargins>,
pub columns: Option<Columns>,
pub doc_grid: Option<DocGrid>,
pub header_refs: SectionHeaderFooterRefs,
pub footer_refs: SectionHeaderFooterRefs,
pub title_page: Option<bool>,
pub section_type: Option<SectionType>,
pub page_number_type: Option<PageNumberType>,
pub rsids: SectionRevisionIds,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct PageNumberType {
pub format: Option<NumberFormat>,
pub start: Option<u32>,
pub chap_style: Option<u32>,
pub chap_sep: Option<ChapterSeparator>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum ChapterSeparator {
Hyphen,
Period,
Colon,
EmDash,
EnDash,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct DocGrid {
pub grid_type: Option<DocGridType>,
pub line_pitch: Option<Dimension<Twips>>,
pub char_space: Option<Dimension<FractionPoints>>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum DocGridType {
Default,
Lines,
LinesAndChars,
SnapToChars,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum SectionType {
NextPage,
Continuous,
EvenPage,
OddPage,
NextColumn,
}
#[derive(Clone, Copy, Debug)]
pub struct PageSize {
pub width: Option<Dimension<Twips>>,
pub height: Option<Dimension<Twips>>,
pub orientation: Option<PageOrientation>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub enum PageOrientation {
Portrait,
Landscape,
}
#[derive(Clone, Copy, Debug)]
pub struct PageMargins {
pub top: Option<Dimension<Twips>>,
pub right: Option<Dimension<Twips>>,
pub bottom: Option<Dimension<Twips>>,
pub left: Option<Dimension<Twips>>,
pub header: Option<Dimension<Twips>>,
pub footer: Option<Dimension<Twips>>,
pub gutter: Option<Dimension<Twips>>,
}
#[derive(Clone, Debug)]
pub struct Columns {
pub count: Option<u32>,
pub space: Option<Dimension<Twips>>,
pub equal_width: Option<bool>,
pub columns: Vec<ColumnDefinition>,
}
#[derive(Clone, Copy, Debug, PartialEq, Eq)]
pub struct ColumnDefinition {
pub width: Option<Dimension<Twips>>,
pub space: Option<Dimension<Twips>>,
}
#[derive(Clone, Debug, Default)]
pub struct SectionHeaderFooterRefs {
pub default: Option<RelId>,
pub first: Option<RelId>,
pub even: Option<RelId>,
}