Skip to main content

ferroui_base/input/raw/
raw_input_helpers.rs

1use super::RawPointerEventType;
2use crate::input::{KeyModifiers, PointerUpdateKind, RawInputModifiers};
3
4impl RawInputModifiers {
5    /// The keyboard modifiers contained in the raw modifiers.
6    #[inline]
7    pub fn to_key_modifiers(self) -> KeyModifiers {
8        KeyModifiers::from_bits_truncate((self & RawInputModifiers::KEYBOARD_MASK).bits())
9    }
10}
11
12impl RawPointerEventType {
13    /// The kind of pointer state change the raw event type represents.
14    pub fn to_update_kind(self) -> PointerUpdateKind {
15        match self {
16            RawPointerEventType::LeftButtonDown => PointerUpdateKind::LeftButtonPressed,
17            RawPointerEventType::LeftButtonUp => PointerUpdateKind::LeftButtonReleased,
18            RawPointerEventType::RightButtonDown => PointerUpdateKind::RightButtonPressed,
19            RawPointerEventType::RightButtonUp => PointerUpdateKind::RightButtonReleased,
20            RawPointerEventType::MiddleButtonDown => PointerUpdateKind::MiddleButtonPressed,
21            RawPointerEventType::MiddleButtonUp => PointerUpdateKind::MiddleButtonReleased,
22            RawPointerEventType::XButton1Down => PointerUpdateKind::XButton1Pressed,
23            RawPointerEventType::XButton1Up => PointerUpdateKind::XButton1Released,
24            RawPointerEventType::XButton2Down => PointerUpdateKind::XButton2Pressed,
25            RawPointerEventType::XButton2Up => PointerUpdateKind::XButton2Released,
26            RawPointerEventType::TouchBegin => PointerUpdateKind::LeftButtonPressed,
27            RawPointerEventType::TouchEnd => PointerUpdateKind::LeftButtonReleased,
28            _ => PointerUpdateKind::Other,
29        }
30    }
31}