mod button; pub use button::ButtonSet; use tiny_skia::Point; #[derive(Clone, Copy, Debug)] #[repr(u8)] pub enum MouseButton { Left, Right, Middle, ScrollUp, ScrollDown, ExtraButton1, ExtraButton2, ExtraButton3, ExtraButton4, } impl Into for MouseButton { fn into(self) -> u8 { self as u8 } } #[derive(Default)] pub struct MouseState { pub pos: Point, pub last_pos: Point, pub buttons: ButtonSet, pub last_buttons: ButtonSet, } impl MouseState { pub fn pressed(&self) -> ButtonSet { self.buttons & !self.last_buttons } pub fn released(&self) -> ButtonSet { !self.buttons & self.last_buttons } } #[derive(Default)] pub struct InputState { pub mouse: MouseState, }