summaryrefslogtreecommitdiff
path: root/library/src/layout
diff options
context:
space:
mode:
Diffstat (limited to 'library/src/layout')
-rw-r--r--library/src/layout/mod.rs44
-rw-r--r--library/src/layout/par.rs19
2 files changed, 45 insertions, 18 deletions
diff --git a/library/src/layout/mod.rs b/library/src/layout/mod.rs
index d934c458..41490eb8 100644
--- a/library/src/layout/mod.rs
+++ b/library/src/layout/mod.rs
@@ -50,6 +50,7 @@ use std::mem;
use typed_arena::Arena;
use typst::diag::SourceResult;
use typst::eval::Tracer;
+use typst::model::DelayedErrors;
use typst::model::{applicable, realize, StyleVecBuilder};
use crate::math::{EquationElem, LayoutMath};
@@ -116,13 +117,20 @@ impl LayoutRoot for Content {
fn cached(
content: &Content,
world: Tracked<dyn World + '_>,
- tracer: TrackedMut<Tracer>,
- locator: Tracked<Locator>,
introspector: Tracked<Introspector>,
+ locator: Tracked<Locator>,
+ delayed: TrackedMut<DelayedErrors>,
+ tracer: TrackedMut<Tracer>,
styles: StyleChain,
) -> SourceResult<Document> {
let mut locator = Locator::chained(locator);
- let mut vt = Vt { world, tracer, locator: &mut locator, introspector };
+ let mut vt = Vt {
+ world,
+ introspector,
+ locator: &mut locator,
+ delayed,
+ tracer,
+ };
let scratch = Scratch::default();
let (realized, styles) = realize_root(&mut vt, &scratch, content, styles)?;
realized
@@ -132,13 +140,13 @@ impl LayoutRoot for Content {
}
tracing::info!("Starting layout");
-
cached(
self,
vt.world,
- TrackedMut::reborrow_mut(&mut vt.tracer),
- vt.locator.track(),
vt.introspector,
+ vt.locator.track(),
+ TrackedMut::reborrow_mut(&mut vt.delayed),
+ TrackedMut::reborrow_mut(&mut vt.tracer),
styles,
)
}
@@ -168,9 +176,10 @@ pub trait Layout {
let mut locator = Locator::chained(vt.locator.track());
let mut vt = Vt {
world: vt.world,
- tracer: TrackedMut::reborrow_mut(&mut vt.tracer),
- locator: &mut locator,
introspector: vt.introspector,
+ locator: &mut locator,
+ tracer: TrackedMut::reborrow_mut(&mut vt.tracer),
+ delayed: TrackedMut::reborrow_mut(&mut vt.delayed),
};
self.layout(&mut vt, styles, regions)
}
@@ -184,18 +193,26 @@ impl Layout for Content {
styles: StyleChain,
regions: Regions,
) -> SourceResult<Fragment> {
+ #[allow(clippy::too_many_arguments)]
#[comemo::memoize]
fn cached(
content: &Content,
world: Tracked<dyn World + '_>,
- tracer: TrackedMut<Tracer>,
- locator: Tracked<Locator>,
introspector: Tracked<Introspector>,
+ locator: Tracked<Locator>,
+ delayed: TrackedMut<DelayedErrors>,
+ tracer: TrackedMut<Tracer>,
styles: StyleChain,
regions: Regions,
) -> SourceResult<Fragment> {
let mut locator = Locator::chained(locator);
- let mut vt = Vt { world, tracer, locator: &mut locator, introspector };
+ let mut vt = Vt {
+ world,
+ introspector,
+ locator: &mut locator,
+ delayed,
+ tracer,
+ };
let scratch = Scratch::default();
let (realized, styles) = realize_block(&mut vt, &scratch, content, styles)?;
realized
@@ -209,9 +226,10 @@ impl Layout for Content {
let fragment = cached(
self,
vt.world,
- TrackedMut::reborrow_mut(&mut vt.tracer),
- vt.locator.track(),
vt.introspector,
+ vt.locator.track(),
+ TrackedMut::reborrow_mut(&mut vt.delayed),
+ TrackedMut::reborrow_mut(&mut vt.tracer),
styles,
regions,
)?;
diff --git a/library/src/layout/par.rs b/library/src/layout/par.rs
index fa53f031..2d0944ce 100644
--- a/library/src/layout/par.rs
+++ b/library/src/layout/par.rs
@@ -5,6 +5,7 @@ use icu_provider_blob::BlobDataProvider;
use icu_segmenter::{LineBreakIteratorUtf8, LineSegmenter};
use once_cell::sync::Lazy;
use typst::eval::Tracer;
+use typst::model::DelayedErrors;
use unicode_bidi::{BidiInfo, Level as BidiLevel};
use unicode_script::{Script, UnicodeScript};
@@ -148,16 +149,23 @@ impl ParElem {
fn cached(
par: &ParElem,
world: Tracked<dyn World + '_>,
- tracer: TrackedMut<Tracer>,
- locator: Tracked<Locator>,
introspector: Tracked<Introspector>,
+ locator: Tracked<Locator>,
+ delayed: TrackedMut<DelayedErrors>,
+ tracer: TrackedMut<Tracer>,
styles: StyleChain,
consecutive: bool,
region: Size,
expand: bool,
) -> SourceResult<Fragment> {
let mut locator = Locator::chained(locator);
- let mut vt = Vt { world, tracer, locator: &mut locator, introspector };
+ let mut vt = Vt {
+ world,
+ introspector,
+ locator: &mut locator,
+ delayed,
+ tracer,
+ };
let children = par.children();
// Collect all text into one string for BiDi analysis.
@@ -178,9 +186,10 @@ impl ParElem {
let fragment = cached(
self,
vt.world,
- TrackedMut::reborrow_mut(&mut vt.tracer),
- vt.locator.track(),
vt.introspector,
+ vt.locator.track(),
+ TrackedMut::reborrow_mut(&mut vt.delayed),
+ TrackedMut::reborrow_mut(&mut vt.tracer),
styles,
consecutive,
region,