From ac1bbeac1b98a567521b49c67b264873718d077e Mon Sep 17 00:00:00 2001 From: kernelkind Date: Mon, 11 Aug 2025 10:38:09 -0400 Subject: [PATCH] add impl for `ScaledTextureFlags::RESPECT_MAX_DIMS` Signed-off-by: kernelkind --- crates/notedeck_ui/src/note/media.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/crates/notedeck_ui/src/note/media.rs b/crates/notedeck_ui/src/note/media.rs index 614ab6e6..b4ab66e7 100644 --- a/crates/notedeck_ui/src/note/media.rs +++ b/crates/notedeck_ui/src/note/media.rs @@ -743,6 +743,10 @@ impl<'a> ScaledTexture<'a> { pub fn new(tex: &'a TextureHandle, max_size: Vec2, flags: ScaledTextureFlags) -> Self { let tex_size = tex.size_vec2(); + if flags.contains(ScaledTextureFlags::RESPECT_MAX_DIMS) { + return Self::respecting_max(tex, max_size); + } + let scaled_size = if !flags.contains(ScaledTextureFlags::SCALE_TO_WIDTH) { if tex_size.y > max_size.y { let scale = max_size.y / tex_size.y; @@ -764,6 +768,19 @@ impl<'a> ScaledTexture<'a> { } } + pub fn respecting_max(tex: &'a TextureHandle, max_size: Vec2) -> Self { + let tex_size = tex.size_vec2(); + + let s = (max_size.x / tex_size.x).min(max_size.y / tex_size.y); + let scaled_size = tex_size * s; + + Self { + tex, + size: max_size, + scaled_size, + } + } + pub fn get_image(&self) -> Image { texture_to_image(self.tex, self.size).fit_to_exact_size(self.scaled_size) }