From a0355d2c714a8d747f9cfc1eb87696b5ee1477ec Mon Sep 17 00:00:00 2001 From: Isaac Mills Date: Fri, 19 Apr 2024 11:06:46 -0400 Subject: [PATCH] Fix image support --- src/lib.rs | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index f81abe4..3456b76 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -252,16 +252,21 @@ pub fn resolve_paragraphs<'a>( buffer.relative_bounds.translate(Vec2::new(ls.x, 0.0)); } } else { - if image_size.x > viewbox.x { - let max_size = Vec2::new(viewbox.x, image_size.y); - let new_size = scale_to_fit(image_size, max_size, true); - buffer.relative_bounds = - Rect::from_min_size(Pos2::new(buffer.indent.indent, size.y), new_size); - size.y += new_size.y - } else { + if image_size.x <= viewbox.x { last_image_size = Some(image_size + Vec2::new(IMAGE_PADDING, margin)); } } + + if image_size.x > viewbox.x { + let max_size = Vec2::new(viewbox.x, image_size.y); + let new_size = scale_to_fit(image_size, max_size, true); + buffer.relative_bounds = + Rect::from_min_size(Pos2::new(buffer.indent.indent, size.y), new_size); + if last_image_size.is_none() { + size.y += new_size.y + } + } + [Some(buffer), None] } else if let Some(mut list_kind) = buffer.indent.modifier { if let Some(image_size) = last_image_size { @@ -319,8 +324,6 @@ pub fn resolve_paragraphs<'a>( }), ]; size.y += buffer_size.y + (margin_top + margin); - last_margin = margin; - first = false; size.x = size.x.max(buffer_size.x + buffer_indent); res } else { @@ -335,13 +338,14 @@ pub fn resolve_paragraphs<'a>( in_list = false; size.y += buffer_size.y + (margin_top + margin); - last_margin = margin; - first = false; size.x = size.x.max(buffer_size.x + buffer_indent); [Some(buffer), None] }; + last_margin = margin; + first = false; + result_buffers }) .filter_map(|p| p)