From: Ian Jackson Date: Sat, 2 Jan 2021 00:42:01 +0000 (+0000) Subject: wip coords matrix X-Git-Tag: otter-0.2.0~63 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=72687ef52d445056781dd97d0929ebe359114f15;p=otter.git wip coords matrix Signed-off-by: Ian Jackson --- diff --git a/Cargo.lock.example b/Cargo.lock.example index b9c9a462..651c4aa4 100644 --- a/Cargo.lock.example +++ b/Cargo.lock.example @@ -1649,6 +1649,7 @@ dependencies = [ "nix 0.19.1", "num-derive", "num-traits", + "once_cell", "otter", "parking_lot", "regex", diff --git a/wdriver.rs b/wdriver.rs index 91242b58..8705a9bc 100644 --- a/wdriver.rs +++ b/wdriver.rs @@ -57,6 +57,8 @@ pub type AE = anyhow::Error; pub const URL : &str = "http://localhost:8000"; +pub fn default() -> T { Default::default() } + use t4::Capabilities; use otter::config::DAEMON_STARTUP_REPORT; @@ -724,6 +726,7 @@ pub struct Window { pub struct WindowGuard<'g> { su: &'g mut Setup, w: &'g Window, + matrix: once_cell::sync::OnceCell<()>, } impl Debug for WindowGuard<'_> { @@ -778,7 +781,15 @@ impl<'g> PieceElement<'g> { } #[throws(AE)] - pub fn pos(&self) -> WebPos { + pub fn posw(&self) -> WebPos { + let ary = self.w.matrix.get_or_try_init(||{ + let ary = self.w.su.driver.execute_script(r#" + let m = space.getScreenCTM(); + return [m.a, m.b, m.c, m.d, m.e, m.f]; + "#)?; + dbg!(ary.value()); + Ok::<_,AE>(()) + })?; (||{ Ok::<_,AE>( todo!() ) })() @@ -850,7 +861,11 @@ impl Setup { .context("switch to window")?; self.current_window = Some(w.name.clone()); } - WindowGuard { su: self, w } + WindowGuard { + w, + su: self, + matrix: default(), + } } } diff --git a/wdriver/Cargo.toml b/wdriver/Cargo.toml index 4564bb76..56a869e7 100644 --- a/wdriver/Cargo.toml +++ b/wdriver/Cargo.toml @@ -24,6 +24,7 @@ libc = "0.2" nix = "0.19" num-derive = "0.3" num-traits = "0.2" +once_cell = "1" parking_lot = "0.11" regex = "1" serde = { version = "1", features = ["derive","rc"] } diff --git a/wdriver/wdt-simple.rs b/wdriver/wdt-simple.rs index 1dc66eb1..595e02cc 100644 --- a/wdriver/wdt-simple.rs +++ b/wdriver/wdt-simple.rs @@ -25,6 +25,9 @@ fn main(){ dbg!( p1.posg(), ); + dbg!( + p1.posw(), + ); w.action_chain() .move_to_element_center(&p1)