1extern crate sdl2;
2
3pub type MouseButton = sdl2::mouse::MouseButton;
4
5pub fn position() -> (i32, i32) {
6 let mut x: i32 = 0;
7 let mut y: i32 = 0;
8 unsafe {
9 sdl2::sys::SDL_GetMouseState(&mut x, &mut y);
10 }
11 (x, y)
12}
13
14pub fn set_position(x: i32, y: i32) {
15 unsafe {
16 sdl2::sys::SDL_WarpMouseGlobal(x, y);
17 }
18}
19
20pub fn relative_position() -> (i32, i32) {
21 let mut x: i32 = 0;
22 let mut y: i32 = 0;
23 unsafe {
24 sdl2::sys::SDL_GetRelativeMouseState(&mut x, &mut y);
25 }
26 (x, y)
27}
28
29pub fn is_down(button: MouseButton) -> bool {
30 let btn = button as u32;
31 let state = unsafe { sdl2::sys::SDL_GetMouseState(std::ptr::null_mut(), std::ptr::null_mut()) };
32 (state & btn) != 0
33}
34
35pub fn is_up(button: MouseButton) -> bool {
36 let btn = button as u32;
37 let state = unsafe { sdl2::sys::SDL_GetMouseState(std::ptr::null_mut(), std::ptr::null_mut()) };
38 (state & btn) == 0
39}