From bc802bd8fb1656e5004b7c1b8a4e02ec7fc31aa8 Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Mon, 24 Apr 2023 02:16:13 -0700 Subject: Fix broken matrices with alignment and optimize code while we're at it (#935) --- library/src/math/underover.rs | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) (limited to 'library/src/math/underover.rs') diff --git a/library/src/math/underover.rs b/library/src/math/underover.rs index 5282c6dc..89ec5cff 100644 --- a/library/src/math/underover.rs +++ b/library/src/math/underover.rs @@ -242,22 +242,18 @@ pub(super) fn stack( gap: Abs, baseline: usize, ) -> Frame { - let mut width = Abs::zero(); - let mut height = rows.len().saturating_sub(1) as f64 * gap; - - let points = alignments(&rows); + let AlignmentResult { points, width } = alignments(&rows); let rows: Vec<_> = rows .into_iter() .map(|row| row.into_aligned_frame(ctx, &points, align)) .collect(); - for row in &rows { - height += row.height(); - width.set_max(row.width()); - } - let mut y = Abs::zero(); - let mut frame = Frame::new(Size::new(width, height)); + let mut frame = Frame::new(Size::new( + width, + rows.iter().map(|row| row.height()).sum::() + + rows.len().saturating_sub(1) as f64 * gap, + )); for (i, row) in rows.into_iter().enumerate() { let x = align.position(width - row.width()); -- cgit v1.2.3