1#[derive(Debug, Clone, Copy, PartialEq, Eq)]
4pub enum ChromeMouseEventType {
5 Down,
6 Up,
7 Move,
8 Enter,
9 Leave,
10}
11
12impl From<ChromeMouseEventType> for cbf::data::mouse::MouseEventType {
13 fn from(value: ChromeMouseEventType) -> Self {
14 match value {
15 ChromeMouseEventType::Down => Self::Down,
16 ChromeMouseEventType::Up => Self::Up,
17 ChromeMouseEventType::Move => Self::Move,
18 ChromeMouseEventType::Enter => Self::Enter,
19 ChromeMouseEventType::Leave => Self::Leave,
20 }
21 }
22}
23
24impl From<cbf::data::mouse::MouseEventType> for ChromeMouseEventType {
25 fn from(value: cbf::data::mouse::MouseEventType) -> Self {
26 match value {
27 cbf::data::mouse::MouseEventType::Down => Self::Down,
28 cbf::data::mouse::MouseEventType::Up => Self::Up,
29 cbf::data::mouse::MouseEventType::Move => Self::Move,
30 cbf::data::mouse::MouseEventType::Enter => Self::Enter,
31 cbf::data::mouse::MouseEventType::Leave => Self::Leave,
32 }
33 }
34}
35
36#[derive(Debug, Clone, Copy, PartialEq, Eq)]
37pub enum ChromeMouseButton {
38 None,
39 Left,
40 Middle,
41 Right,
42 Back,
43 Forward,
44}
45
46impl From<ChromeMouseButton> for cbf::data::mouse::MouseButton {
47 fn from(value: ChromeMouseButton) -> Self {
48 match value {
49 ChromeMouseButton::None => Self::None,
50 ChromeMouseButton::Left => Self::Left,
51 ChromeMouseButton::Middle => Self::Middle,
52 ChromeMouseButton::Right => Self::Right,
53 ChromeMouseButton::Back => Self::Back,
54 ChromeMouseButton::Forward => Self::Forward,
55 }
56 }
57}
58
59impl From<cbf::data::mouse::MouseButton> for ChromeMouseButton {
60 fn from(value: cbf::data::mouse::MouseButton) -> Self {
61 match value {
62 cbf::data::mouse::MouseButton::None => Self::None,
63 cbf::data::mouse::MouseButton::Left => Self::Left,
64 cbf::data::mouse::MouseButton::Middle => Self::Middle,
65 cbf::data::mouse::MouseButton::Right => Self::Right,
66 cbf::data::mouse::MouseButton::Back => Self::Back,
67 cbf::data::mouse::MouseButton::Forward => Self::Forward,
68 }
69 }
70}
71
72#[derive(Debug, Clone, Copy, PartialEq, Eq)]
73pub enum ChromePointerType {
74 Unknown,
75 Mouse,
76 Pen,
77 Touch,
78 Eraser,
79}
80
81impl From<ChromePointerType> for cbf::data::mouse::PointerType {
82 fn from(value: ChromePointerType) -> Self {
83 match value {
84 ChromePointerType::Unknown => Self::Unknown,
85 ChromePointerType::Mouse => Self::Mouse,
86 ChromePointerType::Pen => Self::Pen,
87 ChromePointerType::Touch => Self::Touch,
88 ChromePointerType::Eraser => Self::Eraser,
89 }
90 }
91}
92
93impl From<cbf::data::mouse::PointerType> for ChromePointerType {
94 fn from(value: cbf::data::mouse::PointerType) -> Self {
95 match value {
96 cbf::data::mouse::PointerType::Unknown => Self::Unknown,
97 cbf::data::mouse::PointerType::Mouse => Self::Mouse,
98 cbf::data::mouse::PointerType::Pen => Self::Pen,
99 cbf::data::mouse::PointerType::Touch => Self::Touch,
100 cbf::data::mouse::PointerType::Eraser => Self::Eraser,
101 }
102 }
103}
104
105#[derive(Debug, Clone, PartialEq)]
106pub struct ChromeMouseEvent {
107 pub type_: ChromeMouseEventType,
108 pub modifiers: u32,
109 pub button: ChromeMouseButton,
110 pub click_count: i32,
111 pub position_in_widget_x: f32,
112 pub position_in_widget_y: f32,
113 pub position_in_screen_x: f32,
114 pub position_in_screen_y: f32,
115 pub movement_x: f32,
116 pub movement_y: f32,
117 pub is_raw_movement_event: bool,
118 pub pointer_type: ChromePointerType,
119}
120
121impl From<ChromeMouseEvent> for cbf::data::mouse::MouseEvent {
122 fn from(value: ChromeMouseEvent) -> Self {
123 Self {
124 type_: value.type_.into(),
125 modifiers: value.modifiers,
126 button: value.button.into(),
127 click_count: value.click_count,
128 position_in_widget_x: value.position_in_widget_x,
129 position_in_widget_y: value.position_in_widget_y,
130 position_in_screen_x: value.position_in_screen_x,
131 position_in_screen_y: value.position_in_screen_y,
132 movement_x: value.movement_x,
133 movement_y: value.movement_y,
134 is_raw_movement_event: value.is_raw_movement_event,
135 pointer_type: value.pointer_type.into(),
136 }
137 }
138}
139
140impl From<cbf::data::mouse::MouseEvent> for ChromeMouseEvent {
141 fn from(value: cbf::data::mouse::MouseEvent) -> Self {
142 Self {
143 type_: value.type_.into(),
144 modifiers: value.modifiers,
145 button: value.button.into(),
146 click_count: value.click_count,
147 position_in_widget_x: value.position_in_widget_x,
148 position_in_widget_y: value.position_in_widget_y,
149 position_in_screen_x: value.position_in_screen_x,
150 position_in_screen_y: value.position_in_screen_y,
151 movement_x: value.movement_x,
152 movement_y: value.movement_y,
153 is_raw_movement_event: value.is_raw_movement_event,
154 pointer_type: value.pointer_type.into(),
155 }
156 }
157}