notedeck

One damus client to rule them all
git clone git://jb55.com/notedeck
Log | Files | Refs | README | LICENSE

commit ac1bbeac1b98a567521b49c67b264873718d077e
parent dc91b6ffae5d0e638842b2db4a7e63b3ba14c71a
Author: kernelkind <kernelkind@gmail.com>
Date:   Mon, 11 Aug 2025 10:38:09 -0400

add impl for `ScaledTextureFlags::RESPECT_MAX_DIMS`

Signed-off-by: kernelkind <kernelkind@gmail.com>

Diffstat:
Mcrates/notedeck_ui/src/note/media.rs | 17+++++++++++++++++
1 file changed, 17 insertions(+), 0 deletions(-)

diff --git 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) }