use std::num::NonZeroU16; #[derive(Default)] pub struct Mouse { pub(crate) vector: u16, pub(crate) x: u16, pub(crate) y: u16, pub(crate) state: u8, pub(crate) scroll_x: u16, pub(crate) scroll_y: u16, } impl Mouse { pub fn vector(&self) -> Option { NonZeroU16::new(self.vector) } pub fn set_position(&mut self, x: u16, y: u16) { self.x = x; self.y = y; } pub fn set_state(&mut self, mask: u8) { self.state |= mask; } pub fn reset_state(&mut self, mask: u8) { self.state &= !mask; } pub fn set_scroll(&mut self, x: u16, y: u16) { self.scroll_x = x; self.scroll_y = y; } }