diff --git a/crates/typst-library/src/visualize/curve.rs b/crates/typst-library/src/visualize/curve.rs index 4bc5b45fb..14bca2d05 100644 --- a/crates/typst-library/src/visualize/curve.rs +++ b/crates/typst-library/src/visualize/curve.rs @@ -476,26 +476,20 @@ impl Curve { /// Computes the size of the bounding box of this curve. pub fn bbox_size(&self) -> Size { - let mut min_x = Abs::inf(); - let mut min_y = Abs::inf(); - let mut max_x = -Abs::inf(); - let mut max_y = -Abs::inf(); + let mut min = Point::splat(Abs::inf()); + let mut max = Point::splat(-Abs::inf()); let mut cursor = Point::zero(); for item in self.0.iter() { match item { CurveItem::Move(to) => { - min_x = min_x.min(cursor.x); - min_y = min_y.min(cursor.y); - max_x = max_x.max(cursor.x); - max_y = max_y.max(cursor.y); cursor = *to; } CurveItem::Line(to) => { - min_x = min_x.min(cursor.x); - min_y = min_y.min(cursor.y); - max_x = max_x.max(cursor.x); - max_y = max_y.max(cursor.y); + min = min.min(cursor); + max = max.max(cursor); + min = min.min(*to); + max = max.max(*to); cursor = *to; } CurveItem::Cubic(c0, c1, end) => { @@ -507,17 +501,17 @@ impl Curve { ); let bbox = cubic.bounding_box(); - min_x = min_x.min(Abs::pt(bbox.x0)).min(Abs::pt(bbox.x1)); - min_y = min_y.min(Abs::pt(bbox.y0)).min(Abs::pt(bbox.y1)); - max_x = max_x.max(Abs::pt(bbox.x0)).max(Abs::pt(bbox.x1)); - max_y = max_y.max(Abs::pt(bbox.y0)).max(Abs::pt(bbox.y1)); + min.x = min.x.min(Abs::pt(bbox.x0)).min(Abs::pt(bbox.x1)); + min.y = min.y.min(Abs::pt(bbox.y0)).min(Abs::pt(bbox.y1)); + max.x = max.x.max(Abs::pt(bbox.x0)).max(Abs::pt(bbox.x1)); + max.y = max.y.max(Abs::pt(bbox.y0)).max(Abs::pt(bbox.y1)); cursor = *end; } CurveItem::Close => (), } } - Size::new(max_x - min_x, max_y - min_y) + Size::new(max.x - min.x, max.y - min.y) } }