windowing

Backend-neutral raw window and display handle contracts for MoonBit.

windowing
raw-window-handle
interop
moon add Milky2018/windowing@0.1.0
Download zip
Author
Version
0.1.0
License
Apache-2.0
Last updated
last month
Downloads
1K
README

#Milky2018/windowing

Milky2018/windowing defines backend-neutral raw window and display handle contracts for MoonBit window systems and renderer libraries.

The module does not create windows or rendering surfaces. Window libraries implement HasWindowHandle and HasDisplayHandle; renderer libraries consume the resulting structured handles.

The current implemented producer is AppKit. Win32, Wayland, Xlib, and Xcb handle types are present as interoperability placeholders for future backends.

#Contracts

  • HasWindowHandle produces a WindowHandle.
  • HasDisplayHandle produces a DisplayHandle.
  • WindowHandle::as_raw() and DisplayHandle::as_raw() expose a platform-specific enum at the renderer boundary.
  • Handle objects retain their provider, allowing a window implementation to keep its native owner reachable while a renderer holds the handle.

Pointer-backed constructors reject zero addresses with HandleError::Unavailable. The provider may also return Unavailable after the underlying native object has been explicitly destroyed.

The module deliberately has no dependency on Milky2018/window or a renderer implementation.

#
DisplayHandleProvider

pub(open) trait DisplayHandleProvider {
fn raw_display_handle(Self) -> RawDisplayHandle raise HandleError
}

#
HasDisplayHandle

pub(open) trait HasDisplayHandle {
fn display_handle(Self) -> DisplayHandle raise HandleError
}

#
HasWindowHandle

pub(open) trait HasWindowHandle {
fn window_handle(Self) -> WindowHandle raise HandleError
}

#
WindowHandleProvider

pub(open) trait WindowHandleProvider {
fn raw_window_handle(Self) -> RawWindowHandle raise HandleError
}

#
HandleError

pub(all) suberror HandleError {
Unavailable
} derive(Eq,
Debug
)

impl Show for HandleError

#
AppKitDisplayHandle

pub struct AppKitDisplayHandle {
// private fields
} derive(Eq,
Debug
)

#
AppKitDisplayHandle::new

#
AppKitWindowHandle

pub struct AppKitWindowHandle {
// private fields
} derive(Eq,
Debug
)

#
AppKitWindowHandle::new

fn AppKitWindowHandle::new(ns_view : UInt64) -> AppKitWindowHandle raise HandleError

#
AppKitWindowHandle::ns_view

fn AppKitWindowHandle::ns_view(self : AppKitWindowHandle) -> UInt64

#
DisplayHandle

pub struct DisplayHandle {
// private fields
}

#
DisplayHandle::as_raw

#
DisplayHandle::from_provider

fn DisplayHandle::from_provider(provider : &DisplayHandleProvider) -> DisplayHandle

#
RawDisplayHandle

pub(all) enum RawDisplayHandle {
AppKit(AppKitDisplayHandle)
Windows(WindowsDisplayHandle)
Wayland(WaylandDisplayHandle)
Xlib(XlibDisplayHandle)
Xcb(XcbDisplayHandle)
} derive(Eq,
Debug
)

#
RawWindowHandle

pub(all) enum RawWindowHandle {
AppKit(AppKitWindowHandle)
Win32(Win32WindowHandle)
Wayland(WaylandWindowHandle)
Xlib(XlibWindowHandle)
Xcb(XcbWindowHandle)
} derive(Eq,
Debug
)

#
WaylandDisplayHandle

pub struct WaylandDisplayHandle {
// private fields
} derive(Eq,
Debug
)

#
WaylandDisplayHandle::display

fn WaylandDisplayHandle::display(self : WaylandDisplayHandle) -> UInt64

#
WaylandDisplayHandle::new

fn WaylandDisplayHandle::new(display : UInt64) -> WaylandDisplayHandle raise HandleError

#
WaylandWindowHandle

pub struct WaylandWindowHandle {
// private fields
} derive(Eq,
Debug
)

#
WaylandWindowHandle::new

fn WaylandWindowHandle::new(surface : UInt64) -> WaylandWindowHandle raise HandleError

#
WaylandWindowHandle::surface

fn WaylandWindowHandle::surface(self : WaylandWindowHandle) -> UInt64

#
Win32WindowHandle

pub struct Win32WindowHandle {
// private fields
} derive(Eq,
Debug
)

#
Win32WindowHandle::hinstance

fn Win32WindowHandle::hinstance(self : Win32WindowHandle) -> UInt64?

#
Win32WindowHandle::hwnd

fn Win32WindowHandle::hwnd(self : Win32WindowHandle) -> UInt64

#
Win32WindowHandle::new

fn Win32WindowHandle::new(hwnd : UInt64, hinstance? : UInt64) -> Win32WindowHandle raise HandleError

#
WindowHandle

pub struct WindowHandle {
// private fields
}

#
WindowHandle::as_raw

#
WindowHandle::from_provider

fn WindowHandle::from_provider(provider : &WindowHandleProvider) -> WindowHandle

#
WindowsDisplayHandle

pub struct WindowsDisplayHandle {
// private fields
} derive(Eq,
Debug
)

#
WindowsDisplayHandle::new

#
XcbDisplayHandle

pub struct XcbDisplayHandle {
// private fields
} derive(Eq,
Debug
)

#
XcbDisplayHandle::connection

fn XcbDisplayHandle::connection(self : XcbDisplayHandle) -> UInt64?

#
XcbDisplayHandle::new

fn XcbDisplayHandle::new(connection : UInt64?, screen : Int) -> XcbDisplayHandle

#
XcbDisplayHandle::screen

fn XcbDisplayHandle::screen(self : XcbDisplayHandle) -> Int

#
XcbWindowHandle

pub struct XcbWindowHandle {
// private fields
} derive(Eq,
Debug
)

#
XcbWindowHandle::new

fn XcbWindowHandle::new(window : UInt, visual_id? : UInt) -> XcbWindowHandle raise HandleError

#
XcbWindowHandle::visual_id

fn XcbWindowHandle::visual_id(self : XcbWindowHandle) -> UInt?

#
XcbWindowHandle::window

fn XcbWindowHandle::window(self : XcbWindowHandle) -> UInt

#
XlibDisplayHandle

pub struct XlibDisplayHandle {
// private fields
} derive(Eq,
Debug
)

#
XlibDisplayHandle::display

fn XlibDisplayHandle::display(self : XlibDisplayHandle) -> UInt64?

#
XlibDisplayHandle::new

fn XlibDisplayHandle::new(display : UInt64?, screen : Int) -> XlibDisplayHandle

#
XlibDisplayHandle::screen

fn XlibDisplayHandle::screen(self : XlibDisplayHandle) -> Int

#
XlibWindowHandle

pub struct XlibWindowHandle {
// private fields
} derive(Eq,
Debug
)

#
XlibWindowHandle::new

fn XlibWindowHandle::new(window : UInt64, visual_id? : UInt64) -> XlibWindowHandle raise HandleError

#
XlibWindowHandle::visual_id

fn XlibWindowHandle::visual_id(self : XlibWindowHandle) -> UInt64

#
XlibWindowHandle::window

fn XlibWindowHandle::window(self : XlibWindowHandle) -> UInt64

Powered by MoonBit

Site sourceReport issuePackagesBuild queueSkillsStatistics

© 2026 mooncakes.io