82 lines
3.6 KiB
Odin
82 lines
3.6 KiB
Odin
package sdl3
|
|
|
|
import "core:c"
|
|
|
|
MouseID :: distinct Uint32
|
|
|
|
Cursor :: struct {}
|
|
|
|
SystemCursor :: enum c.int {
|
|
DEFAULT, /**< Default cursor. Usually an arrow. */
|
|
TEXT, /**< Text selection. Usually an I-beam. */
|
|
WAIT, /**< Wait. Usually an hourglass or watch or spinning ball. */
|
|
CROSSHAIR, /**< Crosshair. */
|
|
PROGRESS, /**< Program is busy but still interactive. Usually it's WAIT with an arrow. */
|
|
NWSE_RESIZE, /**< Double arrow pointing northwest and southeast. */
|
|
NESW_RESIZE, /**< Double arrow pointing northeast and southwest. */
|
|
EW_RESIZE, /**< Double arrow pointing west and east. */
|
|
NS_RESIZE, /**< Double arrow pointing north and south. */
|
|
MOVE, /**< Four pointed arrow pointing north, south, east, and west. */
|
|
NOT_ALLOWED, /**< Not permitted. Usually a slashed circle or crossbones. */
|
|
POINTER, /**< Pointer that indicates a link. Usually a pointing hand. */
|
|
NW_RESIZE, /**< Window resize top-left. This may be a single arrow or a double arrow like NWSE_RESIZE. */
|
|
N_RESIZE, /**< Window resize top. May be NS_RESIZE. */
|
|
NE_RESIZE, /**< Window resize top-right. May be NESW_RESIZE. */
|
|
E_RESIZE, /**< Window resize right. May be EW_RESIZE. */
|
|
SE_RESIZE, /**< Window resize bottom-right. May be NWSE_RESIZE. */
|
|
S_RESIZE, /**< Window resize bottom. May be NS_RESIZE. */
|
|
SW_RESIZE, /**< Window resize bottom-left. May be NESW_RESIZE. */
|
|
W_RESIZE, /**< Window resize left. May be EW_RESIZE. */
|
|
}
|
|
|
|
MouseWheelDirection :: enum c.int {
|
|
NORMAL, /**< The scroll direction is normal */
|
|
FLIPPED, /**< The scroll direction is flipped / natural */
|
|
}
|
|
|
|
MouseButtonFlags :: distinct bit_set[MouseButtonFlag; Uint32]
|
|
MouseButtonFlag :: enum Uint32 {
|
|
LEFT = 1 - 1,
|
|
MIDDLE = 2 - 1,
|
|
RIGHT = 3 - 1,
|
|
X1 = 4 - 1,
|
|
X2 = 5 - 1,
|
|
}
|
|
|
|
BUTTON_LEFT :: 1
|
|
BUTTON_MIDDLE :: 2
|
|
BUTTON_RIGHT :: 3
|
|
BUTTON_X1 :: 4
|
|
BUTTON_X2 :: 5
|
|
|
|
BUTTON_LMASK :: MouseButtonFlags{.LEFT}
|
|
BUTTON_MMASK :: MouseButtonFlags{.MIDDLE}
|
|
BUTTON_RMASK :: MouseButtonFlags{.RIGHT}
|
|
BUTTON_X1MASK :: MouseButtonFlags{.X1}
|
|
BUTTON_X2MASK :: MouseButtonFlags{.X2}
|
|
|
|
@(default_calling_convention="c", link_prefix="SDL_", require_results)
|
|
foreign lib {
|
|
HasMouse :: proc() -> bool ---
|
|
GetMice :: proc(count: ^c.int) -> [^]MouseID ---
|
|
GetMouseNameForID :: proc(instance_id: MouseID) -> cstring ---
|
|
GetMouseFocus :: proc() -> ^Window ---
|
|
GetMouseState :: proc(x, y: ^f32) -> MouseButtonFlags ---
|
|
GetGlobalMouseState :: proc(x, y: ^f32) -> MouseButtonFlags ---
|
|
GetRelativeMouseState :: proc(x, y: ^f32) -> MouseButtonFlags ---
|
|
WarpMouseInWindow :: proc(window: ^Window, x, y: f32) ---
|
|
WarpMouseGlobal :: proc(x, y: f32) -> bool ---
|
|
SetWindowRelativeMouseMode :: proc(window: ^Window, enabled: bool) -> bool ---
|
|
GetWindowRelativeMouseMode :: proc(window: ^Window) -> bool ---
|
|
CaptureMouse :: proc(enabled: bool) -> bool ---
|
|
CreateCursor :: proc(data: [^]byte, mask: [^]Uint8, w, h, hot_x, hot_y: c.int) -> ^Cursor ---
|
|
CreateColorCursor :: proc(surface: ^Surface, hot_x, hot_y: c.int) -> ^Cursor ---
|
|
CreateSystemCursor :: proc(id: SystemCursor) -> ^Cursor ---
|
|
SetCursor :: proc(cursor: ^Cursor) -> bool ---
|
|
GetCursor :: proc() -> ^Cursor ---
|
|
GetDefaultCursor :: proc() -> ^Cursor ---
|
|
DestroyCursor :: proc(cursor: ^Cursor) ---
|
|
ShowCursor :: proc() -> bool ---
|
|
HideCursor :: proc() -> bool ---
|
|
CursorVisible :: proc() -> bool ---
|
|
} |