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:
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)
}