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/clipped_surface.rs | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'src/render_helpers/clipped_surface.rs') diff --git a/src/render_helpers/clipped_surface.rs b/src/render_helpers/clipped_surface.rs index 7d52e410..8e5259ed 100644 --- a/src/render_helpers/clipped_surface.rs +++ b/src/render_helpers/clipped_surface.rs @@ -18,7 +18,7 @@ pub struct ClippedSurfaceRenderElement { inner: WaylandSurfaceRenderElement, program: GlesTexProgram, corner_radius: CornerRadius, - geometry: Rectangle, + geometry: Rectangle, input_to_geo: Mat3, } @@ -32,7 +32,7 @@ impl ClippedSurfaceRenderElement { pub fn new( elem: WaylandSurfaceRenderElement, scale: Scale, - geometry: Rectangle, + geometry: Rectangle, program: GlesTexProgram, corner_radius: CornerRadius, ) -> Self { @@ -86,7 +86,7 @@ impl ClippedSurfaceRenderElement { pub fn will_clip( elem: &WaylandSurfaceRenderElement, scale: Scale, - geometry: Rectangle, + geometry: Rectangle, corner_radius: CornerRadius, ) -> bool { let elem_geo = elem.geometry(scale); @@ -95,10 +95,10 @@ impl ClippedSurfaceRenderElement { if corner_radius == CornerRadius::default() { !geo.contains_rect(elem_geo) } else { - let corners = Self::rounded_corners(geometry.to_f64(), corner_radius); + let corners = Self::rounded_corners(geometry, corner_radius); let corners = corners .into_iter() - .map(|rect| rect.to_physical_precise_round(scale)); + .map(|rect| rect.to_physical_precise_up(scale)); let geo = Rectangle::subtract_rects_many([geo], corners); !Rectangle::subtract_rects_many([elem_geo], geo).is_empty() } @@ -186,11 +186,11 @@ impl Element for ClippedSurfaceRenderElement { if self.corner_radius == CornerRadius::default() { regions.collect() } else { - let corners = Self::rounded_corners(self.geometry.to_f64(), self.corner_radius); + let corners = Self::rounded_corners(self.geometry, self.corner_radius); let elem_loc = self.geometry(scale).loc; let corners = corners.into_iter().map(|rect| { - let mut rect = rect.to_physical_precise_round(scale); + let mut rect = rect.to_physical_precise_up(scale); rect.loc -= elem_loc; rect }); @@ -278,7 +278,7 @@ impl<'render> RenderElement> } impl RoundedCornerDamage { - pub fn set_size(&mut self, size: Size) { + pub fn set_size(&mut self, size: Size) { self.damage.set_size(size); } -- cgit