From fae358968f5e3ac560294ae2bcdaadba8206ef97 Mon Sep 17 00:00:00 2001 From: Laurenz Date: Thu, 18 Jan 2024 11:47:45 +0100 Subject: [PATCH] Cleaner separation between single and multi-region layout --- crates/typst/src/layout/columns.rs | 7 ++- crates/typst/src/layout/container.rs | 18 +++--- crates/typst/src/layout/flow.rs | 79 ++++++++++-------------- crates/typst/src/layout/grid/layout.rs | 6 +- crates/typst/src/layout/grid/mod.rs | 8 +-- crates/typst/src/layout/inline/mod.rs | 6 +- crates/typst/src/layout/layout.rs | 6 +- crates/typst/src/layout/measure.rs | 2 +- crates/typst/src/layout/mod.rs | 36 ++++++----- crates/typst/src/layout/pad.rs | 8 ++- crates/typst/src/layout/page.rs | 4 +- crates/typst/src/layout/place.rs | 8 +-- crates/typst/src/layout/repeat.rs | 6 +- crates/typst/src/layout/stack.rs | 8 +-- crates/typst/src/layout/transform.rs | 30 ++++----- crates/typst/src/math/ctx.rs | 6 +- crates/typst/src/math/equation.rs | 20 ++++-- crates/typst/src/model/document.rs | 1 - crates/typst/src/model/enum.rs | 6 +- crates/typst/src/model/list.rs | 8 +-- crates/typst/src/model/table.rs | 7 +-- crates/typst/src/model/terms.rs | 6 +- crates/typst/src/realize/mod.rs | 35 +++-------- crates/typst/src/visualize/image/mod.rs | 12 ++-- crates/typst/src/visualize/line.rs | 10 +-- crates/typst/src/visualize/path.rs | 7 ++- crates/typst/src/visualize/pattern.rs | 2 +- crates/typst/src/visualize/polygon.rs | 13 ++-- crates/typst/src/visualize/shape.rs | 32 +++++----- tests/ref/meta/link.png | Bin 71740 -> 59069 bytes 30 files changed, 191 insertions(+), 206 deletions(-) diff --git a/crates/typst/src/layout/columns.rs b/crates/typst/src/layout/columns.rs index 88b459f26..6458acac2 100644 --- a/crates/typst/src/layout/columns.rs +++ b/crates/typst/src/layout/columns.rs @@ -4,7 +4,8 @@ use crate::diag::SourceResult; use crate::engine::Engine; use crate::foundations::{elem, Behave, Behaviour, Content, Packed, StyleChain}; use crate::layout::{ - Abs, Axes, Dir, Fragment, Frame, Layout, Length, Point, Ratio, Regions, Rel, Size, + Abs, Axes, Dir, Fragment, Frame, LayoutMultiple, Length, Point, Ratio, Regions, Rel, + Size, }; use crate::text::TextElem; use crate::util::Numeric; @@ -40,7 +41,7 @@ use crate::util::Numeric; /// increasingly been used to solve a /// variety of problems. /// ``` -#[elem(Layout)] +#[elem(LayoutMultiple)] pub struct ColumnsElem { /// The number of columns. #[positional] @@ -57,7 +58,7 @@ pub struct ColumnsElem { pub body: Content, } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "columns", span = self.span())] fn layout( &self, diff --git a/crates/typst/src/layout/container.rs b/crates/typst/src/layout/container.rs index a8429e066..7a673a4af 100644 --- a/crates/typst/src/layout/container.rs +++ b/crates/typst/src/layout/container.rs @@ -4,8 +4,8 @@ use crate::foundations::{ cast, elem, AutoValue, Content, Packed, Resolve, Smart, StyleChain, Value, }; use crate::layout::{ - Abs, Axes, Corners, Em, Fr, Fragment, FrameKind, Layout, Length, Ratio, Regions, Rel, - Sides, Size, Spacing, VElem, + Abs, Axes, Corners, Em, Fr, Fragment, Frame, FrameKind, LayoutMultiple, Length, + Ratio, Regions, Rel, Sides, Size, Spacing, VElem, }; use crate::util::Numeric; use crate::visualize::{clip_rect, Paint, Stroke}; @@ -26,7 +26,7 @@ use crate::visualize::{clip_rect, Paint, Stroke}; /// ) /// for more information. /// ``` -#[elem(Layout)] +#[elem] pub struct BoxElem { /// The width of the box. /// @@ -109,14 +109,14 @@ pub struct BoxElem { pub body: Option, } -impl Layout for Packed { +impl Packed { #[typst_macros::time(name = "box", span = self.span())] - fn layout( + pub fn layout( &self, engine: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { let width = match self.width(styles) { Sizing::Auto => Smart::Auto, Sizing::Rel(rel) => Smart::Custom(rel), @@ -174,7 +174,7 @@ impl Layout for Packed { // Apply metadata. frame.set_kind(FrameKind::Hard); - Ok(Fragment::frame(frame)) + Ok(frame) } } @@ -207,7 +207,7 @@ impl Layout for Packed { /// = Blocky /// More text. /// ``` -#[elem(Layout)] +#[elem(LayoutMultiple)] pub struct BlockElem { /// The block's width. /// @@ -340,7 +340,7 @@ pub struct BlockElem { pub sticky: bool, } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "block", span = self.span())] fn layout( &self, diff --git a/crates/typst/src/layout/flow.rs b/crates/typst/src/layout/flow.rs index b4798cd89..747fb97c7 100644 --- a/crates/typst/src/layout/flow.rs +++ b/crates/typst/src/layout/flow.rs @@ -10,28 +10,24 @@ use crate::foundations::{ use crate::introspection::{Meta, MetaElem}; use crate::layout::{ Abs, AlignElem, Axes, BlockElem, ColbreakElem, ColumnsElem, FixedAlignment, Fr, - Fragment, Frame, FrameItem, Layout, PlaceElem, Point, Regions, Rel, Size, Spacing, - VAlignment, VElem, + Fragment, Frame, FrameItem, LayoutMultiple, LayoutSingle, PlaceElem, Point, Regions, + Rel, Size, Spacing, VAlignment, VElem, }; use crate::model::{FootnoteElem, FootnoteEntry, ParElem}; use crate::util::Numeric; -use crate::visualize::{ - CircleElem, EllipseElem, ImageElem, LineElem, PathElem, PolygonElem, RectElem, - SquareElem, -}; /// Arranges spacing, paragraphs and block-level elements into a flow. /// /// This element is responsible for layouting both the top-level content flow /// and the contents of boxes. -#[elem(Debug, Layout)] +#[elem(Debug, LayoutMultiple)] pub struct FlowElem { /// The children that will be arranges into a flow. #[variadic] pub children: Vec>, } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "flow", span = self.span())] fn layout( &self, @@ -45,8 +41,8 @@ impl Layout for Packed { if !regions.size.y.is_finite() && regions.expand.y { bail!(self.span(), "cannot expand into infinite height"); } - let mut layouter = FlowLayouter::new(regions, styles); + let mut layouter = FlowLayouter::new(regions, styles); for mut child in self.children().iter().map(|c| &**c) { let outer = styles; let mut styles = styles; @@ -55,32 +51,23 @@ impl Layout for Packed { styles = outer.chain(map); } - if let Some(elem) = child.to_packed::() { - layouter.layout_spacing(engine, elem, styles)?; - } else if let Some(elem) = child.to_packed::() { - layouter.layout_par(engine, elem, styles)?; - } else if child.is::() - || child.is::() - || child.is::() - || child.is::() - || child.is::() - || child.is::() - || child.is::() - || child.is::() - { - let layoutable = child.with::().unwrap(); - layouter.layout_single(engine, layoutable, styles)?; - } else if child.is::() { + if child.is::() { layouter.layout_meta(styles); + } else if let Some(elem) = child.to_packed::() { + layouter.layout_spacing(engine, elem, styles)?; } else if let Some(placed) = child.to_packed::() { layouter.layout_placed(engine, placed, styles)?; - } else if child.can::() { - layouter.layout_multiple(engine, child, styles)?; } else if child.is::() { if !layouter.regions.backlog.is_empty() || layouter.regions.last.is_some() { layouter.finish_region(engine, true)?; } + } else if let Some(elem) = child.to_packed::() { + layouter.layout_par(engine, elem, styles)?; + } else if let Some(layoutable) = child.with::() { + layouter.layout_single(engine, layoutable, styles)?; + } else if child.can::() { + layouter.layout_multiple(engine, child, styles)?; } else { bail!(child.span(), "unexpected flow child"); } @@ -207,6 +194,18 @@ impl<'a> FlowLayouter<'a> { } } + /// Place explicit metadata into the flow. + fn layout_meta(&mut self, styles: StyleChain) { + let mut frame = Frame::soft(Size::zero()); + frame.meta(styles, true); + self.items.push(FlowItem::Frame { + frame, + align: Axes::splat(FixedAlignment::Start), + sticky: true, + movable: false, + }); + } + /// Layout vertical spacing. fn layout_spacing( &mut self, @@ -284,13 +283,13 @@ impl<'a> FlowLayouter<'a> { fn layout_single( &mut self, engine: &mut Engine, - content: &dyn Layout, + layoutable: &dyn LayoutSingle, styles: StyleChain, ) -> SourceResult<()> { let align = AlignElem::alignment_in(styles).resolve(styles); let sticky = BlockElem::sticky_in(styles); let pod = Regions::one(self.regions.base(), Axes::splat(false)); - let mut frame = content.layout(engine, styles, pod)?.into_frame(); + let mut frame = layoutable.layout(engine, styles, pod)?; frame.meta(styles, false); self.layout_item( engine, @@ -300,18 +299,6 @@ impl<'a> FlowLayouter<'a> { Ok(()) } - /// Place explicit metadata into the flow. - fn layout_meta(&mut self, styles: StyleChain) { - let mut frame = Frame::soft(Size::zero()); - frame.meta(styles, true); - self.items.push(FlowItem::Frame { - frame, - align: Axes::splat(FixedAlignment::Start), - sticky: true, - movable: false, - }); - } - /// Layout a placed element. fn layout_placed( &mut self, @@ -337,12 +324,12 @@ impl<'a> FlowLayouter<'a> { fn layout_multiple( &mut self, engine: &mut Engine, - block: &Content, + child: &Content, styles: StyleChain, ) -> SourceResult<()> { // Temporarily delegerate rootness to the columns. let is_root = self.root; - if is_root && block.is::() { + if is_root && child.is::() { self.root = false; self.regions.root = true; } @@ -355,9 +342,9 @@ impl<'a> FlowLayouter<'a> { } // How to align the block. - let align = if let Some(align) = block.to_packed::() { + let align = if let Some(align) = child.to_packed::() { align.alignment(styles) - } else if let Some((_, local)) = block.to_styled() { + } else if let Some((_, local)) = child.to_styled() { AlignElem::alignment_in(styles.chain(local)) } else { AlignElem::alignment_in(styles) @@ -366,7 +353,7 @@ impl<'a> FlowLayouter<'a> { // Layout the block itself. let sticky = BlockElem::sticky_in(styles); - let fragment = block.layout(engine, styles, self.regions)?; + let fragment = child.layout(engine, styles, self.regions)?; for (i, mut frame) in fragment.into_iter().enumerate() { // Find footnotes in the frame. diff --git a/crates/typst/src/layout/grid/layout.rs b/crates/typst/src/layout/grid/layout.rs index 577baaeb3..756d426fd 100644 --- a/crates/typst/src/layout/grid/layout.rs +++ b/crates/typst/src/layout/grid/layout.rs @@ -9,8 +9,8 @@ use crate::foundations::{ StyleChain, Value, }; use crate::layout::{ - Abs, Alignment, Axes, Dir, Fr, Fragment, Frame, FrameItem, Layout, Length, Point, - Regions, Rel, Sides, Size, Sizing, + Abs, Alignment, Axes, Dir, Fr, Fragment, Frame, FrameItem, LayoutMultiple, Length, + Point, Regions, Rel, Sides, Size, Sizing, }; use crate::syntax::Span; use crate::text::TextElem; @@ -102,7 +102,7 @@ impl From for Cell { } } -impl Layout for Cell { +impl LayoutMultiple for Cell { fn layout( &self, engine: &mut Engine, diff --git a/crates/typst/src/layout/grid/mod.rs b/crates/typst/src/layout/grid/mod.rs index 6ed9cce58..8e7302ed9 100644 --- a/crates/typst/src/layout/grid/mod.rs +++ b/crates/typst/src/layout/grid/mod.rs @@ -13,8 +13,8 @@ use crate::foundations::{ cast, elem, scope, Array, Content, Fold, Packed, Show, Smart, StyleChain, Value, }; use crate::layout::{ - Abs, AlignElem, Alignment, Axes, Fragment, Layout, Length, Regions, Rel, Sides, - Sizing, + Abs, AlignElem, Alignment, Axes, Fragment, LayoutMultiple, Length, Regions, Rel, + Sides, Sizing, }; use crate::syntax::Span; use crate::visualize::{Paint, Stroke}; @@ -154,7 +154,7 @@ use crate::visualize::{Paint, Stroke}; /// grid.cell(y: 2, fill: aqua)[Walk], /// ) /// ``` -#[elem(scope, Layout)] +#[elem(scope, LayoutMultiple)] pub struct GridElem { /// The column sizes. /// @@ -279,7 +279,7 @@ impl GridElem { type GridCell; } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "grid", span = self.span())] fn layout( &self, diff --git a/crates/typst/src/layout/inline/mod.rs b/crates/typst/src/layout/inline/mod.rs index 627265f78..43c2c509d 100644 --- a/crates/typst/src/layout/inline/mod.rs +++ b/crates/typst/src/layout/inline/mod.rs @@ -17,7 +17,7 @@ use crate::foundations::{Content, Packed, Resolve, Smart, StyleChain}; use crate::introspection::{Introspector, Locator, MetaElem}; use crate::layout::{ Abs, AlignElem, Axes, BoxElem, Dir, Em, FixedAlignment, Fr, Fragment, Frame, HElem, - Layout, Point, Regions, Size, Sizing, Spacing, + Point, Regions, Size, Sizing, Spacing, }; use crate::math::{EquationElem, MathParItem}; use crate::model::{Linebreaks, ParElem}; @@ -594,7 +594,7 @@ fn prepare<'a>( items.push(Item::Fractional(v, Some((elem, styles)))); } else { let pod = Regions::one(region, Axes::splat(false)); - let mut frame = elem.layout(engine, styles, pod)?.into_frame(); + let mut frame = elem.layout(engine, styles, pod)?; frame.meta(styles, false); frame.translate(Point::with_y(TextElem::baseline_in(styles))); items.push(Item::Frame(frame)); @@ -1319,7 +1319,7 @@ fn commit( if let Some((elem, styles)) = elem { let region = Size::new(amount, full); let pod = Regions::one(region, Axes::new(true, false)); - let mut frame = elem.layout(engine, *styles, pod)?.into_frame(); + let mut frame = elem.layout(engine, *styles, pod)?; frame.meta(*styles, false); frame.translate(Point::with_y(TextElem::baseline_in(*styles))); push(&mut offset, frame); diff --git a/crates/typst/src/layout/layout.rs b/crates/typst/src/layout/layout.rs index 6af3ac79d..aa1ca63af 100644 --- a/crates/typst/src/layout/layout.rs +++ b/crates/typst/src/layout/layout.rs @@ -3,7 +3,7 @@ use crate::engine::Engine; use crate::foundations::{ dict, elem, func, Content, Func, NativeElement, Packed, StyleChain, }; -use crate::layout::{Fragment, Layout, Regions, Size}; +use crate::layout::{Fragment, LayoutMultiple, Regions, Size}; use crate::syntax::Span; /// Provides access to the current outer container's (or page's, if none) size @@ -63,14 +63,14 @@ pub fn layout( } /// Executes a `layout` call. -#[elem(Layout)] +#[elem(LayoutMultiple)] struct LayoutElem { /// The function to call with the outer container's (or page's) size. #[required] func: Func, } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "layout", span = self.span())] fn layout( &self, diff --git a/crates/typst/src/layout/measure.rs b/crates/typst/src/layout/measure.rs index 1aff7ad4e..d5635e872 100644 --- a/crates/typst/src/layout/measure.rs +++ b/crates/typst/src/layout/measure.rs @@ -1,7 +1,7 @@ use crate::diag::SourceResult; use crate::engine::Engine; use crate::foundations::{dict, func, Content, Dict, StyleChain, Styles}; -use crate::layout::{Abs, Axes, Layout, Regions, Size}; +use crate::layout::{Abs, Axes, LayoutMultiple, Regions, Size}; /// Measures the layouted size of content. /// diff --git a/crates/typst/src/layout/mod.rs b/crates/typst/src/layout/mod.rs index ec20d26cf..c961b6939 100644 --- a/crates/typst/src/layout/mod.rs +++ b/crates/typst/src/layout/mod.rs @@ -120,7 +120,7 @@ pub fn define(global: &mut Scope) { /// Root-level layout. pub trait LayoutRoot { - /// Layout into one frame per page. + /// Layout into a document with one frame per page. fn layout_root( &self, engine: &mut Engine, @@ -128,8 +128,8 @@ pub trait LayoutRoot { ) -> SourceResult; } -/// Layout into regions. -pub trait Layout { +/// Layout into multiple regions. +pub trait LayoutMultiple { /// Layout into one frame per region. fn layout( &self, @@ -160,8 +160,18 @@ pub trait Layout { } } +/// Layout into a single region. +pub trait LayoutSingle { + /// Layout into one frame per region. + fn layout( + &self, + engine: &mut Engine, + styles: StyleChain, + regions: Regions, + ) -> SourceResult; +} + impl LayoutRoot for Content { - #[typst_macros::time(name = "layout root", span = self.span())] fn layout_root( &self, engine: &mut Engine, @@ -186,12 +196,9 @@ impl LayoutRoot for Content { tracer, }; let scratch = Scratch::default(); - let (realized, styles) = + let (document, styles) = realize_root(&mut engine, &scratch, content, styles)?; - realized - .with::() - .unwrap() - .layout_root(&mut engine, styles) + document.layout_root(&mut engine, styles) } cached( @@ -206,7 +213,7 @@ impl LayoutRoot for Content { } } -impl Layout for Content { +impl LayoutMultiple for Content { fn layout( &self, engine: &mut Engine, @@ -244,10 +251,11 @@ impl Layout for Content { let scratch = Scratch::default(); let (realized, styles) = realize_block(&mut engine, &scratch, content, styles)?; - realized - .with::() - .unwrap() - .layout(&mut engine, styles, regions) + realized.with::().unwrap().layout( + &mut engine, + styles, + regions, + ) } let fragment = cached( diff --git a/crates/typst/src/layout/pad.rs b/crates/typst/src/layout/pad.rs index 0e44ab676..0df1f2f2f 100644 --- a/crates/typst/src/layout/pad.rs +++ b/crates/typst/src/layout/pad.rs @@ -1,7 +1,9 @@ use crate::diag::SourceResult; use crate::engine::Engine; use crate::foundations::{elem, Content, Packed, Resolve, StyleChain}; -use crate::layout::{Abs, Fragment, Layout, Length, Point, Regions, Rel, Sides, Size}; +use crate::layout::{ + Abs, Fragment, LayoutMultiple, Length, Point, Regions, Rel, Sides, Size, +}; /// Adds spacing around content. /// @@ -16,7 +18,7 @@ use crate::layout::{Abs, Fragment, Layout, Length, Point, Regions, Rel, Sides, S /// _Typing speeds can be /// measured in words per minute._ /// ``` -#[elem(title = "Padding", Layout)] +#[elem(title = "Padding", LayoutMultiple)] pub struct PadElem { /// The padding at the left side. #[parse( @@ -58,7 +60,7 @@ pub struct PadElem { pub body: Content, } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "pad", span = self.span())] fn layout( &self, diff --git a/crates/typst/src/layout/page.rs b/crates/typst/src/layout/page.rs index 989e5ea22..7e94984b2 100644 --- a/crates/typst/src/layout/page.rs +++ b/crates/typst/src/layout/page.rs @@ -11,8 +11,8 @@ use crate::foundations::{ }; use crate::introspection::{Counter, CounterKey, ManualPageCounter}; use crate::layout::{ - Abs, AlignElem, Alignment, Axes, ColumnsElem, Dir, Frame, HAlignment, Layout, Length, - Point, Ratio, Regions, Rel, Sides, Size, VAlignment, + Abs, AlignElem, Alignment, Axes, ColumnsElem, Dir, Frame, HAlignment, LayoutMultiple, + Length, Point, Ratio, Regions, Rel, Sides, Size, VAlignment, }; use crate::model::Numbering; diff --git a/crates/typst/src/layout/place.rs b/crates/typst/src/layout/place.rs index bc88550ce..31876e438 100644 --- a/crates/typst/src/layout/place.rs +++ b/crates/typst/src/layout/place.rs @@ -2,7 +2,7 @@ use crate::diag::{bail, At, Hint, SourceResult}; use crate::engine::Engine; use crate::foundations::{elem, Behave, Behaviour, Content, Packed, Smart, StyleChain}; use crate::layout::{ - Alignment, Axes, Em, Fragment, Layout, Length, Regions, Rel, VAlignment, + Alignment, Axes, Em, Fragment, LayoutMultiple, Length, Regions, Rel, VAlignment, }; /// Places content at an absolute position. @@ -25,7 +25,7 @@ use crate::layout::{ /// ), /// ) /// ``` -#[elem(Layout, Behave)] +#[elem(Behave)] pub struct PlaceElem { /// Relative to which position in the parent container to place the content. /// @@ -86,9 +86,9 @@ pub struct PlaceElem { pub body: Content, } -impl Layout for Packed { +impl Packed { #[typst_macros::time(name = "place", span = self.span())] - fn layout( + pub fn layout( &self, engine: &mut Engine, styles: StyleChain, diff --git a/crates/typst/src/layout/repeat.rs b/crates/typst/src/layout/repeat.rs index 1fe216187..d74b39f7c 100644 --- a/crates/typst/src/layout/repeat.rs +++ b/crates/typst/src/layout/repeat.rs @@ -2,7 +2,7 @@ use crate::diag::{bail, SourceResult}; use crate::engine::Engine; use crate::foundations::{elem, Content, Packed, Resolve, StyleChain}; use crate::layout::{ - Abs, AlignElem, Axes, Fragment, Frame, Layout, Point, Regions, Size, + Abs, AlignElem, Axes, Fragment, Frame, LayoutMultiple, Point, Regions, Size, }; use crate::util::Numeric; @@ -27,14 +27,14 @@ use crate::util::Numeric; /// Berlin, the 22nd of December, 2022 /// ] /// ``` -#[elem(Layout)] +#[elem(LayoutMultiple)] pub struct RepeatElem { /// The content to repeat. #[required] pub body: Content, } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "repeat", span = self.span())] fn layout( &self, diff --git a/crates/typst/src/layout/stack.rs b/crates/typst/src/layout/stack.rs index ab2d043b6..863e6eabb 100644 --- a/crates/typst/src/layout/stack.rs +++ b/crates/typst/src/layout/stack.rs @@ -4,8 +4,8 @@ use crate::diag::SourceResult; use crate::engine::Engine; use crate::foundations::{cast, elem, Content, Packed, Resolve, StyleChain}; use crate::layout::{ - Abs, AlignElem, Axes, Axis, Dir, FixedAlignment, Fr, Fragment, Frame, Layout, Point, - Regions, Size, Spacing, + Abs, AlignElem, Axes, Axis, Dir, FixedAlignment, Fr, Fragment, Frame, LayoutMultiple, + Point, Regions, Size, Spacing, }; use crate::util::{Get, Numeric}; @@ -23,7 +23,7 @@ use crate::util::{Get, Numeric}; /// rect(width: 90pt), /// ) /// ``` -#[elem(Layout)] +#[elem(LayoutMultiple)] pub struct StackElem { /// The direction along which the items are stacked. Possible values are: /// @@ -51,7 +51,7 @@ pub struct StackElem { pub children: Vec, } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "stack", span = self.span())] fn layout( &self, diff --git a/crates/typst/src/layout/transform.rs b/crates/typst/src/layout/transform.rs index c0786d8ec..13ff66ae9 100644 --- a/crates/typst/src/layout/transform.rs +++ b/crates/typst/src/layout/transform.rs @@ -2,8 +2,8 @@ use crate::diag::SourceResult; use crate::engine::Engine; use crate::foundations::{elem, Content, Packed, Resolve, StyleChain}; use crate::layout::{ - Abs, Alignment, Angle, Axes, FixedAlignment, Fragment, Frame, HAlignment, Layout, - Length, Point, Ratio, Regions, Rel, Size, VAlignment, + Abs, Alignment, Angle, Axes, FixedAlignment, Frame, HAlignment, LayoutMultiple, + LayoutSingle, Length, Point, Ratio, Regions, Rel, Size, VAlignment, }; /// Moves content without affecting layout. @@ -24,7 +24,7 @@ use crate::layout::{ /// ) /// )) /// ``` -#[elem(Layout)] +#[elem(LayoutSingle)] pub struct MoveElem { /// The horizontal displacement of the content. pub dx: Rel, @@ -37,20 +37,20 @@ pub struct MoveElem { pub body: Content, } -impl Layout for Packed { +impl LayoutSingle for Packed { #[typst_macros::time(name = "move", span = self.span())] fn layout( &self, engine: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { let pod = Regions::one(regions.base(), Axes::splat(false)); let mut frame = self.body().layout(engine, styles, pod)?.into_frame(); let delta = Axes::new(self.dx(styles), self.dy(styles)).resolve(styles); let delta = delta.zip_map(regions.base(), Rel::relative_to); frame.translate(delta.to_point()); - Ok(Fragment::frame(frame)) + Ok(frame) } } @@ -68,7 +68,7 @@ impl Layout for Packed { /// .map(i => rotate(24deg * i)[X]), /// ) /// ``` -#[elem(Layout)] +#[elem(LayoutSingle)] pub struct RotateElem { /// The amount of rotation. /// @@ -115,14 +115,14 @@ pub struct RotateElem { pub body: Content, } -impl Layout for Packed { +impl LayoutSingle for Packed { #[typst_macros::time(name = "rotate", span = self.span())] fn layout( &self, engine: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { let angle = self.angle(styles); let align = self.origin(styles).resolve(styles); @@ -157,7 +157,7 @@ impl Layout for Packed { /// #scale(x: -100%)[This is mirrored.] /// #scale(x: -100%, reflow: true)[This is mirrored.] /// ``` -#[elem(Layout)] +#[elem(LayoutSingle)] pub struct ScaleElem { /// The horizontal scaling factor. /// @@ -203,14 +203,14 @@ pub struct ScaleElem { pub body: Content, } -impl Layout for Packed { +impl LayoutSingle for Packed { #[typst_macros::time(name = "scale", span = self.span())] fn layout( &self, engine: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { let sx = self.x(styles); let sy = self.y(styles); let align = self.origin(styles).resolve(styles); @@ -370,7 +370,7 @@ fn measure_and_layout( transform: Transform, align: Axes, reflow: bool, -) -> SourceResult { +) -> SourceResult { if !reflow { // Layout the body. let pod = Regions::one(base_size, Axes::splat(false)); @@ -383,7 +383,7 @@ fn measure_and_layout( .pre_concat(Transform::translate(-x, -y)); frame.transform(ts); - return Ok(Fragment::frame(frame)); + return Ok(frame); } // Measure the size of the body. @@ -405,7 +405,7 @@ fn measure_and_layout( frame.transform(ts); frame.translate(offset); frame.set_size(size); - Ok(Fragment::frame(frame)) + Ok(frame) } /// Computes the bounding box and offset of a transformed frame. diff --git a/crates/typst/src/math/ctx.rs b/crates/typst/src/math/ctx.rs index 0e7cb2e63..5842aae0d 100644 --- a/crates/typst/src/math/ctx.rs +++ b/crates/typst/src/math/ctx.rs @@ -13,7 +13,7 @@ use unicode_segmentation::UnicodeSegmentation; use crate::diag::SourceResult; use crate::engine::Engine; use crate::foundations::{Content, Packed, Smart, StyleChain, Styles}; -use crate::layout::{Abs, Axes, BoxElem, Em, Frame, Layout, Regions, Size}; +use crate::layout::{Abs, Axes, BoxElem, Em, Frame, LayoutMultiple, Regions, Size}; use crate::math::{ FrameFragment, GlyphFragment, LayoutMath, MathFragment, MathRow, MathSize, MathStyle, MathVariant, THICK, @@ -174,9 +174,7 @@ impl<'a, 'b, 'v> MathContext<'a, 'b, 'v> { } pub fn layout_box(&mut self, boxed: &Packed) -> SourceResult { - Ok(boxed - .layout(self.engine, self.outer.chain(&self.local), self.regions)? - .into_frame()) + boxed.layout(self.engine, self.outer.chain(&self.local), self.regions) } pub fn layout_content(&mut self, content: &Content) -> SourceResult { diff --git a/crates/typst/src/math/equation.rs b/crates/typst/src/math/equation.rs index 2f02dfe4a..33f8a23af 100644 --- a/crates/typst/src/math/equation.rs +++ b/crates/typst/src/math/equation.rs @@ -8,8 +8,8 @@ use crate::foundations::{ }; use crate::introspection::{Count, Counter, CounterUpdate, Locatable}; use crate::layout::{ - Abs, AlignElem, Alignment, Axes, Dir, Em, FixedAlignment, Fragment, Frame, Layout, - Point, Regions, Size, + Abs, AlignElem, Alignment, Axes, Dir, Em, FixedAlignment, Frame, LayoutMultiple, + LayoutSingle, Point, Regions, Size, }; use crate::math::{LayoutMath, MathContext}; use crate::model::{Numbering, Outlinable, ParElem, Refable, Supplement}; @@ -45,7 +45,15 @@ use crate::World; /// horizontally. For more details about math syntax, see the /// [main math page]($category/math). #[elem( - Locatable, Synthesize, Show, Finalize, Layout, LayoutMath, Count, LocalName, Refable, + Locatable, + Synthesize, + Show, + Finalize, + LayoutSingle, + LayoutMath, + Count, + LocalName, + Refable, Outlinable )] pub struct EquationElem { @@ -194,14 +202,14 @@ impl Packed { } } -impl Layout for Packed { +impl LayoutSingle for Packed { #[typst_macros::time(name = "math.equation", span = self.span())] fn layout( &self, engine: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { const NUMBER_GUTTER: Em = Em::new(0.5); assert!(self.block(styles)); @@ -248,7 +256,7 @@ impl Layout for Packed { frame.push_frame(Point::new(x, y), counter) } - Ok(Fragment::frame(frame)) + Ok(frame) } } diff --git a/crates/typst/src/model/document.rs b/crates/typst/src/model/document.rs index dc291b44d..fd0bf0d78 100644 --- a/crates/typst/src/model/document.rs +++ b/crates/typst/src/model/document.rs @@ -67,7 +67,6 @@ impl Construct for DocumentElem { } impl LayoutRoot for Packed { - /// Layout the document into a sequence of frames, one per page. #[typst_macros::time(name = "document", span = self.span())] fn layout_root( &self, diff --git a/crates/typst/src/model/enum.rs b/crates/typst/src/model/enum.rs index 3da875e68..dc947e2a9 100644 --- a/crates/typst/src/model/enum.rs +++ b/crates/typst/src/model/enum.rs @@ -7,7 +7,7 @@ use crate::foundations::{ }; use crate::layout::{ Alignment, Axes, BlockElem, Cell, CellGrid, Em, Fragment, GridLayouter, HAlignment, - Layout, Length, Regions, Sizing, Spacing, VAlignment, + LayoutMultiple, Length, Regions, Sizing, Spacing, VAlignment, }; use crate::model::{Numbering, NumberingPattern, ParElem}; use crate::text::TextElem; @@ -68,7 +68,7 @@ use crate::text::TextElem; /// Enumeration items can contain multiple paragraphs and other block-level /// content. All content that is indented more than an item's marker becomes /// part of that item. -#[elem(scope, title = "Numbered List", Layout)] +#[elem(scope, title = "Numbered List", LayoutMultiple)] pub struct EnumElem { /// If this is `{false}`, the items are spaced apart with /// [enum spacing]($enum.spacing). If it is `{true}`, they use normal @@ -208,7 +208,7 @@ impl EnumElem { type EnumItem; } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "enum", span = self.span())] fn layout( &self, diff --git a/crates/typst/src/model/list.rs b/crates/typst/src/model/list.rs index 528218e24..456356a74 100644 --- a/crates/typst/src/model/list.rs +++ b/crates/typst/src/model/list.rs @@ -4,8 +4,8 @@ use crate::foundations::{ cast, elem, scope, Array, Content, Fold, Func, Packed, Smart, StyleChain, Value, }; use crate::layout::{ - Axes, BlockElem, Cell, CellGrid, Em, Fragment, GridLayouter, HAlignment, Layout, - Length, Regions, Sizing, Spacing, VAlignment, + Axes, BlockElem, Cell, CellGrid, Em, Fragment, GridLayouter, HAlignment, + LayoutMultiple, Length, Regions, Sizing, Spacing, VAlignment, }; use crate::model::ParElem; use crate::text::TextElem; @@ -41,7 +41,7 @@ use crate::text::TextElem; /// followed by a space to create a list item. A list item can contain multiple /// paragraphs and other block-level content. All content that is indented /// more than an item's marker becomes part of that item. -#[elem(scope, title = "Bullet List", Layout)] +#[elem(scope, title = "Bullet List", LayoutMultiple)] pub struct ListElem { /// If this is `{false}`, the items are spaced apart with /// [list spacing]($list.spacing). If it is `{true}`, they use normal @@ -133,7 +133,7 @@ impl ListElem { type ListItem; } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "list", span = self.span())] fn layout( &self, diff --git a/crates/typst/src/model/table.rs b/crates/typst/src/model/table.rs index 413a375b4..45ea92733 100644 --- a/crates/typst/src/model/table.rs +++ b/crates/typst/src/model/table.rs @@ -7,7 +7,7 @@ use crate::foundations::{ }; use crate::layout::{ show_grid_cell, Abs, Alignment, Axes, Cell, CellGrid, Celled, Fragment, GridLayouter, - Layout, Length, Regions, Rel, ResolvableCell, Sides, TrackSizings, + LayoutMultiple, Length, Regions, Rel, ResolvableCell, Sides, TrackSizings, }; use crate::model::Figurable; use crate::syntax::Span; @@ -86,7 +86,7 @@ use crate::visualize::{Paint, Stroke}; /// ..(table.cell(y: 4, fill: aqua)[B],) * 2, /// ) /// ``` -#[elem(scope, Layout, LocalName, Figurable)] +#[elem(scope, LayoutMultiple, LocalName, Figurable)] pub struct TableElem { /// The column sizes. See the [grid documentation]($grid) for more /// information on track sizing. @@ -205,7 +205,7 @@ impl TableElem { type TableCell; } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "table", span = self.span())] fn layout( &self, @@ -240,7 +240,6 @@ impl Layout for Packed { .trace(engine.world, tracepoint, self.span())?; let layouter = GridLayouter::new(&grid, &stroke, regions, styles, self.span()); - layouter.layout(engine) } } diff --git a/crates/typst/src/model/terms.rs b/crates/typst/src/model/terms.rs index 9663b7c12..44451be1e 100644 --- a/crates/typst/src/model/terms.rs +++ b/crates/typst/src/model/terms.rs @@ -4,7 +4,7 @@ use crate::foundations::{ cast, elem, scope, Array, Content, NativeElement, Packed, Smart, StyleChain, }; use crate::layout::{ - BlockElem, Em, Fragment, HElem, Layout, Length, Regions, Spacing, VElem, + BlockElem, Em, Fragment, HElem, LayoutMultiple, Length, Regions, Spacing, VElem, }; use crate::model::ParElem; use crate::util::Numeric; @@ -25,7 +25,7 @@ use crate::util::Numeric; /// # Syntax /// This function also has dedicated syntax: Starting a line with a slash, /// followed by a term, a colon and a description creates a term list item. -#[elem(scope, title = "Term List", Layout)] +#[elem(scope, title = "Term List", LayoutMultiple)] pub struct TermsElem { /// If this is `{false}`, the items are spaced apart with /// [term list spacing]($terms.spacing). If it is `{true}`, they use normal @@ -107,7 +107,7 @@ impl TermsElem { type TermItem; } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "terms", span = self.span())] fn layout( &self, diff --git a/crates/typst/src/realize/mod.rs b/crates/typst/src/realize/mod.rs index 4dee2eb51..000b5c833 100644 --- a/crates/typst/src/realize/mod.rs +++ b/crates/typst/src/realize/mod.rs @@ -18,8 +18,8 @@ use crate::foundations::{ }; use crate::introspection::{Locatable, Meta, MetaElem}; use crate::layout::{ - AlignElem, BlockElem, BoxElem, ColbreakElem, FlowElem, HElem, Layout, LayoutRoot, - PageElem, PagebreakElem, Parity, PlaceElem, VElem, + AlignElem, BlockElem, BoxElem, ColbreakElem, FlowElem, HElem, LayoutMultiple, + LayoutSingle, PageElem, PagebreakElem, Parity, PlaceElem, VElem, }; use crate::math::{EquationElem, LayoutMath}; use crate::model::{ @@ -29,10 +29,6 @@ use crate::model::{ use crate::syntax::Span; use crate::text::{LinebreakElem, SmartQuoteElem, SpaceElem, TextElem}; use crate::util::hash128; -use crate::visualize::{ - CircleElem, EllipseElem, ImageElem, LineElem, PathElem, PolygonElem, RectElem, - SquareElem, -}; /// Realize into an element that is capable of root-level layout. #[typst_macros::time(name = "realize root")] @@ -41,17 +37,13 @@ pub fn realize_root<'a>( scratch: &'a Scratch<'a>, content: &'a Content, styles: StyleChain<'a>, -) -> SourceResult<(Cow<'a, Content>, StyleChain<'a>)> { - if content.can::() && !applicable(content, styles) { - return Ok((Cow::Borrowed(content), styles)); - } - +) -> SourceResult<(Packed, StyleChain<'a>)> { let mut builder = Builder::new(engine, scratch, true); builder.accept(content, styles)?; builder.interrupt_page(Some(styles), true)?; let (pages, shared) = builder.doc.unwrap().pages.finish(); let span = first_span(&pages); - Ok((Cow::Owned(DocumentElem::new(pages.to_vec()).pack().spanned(span)), shared)) + Ok((Packed::new(DocumentElem::new(pages.to_vec())).spanned(span), shared)) } /// Realize into an element that is capable of block-level layout. @@ -64,19 +56,7 @@ pub fn realize_block<'a>( ) -> SourceResult<(Cow<'a, Content>, StyleChain<'a>)> { // These elements implement `Layout` but still require a flow for // proper layout. - if content.can::() - && !content.is::() - && !content.is::() - && !content.is::() - && !content.is::() - && !content.is::() - && !content.is::() - && !content.is::() - && !content.is::() - && !content.is::() - && !content.is::() - && !applicable(content, styles) - { + if content.can::() && !applicable(content, styles) { return Ok((Cow::Borrowed(content), styles)); } @@ -560,7 +540,10 @@ impl<'a> FlowBuilder<'a> { return true; } - if content.can::() || content.is::() { + if content.can::() + || content.can::() + || content.is::() + { let is_tight_list = if let Some(elem) = content.to_packed::() { elem.tight(styles) } else if let Some(elem) = content.to_packed::() { diff --git a/crates/typst/src/visualize/image/mod.rs b/crates/typst/src/visualize/image/mod.rs index 613bb7d41..abf7a77fd 100644 --- a/crates/typst/src/visualize/image/mod.rs +++ b/crates/typst/src/visualize/image/mod.rs @@ -20,8 +20,8 @@ use crate::foundations::{ StyleChain, }; use crate::layout::{ - Abs, Axes, FixedAlignment, Fragment, Frame, FrameItem, Layout, Length, Point, - Regions, Rel, Size, + Abs, Axes, FixedAlignment, Frame, FrameItem, LayoutSingle, Length, Point, Regions, + Rel, Size, }; use crate::loading::Readable; use crate::model::Figurable; @@ -51,7 +51,7 @@ use crate::World; /// ``` /// /// [gh-svg]: https://github.com/typst/typst/issues?q=is%3Aopen+is%3Aissue+label%3Asvg -#[elem(scope, Layout, LocalName, Figurable)] +#[elem(scope, LayoutSingle, LocalName, Figurable)] pub struct ImageElem { /// Path to an image file. #[required] @@ -144,14 +144,14 @@ impl ImageElem { } } -impl Layout for Packed { +impl LayoutSingle for Packed { #[typst_macros::time(name = "image", span = self.span())] fn layout( &self, engine: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { // Take the format that was explicitly defined, or parse the extension, // or try to detect the format. let data = self.data(); @@ -239,7 +239,7 @@ impl Layout for Packed { frame.clip(Path::rect(frame.size())); } - Ok(Fragment::frame(frame)) + Ok(frame) } } diff --git a/crates/typst/src/visualize/line.rs b/crates/typst/src/visualize/line.rs index b17074840..571bf7ecf 100644 --- a/crates/typst/src/visualize/line.rs +++ b/crates/typst/src/visualize/line.rs @@ -2,7 +2,7 @@ use crate::diag::{bail, SourceResult}; use crate::engine::Engine; use crate::foundations::{elem, Packed, StyleChain}; use crate::layout::{ - Abs, Angle, Axes, Fragment, Frame, FrameItem, Layout, Length, Regions, Rel, Size, + Abs, Angle, Axes, Frame, FrameItem, LayoutSingle, Length, Regions, Rel, Size, }; use crate::util::Numeric; use crate::visualize::{Geometry, Stroke}; @@ -20,7 +20,7 @@ use crate::visualize::{Geometry, Stroke}; /// stroke: 2pt + maroon, /// ) /// ``` -#[elem(Layout)] +#[elem(LayoutSingle)] pub struct LineElem { /// The start point of the line. /// @@ -58,14 +58,14 @@ pub struct LineElem { pub stroke: Stroke, } -impl Layout for Packed { +impl LayoutSingle for Packed { #[typst_macros::time(name = "line", span = self.span())] fn layout( &self, _: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { let resolve = |axes: Axes>| axes.zip_map(regions.base(), Rel::relative_to); let start = resolve(self.start(styles)); @@ -89,6 +89,6 @@ impl Layout for Packed { let mut frame = Frame::soft(target); let shape = Geometry::Line(delta.to_point()).stroked(stroke); frame.push(start.to_point(), FrameItem::Shape(shape, self.span())); - Ok(Fragment::frame(frame)) + Ok(frame) } } diff --git a/crates/typst/src/visualize/path.rs b/crates/typst/src/visualize/path.rs index 23be1d270..a5bce014e 100644 --- a/crates/typst/src/visualize/path.rs +++ b/crates/typst/src/visualize/path.rs @@ -6,7 +6,8 @@ use crate::foundations::{ array, cast, elem, Array, Packed, Reflect, Resolve, Smart, StyleChain, }; use crate::layout::{ - Abs, Axes, Fragment, Frame, FrameItem, Layout, Length, Point, Regions, Rel, Size, + Abs, Axes, Fragment, Frame, FrameItem, LayoutMultiple, Length, Point, Regions, Rel, + Size, }; use crate::visualize::{FixedStroke, Geometry, Paint, Shape, Stroke}; @@ -25,7 +26,7 @@ use PathVertex::{AllControlPoints, MirroredControlPoint, Vertex}; /// ((50%, 0pt), (40pt, 0pt)), /// ) /// ``` -#[elem(Layout)] +#[elem(LayoutMultiple)] pub struct PathElem { /// How to fill the path. /// @@ -70,7 +71,7 @@ pub struct PathElem { pub vertices: Vec, } -impl Layout for Packed { +impl LayoutMultiple for Packed { #[typst_macros::time(name = "path", span = self.span())] fn layout( &self, diff --git a/crates/typst/src/visualize/pattern.rs b/crates/typst/src/visualize/pattern.rs index 4da1cd616..fe4c58d55 100644 --- a/crates/typst/src/visualize/pattern.rs +++ b/crates/typst/src/visualize/pattern.rs @@ -7,7 +7,7 @@ use ecow::{eco_format, EcoString}; use crate::diag::{bail, SourceResult}; use crate::engine::Engine; use crate::foundations::{func, repr, scope, ty, Content, Smart, StyleChain}; -use crate::layout::{Abs, Axes, Frame, Layout, Length, Regions, Size}; +use crate::layout::{Abs, Axes, Frame, LayoutMultiple, Length, Regions, Size}; use crate::syntax::{Span, Spanned}; use crate::util::Numeric; use crate::visualize::RelativeTo; diff --git a/crates/typst/src/visualize/polygon.rs b/crates/typst/src/visualize/polygon.rs index f375e8ca2..14aec0e14 100644 --- a/crates/typst/src/visualize/polygon.rs +++ b/crates/typst/src/visualize/polygon.rs @@ -6,7 +6,7 @@ use crate::foundations::{ elem, func, scope, Content, NativeElement, Packed, Resolve, Smart, StyleChain, }; use crate::layout::{ - Axes, Em, Fragment, Frame, FrameItem, Layout, Length, Point, Regions, Rel, + Axes, Em, Frame, FrameItem, LayoutSingle, Length, Point, Regions, Rel, }; use crate::syntax::Span; use crate::util::Numeric; @@ -27,7 +27,7 @@ use crate::visualize::{FixedStroke, Geometry, Paint, Path, Shape, Stroke}; /// (0%, 2cm), /// ) /// ``` -#[elem(scope, Layout)] +#[elem(scope, LayoutSingle)] pub struct PolygonElem { /// How to fill the polygon. /// @@ -125,14 +125,14 @@ impl PolygonElem { } } -impl Layout for Packed { +impl LayoutSingle for Packed { #[typst_macros::time(name = "polygon", span = self.span())] fn layout( &self, _: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { let points: Vec = self .vertices() .iter() @@ -150,7 +150,7 @@ impl Layout for Packed { // Only create a path if there are more than zero points. if points.is_empty() { - return Ok(Fragment::frame(frame)); + return Ok(frame); } // Prepare fill and stroke. @@ -171,7 +171,6 @@ impl Layout for Packed { let shape = Shape { geometry: Geometry::Path(path), stroke, fill }; frame.push(Point::zero(), FrameItem::Shape(shape, self.span())); - - Ok(Fragment::frame(frame)) + Ok(frame) } } diff --git a/crates/typst/src/visualize/shape.rs b/crates/typst/src/visualize/shape.rs index dd559b475..89de33986 100644 --- a/crates/typst/src/visualize/shape.rs +++ b/crates/typst/src/visualize/shape.rs @@ -4,8 +4,8 @@ use crate::diag::SourceResult; use crate::engine::Engine; use crate::foundations::{elem, Content, Packed, Resolve, Smart, StyleChain}; use crate::layout::{ - Abs, Axes, Corner, Corners, Fragment, Frame, FrameItem, Layout, Length, Point, Ratio, - Regions, Rel, Sides, Size, + Abs, Axes, Corner, Corners, Frame, FrameItem, LayoutMultiple, LayoutSingle, Length, + Point, Ratio, Regions, Rel, Sides, Size, }; use crate::syntax::Span; use crate::util::Get; @@ -24,7 +24,7 @@ use crate::visualize::{FixedStroke, Paint, Path, Stroke}; /// to fit the content. /// ] /// ``` -#[elem(title = "Rectangle", Layout)] +#[elem(title = "Rectangle", LayoutSingle)] pub struct RectElem { /// The rectangle's width, relative to its parent container. pub width: Smart>, @@ -131,14 +131,14 @@ pub struct RectElem { pub body: Option, } -impl Layout for Packed { +impl LayoutSingle for Packed { #[typst_macros::time(name = "rect", span = self.span())] fn layout( &self, engine: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { layout( engine, styles, @@ -169,7 +169,7 @@ impl Layout for Packed { /// sized to fit. /// ] /// ``` -#[elem(Layout)] +#[elem(LayoutSingle)] pub struct SquareElem { /// The square's side length. This is mutually exclusive with `width` and /// `height`. @@ -237,14 +237,14 @@ pub struct SquareElem { pub body: Option, } -impl Layout for Packed { +impl LayoutSingle for Packed { #[typst_macros::time(name = "square", span = self.span())] fn layout( &self, engine: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { layout( engine, styles, @@ -276,7 +276,7 @@ impl Layout for Packed { /// to fit the content. /// ] /// ``` -#[elem(Layout)] +#[elem(LayoutSingle)] pub struct EllipseElem { /// The ellipse's width, relative to its parent container. pub width: Smart>, @@ -315,14 +315,14 @@ pub struct EllipseElem { pub body: Option, } -impl Layout for Packed { +impl LayoutSingle for Packed { #[typst_macros::time(name = "ellipse", span = self.span())] fn layout( &self, engine: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { layout( engine, styles, @@ -354,7 +354,7 @@ impl Layout for Packed { /// sized to fit. /// ] /// ``` -#[elem(Layout)] +#[elem(LayoutSingle)] pub struct CircleElem { /// The circle's radius. This is mutually exclusive with `width` and /// `height`. @@ -418,14 +418,14 @@ pub struct CircleElem { pub body: Option, } -impl Layout for Packed { +impl LayoutSingle for Packed { #[typst_macros::time(name = "circle", span = self.span())] fn layout( &self, engine: &mut Engine, styles: StyleChain, regions: Regions, - ) -> SourceResult { + ) -> SourceResult { layout( engine, styles, @@ -458,7 +458,7 @@ fn layout( outset: Sides>, radius: Corners>, span: Span, -) -> SourceResult { +) -> SourceResult { let resolved = sizing .zip_map(regions.base(), |s, r| s.map(|v| v.resolve(styles).relative_to(r))); @@ -523,7 +523,7 @@ fn layout( } } - Ok(Fragment::frame(frame)) + Ok(frame) } /// A category of shape. diff --git a/tests/ref/meta/link.png b/tests/ref/meta/link.png index 01946e236ac3aa35129bade0a1e3853f9ad506d9..3c3ecd2c095490f36c13a96d39ecfc12cf53fc4a 100644 GIT binary patch literal 59069 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 ThExOo!_F#vP?f2WG70!!!u?pV literal 71740 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�f^{b|}wY7r-yMJ>_%L0J8Vq#)~Qo#ZP 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

KK{ zDm#0P+51w)&W;r~gaZbny9fegi{37P^|0u3Wl5uTaizc{mnu%%hOScQJPuTJ^%&}% zW&y!SW+1jet5F1mc+ywTzb!`%(N^rnrfOolvD48d&jI{c7Q@NzG|5wASW?4n@>BS2 zQJ%F37YC=y-@kU3-B2Ra>qz*pA;-;X=zlLLt?ezGw^rQwo8IzJg>>S{4fK7QU{6XW z0UdX<3h_~#9ks_ba@{vhOii7uv{aRo>jw%#ii(l(@#8>6ZsG2%dU@G^5CibQxL8>a zS0aQE0|WVac|<(+MjjqF`Nd7YfoSJJ8>XC`oF!0J!p8^1Flq{vnAC4A%iqj-iXDRF zu#NEFBu|W`oA2*9Ii4wf_{29hc-A^EDzAgwsw8l7fv&B_t>Y13SLmU8txyG(`?Gg&!gPX?WFLraSuaf))WFEpkYR%<(4mS>3bCD)t8XtBfv#op`=v z19SjD?u@Mkh$sNq&6G#%&EBp)6|~A64+pN(WzP#--22a8bia-uhhT>z>FX;A;Q;Vt ztoe4=7U)t+$;yhW+#e-0-)wl_nTm=&D&ytmz6cb$5n;f+zgUT2WMrhomU7btgr6Tj zek5?j+@Od83_ce0*W0``=`0O1foXrI?z_&NljC`jPCXX-Nr!pnIEJOBDUz^J;5s`q zy%P^CUnqaz(WrR9&_e2Au%Pv)-wc3u(v*8Tc|HIrmgCl<_17S@g4I-mz_l3|I)I>5 zi{&!;0*J#}_3S_+9`$D}_(1@N3CtV7Mg+B9{mc!Be%=>tBtWfi=#dtas=WLjP*nsX zlR`HKZQH#sB}qXjj~%s2dfVO4Jd;RJ(U(Iv}ez#JXV0q|$vbZ5o@VL0&H z2QX0!tv9kUAH!~nj9xzT2Q@Uewg!@aL{Mn0{TfJgJa}`%udx_N;x!4Vf=@_1Sorwp z9V%3NBcqeUT9$9ZzcFCMf(`s*aa-JLV_lWHpq}y8Zo`j%%d>-MzJjBqBZ20l82aBU zz3kp!wv#!P#v9vREC9gzb$q!*O*P-=@m$xEv2;=HRZr59h$aQVmXH{W!r^V?k_#0| zO21B-QTO8FBK;XJ$ft!H5@$|vD+A?4oB@DSS+&!^cRsbOHZ*5k@edIeWY)Wk;maij z;Hb#+NJU=q!YI*UV92GW(2+2{(=+7e9=MN;7Vwuv4IYSh_xeTcQIE28??l0;5&UMa z=SCN)U5l%$ln#G@fESfaJRk-(SS0}Z+Re=k(CWezy!g@BsQn(z+xuP>Qh0TR^UvWJ zYG|M->sQ69zy9YCHm!f?fS$qRBJo~TMmQk5_ac-6JHu$ zvmC29IZqx-vv`-5c65RP9I}R{GjFXc0aSBrEIlbjSMoK;j@D$lw)LWmP}E6o1U4(p z^W`-rGe0a+L+8sg`rLwyJnNc)vci>C(92%R1i)k#*X$yfs_EN+fdReZzP>)dUd+wS z1@1e$`tG#YyV2_w5RI=*(>()L|4H%w4I=>1Atol~pD?WV&0%L=US5Q^fr$xPW4@!a zGt-{h{pjx9KF~AGKz7IE#>6PU0C?V-sI5&Ei1oRHhY3KwVJ3$}K3nYo-_7B_n_q<%Ty)3UUj>FU}98m&Vp^0Klz z^_+JAF#_CI?|t6_5TGOiSgC((t)qEK_4#u8-3d|I)xi>tn3yU+p=WKF_b=@3Q*5Xo q{;&7({-4`&|KWrGjNA?om-ot|88d0`((L~ILh7Boc#)`{?|%W8Z%xJk