1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5use std::convert::{TryFrom, TryInto};
6mod c_types {
7 pub type c_char = u8;
8 pub type c_uchar = u8;
9 pub type c_schar = i8;
10 pub type c_short = i16;
11 pub type c_ushort = u16;
12 pub type c_int = i32;
13 pub type c_uint = u32;
14 pub type c_long = i32;
15 pub type c_ulong = u32;
16 pub type c_longlong = i64;
17 pub type c_ulonglong = u64;
18 pub type c_void = std::ffi::c_void;
19}
20
21
22
23include!("bindings.rs");
24
25impl Event {
26 #[inline]
27 pub fn is_key(&self) -> bool {
28 match self {
29 Self::KEYPRESS |
30 Self::KEYRELEASE |
31 Self::KEYREPEAT => true,
32 _ => false,
33 }
34 }
35
36 #[cfg(feature = "sdk_v6")]
37 #[inline]
38 pub fn is_pointer(&self) -> bool {
39 match self {
40 Self::POINTERUP |
41 Self::POINTERDOWN |
42 Self::POINTERMOVE |
43 Self::POINTERLONG |
44 Self::POINTERHOLD |
45 Self::MTSYNC |
46 Self::POINTERDRAG |
47 Self::POINTERCANCEL => true, _ => false,
49 }
50 }
51
52 #[cfg(feature = "sdk_v4")]
53 #[inline]
54 pub fn is_pointer(&self) -> bool {
55 match self {
56 Self::POINTERUP |
57 Self::POINTERDOWN |
58 Self::POINTERMOVE |
59 Self::POINTERLONG |
60 Self::POINTERHOLD |
61 Self::MTSYNC |
62 Self::POINTERDRAG => true,
63 _ => false,
64 }
65 }
66
67 #[inline]
68 pub fn is_panel(&self) -> bool {
69 match self {
70 Self::TAB |
71 Self::PANEL |
72 Self::PANEL_ICON |
73 Self::PANEL_TEXT |
74 Self::PANEL_PROGRESS |
75 Self::PANEL_MPLAYER |
76 Self::PANEL_USBDRIVE |
77 Self::PANEL_NETWORK |
78 Self::PANEL_CLOCK |
79 Self::PANEL_BLUETOOTH |
80 Self::PANEL_TASKLIST |
81 Self::PANEL_OBREEY_SYNC |
82 Self::PANEL_SETREADINGMODE |
83 Self::PANEL_SETREADINGMODE_INVERT => true,
84 _ => false,
85 }
86 }
87}
88
89#[cfg(not(feature = "sdk_v4"))]
90impl TryFrom<c_types::c_int> for PanelType {
91 type Error = &'static str;
92
93 fn try_from(value: c_types::c_int) -> Result<Self, Self::Error> {
94 let value: u32 = value.try_into().unwrap();
95 if value > (PanelType::ENABLED | PanelType::EVENT_NO_HANDLING | PanelType::NO_FB_OFFSET).0 {
96 Err("Invalid panel type value")
97 }
98 else {
99 Ok(PanelType(value))
100 }
101 }
102}
103
104#[cfg(feature = "sdk_v4")]
105impl TryFrom<c_types::c_int> for PanelType {
106 type Error = &'static str;
107
108 fn try_from(value: c_types::c_int) -> Result<Self, Self::Error> {
109 let value: u32 = value.try_into().unwrap();
110 if value > (PanelType::ENABLED | PanelType::EVENT_NO_HANDLING).0 {
111 Err("Invalid panel type value")
112 }
113 else {
114 Ok(PanelType(value))
115 }
116 }
117}