diff --git a/src/tipa.rs b/src/tipa.rs index 0838dd8e41896ba0305a245e83afe1faaeb7c563..ef2860b26b62681c590b55a2fe11b5f16073baa7 100644 --- a/src/tipa.rs +++ b/src/tipa.rs @@ -9,21 +9,21 @@ use tokio::io::AsyncReadExt; use tokio::fs::File; use serde::{Serialize}; -use serde_tuple::Serialize_tuple; +//use serde_tuple::Serialize_tuple; use structure::{structure, structure_impl}; #[derive(Debug)] -struct ParserState {x:u32, y:u32, pressure:u32, tool:u32} +struct ParserState {x:usize, y:usize, pressure:usize, tool:usize} #[derive(Debug, Serialize)] //#[derive(Debug, Serialize_tuple)] -pub struct CanvasInputEvent {ts:u64, x:u32, y:u32, pressure:u32, tool:u32} +pub struct CanvasInputEvent {ts:u64, x:usize, y:usize, pressure:usize, tool:usize} // calibration data measured on my rm2 -const MIN_X:u32 = 0; -const MAX_X:u32 = 20966; -const MIN_Y:u32 = 0; // actually 154 in hardware, xochitl seems to assume 0. -const MAX_Y:u32 = 15725; -//const MAX_PRESSURE:u32 = 4095; +const MIN_X:usize = 0; +const MAX_X:usize = 20966; +const MIN_Y:usize = 0; // actually 154 in hardware, xochitl seems to assume 0. +const MAX_Y:usize = 15725; +//const MAX_PRESSURE:u16 = 4095; pub fn input_stream_parser() -> impl Stream<Item = std::io::Result<CanvasInputEvent>> { let mut state = ParserState{x:0, y:0, pressure:0, tool:2}; @@ -44,11 +44,11 @@ pub fn input_stream_parser() -> impl Stream<Item = std::io::Result<CanvasInputEv // absolute position if typ == 3 { if code == 0 { - state.x = val; + state.x = val as usize; } else if code == 1 { - state.y = val; + state.y = val as usize; } else if code == 24 { - state.pressure = val; + state.pressure = val as usize; } } // tool @@ -72,7 +72,7 @@ pub fn input_stream_parser() -> impl Stream<Item = std::io::Result<CanvasInputEv } } -fn rescale(x_raw:u32, y_raw:u32) -> (u32, u32) { +fn rescale(x_raw:usize, y_raw:usize) -> (usize, usize) { // rescale x,y according to calibration data and canvas size let x = (x_raw - MIN_X) * 1872 / MAX_X; let y = (y_raw - MIN_Y) * 1404 / MAX_Y;