Backlog/lib/sdl3/v2/mouse.zig

118 lines
2.8 KiB
Zig

const std = @import("std");
pub const c = @import("c.zig").c;
pub const Window = opaque {
pub inline fn warpMouseInWindow(window: *Window, x: f32, y: f32) void {
return c.SDL_WarpMouseInWindow(window, x, y);
}
pub inline fn setWindowRelativeMouseMode(window: *Window, enabled: bool) bool {
return c.SDL_SetWindowRelativeMouseMode(window, enabled);
}
pub inline fn getWindowRelativeMouseMode(window: *Window) bool {
return c.SDL_GetWindowRelativeMouseMode(window);
}
};
pub const Surface = opaque {
pub inline fn createColorCursor(surface: *Surface, hot_x: c_int, hot_y: c_int) ?*Cursor {
return c.SDL_CreateColorCursor(surface, hot_x, hot_y);
}
};
pub const MouseID = u32;
pub const Cursor = opaque {
pub inline fn setCursor(cursor: *Cursor) bool {
return c.SDL_SetCursor(cursor);
}
pub inline fn destroyCursor(cursor: *Cursor) void {
return c.SDL_DestroyCursor(cursor);
}
};
pub const SystemCursor = enum(c_int) {
systemCursorCount,
};
pub const MouseButtonFlags = packed struct(u32) {
buttonLeft: bool = false,
buttonMiddle: bool = false,
buttonX1: bool = false,
pad0: u28 = 0,
rsvd: bool = false,
};
pub inline fn hasMouse() bool {
return c.SDL_HasMouse();
}
pub inline fn getMice(count: *c_int) ?*MouseID {
return c.SDL_GetMice(@ptrCast(count));
}
pub inline fn getMouseNameForID(instance_id: MouseID) [*c]const u8 {
return c.SDL_GetMouseNameForID(instance_id);
}
pub inline fn getMouseFocus() ?*Window {
return c.SDL_GetMouseFocus();
}
pub inline fn getMouseState(x: *f32, y: *f32) MouseButtonFlags {
return @bitCast(c.SDL_GetMouseState(@ptrCast(x), @ptrCast(y)));
}
pub inline fn getGlobalMouseState(x: *f32, y: *f32) MouseButtonFlags {
return @bitCast(c.SDL_GetGlobalMouseState(@ptrCast(x), @ptrCast(y)));
}
pub inline fn getRelativeMouseState(x: *f32, y: *f32) MouseButtonFlags {
return @bitCast(c.SDL_GetRelativeMouseState(@ptrCast(x), @ptrCast(y)));
}
pub inline fn warpMouseGlobal(x: f32, y: f32) bool {
return c.SDL_WarpMouseGlobal(x, y);
}
pub inline fn captureMouse(enabled: bool) bool {
return c.SDL_CaptureMouse(enabled);
}
pub inline fn createCursor(
data: [*c]const u8,
mask: [*c]const u8,
w: c_int,
h: c_int,
hot_x: c_int,
hot_y: c_int,
) ?*Cursor {
return c.SDL_CreateCursor(data, mask, w, h, hot_x, hot_y);
}
pub inline fn createSystemCursor(id: SystemCursor) ?*Cursor {
return c.SDL_CreateSystemCursor(id);
}
pub inline fn getCursor() ?*Cursor {
return c.SDL_GetCursor();
}
pub inline fn getDefaultCursor() ?*Cursor {
return c.SDL_GetDefaultCursor();
}
pub inline fn showCursor() bool {
return c.SDL_ShowCursor();
}
pub inline fn hideCursor() bool {
return c.SDL_HideCursor();
}
pub inline fn cursorVisible() bool {
return c.SDL_CursorVisible();
}