diff options
Diffstat (limited to 'library/src/layout')
| -rw-r--r-- | library/src/layout/mod.rs | 44 | ||||
| -rw-r--r-- | library/src/layout/par.rs | 19 |
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, |
