Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ mod borrowed;
mod haiku;
mod ohos;
mod redox;
mod uefi;
mod uikit;
mod unix;
mod web;
Expand All @@ -50,6 +51,7 @@ pub use borrowed::{DisplayHandle, HasDisplayHandle, HasWindowHandle, WindowHandl
pub use haiku::{HaikuDisplayHandle, HaikuWindowHandle};
pub use ohos::{OhosDisplayHandle, OhosNdkWindowHandle};
pub use redox::{OrbitalDisplayHandle, OrbitalWindowHandle};
pub use uefi::{UefiDisplayHandle, UefiWindowHandle};
pub use uikit::{UiKitDisplayHandle, UiKitWindowHandle};
pub use unix::{
DrmDisplayHandle, DrmWindowHandle, GbmDisplayHandle, GbmWindowHandle, WaylandDisplayHandle,
Expand Down Expand Up @@ -207,6 +209,11 @@ pub enum RawWindowHandle {
/// ## Availability Hints
/// This variant is used on HaikuOS.
Haiku(HaikuWindowHandle),
/// A window handle for UEFI.
///
/// ## Availability Hints
/// This variant is used on UEFI.
Uefi(UefiWindowHandle),
}

/// Display that wraps around a raw display handle.
Expand Down Expand Up @@ -341,6 +348,11 @@ pub enum RawDisplayHandle {
/// ## Availability Hints
/// This variant is used on HaikuOS.
Haiku(HaikuDisplayHandle),
/// A raw display handle for UEFI.
///
/// ## Availability Hints
/// This variant is used on UEFI.
Uefi(UefiDisplayHandle),
}

/// An error that can occur while fetching a display or window handle.
Expand Down Expand Up @@ -413,6 +425,7 @@ from_impl!(RawDisplayHandle, Windows, WindowsDisplayHandle);
from_impl!(RawDisplayHandle, Web, WebDisplayHandle);
from_impl!(RawDisplayHandle, Android, AndroidDisplayHandle);
from_impl!(RawDisplayHandle, Haiku, HaikuDisplayHandle);
from_impl!(RawDisplayHandle, Uefi, UefiDisplayHandle);

from_impl!(RawWindowHandle, UiKit, UiKitWindowHandle);
from_impl!(RawWindowHandle, AppKit, AppKitWindowHandle);
Expand All @@ -434,6 +447,7 @@ from_impl!(
);
from_impl!(RawWindowHandle, AndroidNdk, AndroidNdkWindowHandle);
from_impl!(RawWindowHandle, Haiku, HaikuWindowHandle);
from_impl!(RawWindowHandle, Uefi, UefiWindowHandle);

#[cfg(test)]
mod tests {
Expand Down
40 changes: 40 additions & 0 deletions src/uefi.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
use core::ffi::c_void;
use core::ptr::NonNull;

/// Raw display handle for UEFI.
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct UefiDisplayHandle {
/// The UEFI Graphics Output Protocol handle.
pub handle: NonNull<c_void>,
}

impl UefiDisplayHandle {
/// Create a new empty display handle.
///
///
/// # Example
///
/// ```
/// # use core::ptr::NonNull;
/// # use raw_window_handle::UefiDisplayHandle;
/// # type GraphicsOutput = ();
/// let ptr: NonNull<GraphicsOutput>;
/// # ptr = NonNull::from(&());
/// let handle = UefiDisplayHandle::new(ptr.cast());
/// ```
pub fn new(handle: NonNull<c_void>) -> Self {
Self { handle }
}
}

/// Raw window handle for UEFI.
#[non_exhaustive]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
pub struct UefiWindowHandle {}

impl UefiWindowHandle {
pub fn new() -> Self {
Self {}
}
}
Loading