summaryrefslogtreecommitdiff
path: root/src/eval/template.rs
diff options
context:
space:
mode:
authorLaurenz <laurmaedje@gmail.com>2022-02-17 15:47:54 +0100
committerLaurenz <laurmaedje@gmail.com>2022-02-17 17:32:56 +0100
commitc5e67af22bd6242366819879be84c10c4dd135be (patch)
treed857b99b26401d1b3b74c4cebacbf086c25bef40 /src/eval/template.rs
parent3d965ae6a479636a13b2e2f2344e8d97bedece1f (diff)
Merge eval and layout contexts into `Vm`
Diffstat (limited to 'src/eval/template.rs')
-rw-r--r--src/eval/template.rs15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/eval/template.rs b/src/eval/template.rs
index f953287d..2cd6797a 100644
--- a/src/eval/template.rs
+++ b/src/eval/template.rs
@@ -17,7 +17,6 @@ use crate::library::{
TextNode, UNDERLINE,
};
use crate::util::EcoString;
-use crate::Context;
/// Composable representation of styled content.
///
@@ -166,19 +165,19 @@ impl Template {
}
/// Layout this template into a collection of pages.
- pub fn layout(&self, ctx: &mut Context) -> Vec<Arc<Frame>> {
+ pub fn layout(&self, vm: &mut Vm) -> Vec<Arc<Frame>> {
let style_arena = Arena::new();
let template_arena = Arena::new();
- let (mut ctx, styles) = LayoutContext::new(ctx);
let mut builder = Builder::new(&style_arena, &template_arena, true);
- builder.process(self, styles);
- builder.finish_page(true, false, styles);
+ let chain = StyleChain::new(vm.styles);
+ builder.process(self, chain);
+ builder.finish_page(true, false, chain);
let (pages, shared) = builder.pages.unwrap().finish();
pages
.iter()
- .flat_map(|(page, map)| page.layout(&mut ctx, map.chain(&shared)))
+ .flat_map(|(page, map)| page.layout(vm, map.chain(&shared)))
.collect()
}
}
@@ -267,7 +266,7 @@ impl Sum for Template {
impl Layout for Template {
fn layout(
&self,
- ctx: &mut LayoutContext,
+ vm: &mut Vm,
regions: &Regions,
styles: StyleChain,
) -> Vec<Constrained<Arc<Frame>>> {
@@ -279,7 +278,7 @@ impl Layout for Template {
builder.finish_par(styles);
let (flow, shared) = builder.flow.finish();
- FlowNode(flow).layout(ctx, regions, shared)
+ FlowNode(flow).layout(vm, regions, shared)
}
fn pack(self) -> LayoutNode {