raw_window_handle_extensions/
windows.rs1use std::mem::transmute;
2use std::ptr::NonNull;
3use crate::{RawDisplayHandleType, RawWindowHandleType, VeryRawDisplayHandle, VeryRawWindowHandle};
4use raw_window_handle::{Win32WindowHandle, WinRtWindowHandle, WindowsDisplayHandle};
5
6impl From<Win32WindowHandle> for VeryRawWindowHandle {
7 fn from(value: Win32WindowHandle) -> Self {
8 Self {
9 handle_type: RawWindowHandleType::Win32,
10 ptr_1: unsafe { transmute(value.hwnd) },
11 ptr_2: unsafe { transmute(value.hinstance) },
12 ptr_3: std::ptr::null_mut(),
13 id_1: Default::default(),
14 id_2: Default::default(),
15 }
16 }
17}
18
19impl From<VeryRawWindowHandle> for Win32WindowHandle {
20 fn from(value: VeryRawWindowHandle) -> Self {
21 assert_eq!(value.handle_type, RawWindowHandleType::Win32);
22 let mut window_handle = Self::new(unsafe { transmute(value.ptr_1) });
23 window_handle.hinstance = unsafe { transmute(value.ptr_2) };
24 window_handle
25 }
26}
27
28impl From<WinRtWindowHandle> for VeryRawWindowHandle {
29 fn from(value: WinRtWindowHandle) -> Self {
30 Self {
31 handle_type: RawWindowHandleType::WinRt,
32 ptr_1: value.core_window.as_ptr(),
33 ptr_2: std::ptr::null_mut(),
34 ptr_3: std::ptr::null_mut(),
35 id_1: Default::default(),
36 id_2: Default::default(),
37 }
38 }
39}
40
41impl From<VeryRawWindowHandle> for WinRtWindowHandle {
42 fn from(value: VeryRawWindowHandle) -> Self {
43 assert_eq!(value.handle_type, RawWindowHandleType::WinRt);
44 let window_handle = Self::new(NonNull::new(value.ptr_1).unwrap());
45 window_handle
46 }
47}
48
49impl From<WindowsDisplayHandle> for VeryRawDisplayHandle {
50 fn from(_value: WindowsDisplayHandle) -> Self {
51 Self {
52 handle_type: RawDisplayHandleType::Windows,
53 ptr_1: std::ptr::null_mut(),
54 id_1: Default::default(),
55 }
56 }
57}
58
59impl From<VeryRawDisplayHandle> for WindowsDisplayHandle {
60 fn from(value: VeryRawDisplayHandle) -> Self {
61 assert_eq!(value.handle_type, RawDisplayHandleType::Windows);
62 let window_handle = Self::new();
63 window_handle
64 }
65}