raw_window_handle_extensions/
appkit.rs

1use crate::{RawDisplayHandleType, RawWindowHandleType, VeryRawDisplayHandle, VeryRawWindowHandle};
2use raw_window_handle::{AppKitDisplayHandle, AppKitWindowHandle};
3use std::ptr::NonNull;
4
5impl From<AppKitWindowHandle> for VeryRawWindowHandle {
6    fn from(value: AppKitWindowHandle) -> Self {
7        Self {
8            handle_type: RawWindowHandleType::AppKit,
9            ptr_1: std::ptr::null_mut(),
10            ptr_2: value.ns_view.as_ptr(),
11            ptr_3: std::ptr::null_mut(),
12            id_1: Default::default(),
13            id_2: Default::default(),
14        }
15    }
16}
17
18impl From<VeryRawWindowHandle> for AppKitWindowHandle {
19    fn from(value: VeryRawWindowHandle) -> Self {
20        assert_eq!(value.handle_type, RawWindowHandleType::AppKit);
21        Self::new(NonNull::new(value.ptr_2).expect("AppKit ns_view must not be null"))
22    }
23}
24
25impl From<AppKitDisplayHandle> for VeryRawDisplayHandle {
26    fn from(_value: AppKitDisplayHandle) -> Self {
27        Self {
28            handle_type: RawDisplayHandleType::AppKit,
29            ptr_1: std::ptr::null_mut(),
30            id_1: Default::default(),
31        }
32    }
33}
34
35impl From<VeryRawDisplayHandle> for AppKitDisplayHandle {
36    fn from(value: VeryRawDisplayHandle) -> Self {
37        assert_eq!(value.handle_type, RawDisplayHandleType::AppKit);
38        Self::new()
39    }
40}