summaryrefslogtreecommitdiff
path: root/src/library/document.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/library/document.rs')
-rw-r--r--src/library/document.rs16
1 files changed, 16 insertions, 0 deletions
diff --git a/src/library/document.rs b/src/library/document.rs
new file mode 100644
index 00000000..fe01d2df
--- /dev/null
+++ b/src/library/document.rs
@@ -0,0 +1,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()
+ }
+}