add impl for ScaledTextureFlags::RESPECT_MAX_DIMS

Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
kernelkind
2025-08-11 10:38:09 -04:00
parent dc91b6ffae
commit ac1bbeac1b

View File

@@ -743,6 +743,10 @@ impl<'a> ScaledTexture<'a> {
pub fn new(tex: &'a TextureHandle, max_size: Vec2, flags: ScaledTextureFlags) -> Self { pub fn new(tex: &'a TextureHandle, max_size: Vec2, flags: ScaledTextureFlags) -> Self {
let tex_size = tex.size_vec2(); 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) { let scaled_size = if !flags.contains(ScaledTextureFlags::SCALE_TO_WIDTH) {
if tex_size.y > max_size.y { if tex_size.y > max_size.y {
let scale = max_size.y / tex_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 { pub fn get_image(&self) -> Image {
texture_to_image(self.tex, self.size).fit_to_exact_size(self.scaled_size) texture_to_image(self.tex, self.size).fit_to_exact_size(self.scaled_size)
} }