add impl for ScaledTextureFlags::RESPECT_MAX_DIMS
Signed-off-by: kernelkind <kernelkind@gmail.com>
This commit is contained in:
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user