From 1dae45c58d7eabeda21ef490d712915890bf6cff Mon Sep 17 00:00:00 2001 From: Ivan Molodetskikh Date: Mon, 17 Jun 2024 09:16:28 +0300 Subject: Refactor layout to fractional-logical Lets borders, gaps, and everything else stay pixel-perfect even with fractional scale. Allows setting fractional border widths, gaps, struts. See the new wiki .md for more details. --- src/render_helpers/resize.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/render_helpers/resize.rs') diff --git a/src/render_helpers/resize.rs b/src/render_helpers/resize.rs index b0fdda92..4361938d 100644 --- a/src/render_helpers/resize.rs +++ b/src/render_helpers/resize.rs @@ -18,12 +18,12 @@ pub struct ResizeRenderElement(ShaderRenderElement); impl ResizeRenderElement { #[allow(clippy::too_many_arguments)] pub fn new( - area: Rectangle, + area: Rectangle, scale: Scale, texture_prev: (GlesTexture, Rectangle), - size_prev: Size, + size_prev: Size, texture_next: (GlesTexture, Rectangle), - size_next: Size, + size_next: Size, progress: f32, clamped_progress: f32, corner_radius: CornerRadius, @@ -35,17 +35,17 @@ impl ResizeRenderElement { let (texture_prev, tex_prev_geo) = texture_prev; let (texture_next, tex_next_geo) = texture_next; - let scale_prev = area.size.to_f64() / size_prev.to_f64(); - let scale_next = area.size.to_f64() / size_next.to_f64(); + let scale_prev = area.size / size_prev; + let scale_next = area.size / size_next; // Compute the area necessary to fit a crossfade. let tex_prev_geo_scaled = tex_prev_geo.to_f64().upscale(scale_prev); let tex_next_geo_scaled = tex_next_geo.to_f64().upscale(scale_next); - let combined_geo = tex_prev_geo_scaled.merge(tex_next_geo_scaled); + let combined_geo = tex_prev_geo_scaled.merge(tex_next_geo_scaled).to_i32_up(); let area = Rectangle::from_loc_and_size( - area.loc + combined_geo.loc.to_logical(scale).to_i32_round(), - combined_geo.size.to_logical(scale).to_i32_round(), + area.loc + combined_geo.loc.to_logical(scale), + combined_geo.size.to_logical(scale), ); // Convert Smithay types into glam types. -- cgit