aboutsummaryrefslogtreecommitdiff
path: root/src/render_helpers/resize.rs
diff options
context:
space:
mode:
authorIvan Molodetskikh <yalterz@gmail.com>2024-06-17 09:16:28 +0300
committerIvan Molodetskikh <yalterz@gmail.com>2024-06-18 14:01:28 +0300
commit1dae45c58d7eabeda21ef490d712915890bf6cff (patch)
tree62c473ab1662a1161ed522517ea57b7bd8db340c /src/render_helpers/resize.rs
parent997119c44338ad96a40b4a1d6e958f77062a37ef (diff)
downloadniri-1dae45c58d7eabeda21ef490d712915890bf6cff.tar.gz
niri-1dae45c58d7eabeda21ef490d712915890bf6cff.tar.bz2
niri-1dae45c58d7eabeda21ef490d712915890bf6cff.zip
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.
Diffstat (limited to 'src/render_helpers/resize.rs')
-rw-r--r--src/render_helpers/resize.rs16
1 files changed, 8 insertions, 8 deletions
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<i32, Logical>,
+ area: Rectangle<f64, Logical>,
scale: Scale<f64>,
texture_prev: (GlesTexture, Rectangle<i32, Physical>),
- size_prev: Size<i32, Logical>,
+ size_prev: Size<f64, Logical>,
texture_next: (GlesTexture, Rectangle<i32, Physical>),
- size_next: Size<i32, Logical>,
+ size_next: Size<f64, Logical>,
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.