1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
use std::ptr;

use sys::touch as ll;

pub type Finger = ll::Finger;
pub type TouchDevice = ll::TouchDevice;

pub fn get_num_touch_devices() -> i32 {
    unsafe { ll::SDL_GetNumTouchDevices() }
}

pub fn get_touch_device(index: i32) -> TouchDevice {
    unsafe { ll::SDL_GetTouchDevice(index) }
}

pub fn get_num_touch_fingers(touch: TouchDevice) -> i32 {
    unsafe { ll::SDL_GetNumTouchFingers(touch) }
}

pub fn get_touch_finger(touch: TouchDevice, index: i32) -> Option<Finger> {
    let raw = unsafe { ll::SDL_GetTouchFinger(touch, index) };

    if raw == ptr::null_mut() {
        None
    } else {
        unsafe { Some(*raw) }
    }
}