windowing

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

    windowing
    raw-window-handle
    interop
    Download zip
    Author
    Version
    0.1.1
    License
    Apache-2.0
    Last updated
    14 days ago
    Downloads
    3K

    #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

    HandleError::equal

    fn HandleError::equal(HandleError, HandleError) -> Bool

    HandleError::not_equal

    fn HandleError::not_equal(x : HandleError, y : HandleError) -> Bool

    HandleError::output

    fn HandleError::output(self : HandleError, logger : &Logger) -> Unit

    HandleError::to_string

    fn HandleError::to_string(self : HandleError) -> String

    AppKitDisplayHandle

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

    AppKitDisplayHandle::equal

    AppKitDisplayHandle::new

    AppKitDisplayHandle::not_equal

    AppKitWindowHandle

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

    AppKitWindowHandle::equal

    AppKitWindowHandle::new

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

    AppKitWindowHandle::not_equal

    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

    DisplayHandle::to_repr

    RawDisplayHandle

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

    RawDisplayHandle::equal

    RawDisplayHandle::not_equal

    fn RawDisplayHandle::not_equal(x : RawDisplayHandle, y : RawDisplayHandle) -> Bool

    RawDisplayHandle::output

    fn RawDisplayHandle::output(self : RawDisplayHandle, logger : &Logger) -> Unit

    RawDisplayHandle::to_string

    fn RawDisplayHandle::to_string(self : RawDisplayHandle) -> String

    RawWindowHandle

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

    RawWindowHandle::equal

    RawWindowHandle::not_equal

    fn RawWindowHandle::not_equal(x : RawWindowHandle, y : RawWindowHandle) -> Bool

    RawWindowHandle::output

    fn RawWindowHandle::output(self : RawWindowHandle, logger : &Logger) -> Unit

    RawWindowHandle::to_string

    fn RawWindowHandle::to_string(self : RawWindowHandle) -> String

    WaylandDisplayHandle

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

    WaylandDisplayHandle::display

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

    WaylandDisplayHandle::equal

    WaylandDisplayHandle::new

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

    WaylandDisplayHandle::not_equal

    WaylandWindowHandle

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

    WaylandWindowHandle::equal

    WaylandWindowHandle::new

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

    WaylandWindowHandle::not_equal

    WaylandWindowHandle::surface

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

    Win32WindowHandle

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

    Win32WindowHandle::equal

    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

    Win32WindowHandle::not_equal

    fn Win32WindowHandle::not_equal(x : Win32WindowHandle, y : Win32WindowHandle) -> Bool

    WindowHandle

    pub struct WindowHandle {
    // private fields
    }

    WindowHandle::as_raw

    WindowHandle::from_provider

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

    WindowHandle::to_repr

    WindowsDisplayHandle

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

    WindowsDisplayHandle::equal

    WindowsDisplayHandle::new

    WindowsDisplayHandle::not_equal

    XcbDisplayHandle

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

    XcbDisplayHandle::connection

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

    XcbDisplayHandle::equal

    XcbDisplayHandle::new

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

    XcbDisplayHandle::not_equal

    fn XcbDisplayHandle::not_equal(x : XcbDisplayHandle, y : XcbDisplayHandle) -> Bool

    XcbDisplayHandle::screen

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

    XcbWindowHandle

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

    XcbWindowHandle::equal

    XcbWindowHandle::new

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

    XcbWindowHandle::not_equal

    fn XcbWindowHandle::not_equal(x : XcbWindowHandle, y : XcbWindowHandle) -> Bool

    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::equal

    XlibDisplayHandle::new

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

    XlibDisplayHandle::not_equal

    fn XlibDisplayHandle::not_equal(x : XlibDisplayHandle, y : XlibDisplayHandle) -> Bool

    XlibDisplayHandle::screen

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

    XlibWindowHandle

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

    XlibWindowHandle::equal

    XlibWindowHandle::new

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

    XlibWindowHandle::not_equal

    fn XlibWindowHandle::not_equal(x : XlibWindowHandle, y : XlibWindowHandle) -> Bool

    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