inkview_sys/
c_api.rs

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,  // Exists only in v4
48			_ => 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}