diff options
| author | Ivan Molodetskikh <yalterz@gmail.com> | 2024-06-17 09:16:28 +0300 |
|---|---|---|
| committer | Ivan Molodetskikh <yalterz@gmail.com> | 2024-06-18 14:01:28 +0300 |
| commit | 1dae45c58d7eabeda21ef490d712915890bf6cff (patch) | |
| tree | 62c473ab1662a1161ed522517ea57b7bd8db340c /src/utils/mod.rs | |
| parent | 997119c44338ad96a40b4a1d6e958f77062a37ef (diff) | |
| download | niri-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/utils/mod.rs')
| -rw-r--r-- | src/utils/mod.rs | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/utils/mod.rs b/src/utils/mod.rs index 3c6a36e0..03654877 100644 --- a/src/utils/mod.rs +++ b/src/utils/mod.rs @@ -95,16 +95,24 @@ pub fn to_physical_precise_round<N: Coordinate>(scale: f64, logical: impl Coordi N::from_f64((logical.to_f64() * scale).round()) } -pub fn output_size(output: &Output) -> Size<i32, Logical> { +pub fn round_logical_in_physical(scale: f64, logical: f64) -> f64 { + (logical * scale).round() / scale +} + +pub fn round_logical_in_physical_max1(scale: f64, logical: f64) -> f64 { + if logical == 0. { + return 0.; + } + + (logical * scale).max(1.).round() / scale +} + +pub fn output_size(output: &Output) -> Size<f64, Logical> { let output_scale = output.current_scale().fractional_scale(); let output_transform = output.current_transform(); let output_mode = output.current_mode().unwrap(); - - // Like in LayerMap::arrange(). - // - // FIXME: return fractional logical size. let logical_size = output_mode.size.to_f64().to_logical(output_scale); - output_transform.transform_size(logical_size.to_i32_round()) + output_transform.transform_size(logical_size) } pub fn logical_output(output: &Output) -> niri_ipc::LogicalOutput { |
