summaryrefslogtreecommitdiff
path: root/src/library/document.rs
blob: fe01d2df283959708ceab16cd7ae77a203d47b5e (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
use super::prelude::*;
use super::PageNode;

/// The root layout node, a document consisting of top-level page runs.
#[derive(Debug, Hash)]
pub struct DocumentNode {
    /// The page runs.
    pub pages: Vec<PageNode>,
}

impl DocumentNode {
    /// Layout the document into a sequence of frames, one per page.
    pub fn layout(&self, ctx: &mut LayoutContext) -> Vec<Rc<Frame>> {
        self.pages.iter().flat_map(|node| node.layout(ctx)).collect()
    }
}