raw_window_handle_extensions/
uikit.rs1use crate::{RawDisplayHandleType, RawWindowHandleType, VeryRawDisplayHandle, VeryRawWindowHandle};
2use raw_window_handle::{UiKitDisplayHandle, UiKitWindowHandle};
3use std::ptr::NonNull;
4
5impl From<UiKitWindowHandle> for VeryRawWindowHandle {
6 fn from(value: UiKitWindowHandle) -> Self {
7 Self {
8 handle_type: RawWindowHandleType::UiKit,
9 ptr_1: value.ui_view.as_ptr(),
10 ptr_2: value
11 .ui_view_controller
12 .map(|handle| handle.as_ptr())
13 .unwrap_or(std::ptr::null_mut()),
14 ptr_3: std::ptr::null_mut(),
15 id_1: Default::default(),
16 id_2: Default::default(),
17 }
18 }
19}
20
21impl From<VeryRawWindowHandle> for UiKitWindowHandle {
22 fn from(value: VeryRawWindowHandle) -> Self {
23 assert_eq!(value.handle_type, RawWindowHandleType::UiKit);
24 let mut window_handle = Self::new(
25 NonNull::new(value.ptr_1.into()).expect("UIKit native ui view must not be null"),
26 );
27 window_handle.ui_view_controller = if value.ptr_2.is_null() {
28 None
29 } else {
30 Some(
31 NonNull::new(value.ptr_2.into())
32 .expect("UIKit ui_view_controller must not be null"),
33 )
34 };
35 window_handle
36 }
37}
38
39impl From<UiKitDisplayHandle> for VeryRawDisplayHandle {
40 fn from(_value: UiKitDisplayHandle) -> Self {
41 Self {
42 handle_type: RawDisplayHandleType::UiKit,
43 ptr_1: std::ptr::null_mut(),
44 id_1: Default::default(),
45 }
46 }
47}
48
49impl From<VeryRawDisplayHandle> for UiKitDisplayHandle {
50 fn from(value: VeryRawDisplayHandle) -> Self {
51 assert_eq!(value.handle_type, RawDisplayHandleType::UiKit);
52 Self::new()
53 }
54}