From a4e357fb37d76d32d06ad8cc21e47bb2cc064cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20d=27Herbais=20de=20Thun?= Date: Tue, 3 Oct 2023 19:31:02 +0200 Subject: Gradient Part 2 - Linear gradients (#2279) --- crates/typst-library/src/layout/columns.rs | 2 +- crates/typst-library/src/layout/container.rs | 2 ++ crates/typst-library/src/layout/flow.rs | 4 ++-- crates/typst-library/src/layout/grid.rs | 6 +++--- crates/typst-library/src/layout/page.rs | 2 +- crates/typst-library/src/layout/par.rs | 4 ++-- crates/typst-library/src/layout/repeat.rs | 2 +- crates/typst-library/src/layout/stack.rs | 2 +- 8 files changed, 13 insertions(+), 11 deletions(-) (limited to 'crates/typst-library/src/layout') diff --git a/crates/typst-library/src/layout/columns.rs b/crates/typst-library/src/layout/columns.rs index 961bedc5..bf111506 100644 --- a/crates/typst-library/src/layout/columns.rs +++ b/crates/typst-library/src/layout/columns.rs @@ -100,7 +100,7 @@ impl Layout for ColumnsElem { // case, the frame is first created with zero height and then // resized. let height = if regions.expand.y { region.y } else { Abs::zero() }; - let mut output = Frame::new(Size::new(regions.size.x, height)); + let mut output = Frame::hard(Size::new(regions.size.x, height)); let mut cursor = Abs::zero(); for _ in 0..columns { diff --git a/crates/typst-library/src/layout/container.rs b/crates/typst-library/src/layout/container.rs index e966398f..28a56103 100644 --- a/crates/typst-library/src/layout/container.rs +++ b/crates/typst-library/src/layout/container.rs @@ -164,6 +164,7 @@ impl Layout for BoxElem { // Apply metadata. frame.meta(styles, false); + frame.set_kind(FrameKind::Hard); Ok(Fragment::frame(frame)) } @@ -440,6 +441,7 @@ impl Layout for BlockElem { // Apply metadata. for frame in &mut frames { + frame.set_kind(FrameKind::Hard); frame.meta(styles, false); } diff --git a/crates/typst-library/src/layout/flow.rs b/crates/typst-library/src/layout/flow.rs index 796b1ac8..432ab5e8 100644 --- a/crates/typst-library/src/layout/flow.rs +++ b/crates/typst-library/src/layout/flow.rs @@ -55,7 +55,7 @@ impl Layout for FlowElem { let layoutable = child.with::().unwrap(); layouter.layout_single(vt, layoutable, styles)?; } else if child.is::() { - let mut frame = Frame::new(Size::zero()); + let mut frame = Frame::soft(Size::zero()); frame.meta(styles, true); layouter.items.push(FlowItem::Frame { frame, @@ -484,7 +484,7 @@ impl<'a> FlowLayouter<'a> { size.y = self.initial.y; } - let mut output = Frame::new(size); + let mut output = Frame::soft(size); let mut ruler = FixedAlign::Start; let mut float_top_offset = Abs::zero(); let mut offset = float_top_height; diff --git a/crates/typst-library/src/layout/grid.rs b/crates/typst-library/src/layout/grid.rs index 06962524..134bdc7c 100644 --- a/crates/typst-library/src/layout/grid.rs +++ b/crates/typst-library/src/layout/grid.rs @@ -563,7 +563,7 @@ impl<'a> GridLayouter<'a> { height: Abs, y: usize, ) -> SourceResult { - let mut output = Frame::new(Size::new(self.width, height)); + let mut output = Frame::soft(Size::new(self.width, height)); let mut pos = Point::zero(); for (x, &rcol) in self.rcols.iter().enumerate() { @@ -593,7 +593,7 @@ impl<'a> GridLayouter<'a> { // Prepare frames. let mut outputs: Vec<_> = heights .iter() - .map(|&h| Frame::new(Size::new(self.width, h))) + .map(|&h| Frame::soft(Size::new(self.width, h))) .collect(); // Prepare regions. @@ -647,7 +647,7 @@ impl<'a> GridLayouter<'a> { } // The frame for the region. - let mut output = Frame::new(size); + let mut output = Frame::soft(size); let mut pos = Point::zero(); let mut rrows = vec![]; diff --git a/crates/typst-library/src/layout/page.rs b/crates/typst-library/src/layout/page.rs index 9ec69f58..b2efed19 100644 --- a/crates/typst-library/src/layout/page.rs +++ b/crates/typst-library/src/layout/page.rs @@ -381,7 +381,7 @@ impl PageElem { if extend_to.is_some_and(|p| p.matches(page_counter.physical().get())) { // Insert empty page after the current pages. let size = area.map(Abs::is_finite).select(area, Size::zero()); - frames.push(Frame::new(size)); + frames.push(Frame::hard(size)); } let fill = self.fill(styles); diff --git a/crates/typst-library/src/layout/par.rs b/crates/typst-library/src/layout/par.rs index e41d3547..f126df76 100644 --- a/crates/typst-library/src/layout/par.rs +++ b/crates/typst-library/src/layout/par.rs @@ -714,7 +714,7 @@ fn prepare<'a>( } } Segment::Meta => { - let mut frame = Frame::new(Size::zero()); + let mut frame = Frame::soft(Size::zero()); frame.meta(styles, true); items.push(Item::Meta(frame)); } @@ -1521,7 +1521,7 @@ fn commit( } let size = Size::new(width, top + bottom); - let mut output = Frame::new(size); + let mut output = Frame::soft(size); output.set_baseline(top); // Construct the line's frame. diff --git a/crates/typst-library/src/layout/repeat.rs b/crates/typst-library/src/layout/repeat.rs index 41dede51..6b30dd50 100644 --- a/crates/typst-library/src/layout/repeat.rs +++ b/crates/typst-library/src/layout/repeat.rs @@ -54,7 +54,7 @@ impl Layout for RepeatElem { bail!(self.span(), "repeat with no size restrictions"); } - let mut frame = Frame::new(size); + let mut frame = Frame::soft(size); if piece.has_baseline() { frame.set_baseline(piece.baseline()); } diff --git a/crates/typst-library/src/layout/stack.rs b/crates/typst-library/src/layout/stack.rs index d3fcba8d..398341b2 100644 --- a/crates/typst-library/src/layout/stack.rs +++ b/crates/typst-library/src/layout/stack.rs @@ -254,7 +254,7 @@ impl<'a> StackLayouter<'a> { size.set(self.axis, full); } - let mut output = Frame::new(size); + let mut output = Frame::hard(size); let mut cursor = Abs::zero(); let mut ruler: FixedAlign = self.dir.start().into(); -- cgit v1.2.3