#![allow(dead_code, non_camel_case_types, non_snake_case)] use std::os::raw::{c_int, c_char, c_void, c_ulong, c_double, c_long, c_ushort}; #[cfg(test)] use std::mem; pub type EM_BOOL = c_int; pub type EM_UTF8 = c_char; pub type EMSCRIPTEN_RESULT = c_int; pub const EM_TRUE: EM_BOOL = 1; pub const EM_FALSE: EM_BOOL = 0; // values for EMSCRIPTEN_RESULT pub const EMSCRIPTEN_RESULT_SUCCESS: c_int = 0; pub const EMSCRIPTEN_RESULT_DEFERRED: c_int = 1; pub const EMSCRIPTEN_RESULT_NOT_SUPPORTED: c_int = -1; pub const EMSCRIPTEN_RESULT_FAILED_NOT_DEFERRED: c_int = -2; pub const EMSCRIPTEN_RESULT_INVALID_TARGET: c_int = -3; pub const EMSCRIPTEN_RESULT_UNKNOWN_TARGET: c_int = -4; pub const EMSCRIPTEN_RESULT_INVALID_PARAM: c_int = -5; pub const EMSCRIPTEN_RESULT_FAILED: c_int = -6; pub const EMSCRIPTEN_RESULT_NO_DATA: c_int = -7; // values for EMSCRIPTEN EVENT pub const EMSCRIPTEN_EVENT_KEYPRESS: c_int = 1; pub const EMSCRIPTEN_EVENT_KEYDOWN: c_int = 2; pub const EMSCRIPTEN_EVENT_KEYUP: c_int = 3; pub const EMSCRIPTEN_EVENT_CLICK: c_int = 4; pub const EMSCRIPTEN_EVENT_MOUSEDOWN: c_int = 5; pub const EMSCRIPTEN_EVENT_MOUSEUP: c_int = 6; pub const EMSCRIPTEN_EVENT_DBLCLICK: c_int = 7; pub const EMSCRIPTEN_EVENT_MOUSEMOVE: c_int = 8; pub const EMSCRIPTEN_EVENT_WHEEL: c_int = 9; pub const EMSCRIPTEN_EVENT_RESIZE: c_int = 10; pub const EMSCRIPTEN_EVENT_SCROLL: c_int = 11; pub const EMSCRIPTEN_EVENT_BLUR: c_int = 12; pub const EMSCRIPTEN_EVENT_FOCUS: c_int = 13; pub const EMSCRIPTEN_EVENT_FOCUSIN: c_int = 14; pub const EMSCRIPTEN_EVENT_FOCUSOUT: c_int = 15; pub const EMSCRIPTEN_EVENT_DEVICEORIENTATION: c_int = 16; pub const EMSCRIPTEN_EVENT_DEVICEMOTION: c_int = 17; pub const EMSCRIPTEN_EVENT_ORIENTATIONCHANGE: c_int = 18; pub const EMSCRIPTEN_EVENT_FULLSCREENCHANGE: c_int = 19; pub const EMSCRIPTEN_EVENT_POINTERLOCKCHANGE: c_int = 20; pub const EMSCRIPTEN_EVENT_VISIBILITYCHANGE: c_int = 21; pub const EMSCRIPTEN_EVENT_TOUCHSTART: c_int = 22; pub const EMSCRIPTEN_EVENT_TOUCHEND: c_int = 23; pub const EMSCRIPTEN_EVENT_TOUCHMOVE: c_int = 24; pub const EMSCRIPTEN_EVENT_TOUCHCANCEL: c_int = 25; pub const EMSCRIPTEN_EVENT_GAMEPADCONNECTED: c_int = 26; pub const EMSCRIPTEN_EVENT_GAMEPADDISCONNECTED: c_int = 27; pub const EMSCRIPTEN_EVENT_BEFOREUNLOAD: c_int = 28; pub const EMSCRIPTEN_EVENT_BATTERYCHARGINGCHANGE: c_int = 29; pub const EMSCRIPTEN_EVENT_BATTERYLEVELCHANGE: c_int = 30; pub const EMSCRIPTEN_EVENT_WEBGLCONTEXTLOST: c_int = 31; pub const EMSCRIPTEN_EVENT_WEBGLCONTEXTRESTORED: c_int = 32; pub const EMSCRIPTEN_EVENT_MOUSEENTER: c_int = 33; pub const EMSCRIPTEN_EVENT_MOUSELEAVE: c_int = 34; pub const EMSCRIPTEN_EVENT_MOUSEOVER: c_int = 35; pub const EMSCRIPTEN_EVENT_MOUSEOUT: c_int = 36; pub const EMSCRIPTEN_EVENT_CANVASRESIZED: c_int = 37; pub const EMSCRIPTEN_EVENT_POINTERLOCKERROR: c_int = 38; pub const EM_HTML5_SHORT_STRING_LEN_BYTES: usize = 32; pub const DOM_KEY_LOCATION_STANDARD: c_ulong = 0x00; pub const DOM_KEY_LOCATION_LEFT: c_ulong = 0x01; pub const DOM_KEY_LOCATION_RIGHT: c_ulong = 0x02; pub const DOM_KEY_LOCATION_NUMPAD: c_ulong = 0x03; pub type em_callback_func = Option; pub type em_key_callback_func = Option EM_BOOL>; pub type em_mouse_callback_func = Option EM_BOOL>; pub type em_pointerlockchange_callback_func = Option EM_BOOL>; pub type em_fullscreenchange_callback_func = Option EM_BOOL>; pub type em_touch_callback_func = Option EM_BOOL>; #[repr(C)] pub struct EmscriptenFullscreenChangeEvent { pub isFullscreen: c_int, pub fullscreenEnabled: c_int, pub nodeName: [c_char; 128usize], pub id: [c_char; 128usize], pub elementWidth: c_int, pub elementHeight: c_int, pub screenWidth: c_int, pub screenHeight: c_int, } #[test] fn bindgen_test_layout_EmscriptenFullscreenChangeEvent() { assert_eq!(mem::size_of::(), 280usize); assert_eq!(mem::align_of::(), 4usize); } #[repr(C)] #[derive(Debug, Copy)] pub struct EmscriptenKeyboardEvent { pub key: [c_char; 32usize], pub code: [c_char; 32usize], pub location: c_ulong, pub ctrlKey: c_int, pub shiftKey: c_int, pub altKey: c_int, pub metaKey: c_int, pub repeat: c_int, pub locale: [c_char; 32usize], pub charValue: [c_char; 32usize], pub charCode: c_ulong, pub keyCode: c_ulong, pub which: c_ulong, } #[test] fn bindgen_test_layout_EmscriptenKeyboardEvent() { assert_eq!(mem::size_of::(), 184usize); assert_eq!(mem::align_of::(), 8usize); } impl Clone for EmscriptenKeyboardEvent { fn clone(&self) -> Self { *self } } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct EmscriptenMouseEvent { pub timestamp: f64, pub screenX: c_long, pub screenY: c_long, pub clientX: c_long, pub clientY: c_long, pub ctrlKey: c_int, pub shiftKey: c_int, pub altKey: c_int, pub metaKey: c_int, pub button: c_ushort, pub buttons: c_ushort, pub movementX: c_long, pub movementY: c_long, pub targetX: c_long, pub targetY: c_long, pub canvasX: c_long, pub canvasY: c_long, pub padding: c_long, } #[test] fn bindgen_test_layout_EmscriptenMouseEvent() { assert_eq!(mem::size_of::(), 120usize); assert_eq!(mem::align_of::(), 8usize); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct EmscriptenTouchPoint { pub identifier: c_long, pub screenX: c_long, pub screenY: c_long, pub clientX: c_long, pub clientY: c_long, pub pageX: c_long, pub pageY: c_long, pub isChanged: c_int, pub onTarget: c_int, pub targetX: c_long, pub targetY: c_long, pub canvasX: c_long, pub canvasY: c_long, } #[test] fn bindgen_test_layout_EmscriptenTouchPoint() { assert_eq!(mem::size_of::(), 96usize); assert_eq!(mem::align_of::(), 8usize); } #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct EmscriptenTouchEvent { pub numTouches: c_int, pub ctrlKey: c_int, pub shiftKey: c_int, pub altKey: c_int, pub metaKey: c_int, pub touches: [EmscriptenTouchPoint; 32usize], } #[test] fn bindgen_test_layout_EmscriptenTouchEvent() { assert_eq!(mem::size_of::(), 3096usize); assert_eq!(mem::align_of::(), 8usize); } #[repr(C)] pub struct EmscriptenPointerlockChangeEvent { pub isActive: c_int, pub nodeName: [c_char; 128usize], pub id: [c_char; 128usize], } #[test] fn bindgen_test_layout_EmscriptenPointerlockChangeEvent() { assert_eq!(mem::size_of::(), 260usize); assert_eq!(mem::align_of::(), 4usize); } extern "C" { pub fn emscripten_set_canvas_size( width: c_int, height: c_int) -> EMSCRIPTEN_RESULT; pub fn emscripten_get_canvas_size( width: *mut c_int, height: *mut c_int, is_fullscreen: *mut c_int) -> EMSCRIPTEN_RESULT; pub fn emscripten_set_element_css_size( target: *const c_char, width: c_double, height: c_double) -> EMSCRIPTEN_RESULT; pub fn emscripten_get_element_css_size( target: *const c_char, width: *mut c_double, height: *mut c_double) -> EMSCRIPTEN_RESULT; pub fn emscripten_request_pointerlock( target: *const c_char, deferUntilInEventHandler: EM_BOOL) -> EMSCRIPTEN_RESULT; pub fn emscripten_exit_pointerlock() -> EMSCRIPTEN_RESULT; pub fn emscripten_request_fullscreen( target: *const c_char, deferUntilInEventHandler: EM_BOOL) -> EMSCRIPTEN_RESULT; pub fn emscripten_exit_fullscreen() -> EMSCRIPTEN_RESULT; pub fn emscripten_set_keydown_callback( target: *const c_char, userData: *mut c_void, useCapture: EM_BOOL, callback: em_key_callback_func) -> EMSCRIPTEN_RESULT; pub fn emscripten_set_keyup_callback( target: *const c_char, userData: *mut c_void, useCapture: EM_BOOL, callback: em_key_callback_func) -> EMSCRIPTEN_RESULT; pub fn emscripten_set_mousemove_callback( target: *const c_char, user_data: *mut c_void, use_capture: EM_BOOL, callback: em_mouse_callback_func) -> EMSCRIPTEN_RESULT; pub fn emscripten_set_mousedown_callback( target: *const c_char, user_data: *mut c_void, use_capture: EM_BOOL, callback: em_mouse_callback_func) -> EMSCRIPTEN_RESULT; pub fn emscripten_set_mouseup_callback( target: *const c_char, user_data: *mut c_void, use_capture: EM_BOOL, callback: em_mouse_callback_func) -> EMSCRIPTEN_RESULT; pub fn emscripten_hide_mouse(); pub fn emscripten_get_device_pixel_ratio() -> f64; pub fn emscripten_set_pointerlockchange_callback( target: *const c_char, userData: *mut c_void, useCapture: EM_BOOL, callback: em_pointerlockchange_callback_func) -> EMSCRIPTEN_RESULT; pub fn emscripten_set_fullscreenchange_callback( target: *const c_char, userData: *mut c_void, useCapture: EM_BOOL, callback: em_fullscreenchange_callback_func) -> EMSCRIPTEN_RESULT; pub fn emscripten_asm_const(code: *const c_char); pub fn emscripten_set_main_loop( func: em_callback_func, fps: c_int, simulate_infinite_loop: EM_BOOL); pub fn emscripten_cancel_main_loop(); pub fn emscripten_set_touchstart_callback( target: *const c_char, userData: *mut c_void, useCapture: c_int, callback: em_touch_callback_func) -> EMSCRIPTEN_RESULT; pub fn emscripten_set_touchend_callback( target: *const c_char, userData: *mut c_void, useCapture: c_int, callback: em_touch_callback_func) -> EMSCRIPTEN_RESULT; pub fn emscripten_set_touchmove_callback( target: *const c_char, userData: *mut c_void, useCapture: c_int, callback: em_touch_callback_func) -> EMSCRIPTEN_RESULT; pub fn emscripten_set_touchcancel_callback( target: *const c_char, userData: *mut c_void, useCapture: c_int, callback: em_touch_callback_func) -> EMSCRIPTEN_RESULT; }