summaryrefslogtreecommitdiff
path: root/library/src/math/underover.rs
diff options
context:
space:
mode:
authorAlex Saveau <saveau.alexandre@gmail.com>2023-04-24 02:16:13 -0700
committerGitHub <noreply@github.com>2023-04-24 11:16:13 +0200
commitbc802bd8fb1656e5004b7c1b8a4e02ec7fc31aa8 (patch)
treef299db167684d0c553b1dd132b92a3ea348617ba /library/src/math/underover.rs
parent5ccc6876194a3f9329021bf22e7c8d0ed6bf74a1 (diff)
Fix broken matrices with alignment and optimize code while we're at it (#935)
Diffstat (limited to 'library/src/math/underover.rs')
-rw-r--r--library/src/math/underover.rs16
1 files changed, 6 insertions, 10 deletions
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::<Abs>()
+ + rows.len().saturating_sub(1) as f64 * gap,
+ ));
for (i, row) in rows.into_iter().enumerate() {
let x = align.position(width - row.width());