Low-level MoonBit bindings for SDL C API
SDL3_INSTALL_PATH/
├── include/
│ └── SDL3/
│ └── SDL.h
└── lib/
└── SDL3 link librarycmake -S path/to/SDL -B path/to/SDL/build
cmake --build path/to/SDL/build --config Release
cmake --install path/to/SDL/build --config Release --prefix path/to/SDL/outSDL_CreateWindow -> create_window
SDL_DestroyWindow -> destroy_window
SDL_PollEvent -> poll_eventmoonbit_sdl_create_window
moonbit_sdl_poll_event_ffilet rect = @sdl_sys.Rect(0, 0, 640, 480)
let raw = rect.to_bytes()let event = @sdl_sys.Event()
if @sdl_sys.poll_event(event) {
let event_type = event.event_type()
}let window = @sdl_sys.create_window(@utf8.encode("Example"), 640, 480, 0)
if window.is_null() {
// Read @sdl_sys.get_error() or let the high-level module handle errors.
}
@sdl_sys.destroy_window(window)#external
pub type DisplayModeDatatype Eventpub type EventWatchtype FRect#external
pub type GPURenderState#external
pub type Pointertype Rectpub type Renderer#external
pub type TrayEntry#external
pub type TrayMenulet PROP_DISPLAY_KMSDRM_PANEL_ORIENTATION_NUMBER : Byteslet PROP_GLOBAL_VIDEO_WAYLAND_WL_DISPLAY_POINTER : Byteslet PROP_RENDERER_CREATE_GPU_SHADERS_DXIL_BOOLEAN : Byteslet PROP_RENDERER_CREATE_GPU_SHADERS_MSL_BOOLEAN : Byteslet PROP_RENDERER_CREATE_GPU_SHADERS_SPIRV_BOOLEAN : Byteslet PROP_RENDERER_CREATE_OUTPUT_COLORSPACE_NUMBER : Byteslet PROP_RENDERER_CREATE_PRESENT_VSYNC_NUMBER : Byteslet PROP_RENDERER_CREATE_VULKAN_DEVICE_POINTER : Byteslet PROP_RENDERER_CREATE_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER : Byteslet PROP_RENDERER_CREATE_VULKAN_INSTANCE_POINTER : Byteslet PROP_RENDERER_CREATE_VULKAN_PHYSICAL_DEVICE_POINTER : Byteslet PROP_RENDERER_CREATE_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER : Byteslet PROP_RENDERER_CREATE_VULKAN_SURFACE_NUMBER : Byteslet PROP_RENDERER_D3D12_COMMAND_QUEUE_POINTER : Byteslet PROP_RENDERER_VULKAN_GRAPHICS_QUEUE_FAMILY_INDEX_NUMBER : Byteslet PROP_RENDERER_VULKAN_PHYSICAL_DEVICE_POINTER : Byteslet PROP_RENDERER_VULKAN_PRESENT_QUEUE_FAMILY_INDEX_NUMBER : Byteslet PROP_RENDERER_VULKAN_SWAPCHAIN_IMAGE_COUNT_NUMBER : Byteslet PROP_TEXTURE_CREATE_D3D11_TEXTURE_POINTER : Byteslet PROP_TEXTURE_CREATE_D3D11_TEXTURE_U_POINTER : Byteslet PROP_TEXTURE_CREATE_D3D11_TEXTURE_V_POINTER : Byteslet PROP_TEXTURE_CREATE_D3D12_TEXTURE_POINTER : Byteslet PROP_TEXTURE_CREATE_D3D12_TEXTURE_U_POINTER : Byteslet PROP_TEXTURE_CREATE_D3D12_TEXTURE_V_POINTER : Byteslet PROP_TEXTURE_CREATE_GPU_TEXTURE_UV_POINTER : Byteslet PROP_TEXTURE_CREATE_GPU_TEXTURE_U_POINTER : Byteslet PROP_TEXTURE_CREATE_GPU_TEXTURE_V_POINTER : Byteslet PROP_TEXTURE_CREATE_METAL_PIXELBUFFER_POINTER : Byteslet PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_NUMBER : Byteslet PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_UV_NUMBER : Byteslet PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_U_NUMBER : Byteslet PROP_TEXTURE_CREATE_OPENGLES2_TEXTURE_V_NUMBER : Byteslet PROP_TEXTURE_CREATE_OPENGL_TEXTURE_NUMBER : Byteslet PROP_TEXTURE_CREATE_OPENGL_TEXTURE_UV_NUMBER : Byteslet PROP_TEXTURE_CREATE_OPENGL_TEXTURE_U_NUMBER : Byteslet PROP_TEXTURE_CREATE_OPENGL_TEXTURE_V_NUMBER : Byteslet PROP_TEXTURE_CREATE_SDR_WHITE_POINT_FLOAT : Byteslet PROP_TEXTURE_CREATE_VULKAN_TEXTURE_NUMBER : Byteslet PROP_TEXTURE_OPENGLES2_TEXTURE_TARGET_NUMBER : Byteslet PROP_TEXTURE_OPENGL_TEXTURE_TARGET_NUMBER : Byteslet PROP_WINDOW_CREATE_CONSTRAIN_POPUP_BOOLEAN : Byteslet PROP_WINDOW_CREATE_EMSCRIPTEN_CANVAS_ID_STRING : Byteslet PROP_WINDOW_CREATE_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING : Byteslet PROP_WINDOW_CREATE_EXTERNAL_GRAPHICS_CONTEXT_BOOLEAN : Byteslet PROP_WINDOW_CREATE_HIGH_PIXEL_DENSITY_BOOLEAN : Byteslet PROP_WINDOW_CREATE_WAYLAND_CREATE_EGL_WINDOW_BOOLEAN : Byteslet PROP_WINDOW_CREATE_WAYLAND_SURFACE_ROLE_CUSTOM_BOOLEAN : Byteslet PROP_WINDOW_CREATE_WAYLAND_WL_SURFACE_POINTER : Byteslet PROP_WINDOW_CREATE_WIN32_PIXEL_FORMAT_HWND_POINTER : Byteslet PROP_WINDOW_EMSCRIPTEN_KEYBOARD_ELEMENT_STRING : Byteslet PROP_WINDOW_UIKIT_OPENGL_FRAMEBUFFER_NUMBER : Byteslet PROP_WINDOW_UIKIT_OPENGL_RENDERBUFFER_NUMBER : Byteslet PROP_WINDOW_UIKIT_OPENGL_RESOLVE_FRAMEBUFFER_NUMBER : Byteslet PROP_WINDOW_WAYLAND_XDG_POSITIONER_POINTER : Byteslet PROP_WINDOW_WAYLAND_XDG_TOPLEVEL_EXPORT_HANDLE_STRING : Bytesfn add_event_watch(call_callback : FuncRef[((Bytes) -> Unit, Bytes) -> Unit], callback : (Bytes) -> Unit) -> EventWatchfn get_boolean_property(props : UInt, name : Bytes, default_value : Bool) -> Boolfn get_float_property(props : UInt, name : Bytes, default_value : Float) -> Floatfn get_number_property(props : UInt, name : Bytes, default_value : Int64) -> Int64fn get_string_property(props : UInt, name : Bytes, default_value : Bytes) -> Bytesfn make_tray_entry_callback(call_callback : FuncRef[(() -> Unit) -> Unit], callback : () -> Unit) -> TrayEntryCallbackfn set_boolean_property(props : UInt, name : Bytes, value : Bool) -> BoolLow-level MoonBit bindings for SDL C API