upright screens take 2

This commit is contained in:
galister
2024-02-06 01:31:44 +01:00
parent 26b1961376
commit 926e5d9ec4
2 changed files with 21 additions and 18 deletions

View File

@@ -19,6 +19,10 @@ fn def_true() -> bool {
true true
} }
fn def_false() -> bool {
false
}
fn def_one() -> f32 { fn def_one() -> f32 {
1.0 1.0
} }
@@ -49,6 +53,9 @@ pub struct GeneralConfig {
#[serde(default = "def_osc_port")] #[serde(default = "def_osc_port")]
pub osc_out_port: u16, pub osc_out_port: u16,
#[serde(default = "def_false")]
pub upright_screen_fix: bool,
} }
impl GeneralConfig { impl GeneralConfig {

View File

@@ -507,32 +507,28 @@ where
let logical_ratio = output.logical_size.0 as f32 / output.logical_size.1 as f32; let logical_ratio = output.logical_size.0 as f32 / output.logical_size.1 as f32;
let physical_ratio = output.size.0 as f32 / output.size.1 as f32; let physical_ratio = output.size.0 as f32 / output.size.1 as f32;
let logical_rotated = let angle = if session.config.upright_screen_fix {
logical_ratio > 1. && physical_ratio < 1. || logical_ratio < 1. && physical_ratio > 1.;
let angle = if logical_rotated {
0.
} else {
match output.transform { match output.transform {
Transform::_90 | Transform::Flipped90 => PI / 2., Transform::_90 | Transform::Flipped90 => PI / 2.,
Transform::_180 | Transform::Flipped180 => PI, Transform::_180 | Transform::Flipped180 => PI,
Transform::_270 | Transform::Flipped270 => -PI / 2., Transform::_270 | Transform::Flipped270 => -PI / 2.,
_ => 0., _ => 0.,
} }
} else {
0.
}; };
let interaction_transform = if output.size.0 >= output.size.1 {
Affine2::from_translation(Vec2 { x: 0.5, y: 0.5 }) let center = Vec2 { x:0.5, y:0.5};
* Affine2::from_scale(Vec2 { let interaction_transform = match output.transform {
x: 1., Transform::_90 | Transform::Flipped90 =>
y: -output.size.0 as f32 / output.size.1 as f32, Affine2::from_cols(Vec2::NEG_Y * (output.size.0 as f32 / output.size.1 as f32), Vec2::X, center),
}) Transform::_180 | Transform::Flipped180 =>
} else { Affine2::from_cols(Vec2::NEG_X, Vec2::NEG_Y * (-output.size.0 as f32 / output.size.1 as f32), center),
Affine2::from_translation(Vec2 { x: 0.5, y: 0.5 }) Transform::_270 | Transform::Flipped270 =>
* Affine2::from_scale(Vec2 { Affine2::from_cols(Vec2::Y * (output.size.0 as f32 / output.size.1 as f32), Vec2::NEG_X, center),
x: output.size.1 as f32 / output.size.0 as f32, _ =>
y: -1., Affine2::from_cols(Vec2::X, Vec2::Y * (-output.size.0 as f32 / output.size.1 as f32), center)
})
}; };
Some(OverlayData { Some(OverlayData {