1use cbf::data::{
4 key::{KeyEvent, KeyEventType},
5 mouse::{MouseWheelEvent, ScrollGranularity},
6};
7
8#[derive(Debug, Clone, Copy, PartialEq, Eq)]
9pub enum ChromeKeyEventType {
10 RawKeyDown,
11 KeyDown,
12 KeyUp,
13 Char,
14}
15
16impl From<KeyEventType> for ChromeKeyEventType {
17 fn from(value: KeyEventType) -> Self {
18 match value {
19 KeyEventType::RawKeyDown => Self::RawKeyDown,
20 KeyEventType::KeyDown => Self::KeyDown,
21 KeyEventType::KeyUp => Self::KeyUp,
22 KeyEventType::Char => Self::Char,
23 }
24 }
25}
26
27impl From<ChromeKeyEventType> for KeyEventType {
28 fn from(value: ChromeKeyEventType) -> Self {
29 match value {
30 ChromeKeyEventType::RawKeyDown => Self::RawKeyDown,
31 ChromeKeyEventType::KeyDown => Self::KeyDown,
32 ChromeKeyEventType::KeyUp => Self::KeyUp,
33 ChromeKeyEventType::Char => Self::Char,
34 }
35 }
36}
37
38#[derive(Debug, Clone, Copy, PartialEq, Eq)]
39pub enum ChromeScrollGranularity {
40 PrecisePixel,
41 Pixel,
42 Line,
43 Page,
44 Document,
45}
46
47impl From<ScrollGranularity> for ChromeScrollGranularity {
48 fn from(value: ScrollGranularity) -> Self {
49 match value {
50 ScrollGranularity::PrecisePixel => Self::PrecisePixel,
51 ScrollGranularity::Pixel => Self::Pixel,
52 ScrollGranularity::Line => Self::Line,
53 ScrollGranularity::Page => Self::Page,
54 ScrollGranularity::Document => Self::Document,
55 }
56 }
57}
58
59impl From<ChromeScrollGranularity> for ScrollGranularity {
60 fn from(value: ChromeScrollGranularity) -> Self {
61 match value {
62 ChromeScrollGranularity::PrecisePixel => Self::PrecisePixel,
63 ChromeScrollGranularity::Pixel => Self::Pixel,
64 ChromeScrollGranularity::Line => Self::Line,
65 ChromeScrollGranularity::Page => Self::Page,
66 ChromeScrollGranularity::Document => Self::Document,
67 }
68 }
69}
70
71#[derive(Debug, Clone, PartialEq, Eq)]
75pub struct ChromeKeyEvent {
76 pub type_: ChromeKeyEventType,
77 pub modifiers: u32,
78 pub windows_key_code: i32,
79 pub native_key_code: i32,
80 pub dom_code: Option<String>,
81 pub dom_key: Option<String>,
82 pub text: Option<String>,
83 pub unmodified_text: Option<String>,
84 pub auto_repeat: bool,
85 pub is_keypad: bool,
86 pub is_system_key: bool,
87 pub location: i32,
88}
89
90impl From<KeyEvent> for ChromeKeyEvent {
91 fn from(value: KeyEvent) -> Self {
92 Self {
93 type_: value.type_.into(),
94 modifiers: value.modifiers,
95 windows_key_code: value.key_code,
96 native_key_code: value.platform_key_code,
97 dom_code: value.dom_code,
98 dom_key: value.dom_key,
99 text: value.text,
100 unmodified_text: value.unmodified_text,
101 auto_repeat: value.auto_repeat,
102 is_keypad: value.is_keypad,
103 is_system_key: value.is_system_key,
104 location: value.location,
105 }
106 }
107}
108
109impl From<ChromeKeyEvent> for KeyEvent {
110 fn from(value: ChromeKeyEvent) -> Self {
111 Self {
112 type_: value.type_.into(),
113 modifiers: value.modifiers,
114 key_code: value.windows_key_code,
115 platform_key_code: value.native_key_code,
116 dom_code: value.dom_code,
117 dom_key: value.dom_key,
118 text: value.text,
119 unmodified_text: value.unmodified_text,
120 auto_repeat: value.auto_repeat,
121 is_keypad: value.is_keypad,
122 is_system_key: value.is_system_key,
123 location: value.location,
124 }
125 }
126}
127
128#[derive(Debug, Clone, PartialEq)]
132pub struct ChromeMouseWheelEvent {
133 pub modifiers: u32,
134 pub position_in_widget_x: f32,
135 pub position_in_widget_y: f32,
136 pub position_in_screen_x: f32,
137 pub position_in_screen_y: f32,
138 pub movement_x: f32,
139 pub movement_y: f32,
140 pub is_raw_movement_event: bool,
141 pub delta_x: f32,
142 pub delta_y: f32,
143 pub wheel_ticks_x: f32,
144 pub wheel_ticks_y: f32,
145 pub phase: u32,
146 pub momentum_phase: u32,
147 pub delta_units: ChromeScrollGranularity,
148}
149
150impl From<MouseWheelEvent> for ChromeMouseWheelEvent {
151 fn from(value: MouseWheelEvent) -> Self {
152 Self {
153 modifiers: value.modifiers,
154 position_in_widget_x: value.position_in_widget_x,
155 position_in_widget_y: value.position_in_widget_y,
156 position_in_screen_x: value.position_in_screen_x,
157 position_in_screen_y: value.position_in_screen_y,
158 movement_x: value.movement_x,
159 movement_y: value.movement_y,
160 is_raw_movement_event: value.is_raw_movement_event,
161 delta_x: value.delta_x,
162 delta_y: value.delta_y,
163 wheel_ticks_x: value.wheel_ticks_x,
164 wheel_ticks_y: value.wheel_ticks_y,
165 phase: 0,
166 momentum_phase: 0,
167 delta_units: value.delta_units.into(),
168 }
169 }
170}
171
172impl From<ChromeMouseWheelEvent> for MouseWheelEvent {
173 fn from(value: ChromeMouseWheelEvent) -> Self {
174 Self {
175 modifiers: value.modifiers,
176 position_in_widget_x: value.position_in_widget_x,
177 position_in_widget_y: value.position_in_widget_y,
178 position_in_screen_x: value.position_in_screen_x,
179 position_in_screen_y: value.position_in_screen_y,
180 movement_x: value.movement_x,
181 movement_y: value.movement_y,
182 is_raw_movement_event: value.is_raw_movement_event,
183 delta_x: value.delta_x,
184 delta_y: value.delta_y,
185 wheel_ticks_x: value.wheel_ticks_x,
186 wheel_ticks_y: value.wheel_ticks_y,
187 delta_units: value.delta_units.into(),
188 }
189 }
190}