From 3e2265321bbe918e46b294110ce6c0ce96876102 Mon Sep 17 00:00:00 2001 From: Jon Emil Jahren Date: Sun, 1 Apr 2018 23:27:25 +0200 Subject: [PATCH 01/19] Bindgen cleanup and update version to 0.35 Closes #744 Defines were not set correctly as target matching was wrong. Removed hide_type deprecated binding builder method use, in favor of blacklist_type. Added rustified_enum call, since newer bindgen versions will make constants instead of enums breaking the sdl2-sys crate. Bindings were regenerated using the following command: cargo build --features bindgen --- sdl2-sys/Cargo.toml | 2 +- sdl2-sys/build.rs | 11 +- sdl2-sys/pregenerated_bindings.rs | 31456 +++++++++++++++++++++------- 3 files changed, 23640 insertions(+), 7829 deletions(-) diff --git a/sdl2-sys/Cargo.toml b/sdl2-sys/Cargo.toml index 921f0051408..8c399288733 100644 --- a/sdl2-sys/Cargo.toml +++ b/sdl2-sys/Cargo.toml @@ -16,7 +16,7 @@ name = "sdl2_sys" path = "src/lib.rs" [build-dependencies.bindgen] -version = "0.31" +version = "0.35" optional = true [build-dependencies.pkg-config] diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index d8c553e040e..3403cd5e4cc 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -273,20 +273,15 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str }; // SDL2 hasn't a default configuration for Linux - if target_os == "linux" { + if target_os == "linux-gnu" { bindings = bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); bindings = bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); } let bindings = bindings .header("wrapper.h") - .hide_type("_") - .hide_type("FP_NAN") - .hide_type("FP_INFINITE") - .hide_type("FP_ZERO") - .hide_type("FP_SUBNORMAL") - .hide_type("FP_NORMAL") // Until https://github.com/rust-lang-nursery/rust-bindgen/issues/687 gets fixed - .hide_type("max_align_t") // Until https://github.com/rust-lang-nursery/rust-bindgen/issues/550 gets fixed + .rustified_enum(".*") + .blacklist_type("max_align_t") // Until https://github.com/rust-lang-nursery/rust-bindgen/issues/550 gets fixed .generate() .expect("Unable to generate bindings!"); diff --git a/sdl2-sys/pregenerated_bindings.rs b/sdl2-sys/pregenerated_bindings.rs index d5af959d80b..48975838e73 100644 --- a/sdl2-sys/pregenerated_bindings.rs +++ b/sdl2-sys/pregenerated_bindings.rs @@ -1,441 +1,863 @@ /* automatically generated by rust-bindgen */ -pub const __LINUX__: ::std::os::raw::c_uint = 1; -pub const HAVE_STDARG_H: ::std::os::raw::c_uint = 1; -pub const HAVE_STDDEF_H: ::std::os::raw::c_uint = 1; -pub const HAVE_STDINT_H: ::std::os::raw::c_uint = 1; -pub const HAVE_GCC_SYNC_LOCK_TEST_AND_SET: ::std::os::raw::c_uint = 1; -pub const SDL_AUDIO_DRIVER_DUMMY: ::std::os::raw::c_uint = 1; -pub const SDL_JOYSTICK_DISABLED: ::std::os::raw::c_uint = 1; -pub const SDL_HAPTIC_DISABLED: ::std::os::raw::c_uint = 1; -pub const SDL_LOADSO_DISABLED: ::std::os::raw::c_uint = 1; -pub const SDL_THREADS_DISABLED: ::std::os::raw::c_uint = 1; -pub const SDL_TIMERS_DISABLED: ::std::os::raw::c_uint = 1; -pub const SDL_VIDEO_DRIVER_DUMMY: ::std::os::raw::c_uint = 1; -pub const SDL_FILESYSTEM_DUMMY: ::std::os::raw::c_uint = 1; -pub const __GNUC_VA_LIST: ::std::os::raw::c_uint = 1; -pub const _STDINT_H: ::std::os::raw::c_uint = 1; -pub const _FEATURES_H: ::std::os::raw::c_uint = 1; -pub const _DEFAULT_SOURCE: ::std::os::raw::c_uint = 1; -pub const __USE_ISOC11: ::std::os::raw::c_uint = 1; -pub const __USE_ISOC99: ::std::os::raw::c_uint = 1; -pub const __USE_ISOC95: ::std::os::raw::c_uint = 1; -pub const __USE_POSIX_IMPLICITLY: ::std::os::raw::c_uint = 1; -pub const _POSIX_SOURCE: ::std::os::raw::c_uint = 1; -pub const _POSIX_C_SOURCE: ::std::os::raw::c_uint = 200809; -pub const __USE_POSIX: ::std::os::raw::c_uint = 1; -pub const __USE_POSIX2: ::std::os::raw::c_uint = 1; -pub const __USE_POSIX199309: ::std::os::raw::c_uint = 1; -pub const __USE_POSIX199506: ::std::os::raw::c_uint = 1; -pub const __USE_XOPEN2K: ::std::os::raw::c_uint = 1; -pub const __USE_XOPEN2K8: ::std::os::raw::c_uint = 1; -pub const _ATFILE_SOURCE: ::std::os::raw::c_uint = 1; -pub const __USE_MISC: ::std::os::raw::c_uint = 1; -pub const __USE_ATFILE: ::std::os::raw::c_uint = 1; -pub const __USE_FORTIFY_LEVEL: ::std::os::raw::c_uint = 0; -pub const __GLIBC_USE_DEPRECATED_GETS: ::std::os::raw::c_uint = 0; -pub const _STDC_PREDEF_H: ::std::os::raw::c_uint = 1; -pub const __STDC_IEC_559__: ::std::os::raw::c_uint = 1; -pub const __STDC_IEC_559_COMPLEX__: ::std::os::raw::c_uint = 1; -pub const __STDC_ISO_10646__: ::std::os::raw::c_uint = 201706; -pub const __STDC_NO_THREADS__: ::std::os::raw::c_uint = 1; -pub const __GNU_LIBRARY__: ::std::os::raw::c_uint = 6; -pub const __GLIBC__: ::std::os::raw::c_uint = 2; -pub const __GLIBC_MINOR__: ::std::os::raw::c_uint = 26; -pub const _SYS_CDEFS_H: ::std::os::raw::c_uint = 1; -pub const __glibc_c99_flexarr_available: ::std::os::raw::c_uint = 1; -pub const __WORDSIZE: ::std::os::raw::c_uint = 64; -pub const __WORDSIZE_TIME64_COMPAT32: ::std::os::raw::c_uint = 1; -pub const __SYSCALL_WORDSIZE: ::std::os::raw::c_uint = 64; -pub const __HAVE_GENERIC_SELECTION: ::std::os::raw::c_uint = 1; -pub const __GLIBC_USE_LIB_EXT2: ::std::os::raw::c_uint = 0; -pub const __GLIBC_USE_IEC_60559_BFP_EXT: ::std::os::raw::c_uint = 0; -pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: ::std::os::raw::c_uint = 0; -pub const __GLIBC_USE_IEC_60559_TYPES_EXT: ::std::os::raw::c_uint = 0; -pub const _BITS_TYPES_H: ::std::os::raw::c_uint = 1; -pub const _BITS_TYPESIZES_H: ::std::os::raw::c_uint = 1; -pub const __OFF_T_MATCHES_OFF64_T: ::std::os::raw::c_uint = 1; -pub const __INO_T_MATCHES_INO64_T: ::std::os::raw::c_uint = 1; -pub const __RLIM_T_MATCHES_RLIM64_T: ::std::os::raw::c_uint = 1; -pub const __FD_SETSIZE: ::std::os::raw::c_uint = 1024; -pub const _BITS_WCHAR_H: ::std::os::raw::c_uint = 1; -pub const _BITS_STDINT_INTN_H: ::std::os::raw::c_uint = 1; -pub const _BITS_STDINT_UINTN_H: ::std::os::raw::c_uint = 1; -pub const INT8_MIN: ::std::os::raw::c_int = -128; -pub const INT16_MIN: ::std::os::raw::c_int = -32768; -pub const INT32_MIN: ::std::os::raw::c_int = -2147483648; -pub const INT8_MAX: ::std::os::raw::c_uint = 127; -pub const INT16_MAX: ::std::os::raw::c_uint = 32767; -pub const INT32_MAX: ::std::os::raw::c_uint = 2147483647; -pub const UINT8_MAX: ::std::os::raw::c_uint = 255; -pub const UINT16_MAX: ::std::os::raw::c_uint = 65535; -pub const UINT32_MAX: ::std::os::raw::c_uint = 4294967295; -pub const INT_LEAST8_MIN: ::std::os::raw::c_int = -128; -pub const INT_LEAST16_MIN: ::std::os::raw::c_int = -32768; -pub const INT_LEAST32_MIN: ::std::os::raw::c_int = -2147483648; -pub const INT_LEAST8_MAX: ::std::os::raw::c_uint = 127; -pub const INT_LEAST16_MAX: ::std::os::raw::c_uint = 32767; -pub const INT_LEAST32_MAX: ::std::os::raw::c_uint = 2147483647; -pub const UINT_LEAST8_MAX: ::std::os::raw::c_uint = 255; -pub const UINT_LEAST16_MAX: ::std::os::raw::c_uint = 65535; -pub const UINT_LEAST32_MAX: ::std::os::raw::c_uint = 4294967295; -pub const INT_FAST8_MIN: ::std::os::raw::c_int = -128; -pub const INT_FAST16_MIN: ::std::os::raw::c_longlong = -9223372036854775808; -pub const INT_FAST32_MIN: ::std::os::raw::c_longlong = -9223372036854775808; -pub const INT_FAST8_MAX: ::std::os::raw::c_uint = 127; -pub const INT_FAST16_MAX: ::std::os::raw::c_ulonglong = 9223372036854775807; -pub const INT_FAST32_MAX: ::std::os::raw::c_ulonglong = 9223372036854775807; -pub const UINT_FAST8_MAX: ::std::os::raw::c_uint = 255; -pub const UINT_FAST16_MAX: ::std::os::raw::c_int = -1; -pub const UINT_FAST32_MAX: ::std::os::raw::c_int = -1; -pub const INTPTR_MIN: ::std::os::raw::c_longlong = -9223372036854775808; -pub const INTPTR_MAX: ::std::os::raw::c_ulonglong = 9223372036854775807; -pub const UINTPTR_MAX: ::std::os::raw::c_int = -1; -pub const PTRDIFF_MIN: ::std::os::raw::c_longlong = -9223372036854775808; -pub const PTRDIFF_MAX: ::std::os::raw::c_ulonglong = 9223372036854775807; -pub const SIG_ATOMIC_MIN: ::std::os::raw::c_int = -2147483648; -pub const SIG_ATOMIC_MAX: ::std::os::raw::c_uint = 2147483647; -pub const SIZE_MAX: ::std::os::raw::c_int = -1; -pub const WINT_MIN: ::std::os::raw::c_uint = 0; -pub const WINT_MAX: ::std::os::raw::c_uint = 4294967295; -pub const SDL_PRIs64: &'static [u8; 3usize] = b"ld\x00"; -pub const SDL_PRIu64: &'static [u8; 3usize] = b"lu\x00"; -pub const SDL_PRIx64: &'static [u8; 3usize] = b"lx\x00"; -pub const SDL_PRIX64: &'static [u8; 3usize] = b"lX\x00"; +pub const __LINUX__: u32 = 1; +pub const HAVE_STDARG_H: u32 = 1; +pub const HAVE_STDDEF_H: u32 = 1; +pub const HAVE_STDINT_H: u32 = 1; +pub const HAVE_GCC_SYNC_LOCK_TEST_AND_SET: u32 = 1; +pub const SDL_AUDIO_DRIVER_DUMMY: u32 = 1; +pub const SDL_JOYSTICK_DISABLED: u32 = 1; +pub const SDL_HAPTIC_DISABLED: u32 = 1; +pub const SDL_LOADSO_DISABLED: u32 = 1; +pub const SDL_THREADS_DISABLED: u32 = 1; +pub const SDL_TIMERS_DISABLED: u32 = 1; +pub const SDL_VIDEO_DRIVER_DUMMY: u32 = 1; +pub const SDL_FILESYSTEM_DUMMY: u32 = 1; +pub const __GNUC_VA_LIST: u32 = 1; +pub const _STDINT_H: u32 = 1; +pub const _FEATURES_H: u32 = 1; +pub const _DEFAULT_SOURCE: u32 = 1; +pub const __USE_ISOC11: u32 = 1; +pub const __USE_ISOC99: u32 = 1; +pub const __USE_ISOC95: u32 = 1; +pub const __USE_POSIX_IMPLICITLY: u32 = 1; +pub const _POSIX_SOURCE: u32 = 1; +pub const _POSIX_C_SOURCE: u32 = 200809; +pub const __USE_POSIX: u32 = 1; +pub const __USE_POSIX2: u32 = 1; +pub const __USE_POSIX199309: u32 = 1; +pub const __USE_POSIX199506: u32 = 1; +pub const __USE_XOPEN2K: u32 = 1; +pub const __USE_XOPEN2K8: u32 = 1; +pub const _ATFILE_SOURCE: u32 = 1; +pub const __USE_MISC: u32 = 1; +pub const __USE_ATFILE: u32 = 1; +pub const __USE_FORTIFY_LEVEL: u32 = 0; +pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0; +pub const _STDC_PREDEF_H: u32 = 1; +pub const __STDC_IEC_559__: u32 = 1; +pub const __STDC_IEC_559_COMPLEX__: u32 = 1; +pub const __STDC_ISO_10646__: u32 = 201706; +pub const __STDC_NO_THREADS__: u32 = 1; +pub const __GNU_LIBRARY__: u32 = 6; +pub const __GLIBC__: u32 = 2; +pub const __GLIBC_MINOR__: u32 = 26; +pub const _SYS_CDEFS_H: u32 = 1; +pub const __glibc_c99_flexarr_available: u32 = 1; +pub const __WORDSIZE: u32 = 64; +pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1; +pub const __SYSCALL_WORDSIZE: u32 = 64; +pub const __HAVE_GENERIC_SELECTION: u32 = 1; +pub const __GLIBC_USE_LIB_EXT2: u32 = 0; +pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0; +pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0; +pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0; +pub const _BITS_TYPES_H: u32 = 1; +pub const _BITS_TYPESIZES_H: u32 = 1; +pub const __OFF_T_MATCHES_OFF64_T: u32 = 1; +pub const __INO_T_MATCHES_INO64_T: u32 = 1; +pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1; +pub const __FD_SETSIZE: u32 = 1024; +pub const _BITS_WCHAR_H: u32 = 1; +pub const _BITS_STDINT_INTN_H: u32 = 1; +pub const _BITS_STDINT_UINTN_H: u32 = 1; +pub const INT8_MIN: i32 = -128; +pub const INT16_MIN: i32 = -32768; +pub const INT32_MIN: i32 = -2147483648; +pub const INT8_MAX: u32 = 127; +pub const INT16_MAX: u32 = 32767; +pub const INT32_MAX: u32 = 2147483647; +pub const UINT8_MAX: u32 = 255; +pub const UINT16_MAX: u32 = 65535; +pub const UINT32_MAX: u32 = 4294967295; +pub const INT_LEAST8_MIN: i32 = -128; +pub const INT_LEAST16_MIN: i32 = -32768; +pub const INT_LEAST32_MIN: i32 = -2147483648; +pub const INT_LEAST8_MAX: u32 = 127; +pub const INT_LEAST16_MAX: u32 = 32767; +pub const INT_LEAST32_MAX: u32 = 2147483647; +pub const UINT_LEAST8_MAX: u32 = 255; +pub const UINT_LEAST16_MAX: u32 = 65535; +pub const UINT_LEAST32_MAX: u32 = 4294967295; +pub const INT_FAST8_MIN: i32 = -128; +pub const INT_FAST16_MIN: i64 = -9223372036854775808; +pub const INT_FAST32_MIN: i64 = -9223372036854775808; +pub const INT_FAST8_MAX: u32 = 127; +pub const INT_FAST16_MAX: u64 = 9223372036854775807; +pub const INT_FAST32_MAX: u64 = 9223372036854775807; +pub const UINT_FAST8_MAX: u32 = 255; +pub const UINT_FAST16_MAX: i32 = -1; +pub const UINT_FAST32_MAX: i32 = -1; +pub const INTPTR_MIN: i64 = -9223372036854775808; +pub const INTPTR_MAX: u64 = 9223372036854775807; +pub const UINTPTR_MAX: i32 = -1; +pub const PTRDIFF_MIN: i64 = -9223372036854775808; +pub const PTRDIFF_MAX: u64 = 9223372036854775807; +pub const SIG_ATOMIC_MIN: i32 = -2147483648; +pub const SIG_ATOMIC_MAX: u32 = 2147483647; +pub const SIZE_MAX: i32 = -1; +pub const WINT_MIN: u32 = 0; +pub const WINT_MAX: u32 = 4294967295; +pub const SDL_PRIs64: &'static [u8; 3usize] = b"ld\0"; +pub const SDL_PRIu64: &'static [u8; 3usize] = b"lu\0"; +pub const SDL_PRIx64: &'static [u8; 3usize] = b"lx\0"; +pub const SDL_PRIX64: &'static [u8; 3usize] = b"lX\0"; pub const M_PI: f64 = 3.141592653589793; -pub const SDL_ASSERT_LEVEL: ::std::os::raw::c_uint = 2; -pub const SDL_NULL_WHILE_LOOP_CONDITION: ::std::os::raw::c_uint = 0; -pub const SDL_LIL_ENDIAN: ::std::os::raw::c_uint = 1234; -pub const SDL_BIG_ENDIAN: ::std::os::raw::c_uint = 4321; -pub const _ENDIAN_H: ::std::os::raw::c_uint = 1; -pub const __LITTLE_ENDIAN: ::std::os::raw::c_uint = 1234; -pub const __BIG_ENDIAN: ::std::os::raw::c_uint = 4321; -pub const __PDP_ENDIAN: ::std::os::raw::c_uint = 3412; -pub const __BYTE_ORDER: ::std::os::raw::c_uint = 1234; -pub const __FLOAT_WORD_ORDER: ::std::os::raw::c_uint = 1234; -pub const LITTLE_ENDIAN: ::std::os::raw::c_uint = 1234; -pub const BIG_ENDIAN: ::std::os::raw::c_uint = 4321; -pub const PDP_ENDIAN: ::std::os::raw::c_uint = 3412; -pub const BYTE_ORDER: ::std::os::raw::c_uint = 1234; -pub const _BITS_BYTESWAP_H: ::std::os::raw::c_uint = 1; -pub const _BITS_UINTN_IDENTITY_H: ::std::os::raw::c_uint = 1; -pub const SDL_BYTEORDER: ::std::os::raw::c_uint = 1234; -pub const SDL_MUTEX_TIMEDOUT: ::std::os::raw::c_uint = 1; -pub const SDL_RWOPS_UNKNOWN: ::std::os::raw::c_uint = 0; -pub const SDL_RWOPS_WINFILE: ::std::os::raw::c_uint = 1; -pub const SDL_RWOPS_STDFILE: ::std::os::raw::c_uint = 2; -pub const SDL_RWOPS_JNIFILE: ::std::os::raw::c_uint = 3; -pub const SDL_RWOPS_MEMORY: ::std::os::raw::c_uint = 4; -pub const SDL_RWOPS_MEMORY_RO: ::std::os::raw::c_uint = 5; -pub const RW_SEEK_SET: ::std::os::raw::c_uint = 0; -pub const RW_SEEK_CUR: ::std::os::raw::c_uint = 1; -pub const RW_SEEK_END: ::std::os::raw::c_uint = 2; -pub const SDL_AUDIO_MASK_BITSIZE: ::std::os::raw::c_uint = 255; -pub const SDL_AUDIO_MASK_DATATYPE: ::std::os::raw::c_uint = 256; -pub const SDL_AUDIO_MASK_ENDIAN: ::std::os::raw::c_uint = 4096; -pub const SDL_AUDIO_MASK_SIGNED: ::std::os::raw::c_uint = 32768; -pub const AUDIO_U8: ::std::os::raw::c_uint = 8; -pub const AUDIO_S8: ::std::os::raw::c_uint = 32776; -pub const AUDIO_U16LSB: ::std::os::raw::c_uint = 16; -pub const AUDIO_S16LSB: ::std::os::raw::c_uint = 32784; -pub const AUDIO_U16MSB: ::std::os::raw::c_uint = 4112; -pub const AUDIO_S16MSB: ::std::os::raw::c_uint = 36880; -pub const AUDIO_U16: ::std::os::raw::c_uint = 16; -pub const AUDIO_S16: ::std::os::raw::c_uint = 32784; -pub const AUDIO_S32LSB: ::std::os::raw::c_uint = 32800; -pub const AUDIO_S32MSB: ::std::os::raw::c_uint = 36896; -pub const AUDIO_S32: ::std::os::raw::c_uint = 32800; -pub const AUDIO_F32LSB: ::std::os::raw::c_uint = 33056; -pub const AUDIO_F32MSB: ::std::os::raw::c_uint = 37152; -pub const AUDIO_F32: ::std::os::raw::c_uint = 33056; -pub const AUDIO_U16SYS: ::std::os::raw::c_uint = 16; -pub const AUDIO_S16SYS: ::std::os::raw::c_uint = 32784; -pub const AUDIO_S32SYS: ::std::os::raw::c_uint = 32800; -pub const AUDIO_F32SYS: ::std::os::raw::c_uint = 33056; -pub const SDL_AUDIO_ALLOW_FREQUENCY_CHANGE: ::std::os::raw::c_uint = 1; -pub const SDL_AUDIO_ALLOW_FORMAT_CHANGE: ::std::os::raw::c_uint = 2; -pub const SDL_AUDIO_ALLOW_CHANNELS_CHANGE: ::std::os::raw::c_uint = 4; -pub const SDL_AUDIO_ALLOW_ANY_CHANGE: ::std::os::raw::c_uint = 7; -pub const SDL_AUDIOCVT_MAX_FILTERS: ::std::os::raw::c_uint = 9; -pub const SDL_MIX_MAXVOLUME: ::std::os::raw::c_uint = 128; -pub const _STDLIB_H: ::std::os::raw::c_uint = 1; -pub const WNOHANG: ::std::os::raw::c_uint = 1; -pub const WUNTRACED: ::std::os::raw::c_uint = 2; -pub const WSTOPPED: ::std::os::raw::c_uint = 2; -pub const WEXITED: ::std::os::raw::c_uint = 4; -pub const WCONTINUED: ::std::os::raw::c_uint = 8; -pub const WNOWAIT: ::std::os::raw::c_uint = 16777216; -pub const __WNOTHREAD: ::std::os::raw::c_uint = 536870912; -pub const __WALL: ::std::os::raw::c_uint = 1073741824; -pub const __WCLONE: ::std::os::raw::c_uint = 2147483648; -pub const __W_CONTINUED: ::std::os::raw::c_uint = 65535; -pub const __WCOREFLAG: ::std::os::raw::c_uint = 128; -pub const __HAVE_FLOAT128: ::std::os::raw::c_uint = 0; -pub const __HAVE_DISTINCT_FLOAT128: ::std::os::raw::c_uint = 0; -pub const __ldiv_t_defined: ::std::os::raw::c_uint = 1; -pub const __lldiv_t_defined: ::std::os::raw::c_uint = 1; -pub const RAND_MAX: ::std::os::raw::c_uint = 2147483647; -pub const EXIT_FAILURE: ::std::os::raw::c_uint = 1; -pub const EXIT_SUCCESS: ::std::os::raw::c_uint = 0; -pub const _SYS_TYPES_H: ::std::os::raw::c_uint = 1; -pub const __clock_t_defined: ::std::os::raw::c_uint = 1; -pub const __clockid_t_defined: ::std::os::raw::c_uint = 1; -pub const __time_t_defined: ::std::os::raw::c_uint = 1; -pub const __timer_t_defined: ::std::os::raw::c_uint = 1; -pub const __BIT_TYPES_DEFINED__: ::std::os::raw::c_uint = 1; -pub const _SYS_SELECT_H: ::std::os::raw::c_uint = 1; -pub const __FD_ZERO_STOS: &'static [u8; 6usize] = b"stosq\x00"; -pub const __sigset_t_defined: ::std::os::raw::c_uint = 1; -pub const __timeval_defined: ::std::os::raw::c_uint = 1; -pub const __timespec_defined: ::std::os::raw::c_uint = 1; -pub const FD_SETSIZE: ::std::os::raw::c_uint = 1024; -pub const _SYS_SYSMACROS_H: ::std::os::raw::c_uint = 1; -pub const _BITS_SYSMACROS_H: ::std::os::raw::c_uint = 1; -pub const _BITS_PTHREADTYPES_COMMON_H: ::std::os::raw::c_uint = 1; -pub const _THREAD_SHARED_TYPES_H: ::std::os::raw::c_uint = 1; -pub const _BITS_PTHREADTYPES_ARCH_H: ::std::os::raw::c_uint = 1; -pub const __SIZEOF_PTHREAD_MUTEX_T: ::std::os::raw::c_uint = 40; -pub const __SIZEOF_PTHREAD_ATTR_T: ::std::os::raw::c_uint = 56; -pub const __SIZEOF_PTHREAD_RWLOCK_T: ::std::os::raw::c_uint = 56; -pub const __SIZEOF_PTHREAD_BARRIER_T: ::std::os::raw::c_uint = 32; -pub const __SIZEOF_PTHREAD_MUTEXATTR_T: ::std::os::raw::c_uint = 4; -pub const __SIZEOF_PTHREAD_COND_T: ::std::os::raw::c_uint = 48; -pub const __SIZEOF_PTHREAD_CONDATTR_T: ::std::os::raw::c_uint = 4; -pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: ::std::os::raw::c_uint = 8; -pub const __SIZEOF_PTHREAD_BARRIERATTR_T: ::std::os::raw::c_uint = 4; -pub const __PTHREAD_MUTEX_LOCK_ELISION: ::std::os::raw::c_uint = 1; -pub const __PTHREAD_RWLOCK_INT_FLAGS_SHARED: ::std::os::raw::c_uint = 1; -pub const __PTHREAD_MUTEX_HAVE_PREV: ::std::os::raw::c_uint = 1; -pub const __have_pthread_attr_t: ::std::os::raw::c_uint = 1; -pub const _ALLOCA_H: ::std::os::raw::c_uint = 1; -pub const _MM_HINT_T0: ::std::os::raw::c_uint = 3; -pub const _MM_HINT_T1: ::std::os::raw::c_uint = 2; -pub const _MM_HINT_T2: ::std::os::raw::c_uint = 1; -pub const _MM_HINT_NTA: ::std::os::raw::c_uint = 0; -pub const _MM_EXCEPT_INVALID: ::std::os::raw::c_uint = 1; -pub const _MM_EXCEPT_DENORM: ::std::os::raw::c_uint = 2; -pub const _MM_EXCEPT_DIV_ZERO: ::std::os::raw::c_uint = 4; -pub const _MM_EXCEPT_OVERFLOW: ::std::os::raw::c_uint = 8; -pub const _MM_EXCEPT_UNDERFLOW: ::std::os::raw::c_uint = 16; -pub const _MM_EXCEPT_INEXACT: ::std::os::raw::c_uint = 32; -pub const _MM_EXCEPT_MASK: ::std::os::raw::c_uint = 63; -pub const _MM_MASK_INVALID: ::std::os::raw::c_uint = 128; -pub const _MM_MASK_DENORM: ::std::os::raw::c_uint = 256; -pub const _MM_MASK_DIV_ZERO: ::std::os::raw::c_uint = 512; -pub const _MM_MASK_OVERFLOW: ::std::os::raw::c_uint = 1024; -pub const _MM_MASK_UNDERFLOW: ::std::os::raw::c_uint = 2048; -pub const _MM_MASK_INEXACT: ::std::os::raw::c_uint = 4096; -pub const _MM_MASK_MASK: ::std::os::raw::c_uint = 8064; -pub const _MM_ROUND_NEAREST: ::std::os::raw::c_uint = 0; -pub const _MM_ROUND_DOWN: ::std::os::raw::c_uint = 8192; -pub const _MM_ROUND_UP: ::std::os::raw::c_uint = 16384; -pub const _MM_ROUND_TOWARD_ZERO: ::std::os::raw::c_uint = 24576; -pub const _MM_ROUND_MASK: ::std::os::raw::c_uint = 24576; -pub const _MM_FLUSH_ZERO_MASK: ::std::os::raw::c_uint = 32768; -pub const _MM_FLUSH_ZERO_ON: ::std::os::raw::c_uint = 32768; -pub const _MM_FLUSH_ZERO_OFF: ::std::os::raw::c_uint = 0; -pub const _MM_DENORMALS_ZERO_ON: ::std::os::raw::c_uint = 64; -pub const _MM_DENORMALS_ZERO_OFF: ::std::os::raw::c_uint = 0; -pub const _MM_DENORMALS_ZERO_MASK: ::std::os::raw::c_uint = 64; -pub const SDL_CACHELINE_SIZE: ::std::os::raw::c_uint = 128; -pub const SDL_ALPHA_OPAQUE: ::std::os::raw::c_uint = 255; -pub const SDL_ALPHA_TRANSPARENT: ::std::os::raw::c_uint = 0; -pub const SDL_SWSURFACE: ::std::os::raw::c_uint = 0; -pub const SDL_PREALLOC: ::std::os::raw::c_uint = 1; -pub const SDL_RLEACCEL: ::std::os::raw::c_uint = 2; -pub const SDL_DONTFREE: ::std::os::raw::c_uint = 4; -pub const SDL_WINDOWPOS_UNDEFINED_MASK: ::std::os::raw::c_uint = 536805376; -pub const SDL_WINDOWPOS_CENTERED_MASK: ::std::os::raw::c_uint = 805240832; -pub const SDLK_SCANCODE_MASK: ::std::os::raw::c_uint = 1073741824; -pub const SDL_BUTTON_LEFT: ::std::os::raw::c_uint = 1; -pub const SDL_BUTTON_MIDDLE: ::std::os::raw::c_uint = 2; -pub const SDL_BUTTON_RIGHT: ::std::os::raw::c_uint = 3; -pub const SDL_BUTTON_X1: ::std::os::raw::c_uint = 4; -pub const SDL_BUTTON_X2: ::std::os::raw::c_uint = 5; -pub const SDL_JOYSTICK_AXIS_MAX: ::std::os::raw::c_uint = 32767; -pub const SDL_JOYSTICK_AXIS_MIN: ::std::os::raw::c_int = -32768; -pub const SDL_HAT_CENTERED: ::std::os::raw::c_uint = 0; -pub const SDL_HAT_UP: ::std::os::raw::c_uint = 1; -pub const SDL_HAT_RIGHT: ::std::os::raw::c_uint = 2; -pub const SDL_HAT_DOWN: ::std::os::raw::c_uint = 4; -pub const SDL_HAT_LEFT: ::std::os::raw::c_uint = 8; -pub const SDL_HAT_RIGHTUP: ::std::os::raw::c_uint = 3; -pub const SDL_HAT_RIGHTDOWN: ::std::os::raw::c_uint = 6; -pub const SDL_HAT_LEFTUP: ::std::os::raw::c_uint = 9; -pub const SDL_HAT_LEFTDOWN: ::std::os::raw::c_uint = 12; -pub const SDL_RELEASED: ::std::os::raw::c_uint = 0; -pub const SDL_PRESSED: ::std::os::raw::c_uint = 1; -pub const SDL_TEXTEDITINGEVENT_TEXT_SIZE: ::std::os::raw::c_uint = 32; -pub const SDL_TEXTINPUTEVENT_TEXT_SIZE: ::std::os::raw::c_uint = 32; -pub const SDL_QUERY: ::std::os::raw::c_int = -1; -pub const SDL_IGNORE: ::std::os::raw::c_uint = 0; -pub const SDL_DISABLE: ::std::os::raw::c_uint = 0; -pub const SDL_ENABLE: ::std::os::raw::c_uint = 1; -pub const SDL_HAPTIC_CONSTANT: ::std::os::raw::c_uint = 1; -pub const SDL_HAPTIC_SINE: ::std::os::raw::c_uint = 2; -pub const SDL_HAPTIC_LEFTRIGHT: ::std::os::raw::c_uint = 4; -pub const SDL_HAPTIC_TRIANGLE: ::std::os::raw::c_uint = 8; -pub const SDL_HAPTIC_SAWTOOTHUP: ::std::os::raw::c_uint = 16; -pub const SDL_HAPTIC_SAWTOOTHDOWN: ::std::os::raw::c_uint = 32; -pub const SDL_HAPTIC_RAMP: ::std::os::raw::c_uint = 64; -pub const SDL_HAPTIC_SPRING: ::std::os::raw::c_uint = 128; -pub const SDL_HAPTIC_DAMPER: ::std::os::raw::c_uint = 256; -pub const SDL_HAPTIC_INERTIA: ::std::os::raw::c_uint = 512; -pub const SDL_HAPTIC_FRICTION: ::std::os::raw::c_uint = 1024; -pub const SDL_HAPTIC_CUSTOM: ::std::os::raw::c_uint = 2048; -pub const SDL_HAPTIC_GAIN: ::std::os::raw::c_uint = 4096; -pub const SDL_HAPTIC_AUTOCENTER: ::std::os::raw::c_uint = 8192; -pub const SDL_HAPTIC_STATUS: ::std::os::raw::c_uint = 16384; -pub const SDL_HAPTIC_PAUSE: ::std::os::raw::c_uint = 32768; -pub const SDL_HAPTIC_POLAR: ::std::os::raw::c_uint = 0; -pub const SDL_HAPTIC_CARTESIAN: ::std::os::raw::c_uint = 1; -pub const SDL_HAPTIC_SPHERICAL: ::std::os::raw::c_uint = 2; -pub const SDL_HAPTIC_INFINITY: ::std::os::raw::c_uint = 4294967295; +pub const SDL_ASSERT_LEVEL: u32 = 2; +pub const SDL_NULL_WHILE_LOOP_CONDITION: u32 = 0; +pub const SDL_LIL_ENDIAN: u32 = 1234; +pub const SDL_BIG_ENDIAN: u32 = 4321; +pub const _ENDIAN_H: u32 = 1; +pub const __LITTLE_ENDIAN: u32 = 1234; +pub const __BIG_ENDIAN: u32 = 4321; +pub const __PDP_ENDIAN: u32 = 3412; +pub const __BYTE_ORDER: u32 = 1234; +pub const __FLOAT_WORD_ORDER: u32 = 1234; +pub const LITTLE_ENDIAN: u32 = 1234; +pub const BIG_ENDIAN: u32 = 4321; +pub const PDP_ENDIAN: u32 = 3412; +pub const BYTE_ORDER: u32 = 1234; +pub const _BITS_BYTESWAP_H: u32 = 1; +pub const _BITS_UINTN_IDENTITY_H: u32 = 1; +pub const SDL_BYTEORDER: u32 = 1234; +pub const SDL_MUTEX_TIMEDOUT: u32 = 1; +pub const SDL_RWOPS_UNKNOWN: u32 = 0; +pub const SDL_RWOPS_WINFILE: u32 = 1; +pub const SDL_RWOPS_STDFILE: u32 = 2; +pub const SDL_RWOPS_JNIFILE: u32 = 3; +pub const SDL_RWOPS_MEMORY: u32 = 4; +pub const SDL_RWOPS_MEMORY_RO: u32 = 5; +pub const RW_SEEK_SET: u32 = 0; +pub const RW_SEEK_CUR: u32 = 1; +pub const RW_SEEK_END: u32 = 2; +pub const SDL_AUDIO_MASK_BITSIZE: u32 = 255; +pub const SDL_AUDIO_MASK_DATATYPE: u32 = 256; +pub const SDL_AUDIO_MASK_ENDIAN: u32 = 4096; +pub const SDL_AUDIO_MASK_SIGNED: u32 = 32768; +pub const AUDIO_U8: u32 = 8; +pub const AUDIO_S8: u32 = 32776; +pub const AUDIO_U16LSB: u32 = 16; +pub const AUDIO_S16LSB: u32 = 32784; +pub const AUDIO_U16MSB: u32 = 4112; +pub const AUDIO_S16MSB: u32 = 36880; +pub const AUDIO_U16: u32 = 16; +pub const AUDIO_S16: u32 = 32784; +pub const AUDIO_S32LSB: u32 = 32800; +pub const AUDIO_S32MSB: u32 = 36896; +pub const AUDIO_S32: u32 = 32800; +pub const AUDIO_F32LSB: u32 = 33056; +pub const AUDIO_F32MSB: u32 = 37152; +pub const AUDIO_F32: u32 = 33056; +pub const AUDIO_U16SYS: u32 = 16; +pub const AUDIO_S16SYS: u32 = 32784; +pub const AUDIO_S32SYS: u32 = 32800; +pub const AUDIO_F32SYS: u32 = 33056; +pub const SDL_AUDIO_ALLOW_FREQUENCY_CHANGE: u32 = 1; +pub const SDL_AUDIO_ALLOW_FORMAT_CHANGE: u32 = 2; +pub const SDL_AUDIO_ALLOW_CHANNELS_CHANGE: u32 = 4; +pub const SDL_AUDIO_ALLOW_ANY_CHANGE: u32 = 7; +pub const SDL_AUDIOCVT_MAX_FILTERS: u32 = 9; +pub const SDL_MIX_MAXVOLUME: u32 = 128; +pub const _STDLIB_H: u32 = 1; +pub const WNOHANG: u32 = 1; +pub const WUNTRACED: u32 = 2; +pub const WSTOPPED: u32 = 2; +pub const WEXITED: u32 = 4; +pub const WCONTINUED: u32 = 8; +pub const WNOWAIT: u32 = 16777216; +pub const __WNOTHREAD: u32 = 536870912; +pub const __WALL: u32 = 1073741824; +pub const __WCLONE: u32 = 2147483648; +pub const __W_CONTINUED: u32 = 65535; +pub const __WCOREFLAG: u32 = 128; +pub const __HAVE_FLOAT128: u32 = 0; +pub const __HAVE_DISTINCT_FLOAT128: u32 = 0; +pub const __ldiv_t_defined: u32 = 1; +pub const __lldiv_t_defined: u32 = 1; +pub const RAND_MAX: u32 = 2147483647; +pub const EXIT_FAILURE: u32 = 1; +pub const EXIT_SUCCESS: u32 = 0; +pub const _SYS_TYPES_H: u32 = 1; +pub const __clock_t_defined: u32 = 1; +pub const __clockid_t_defined: u32 = 1; +pub const __time_t_defined: u32 = 1; +pub const __timer_t_defined: u32 = 1; +pub const __BIT_TYPES_DEFINED__: u32 = 1; +pub const _SYS_SELECT_H: u32 = 1; +pub const __FD_ZERO_STOS: &'static [u8; 6usize] = b"stosq\0"; +pub const __sigset_t_defined: u32 = 1; +pub const __timeval_defined: u32 = 1; +pub const __timespec_defined: u32 = 1; +pub const FD_SETSIZE: u32 = 1024; +pub const _SYS_SYSMACROS_H: u32 = 1; +pub const _BITS_SYSMACROS_H: u32 = 1; +pub const _BITS_PTHREADTYPES_COMMON_H: u32 = 1; +pub const _THREAD_SHARED_TYPES_H: u32 = 1; +pub const _BITS_PTHREADTYPES_ARCH_H: u32 = 1; +pub const __SIZEOF_PTHREAD_MUTEX_T: u32 = 40; +pub const __SIZEOF_PTHREAD_ATTR_T: u32 = 56; +pub const __SIZEOF_PTHREAD_RWLOCK_T: u32 = 56; +pub const __SIZEOF_PTHREAD_BARRIER_T: u32 = 32; +pub const __SIZEOF_PTHREAD_MUTEXATTR_T: u32 = 4; +pub const __SIZEOF_PTHREAD_COND_T: u32 = 48; +pub const __SIZEOF_PTHREAD_CONDATTR_T: u32 = 4; +pub const __SIZEOF_PTHREAD_RWLOCKATTR_T: u32 = 8; +pub const __SIZEOF_PTHREAD_BARRIERATTR_T: u32 = 4; +pub const __PTHREAD_MUTEX_LOCK_ELISION: u32 = 1; +pub const __PTHREAD_MUTEX_NUSERS_AFTER_KIND: u32 = 0; +pub const __PTHREAD_MUTEX_USE_UNION: u32 = 0; +pub const __PTHREAD_RWLOCK_INT_FLAGS_SHARED: u32 = 1; +pub const __PTHREAD_MUTEX_HAVE_PREV: u32 = 1; +pub const __have_pthread_attr_t: u32 = 1; +pub const _ALLOCA_H: u32 = 1; +pub const _MM_HINT_T0: u32 = 3; +pub const _MM_HINT_T1: u32 = 2; +pub const _MM_HINT_T2: u32 = 1; +pub const _MM_HINT_NTA: u32 = 0; +pub const _MM_EXCEPT_INVALID: u32 = 1; +pub const _MM_EXCEPT_DENORM: u32 = 2; +pub const _MM_EXCEPT_DIV_ZERO: u32 = 4; +pub const _MM_EXCEPT_OVERFLOW: u32 = 8; +pub const _MM_EXCEPT_UNDERFLOW: u32 = 16; +pub const _MM_EXCEPT_INEXACT: u32 = 32; +pub const _MM_EXCEPT_MASK: u32 = 63; +pub const _MM_MASK_INVALID: u32 = 128; +pub const _MM_MASK_DENORM: u32 = 256; +pub const _MM_MASK_DIV_ZERO: u32 = 512; +pub const _MM_MASK_OVERFLOW: u32 = 1024; +pub const _MM_MASK_UNDERFLOW: u32 = 2048; +pub const _MM_MASK_INEXACT: u32 = 4096; +pub const _MM_MASK_MASK: u32 = 8064; +pub const _MM_ROUND_NEAREST: u32 = 0; +pub const _MM_ROUND_DOWN: u32 = 8192; +pub const _MM_ROUND_UP: u32 = 16384; +pub const _MM_ROUND_TOWARD_ZERO: u32 = 24576; +pub const _MM_ROUND_MASK: u32 = 24576; +pub const _MM_FLUSH_ZERO_MASK: u32 = 32768; +pub const _MM_FLUSH_ZERO_ON: u32 = 32768; +pub const _MM_FLUSH_ZERO_OFF: u32 = 0; +pub const _MM_DENORMALS_ZERO_ON: u32 = 64; +pub const _MM_DENORMALS_ZERO_OFF: u32 = 0; +pub const _MM_DENORMALS_ZERO_MASK: u32 = 64; +pub const SDL_CACHELINE_SIZE: u32 = 128; +pub const SDL_ALPHA_OPAQUE: u32 = 255; +pub const SDL_ALPHA_TRANSPARENT: u32 = 0; +pub const SDL_SWSURFACE: u32 = 0; +pub const SDL_PREALLOC: u32 = 1; +pub const SDL_RLEACCEL: u32 = 2; +pub const SDL_DONTFREE: u32 = 4; +pub const SDL_WINDOWPOS_UNDEFINED_MASK: u32 = 536805376; +pub const SDL_WINDOWPOS_CENTERED_MASK: u32 = 805240832; +pub const SDLK_SCANCODE_MASK: u32 = 1073741824; +pub const SDL_BUTTON_LEFT: u32 = 1; +pub const SDL_BUTTON_MIDDLE: u32 = 2; +pub const SDL_BUTTON_RIGHT: u32 = 3; +pub const SDL_BUTTON_X1: u32 = 4; +pub const SDL_BUTTON_X2: u32 = 5; +pub const SDL_JOYSTICK_AXIS_MAX: u32 = 32767; +pub const SDL_JOYSTICK_AXIS_MIN: i32 = -32768; +pub const SDL_HAT_CENTERED: u32 = 0; +pub const SDL_HAT_UP: u32 = 1; +pub const SDL_HAT_RIGHT: u32 = 2; +pub const SDL_HAT_DOWN: u32 = 4; +pub const SDL_HAT_LEFT: u32 = 8; +pub const SDL_HAT_RIGHTUP: u32 = 3; +pub const SDL_HAT_RIGHTDOWN: u32 = 6; +pub const SDL_HAT_LEFTUP: u32 = 9; +pub const SDL_HAT_LEFTDOWN: u32 = 12; +pub const SDL_RELEASED: u32 = 0; +pub const SDL_PRESSED: u32 = 1; +pub const SDL_TEXTEDITINGEVENT_TEXT_SIZE: u32 = 32; +pub const SDL_TEXTINPUTEVENT_TEXT_SIZE: u32 = 32; +pub const SDL_QUERY: i32 = -1; +pub const SDL_IGNORE: u32 = 0; +pub const SDL_DISABLE: u32 = 0; +pub const SDL_ENABLE: u32 = 1; +pub const SDL_HAPTIC_CONSTANT: u32 = 1; +pub const SDL_HAPTIC_SINE: u32 = 2; +pub const SDL_HAPTIC_LEFTRIGHT: u32 = 4; +pub const SDL_HAPTIC_TRIANGLE: u32 = 8; +pub const SDL_HAPTIC_SAWTOOTHUP: u32 = 16; +pub const SDL_HAPTIC_SAWTOOTHDOWN: u32 = 32; +pub const SDL_HAPTIC_RAMP: u32 = 64; +pub const SDL_HAPTIC_SPRING: u32 = 128; +pub const SDL_HAPTIC_DAMPER: u32 = 256; +pub const SDL_HAPTIC_INERTIA: u32 = 512; +pub const SDL_HAPTIC_FRICTION: u32 = 1024; +pub const SDL_HAPTIC_CUSTOM: u32 = 2048; +pub const SDL_HAPTIC_GAIN: u32 = 4096; +pub const SDL_HAPTIC_AUTOCENTER: u32 = 8192; +pub const SDL_HAPTIC_STATUS: u32 = 16384; +pub const SDL_HAPTIC_PAUSE: u32 = 32768; +pub const SDL_HAPTIC_POLAR: u32 = 0; +pub const SDL_HAPTIC_CARTESIAN: u32 = 1; +pub const SDL_HAPTIC_SPHERICAL: u32 = 2; +pub const SDL_HAPTIC_INFINITY: u32 = 4294967295; pub const SDL_HINT_FRAMEBUFFER_ACCELERATION: &'static [u8; 29usize] = - b"SDL_FRAMEBUFFER_ACCELERATION\x00"; -pub const SDL_HINT_RENDER_DRIVER: &'static [u8; 18usize] = - b"SDL_RENDER_DRIVER\x00"; -pub const SDL_HINT_RENDER_OPENGL_SHADERS: &'static [u8; 26usize] = - b"SDL_RENDER_OPENGL_SHADERS\x00"; + b"SDL_FRAMEBUFFER_ACCELERATION\0"; +pub const SDL_HINT_RENDER_DRIVER: &'static [u8; 18usize] = b"SDL_RENDER_DRIVER\0"; +pub const SDL_HINT_RENDER_OPENGL_SHADERS: &'static [u8; 26usize] = b"SDL_RENDER_OPENGL_SHADERS\0"; pub const SDL_HINT_RENDER_DIRECT3D_THREADSAFE: &'static [u8; 31usize] = - b"SDL_RENDER_DIRECT3D_THREADSAFE\x00"; + b"SDL_RENDER_DIRECT3D_THREADSAFE\0"; pub const SDL_HINT_RENDER_DIRECT3D11_DEBUG: &'static [u8; 28usize] = - b"SDL_RENDER_DIRECT3D11_DEBUG\x00"; + b"SDL_RENDER_DIRECT3D11_DEBUG\0"; pub const SDL_HINT_RENDER_LOGICAL_SIZE_MODE: &'static [u8; 29usize] = - b"SDL_RENDER_LOGICAL_SIZE_MODE\x00"; -pub const SDL_HINT_RENDER_SCALE_QUALITY: &'static [u8; 25usize] = - b"SDL_RENDER_SCALE_QUALITY\x00"; -pub const SDL_HINT_RENDER_VSYNC: &'static [u8; 17usize] = - b"SDL_RENDER_VSYNC\x00"; + b"SDL_RENDER_LOGICAL_SIZE_MODE\0"; +pub const SDL_HINT_RENDER_SCALE_QUALITY: &'static [u8; 25usize] = b"SDL_RENDER_SCALE_QUALITY\0"; +pub const SDL_HINT_RENDER_VSYNC: &'static [u8; 17usize] = b"SDL_RENDER_VSYNC\0"; pub const SDL_HINT_VIDEO_ALLOW_SCREENSAVER: &'static [u8; 28usize] = - b"SDL_VIDEO_ALLOW_SCREENSAVER\x00"; -pub const SDL_HINT_VIDEO_X11_XVIDMODE: &'static [u8; 23usize] = - b"SDL_VIDEO_X11_XVIDMODE\x00"; -pub const SDL_HINT_VIDEO_X11_XINERAMA: &'static [u8; 23usize] = - b"SDL_VIDEO_X11_XINERAMA\x00"; -pub const SDL_HINT_VIDEO_X11_XRANDR: &'static [u8; 21usize] = - b"SDL_VIDEO_X11_XRANDR\x00"; -pub const SDL_HINT_VIDEO_X11_NET_WM_PING: &'static [u8; 26usize] = - b"SDL_VIDEO_X11_NET_WM_PING\x00"; -pub const SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN: - &'static [u8; 44usize] = - b"SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN\x00"; + b"SDL_VIDEO_ALLOW_SCREENSAVER\0"; +pub const SDL_HINT_VIDEO_X11_XVIDMODE: &'static [u8; 23usize] = b"SDL_VIDEO_X11_XVIDMODE\0"; +pub const SDL_HINT_VIDEO_X11_XINERAMA: &'static [u8; 23usize] = b"SDL_VIDEO_X11_XINERAMA\0"; +pub const SDL_HINT_VIDEO_X11_XRANDR: &'static [u8; 21usize] = b"SDL_VIDEO_X11_XRANDR\0"; +pub const SDL_HINT_VIDEO_X11_NET_WM_PING: &'static [u8; 26usize] = b"SDL_VIDEO_X11_NET_WM_PING\0"; +pub const SDL_HINT_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN: &'static [u8; 44usize] = + b"SDL_WINDOW_FRAME_USABLE_WHILE_CURSOR_HIDDEN\0"; pub const SDL_HINT_WINDOWS_INTRESOURCE_ICON: &'static [u8; 29usize] = - b"SDL_WINDOWS_INTRESOURCE_ICON\x00"; + b"SDL_WINDOWS_INTRESOURCE_ICON\0"; pub const SDL_HINT_WINDOWS_INTRESOURCE_ICON_SMALL: &'static [u8; 35usize] = - b"SDL_WINDOWS_INTRESOURCE_ICON_SMALL\x00"; + b"SDL_WINDOWS_INTRESOURCE_ICON_SMALL\0"; pub const SDL_HINT_WINDOWS_ENABLE_MESSAGELOOP: &'static [u8; 31usize] = - b"SDL_WINDOWS_ENABLE_MESSAGELOOP\x00"; -pub const SDL_HINT_GRAB_KEYBOARD: &'static [u8; 18usize] = - b"SDL_GRAB_KEYBOARD\x00"; + b"SDL_WINDOWS_ENABLE_MESSAGELOOP\0"; +pub const SDL_HINT_GRAB_KEYBOARD: &'static [u8; 18usize] = b"SDL_GRAB_KEYBOARD\0"; pub const SDL_HINT_MOUSE_NORMAL_SPEED_SCALE: &'static [u8; 29usize] = - b"SDL_MOUSE_NORMAL_SPEED_SCALE\x00"; + b"SDL_MOUSE_NORMAL_SPEED_SCALE\0"; pub const SDL_HINT_MOUSE_RELATIVE_SPEED_SCALE: &'static [u8; 31usize] = - b"SDL_MOUSE_RELATIVE_SPEED_SCALE\x00"; + b"SDL_MOUSE_RELATIVE_SPEED_SCALE\0"; pub const SDL_HINT_MOUSE_RELATIVE_MODE_WARP: &'static [u8; 29usize] = - b"SDL_MOUSE_RELATIVE_MODE_WARP\x00"; + b"SDL_MOUSE_RELATIVE_MODE_WARP\0"; pub const SDL_HINT_MOUSE_FOCUS_CLICKTHROUGH: &'static [u8; 29usize] = - b"SDL_MOUSE_FOCUS_CLICKTHROUGH\x00"; -pub const SDL_HINT_TOUCH_MOUSE_EVENTS: &'static [u8; 23usize] = - b"SDL_TOUCH_MOUSE_EVENTS\x00"; + b"SDL_MOUSE_FOCUS_CLICKTHROUGH\0"; +pub const SDL_HINT_TOUCH_MOUSE_EVENTS: &'static [u8; 23usize] = b"SDL_TOUCH_MOUSE_EVENTS\0"; pub const SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS: &'static [u8; 33usize] = - b"SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS\x00"; -pub const SDL_HINT_IDLE_TIMER_DISABLED: &'static [u8; 28usize] = - b"SDL_IOS_IDLE_TIMER_DISABLED\x00"; -pub const SDL_HINT_ORIENTATIONS: &'static [u8; 21usize] = - b"SDL_IOS_ORIENTATIONS\x00"; + b"SDL_VIDEO_MINIMIZE_ON_FOCUS_LOSS\0"; +pub const SDL_HINT_IDLE_TIMER_DISABLED: &'static [u8; 28usize] = b"SDL_IOS_IDLE_TIMER_DISABLED\0"; +pub const SDL_HINT_ORIENTATIONS: &'static [u8; 21usize] = b"SDL_IOS_ORIENTATIONS\0"; pub const SDL_HINT_APPLE_TV_CONTROLLER_UI_EVENTS: &'static [u8; 34usize] = - b"SDL_APPLE_TV_CONTROLLER_UI_EVENTS\x00"; + b"SDL_APPLE_TV_CONTROLLER_UI_EVENTS\0"; pub const SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION: &'static [u8; 35usize] = - b"SDL_APPLE_TV_REMOTE_ALLOW_ROTATION\x00"; + b"SDL_APPLE_TV_REMOTE_ALLOW_ROTATION\0"; pub const SDL_HINT_ACCELEROMETER_AS_JOYSTICK: &'static [u8; 30usize] = - b"SDL_ACCELEROMETER_AS_JOYSTICK\x00"; -pub const SDL_HINT_XINPUT_ENABLED: &'static [u8; 19usize] = - b"SDL_XINPUT_ENABLED\x00"; + b"SDL_ACCELEROMETER_AS_JOYSTICK\0"; +pub const SDL_HINT_XINPUT_ENABLED: &'static [u8; 19usize] = b"SDL_XINPUT_ENABLED\0"; pub const SDL_HINT_XINPUT_USE_OLD_JOYSTICK_MAPPING: &'static [u8; 36usize] = - b"SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING\x00"; -pub const SDL_HINT_GAMECONTROLLERCONFIG: &'static [u8; 25usize] = - b"SDL_GAMECONTROLLERCONFIG\x00"; + b"SDL_XINPUT_USE_OLD_JOYSTICK_MAPPING\0"; +pub const SDL_HINT_GAMECONTROLLERCONFIG: &'static [u8; 25usize] = b"SDL_GAMECONTROLLERCONFIG\0"; pub const SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES: &'static [u8; 34usize] = - b"SDL_GAMECONTROLLER_IGNORE_DEVICES\x00"; -pub const SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT: - &'static [u8; 41usize] = - b"SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT\x00"; + b"SDL_GAMECONTROLLER_IGNORE_DEVICES\0"; +pub const SDL_HINT_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT: &'static [u8; 41usize] = + b"SDL_GAMECONTROLLER_IGNORE_DEVICES_EXCEPT\0"; pub const SDL_HINT_JOYSTICK_ALLOW_BACKGROUND_EVENTS: &'static [u8; 37usize] = - b"SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS\x00"; -pub const SDL_HINT_ALLOW_TOPMOST: &'static [u8; 18usize] = - b"SDL_ALLOW_TOPMOST\x00"; -pub const SDL_HINT_TIMER_RESOLUTION: &'static [u8; 21usize] = - b"SDL_TIMER_RESOLUTION\x00"; + b"SDL_JOYSTICK_ALLOW_BACKGROUND_EVENTS\0"; +pub const SDL_HINT_ALLOW_TOPMOST: &'static [u8; 18usize] = b"SDL_ALLOW_TOPMOST\0"; +pub const SDL_HINT_TIMER_RESOLUTION: &'static [u8; 21usize] = b"SDL_TIMER_RESOLUTION\0"; pub const SDL_HINT_QTWAYLAND_CONTENT_ORIENTATION: &'static [u8; 34usize] = - b"SDL_QTWAYLAND_CONTENT_ORIENTATION\x00"; -pub const SDL_HINT_QTWAYLAND_WINDOW_FLAGS: &'static [u8; 27usize] = - b"SDL_QTWAYLAND_WINDOW_FLAGS\x00"; -pub const SDL_HINT_THREAD_STACK_SIZE: &'static [u8; 22usize] = - b"SDL_THREAD_STACK_SIZE\x00"; -pub const SDL_HINT_VIDEO_HIGHDPI_DISABLED: &'static [u8; 27usize] = - b"SDL_VIDEO_HIGHDPI_DISABLED\x00"; -pub const SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK: &'static [u8; 39usize] - = - b"SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK\x00"; -pub const SDL_HINT_VIDEO_WIN_D3DCOMPILER: &'static [u8; 26usize] = - b"SDL_VIDEO_WIN_D3DCOMPILER\x00"; + b"SDL_QTWAYLAND_CONTENT_ORIENTATION\0"; +pub const SDL_HINT_QTWAYLAND_WINDOW_FLAGS: &'static [u8; 27usize] = b"SDL_QTWAYLAND_WINDOW_FLAGS\0"; +pub const SDL_HINT_THREAD_STACK_SIZE: &'static [u8; 22usize] = b"SDL_THREAD_STACK_SIZE\0"; +pub const SDL_HINT_VIDEO_HIGHDPI_DISABLED: &'static [u8; 27usize] = b"SDL_VIDEO_HIGHDPI_DISABLED\0"; +pub const SDL_HINT_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK: &'static [u8; 39usize] = + b"SDL_MAC_CTRL_CLICK_EMULATE_RIGHT_CLICK\0"; +pub const SDL_HINT_VIDEO_WIN_D3DCOMPILER: &'static [u8; 26usize] = b"SDL_VIDEO_WIN_D3DCOMPILER\0"; pub const SDL_HINT_VIDEO_WINDOW_SHARE_PIXEL_FORMAT: &'static [u8; 36usize] = - b"SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT\x00"; + b"SDL_VIDEO_WINDOW_SHARE_PIXEL_FORMAT\0"; pub const SDL_HINT_WINRT_PRIVACY_POLICY_URL: &'static [u8; 29usize] = - b"SDL_WINRT_PRIVACY_POLICY_URL\x00"; + b"SDL_WINRT_PRIVACY_POLICY_URL\0"; pub const SDL_HINT_WINRT_PRIVACY_POLICY_LABEL: &'static [u8; 31usize] = - b"SDL_WINRT_PRIVACY_POLICY_LABEL\x00"; + b"SDL_WINRT_PRIVACY_POLICY_LABEL\0"; pub const SDL_HINT_WINRT_HANDLE_BACK_BUTTON: &'static [u8; 29usize] = - b"SDL_WINRT_HANDLE_BACK_BUTTON\x00"; + b"SDL_WINRT_HANDLE_BACK_BUTTON\0"; pub const SDL_HINT_VIDEO_MAC_FULLSCREEN_SPACES: &'static [u8; 32usize] = - b"SDL_VIDEO_MAC_FULLSCREEN_SPACES\x00"; -pub const SDL_HINT_MAC_BACKGROUND_APP: &'static [u8; 23usize] = - b"SDL_MAC_BACKGROUND_APP\x00"; -pub const SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION: - &'static [u8; 44usize] = - b"SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION\x00"; -pub const SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION: - &'static [u8; 45usize] = - b"SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION\x00"; -pub const SDL_HINT_IME_INTERNAL_EDITING: &'static [u8; 25usize] = - b"SDL_IME_INTERNAL_EDITING\x00"; + b"SDL_VIDEO_MAC_FULLSCREEN_SPACES\0"; +pub const SDL_HINT_MAC_BACKGROUND_APP: &'static [u8; 23usize] = b"SDL_MAC_BACKGROUND_APP\0"; +pub const SDL_HINT_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION: &'static [u8; 44usize] = + b"SDL_ANDROID_APK_EXPANSION_MAIN_FILE_VERSION\0"; +pub const SDL_HINT_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION: &'static [u8; 45usize] = + b"SDL_ANDROID_APK_EXPANSION_PATCH_FILE_VERSION\0"; +pub const SDL_HINT_IME_INTERNAL_EDITING: &'static [u8; 25usize] = b"SDL_IME_INTERNAL_EDITING\0"; pub const SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH: &'static [u8; 37usize] = - b"SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH\x00"; + b"SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH\0"; pub const SDL_HINT_EMSCRIPTEN_KEYBOARD_ELEMENT: &'static [u8; 32usize] = - b"SDL_EMSCRIPTEN_KEYBOARD_ELEMENT\x00"; -pub const SDL_HINT_NO_SIGNAL_HANDLERS: &'static [u8; 23usize] = - b"SDL_NO_SIGNAL_HANDLERS\x00"; + b"SDL_EMSCRIPTEN_KEYBOARD_ELEMENT\0"; +pub const SDL_HINT_NO_SIGNAL_HANDLERS: &'static [u8; 23usize] = b"SDL_NO_SIGNAL_HANDLERS\0"; pub const SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4: &'static [u8; 31usize] = - b"SDL_WINDOWS_NO_CLOSE_ON_ALT_F4\x00"; -pub const SDL_HINT_BMP_SAVE_LEGACY_FORMAT: &'static [u8; 27usize] = - b"SDL_BMP_SAVE_LEGACY_FORMAT\x00"; + b"SDL_WINDOWS_NO_CLOSE_ON_ALT_F4\0"; +pub const SDL_HINT_BMP_SAVE_LEGACY_FORMAT: &'static [u8; 27usize] = b"SDL_BMP_SAVE_LEGACY_FORMAT\0"; pub const SDL_HINT_WINDOWS_DISABLE_THREAD_NAMING: &'static [u8; 34usize] = - b"SDL_WINDOWS_DISABLE_THREAD_NAMING\x00"; -pub const SDL_HINT_RPI_VIDEO_LAYER: &'static [u8; 20usize] = - b"SDL_RPI_VIDEO_LAYER\x00"; -pub const SDL_HINT_OPENGL_ES_DRIVER: &'static [u8; 21usize] = - b"SDL_OPENGL_ES_DRIVER\x00"; -pub const SDL_HINT_AUDIO_RESAMPLING_MODE: &'static [u8; 26usize] = - b"SDL_AUDIO_RESAMPLING_MODE\x00"; -pub const SDL_HINT_AUDIO_CATEGORY: &'static [u8; 19usize] = - b"SDL_AUDIO_CATEGORY\x00"; -pub const SDL_MAX_LOG_MESSAGE: ::std::os::raw::c_uint = 4096; -pub const SDL_NONSHAPEABLE_WINDOW: ::std::os::raw::c_int = -1; -pub const SDL_INVALID_SHAPE_ARGUMENT: ::std::os::raw::c_int = -2; -pub const SDL_WINDOW_LACKS_SHAPE: ::std::os::raw::c_int = -3; -pub const SDL_MAJOR_VERSION: ::std::os::raw::c_uint = 2; -pub const SDL_MINOR_VERSION: ::std::os::raw::c_uint = 0; -pub const SDL_PATCHLEVEL: ::std::os::raw::c_uint = 6; -pub const SDL_INIT_TIMER: ::std::os::raw::c_uint = 1; -pub const SDL_INIT_AUDIO: ::std::os::raw::c_uint = 16; -pub const SDL_INIT_VIDEO: ::std::os::raw::c_uint = 32; -pub const SDL_INIT_JOYSTICK: ::std::os::raw::c_uint = 512; -pub const SDL_INIT_HAPTIC: ::std::os::raw::c_uint = 4096; -pub const SDL_INIT_GAMECONTROLLER: ::std::os::raw::c_uint = 8192; -pub const SDL_INIT_EVENTS: ::std::os::raw::c_uint = 16384; -pub const SDL_INIT_NOPARACHUTE: ::std::os::raw::c_uint = 1048576; -pub const SDL_INIT_EVERYTHING: ::std::os::raw::c_uint = 29233; + b"SDL_WINDOWS_DISABLE_THREAD_NAMING\0"; +pub const SDL_HINT_RPI_VIDEO_LAYER: &'static [u8; 20usize] = b"SDL_RPI_VIDEO_LAYER\0"; +pub const SDL_HINT_OPENGL_ES_DRIVER: &'static [u8; 21usize] = b"SDL_OPENGL_ES_DRIVER\0"; +pub const SDL_HINT_AUDIO_RESAMPLING_MODE: &'static [u8; 26usize] = b"SDL_AUDIO_RESAMPLING_MODE\0"; +pub const SDL_HINT_AUDIO_CATEGORY: &'static [u8; 19usize] = b"SDL_AUDIO_CATEGORY\0"; +pub const SDL_MAX_LOG_MESSAGE: u32 = 4096; +pub const SDL_NONSHAPEABLE_WINDOW: i32 = -1; +pub const SDL_INVALID_SHAPE_ARGUMENT: i32 = -2; +pub const SDL_WINDOW_LACKS_SHAPE: i32 = -3; +pub const SDL_MAJOR_VERSION: u32 = 2; +pub const SDL_MINOR_VERSION: u32 = 0; +pub const SDL_PATCHLEVEL: u32 = 6; +pub const SDL_INIT_TIMER: u32 = 1; +pub const SDL_INIT_AUDIO: u32 = 16; +pub const SDL_INIT_VIDEO: u32 = 32; +pub const SDL_INIT_JOYSTICK: u32 = 512; +pub const SDL_INIT_HAPTIC: u32 = 4096; +pub const SDL_INIT_GAMECONTROLLER: u32 = 8192; +pub const SDL_INIT_EVENTS: u32 = 16384; +pub const SDL_INIT_NOPARACHUTE: u32 = 1048576; +pub const SDL_INIT_EVERYTHING: u32 = 29233; +pub const XlibSpecificationRelease: u32 = 6; +pub const X_PROTOCOL: u32 = 11; +pub const X_PROTOCOL_REVISION: u32 = 0; +pub const None: u32 = 0; +pub const ParentRelative: u32 = 1; +pub const CopyFromParent: u32 = 0; +pub const PointerWindow: u32 = 0; +pub const InputFocus: u32 = 1; +pub const PointerRoot: u32 = 1; +pub const AnyPropertyType: u32 = 0; +pub const AnyKey: u32 = 0; +pub const AnyButton: u32 = 0; +pub const AllTemporary: u32 = 0; +pub const CurrentTime: u32 = 0; +pub const NoSymbol: u32 = 0; +pub const NoEventMask: u32 = 0; +pub const KeyPressMask: u32 = 1; +pub const KeyReleaseMask: u32 = 2; +pub const ButtonPressMask: u32 = 4; +pub const ButtonReleaseMask: u32 = 8; +pub const EnterWindowMask: u32 = 16; +pub const LeaveWindowMask: u32 = 32; +pub const PointerMotionMask: u32 = 64; +pub const PointerMotionHintMask: u32 = 128; +pub const Button1MotionMask: u32 = 256; +pub const Button2MotionMask: u32 = 512; +pub const Button3MotionMask: u32 = 1024; +pub const Button4MotionMask: u32 = 2048; +pub const Button5MotionMask: u32 = 4096; +pub const ButtonMotionMask: u32 = 8192; +pub const KeymapStateMask: u32 = 16384; +pub const ExposureMask: u32 = 32768; +pub const VisibilityChangeMask: u32 = 65536; +pub const StructureNotifyMask: u32 = 131072; +pub const ResizeRedirectMask: u32 = 262144; +pub const SubstructureNotifyMask: u32 = 524288; +pub const SubstructureRedirectMask: u32 = 1048576; +pub const FocusChangeMask: u32 = 2097152; +pub const PropertyChangeMask: u32 = 4194304; +pub const ColormapChangeMask: u32 = 8388608; +pub const OwnerGrabButtonMask: u32 = 16777216; +pub const KeyPress: u32 = 2; +pub const KeyRelease: u32 = 3; +pub const ButtonPress: u32 = 4; +pub const ButtonRelease: u32 = 5; +pub const MotionNotify: u32 = 6; +pub const EnterNotify: u32 = 7; +pub const LeaveNotify: u32 = 8; +pub const FocusIn: u32 = 9; +pub const FocusOut: u32 = 10; +pub const KeymapNotify: u32 = 11; +pub const Expose: u32 = 12; +pub const GraphicsExpose: u32 = 13; +pub const NoExpose: u32 = 14; +pub const VisibilityNotify: u32 = 15; +pub const CreateNotify: u32 = 16; +pub const DestroyNotify: u32 = 17; +pub const UnmapNotify: u32 = 18; +pub const MapNotify: u32 = 19; +pub const MapRequest: u32 = 20; +pub const ReparentNotify: u32 = 21; +pub const ConfigureNotify: u32 = 22; +pub const ConfigureRequest: u32 = 23; +pub const GravityNotify: u32 = 24; +pub const ResizeRequest: u32 = 25; +pub const CirculateNotify: u32 = 26; +pub const CirculateRequest: u32 = 27; +pub const PropertyNotify: u32 = 28; +pub const SelectionClear: u32 = 29; +pub const SelectionRequest: u32 = 30; +pub const SelectionNotify: u32 = 31; +pub const ColormapNotify: u32 = 32; +pub const ClientMessage: u32 = 33; +pub const MappingNotify: u32 = 34; +pub const GenericEvent: u32 = 35; +pub const LASTEvent: u32 = 36; +pub const ShiftMask: u32 = 1; +pub const LockMask: u32 = 2; +pub const ControlMask: u32 = 4; +pub const Mod1Mask: u32 = 8; +pub const Mod2Mask: u32 = 16; +pub const Mod3Mask: u32 = 32; +pub const Mod4Mask: u32 = 64; +pub const Mod5Mask: u32 = 128; +pub const ShiftMapIndex: u32 = 0; +pub const LockMapIndex: u32 = 1; +pub const ControlMapIndex: u32 = 2; +pub const Mod1MapIndex: u32 = 3; +pub const Mod2MapIndex: u32 = 4; +pub const Mod3MapIndex: u32 = 5; +pub const Mod4MapIndex: u32 = 6; +pub const Mod5MapIndex: u32 = 7; +pub const Button1Mask: u32 = 256; +pub const Button2Mask: u32 = 512; +pub const Button3Mask: u32 = 1024; +pub const Button4Mask: u32 = 2048; +pub const Button5Mask: u32 = 4096; +pub const AnyModifier: u32 = 32768; +pub const Button1: u32 = 1; +pub const Button2: u32 = 2; +pub const Button3: u32 = 3; +pub const Button4: u32 = 4; +pub const Button5: u32 = 5; +pub const NotifyNormal: u32 = 0; +pub const NotifyGrab: u32 = 1; +pub const NotifyUngrab: u32 = 2; +pub const NotifyWhileGrabbed: u32 = 3; +pub const NotifyHint: u32 = 1; +pub const NotifyAncestor: u32 = 0; +pub const NotifyVirtual: u32 = 1; +pub const NotifyInferior: u32 = 2; +pub const NotifyNonlinear: u32 = 3; +pub const NotifyNonlinearVirtual: u32 = 4; +pub const NotifyPointer: u32 = 5; +pub const NotifyPointerRoot: u32 = 6; +pub const NotifyDetailNone: u32 = 7; +pub const VisibilityUnobscured: u32 = 0; +pub const VisibilityPartiallyObscured: u32 = 1; +pub const VisibilityFullyObscured: u32 = 2; +pub const PlaceOnTop: u32 = 0; +pub const PlaceOnBottom: u32 = 1; +pub const FamilyInternet: u32 = 0; +pub const FamilyDECnet: u32 = 1; +pub const FamilyChaos: u32 = 2; +pub const FamilyInternet6: u32 = 6; +pub const FamilyServerInterpreted: u32 = 5; +pub const PropertyNewValue: u32 = 0; +pub const PropertyDelete: u32 = 1; +pub const ColormapUninstalled: u32 = 0; +pub const ColormapInstalled: u32 = 1; +pub const GrabModeSync: u32 = 0; +pub const GrabModeAsync: u32 = 1; +pub const GrabSuccess: u32 = 0; +pub const AlreadyGrabbed: u32 = 1; +pub const GrabInvalidTime: u32 = 2; +pub const GrabNotViewable: u32 = 3; +pub const GrabFrozen: u32 = 4; +pub const AsyncPointer: u32 = 0; +pub const SyncPointer: u32 = 1; +pub const ReplayPointer: u32 = 2; +pub const AsyncKeyboard: u32 = 3; +pub const SyncKeyboard: u32 = 4; +pub const ReplayKeyboard: u32 = 5; +pub const AsyncBoth: u32 = 6; +pub const SyncBoth: u32 = 7; +pub const RevertToParent: u32 = 2; +pub const Success: u32 = 0; +pub const BadRequest: u32 = 1; +pub const BadValue: u32 = 2; +pub const BadWindow: u32 = 3; +pub const BadPixmap: u32 = 4; +pub const BadAtom: u32 = 5; +pub const BadCursor: u32 = 6; +pub const BadFont: u32 = 7; +pub const BadMatch: u32 = 8; +pub const BadDrawable: u32 = 9; +pub const BadAccess: u32 = 10; +pub const BadAlloc: u32 = 11; +pub const BadColor: u32 = 12; +pub const BadGC: u32 = 13; +pub const BadIDChoice: u32 = 14; +pub const BadName: u32 = 15; +pub const BadLength: u32 = 16; +pub const BadImplementation: u32 = 17; +pub const FirstExtensionError: u32 = 128; +pub const LastExtensionError: u32 = 255; +pub const InputOutput: u32 = 1; +pub const InputOnly: u32 = 2; +pub const CWBackPixmap: u32 = 1; +pub const CWBackPixel: u32 = 2; +pub const CWBorderPixmap: u32 = 4; +pub const CWBorderPixel: u32 = 8; +pub const CWBitGravity: u32 = 16; +pub const CWWinGravity: u32 = 32; +pub const CWBackingStore: u32 = 64; +pub const CWBackingPlanes: u32 = 128; +pub const CWBackingPixel: u32 = 256; +pub const CWOverrideRedirect: u32 = 512; +pub const CWSaveUnder: u32 = 1024; +pub const CWEventMask: u32 = 2048; +pub const CWDontPropagate: u32 = 4096; +pub const CWColormap: u32 = 8192; +pub const CWCursor: u32 = 16384; +pub const CWX: u32 = 1; +pub const CWY: u32 = 2; +pub const CWWidth: u32 = 4; +pub const CWHeight: u32 = 8; +pub const CWBorderWidth: u32 = 16; +pub const CWSibling: u32 = 32; +pub const CWStackMode: u32 = 64; +pub const ForgetGravity: u32 = 0; +pub const NorthWestGravity: u32 = 1; +pub const NorthGravity: u32 = 2; +pub const NorthEastGravity: u32 = 3; +pub const WestGravity: u32 = 4; +pub const CenterGravity: u32 = 5; +pub const EastGravity: u32 = 6; +pub const SouthWestGravity: u32 = 7; +pub const SouthGravity: u32 = 8; +pub const SouthEastGravity: u32 = 9; +pub const StaticGravity: u32 = 10; +pub const UnmapGravity: u32 = 0; +pub const NotUseful: u32 = 0; +pub const WhenMapped: u32 = 1; +pub const Always: u32 = 2; +pub const IsUnmapped: u32 = 0; +pub const IsUnviewable: u32 = 1; +pub const IsViewable: u32 = 2; +pub const SetModeInsert: u32 = 0; +pub const SetModeDelete: u32 = 1; +pub const DestroyAll: u32 = 0; +pub const RetainPermanent: u32 = 1; +pub const RetainTemporary: u32 = 2; +pub const Above: u32 = 0; +pub const Below: u32 = 1; +pub const TopIf: u32 = 2; +pub const BottomIf: u32 = 3; +pub const Opposite: u32 = 4; +pub const RaiseLowest: u32 = 0; +pub const LowerHighest: u32 = 1; +pub const PropModeReplace: u32 = 0; +pub const PropModePrepend: u32 = 1; +pub const PropModeAppend: u32 = 2; +pub const GXclear: u32 = 0; +pub const GXand: u32 = 1; +pub const GXandReverse: u32 = 2; +pub const GXcopy: u32 = 3; +pub const GXandInverted: u32 = 4; +pub const GXnoop: u32 = 5; +pub const GXxor: u32 = 6; +pub const GXor: u32 = 7; +pub const GXnor: u32 = 8; +pub const GXequiv: u32 = 9; +pub const GXinvert: u32 = 10; +pub const GXorReverse: u32 = 11; +pub const GXcopyInverted: u32 = 12; +pub const GXorInverted: u32 = 13; +pub const GXnand: u32 = 14; +pub const GXset: u32 = 15; +pub const LineSolid: u32 = 0; +pub const LineOnOffDash: u32 = 1; +pub const LineDoubleDash: u32 = 2; +pub const CapNotLast: u32 = 0; +pub const CapButt: u32 = 1; +pub const CapRound: u32 = 2; +pub const CapProjecting: u32 = 3; +pub const JoinMiter: u32 = 0; +pub const JoinRound: u32 = 1; +pub const JoinBevel: u32 = 2; +pub const FillSolid: u32 = 0; +pub const FillTiled: u32 = 1; +pub const FillStippled: u32 = 2; +pub const FillOpaqueStippled: u32 = 3; +pub const EvenOddRule: u32 = 0; +pub const WindingRule: u32 = 1; +pub const ClipByChildren: u32 = 0; +pub const IncludeInferiors: u32 = 1; +pub const Unsorted: u32 = 0; +pub const YSorted: u32 = 1; +pub const YXSorted: u32 = 2; +pub const YXBanded: u32 = 3; +pub const CoordModeOrigin: u32 = 0; +pub const CoordModePrevious: u32 = 1; +pub const Complex: u32 = 0; +pub const Nonconvex: u32 = 1; +pub const Convex: u32 = 2; +pub const ArcChord: u32 = 0; +pub const ArcPieSlice: u32 = 1; +pub const GCFunction: u32 = 1; +pub const GCPlaneMask: u32 = 2; +pub const GCForeground: u32 = 4; +pub const GCBackground: u32 = 8; +pub const GCLineWidth: u32 = 16; +pub const GCLineStyle: u32 = 32; +pub const GCCapStyle: u32 = 64; +pub const GCJoinStyle: u32 = 128; +pub const GCFillStyle: u32 = 256; +pub const GCFillRule: u32 = 512; +pub const GCTile: u32 = 1024; +pub const GCStipple: u32 = 2048; +pub const GCTileStipXOrigin: u32 = 4096; +pub const GCTileStipYOrigin: u32 = 8192; +pub const GCFont: u32 = 16384; +pub const GCSubwindowMode: u32 = 32768; +pub const GCGraphicsExposures: u32 = 65536; +pub const GCClipXOrigin: u32 = 131072; +pub const GCClipYOrigin: u32 = 262144; +pub const GCClipMask: u32 = 524288; +pub const GCDashOffset: u32 = 1048576; +pub const GCDashList: u32 = 2097152; +pub const GCArcMode: u32 = 4194304; +pub const GCLastBit: u32 = 22; +pub const FontLeftToRight: u32 = 0; +pub const FontRightToLeft: u32 = 1; +pub const FontChange: u32 = 255; +pub const XYBitmap: u32 = 0; +pub const XYPixmap: u32 = 1; +pub const ZPixmap: u32 = 2; +pub const AllocNone: u32 = 0; +pub const AllocAll: u32 = 1; +pub const DoRed: u32 = 1; +pub const DoGreen: u32 = 2; +pub const DoBlue: u32 = 4; +pub const CursorShape: u32 = 0; +pub const TileShape: u32 = 1; +pub const StippleShape: u32 = 2; +pub const AutoRepeatModeOff: u32 = 0; +pub const AutoRepeatModeOn: u32 = 1; +pub const AutoRepeatModeDefault: u32 = 2; +pub const LedModeOff: u32 = 0; +pub const LedModeOn: u32 = 1; +pub const KBKeyClickPercent: u32 = 1; +pub const KBBellPercent: u32 = 2; +pub const KBBellPitch: u32 = 4; +pub const KBBellDuration: u32 = 8; +pub const KBLed: u32 = 16; +pub const KBLedMode: u32 = 32; +pub const KBKey: u32 = 64; +pub const KBAutoRepeatMode: u32 = 128; +pub const MappingSuccess: u32 = 0; +pub const MappingBusy: u32 = 1; +pub const MappingFailed: u32 = 2; +pub const MappingModifier: u32 = 0; +pub const MappingKeyboard: u32 = 1; +pub const MappingPointer: u32 = 2; +pub const DontPreferBlanking: u32 = 0; +pub const PreferBlanking: u32 = 1; +pub const DefaultBlanking: u32 = 2; +pub const DisableScreenSaver: u32 = 0; +pub const DisableScreenInterval: u32 = 0; +pub const DontAllowExposures: u32 = 0; +pub const AllowExposures: u32 = 1; +pub const DefaultExposures: u32 = 2; +pub const ScreenSaverReset: u32 = 0; +pub const ScreenSaverActive: u32 = 1; +pub const HostInsert: u32 = 0; +pub const HostDelete: u32 = 1; +pub const EnableAccess: u32 = 1; +pub const DisableAccess: u32 = 0; +pub const StaticGray: u32 = 0; +pub const GrayScale: u32 = 1; +pub const StaticColor: u32 = 2; +pub const PseudoColor: u32 = 3; +pub const TrueColor: u32 = 4; +pub const DirectColor: u32 = 5; +pub const LSBFirst: u32 = 0; +pub const MSBFirst: u32 = 1; +pub const NeedFunctionPrototypes: u32 = 1; +pub const NeedVarargsPrototypes: u32 = 1; +pub const NeedNestedPrototypes: u32 = 1; +pub const FUNCPROTO: u32 = 15; +pub const NeedWidePrototypes: u32 = 0; +pub const X_HAVE_UTF8_STRING: u32 = 1; +pub const True: u32 = 1; +pub const False: u32 = 0; +pub const QueuedAlready: u32 = 0; +pub const QueuedAfterReading: u32 = 1; +pub const QueuedAfterFlush: u32 = 2; +pub const XNRequiredCharSet: &'static [u8; 16usize] = b"requiredCharSet\0"; +pub const XNQueryOrientation: &'static [u8; 17usize] = b"queryOrientation\0"; +pub const XNBaseFontName: &'static [u8; 13usize] = b"baseFontName\0"; +pub const XNOMAutomatic: &'static [u8; 12usize] = b"omAutomatic\0"; +pub const XNMissingCharSet: &'static [u8; 15usize] = b"missingCharSet\0"; +pub const XNDefaultString: &'static [u8; 14usize] = b"defaultString\0"; +pub const XNOrientation: &'static [u8; 12usize] = b"orientation\0"; +pub const XNDirectionalDependentDrawing: &'static [u8; 28usize] = b"directionalDependentDrawing\0"; +pub const XNContextualDrawing: &'static [u8; 18usize] = b"contextualDrawing\0"; +pub const XNFontInfo: &'static [u8; 9usize] = b"fontInfo\0"; +pub const XIMPreeditArea: u32 = 1; +pub const XIMPreeditCallbacks: u32 = 2; +pub const XIMPreeditPosition: u32 = 4; +pub const XIMPreeditNothing: u32 = 8; +pub const XIMPreeditNone: u32 = 16; +pub const XIMStatusArea: u32 = 256; +pub const XIMStatusCallbacks: u32 = 512; +pub const XIMStatusNothing: u32 = 1024; +pub const XIMStatusNone: u32 = 2048; +pub const XNVaNestedList: &'static [u8; 15usize] = b"XNVaNestedList\0"; +pub const XNQueryInputStyle: &'static [u8; 16usize] = b"queryInputStyle\0"; +pub const XNClientWindow: &'static [u8; 13usize] = b"clientWindow\0"; +pub const XNInputStyle: &'static [u8; 11usize] = b"inputStyle\0"; +pub const XNFocusWindow: &'static [u8; 12usize] = b"focusWindow\0"; +pub const XNResourceName: &'static [u8; 13usize] = b"resourceName\0"; +pub const XNResourceClass: &'static [u8; 14usize] = b"resourceClass\0"; +pub const XNGeometryCallback: &'static [u8; 17usize] = b"geometryCallback\0"; +pub const XNDestroyCallback: &'static [u8; 16usize] = b"destroyCallback\0"; +pub const XNFilterEvents: &'static [u8; 13usize] = b"filterEvents\0"; +pub const XNPreeditStartCallback: &'static [u8; 21usize] = b"preeditStartCallback\0"; +pub const XNPreeditDoneCallback: &'static [u8; 20usize] = b"preeditDoneCallback\0"; +pub const XNPreeditDrawCallback: &'static [u8; 20usize] = b"preeditDrawCallback\0"; +pub const XNPreeditCaretCallback: &'static [u8; 21usize] = b"preeditCaretCallback\0"; +pub const XNPreeditStateNotifyCallback: &'static [u8; 27usize] = b"preeditStateNotifyCallback\0"; +pub const XNPreeditAttributes: &'static [u8; 18usize] = b"preeditAttributes\0"; +pub const XNStatusStartCallback: &'static [u8; 20usize] = b"statusStartCallback\0"; +pub const XNStatusDoneCallback: &'static [u8; 19usize] = b"statusDoneCallback\0"; +pub const XNStatusDrawCallback: &'static [u8; 19usize] = b"statusDrawCallback\0"; +pub const XNStatusAttributes: &'static [u8; 17usize] = b"statusAttributes\0"; +pub const XNArea: &'static [u8; 5usize] = b"area\0"; +pub const XNAreaNeeded: &'static [u8; 11usize] = b"areaNeeded\0"; +pub const XNSpotLocation: &'static [u8; 13usize] = b"spotLocation\0"; +pub const XNColormap: &'static [u8; 9usize] = b"colorMap\0"; +pub const XNStdColormap: &'static [u8; 12usize] = b"stdColorMap\0"; +pub const XNForeground: &'static [u8; 11usize] = b"foreground\0"; +pub const XNBackground: &'static [u8; 11usize] = b"background\0"; +pub const XNBackgroundPixmap: &'static [u8; 17usize] = b"backgroundPixmap\0"; +pub const XNFontSet: &'static [u8; 8usize] = b"fontSet\0"; +pub const XNLineSpace: &'static [u8; 10usize] = b"lineSpace\0"; +pub const XNCursor: &'static [u8; 7usize] = b"cursor\0"; +pub const XNQueryIMValuesList: &'static [u8; 18usize] = b"queryIMValuesList\0"; +pub const XNQueryICValuesList: &'static [u8; 18usize] = b"queryICValuesList\0"; +pub const XNVisiblePosition: &'static [u8; 16usize] = b"visiblePosition\0"; +pub const XNR6PreeditCallback: &'static [u8; 18usize] = b"r6PreeditCallback\0"; +pub const XNStringConversionCallback: &'static [u8; 25usize] = b"stringConversionCallback\0"; +pub const XNStringConversion: &'static [u8; 17usize] = b"stringConversion\0"; +pub const XNResetState: &'static [u8; 11usize] = b"resetState\0"; +pub const XNHotKey: &'static [u8; 7usize] = b"hotKey\0"; +pub const XNHotKeyState: &'static [u8; 12usize] = b"hotKeyState\0"; +pub const XNPreeditState: &'static [u8; 13usize] = b"preeditState\0"; +pub const XNSeparatorofNestedList: &'static [u8; 22usize] = b"separatorofNestedList\0"; +pub const XBufferOverflow: i32 = -1; +pub const XLookupNone: u32 = 1; +pub const XLookupChars: u32 = 2; +pub const XLookupKeySym: u32 = 3; +pub const XLookupBoth: u32 = 4; +pub const XIMReverse: u32 = 1; +pub const XIMUnderline: u32 = 2; +pub const XIMHighlight: u32 = 4; +pub const XIMPrimary: u32 = 32; +pub const XIMSecondary: u32 = 64; +pub const XIMTertiary: u32 = 128; +pub const XIMVisibleToForward: u32 = 256; +pub const XIMVisibleToBackword: u32 = 512; +pub const XIMVisibleToCenter: u32 = 1024; +pub const XIMPreeditUnKnown: u32 = 0; +pub const XIMPreeditEnable: u32 = 1; +pub const XIMPreeditDisable: u32 = 2; +pub const XIMInitialState: u32 = 1; +pub const XIMPreserveState: u32 = 2; +pub const XIMStringConversionLeftEdge: u32 = 1; +pub const XIMStringConversionRightEdge: u32 = 2; +pub const XIMStringConversionTopEdge: u32 = 4; +pub const XIMStringConversionBottomEdge: u32 = 8; +pub const XIMStringConversionConcealed: u32 = 16; +pub const XIMStringConversionWrapped: u32 = 32; +pub const XIMStringConversionBuffer: u32 = 1; +pub const XIMStringConversionLine: u32 = 2; +pub const XIMStringConversionWord: u32 = 3; +pub const XIMStringConversionChar: u32 = 4; +pub const XIMStringConversionSubstitution: u32 = 1; +pub const XIMStringConversionRetrieval: u32 = 2; +pub const XIMHotKeyStateON: u32 = 1; +pub const XIMHotKeyStateOFF: u32 = 2; +pub const XATOM_H: u32 = 1; extern "C" { /// \brief Gets the name of the platform. pub fn SDL_GetPlatform() -> *const ::std::os::raw::c_char; @@ -470,24 +892,32 @@ pub type __off_t = ::std::os::raw::c_long; pub type __off64_t = ::std::os::raw::c_long; pub type __pid_t = ::std::os::raw::c_int; #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct __fsid_t { pub __val: [::std::os::raw::c_int; 2usize], } #[test] fn bindgen_test_layout___fsid_t() { - assert_eq!(::std::mem::size_of::<__fsid_t>() , 8usize , concat ! ( - "Size of: " , stringify ! ( __fsid_t ) )); - assert_eq! (::std::mem::align_of::<__fsid_t>() , 4usize , concat ! ( - "Alignment of " , stringify ! ( __fsid_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __fsid_t ) ) . __val as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( __fsid_t ) , "::" , - stringify ! ( __val ) )); -} -impl Clone for __fsid_t { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::<__fsid_t>(), + 8usize, + concat!("Size of: ", stringify!(__fsid_t)) + ); + assert_eq!( + ::std::mem::align_of::<__fsid_t>(), + 4usize, + concat!("Alignment of ", stringify!(__fsid_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__fsid_t>())).__val as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__fsid_t), + "::", + stringify!(__val) + ) + ); } pub type __clock_t = ::std::os::raw::c_long; pub type __rlim_t = ::std::os::raw::c_ulong; @@ -537,7 +967,10 @@ pub type intmax_t = __intmax_t; pub type uintmax_t = __uintmax_t; #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] -pub enum SDL_bool { SDL_FALSE = 0, SDL_TRUE = 1, } +pub enum SDL_bool { + SDL_FALSE = 0, + SDL_TRUE = 1, +} /// \brief A signed 8-bit integer type. pub type Sint8 = i8; /// \brief An unsigned 8-bit integer type. @@ -564,41 +997,47 @@ pub type SDL_compile_time_assert_uint64 = [::std::os::raw::c_int; 1usize]; pub type SDL_compile_time_assert_sint64 = [::std::os::raw::c_int; 1usize]; #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] -pub enum SDL_DUMMY_ENUM { DUMMY_ENUM_VALUE = 0, } +pub enum SDL_DUMMY_ENUM { + DUMMY_ENUM_VALUE = 0, +} pub type SDL_compile_time_assert_enum = [::std::os::raw::c_int; 1usize]; extern "C" { pub fn SDL_malloc(size: usize) -> *mut ::std::os::raw::c_void; } extern "C" { - pub fn SDL_calloc(nmemb: usize, size: usize) - -> *mut ::std::os::raw::c_void; + pub fn SDL_calloc(nmemb: usize, size: usize) -> *mut ::std::os::raw::c_void; } extern "C" { - pub fn SDL_realloc(mem: *mut ::std::os::raw::c_void, size: usize) - -> *mut ::std::os::raw::c_void; + pub fn SDL_realloc( + mem: *mut ::std::os::raw::c_void, + size: usize, + ) -> *mut ::std::os::raw::c_void; } extern "C" { pub fn SDL_free(mem: *mut ::std::os::raw::c_void); } extern "C" { - pub fn SDL_getenv(name: *const ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn SDL_getenv(name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_setenv(name: *const ::std::os::raw::c_char, - value: *const ::std::os::raw::c_char, - overwrite: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + pub fn SDL_setenv( + name: *const ::std::os::raw::c_char, + value: *const ::std::os::raw::c_char, + overwrite: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_qsort(base: *mut ::std::os::raw::c_void, nmemb: usize, - size: usize, - compare: - ::std::option::Option ::std::os::raw::c_int>); + pub fn SDL_qsort( + base: *mut ::std::os::raw::c_void, + nmemb: usize, + size: usize, + compare: ::std::option::Option< + unsafe extern "C" fn( + arg1: *const ::std::os::raw::c_void, + arg2: *const ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + ); } extern "C" { pub fn SDL_abs(x: ::std::os::raw::c_int) -> ::std::os::raw::c_int; @@ -616,197 +1055,239 @@ extern "C" { pub fn SDL_tolower(x: ::std::os::raw::c_int) -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_memset(dst: *mut ::std::os::raw::c_void, - c: ::std::os::raw::c_int, len: usize) - -> *mut ::std::os::raw::c_void; + pub fn SDL_memset( + dst: *mut ::std::os::raw::c_void, + c: ::std::os::raw::c_int, + len: usize, + ) -> *mut ::std::os::raw::c_void; } extern "C" { - pub fn SDL_memcpy(dst: *mut ::std::os::raw::c_void, - src: *const ::std::os::raw::c_void, len: usize) - -> *mut ::std::os::raw::c_void; + pub fn SDL_memcpy( + dst: *mut ::std::os::raw::c_void, + src: *const ::std::os::raw::c_void, + len: usize, + ) -> *mut ::std::os::raw::c_void; } extern "C" { - pub fn SDL_memmove(dst: *mut ::std::os::raw::c_void, - src: *const ::std::os::raw::c_void, len: usize) - -> *mut ::std::os::raw::c_void; + pub fn SDL_memmove( + dst: *mut ::std::os::raw::c_void, + src: *const ::std::os::raw::c_void, + len: usize, + ) -> *mut ::std::os::raw::c_void; } extern "C" { - pub fn SDL_memcmp(s1: *const ::std::os::raw::c_void, - s2: *const ::std::os::raw::c_void, len: usize) - -> ::std::os::raw::c_int; + pub fn SDL_memcmp( + s1: *const ::std::os::raw::c_void, + s2: *const ::std::os::raw::c_void, + len: usize, + ) -> ::std::os::raw::c_int; } extern "C" { pub fn SDL_wcslen(wstr: *const wchar_t) -> usize; } extern "C" { - pub fn SDL_wcslcpy(dst: *mut wchar_t, src: *const wchar_t, maxlen: usize) - -> usize; + pub fn SDL_wcslcpy(dst: *mut wchar_t, src: *const wchar_t, maxlen: usize) -> usize; } extern "C" { - pub fn SDL_wcslcat(dst: *mut wchar_t, src: *const wchar_t, maxlen: usize) - -> usize; + pub fn SDL_wcslcat(dst: *mut wchar_t, src: *const wchar_t, maxlen: usize) -> usize; } extern "C" { - pub fn SDL_wcscmp(str1: *const wchar_t, str2: *const wchar_t) - -> ::std::os::raw::c_int; + pub fn SDL_wcscmp(str1: *const wchar_t, str2: *const wchar_t) -> ::std::os::raw::c_int; } extern "C" { pub fn SDL_strlen(str: *const ::std::os::raw::c_char) -> usize; } extern "C" { - pub fn SDL_strlcpy(dst: *mut ::std::os::raw::c_char, - src: *const ::std::os::raw::c_char, maxlen: usize) - -> usize; + pub fn SDL_strlcpy( + dst: *mut ::std::os::raw::c_char, + src: *const ::std::os::raw::c_char, + maxlen: usize, + ) -> usize; } extern "C" { - pub fn SDL_utf8strlcpy(dst: *mut ::std::os::raw::c_char, - src: *const ::std::os::raw::c_char, - dst_bytes: usize) -> usize; + pub fn SDL_utf8strlcpy( + dst: *mut ::std::os::raw::c_char, + src: *const ::std::os::raw::c_char, + dst_bytes: usize, + ) -> usize; } extern "C" { - pub fn SDL_strlcat(dst: *mut ::std::os::raw::c_char, - src: *const ::std::os::raw::c_char, maxlen: usize) - -> usize; + pub fn SDL_strlcat( + dst: *mut ::std::os::raw::c_char, + src: *const ::std::os::raw::c_char, + maxlen: usize, + ) -> usize; } extern "C" { - pub fn SDL_strdup(str: *const ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn SDL_strdup(str: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_strrev(str: *mut ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn SDL_strrev(str: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_strupr(str: *mut ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn SDL_strupr(str: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_strlwr(str: *mut ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn SDL_strlwr(str: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_strchr(str: *const ::std::os::raw::c_char, - c: ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn SDL_strchr( + str: *const ::std::os::raw::c_char, + c: ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_strrchr(str: *const ::std::os::raw::c_char, - c: ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn SDL_strrchr( + str: *const ::std::os::raw::c_char, + c: ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_strstr(haystack: *const ::std::os::raw::c_char, - needle: *const ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn SDL_strstr( + haystack: *const ::std::os::raw::c_char, + needle: *const ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; } extern "C" { pub fn SDL_utf8strlen(str: *const ::std::os::raw::c_char) -> usize; } extern "C" { - pub fn SDL_itoa(value: ::std::os::raw::c_int, - str: *mut ::std::os::raw::c_char, - radix: ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn SDL_itoa( + value: ::std::os::raw::c_int, + str: *mut ::std::os::raw::c_char, + radix: ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_uitoa(value: ::std::os::raw::c_uint, - str: *mut ::std::os::raw::c_char, - radix: ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn SDL_uitoa( + value: ::std::os::raw::c_uint, + str: *mut ::std::os::raw::c_char, + radix: ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_ltoa(value: ::std::os::raw::c_long, - str: *mut ::std::os::raw::c_char, - radix: ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn SDL_ltoa( + value: ::std::os::raw::c_long, + str: *mut ::std::os::raw::c_char, + radix: ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_ultoa(value: ::std::os::raw::c_ulong, - str: *mut ::std::os::raw::c_char, - radix: ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn SDL_ultoa( + value: ::std::os::raw::c_ulong, + str: *mut ::std::os::raw::c_char, + radix: ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_lltoa(value: Sint64, str: *mut ::std::os::raw::c_char, - radix: ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn SDL_lltoa( + value: Sint64, + str: *mut ::std::os::raw::c_char, + radix: ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_ulltoa(value: Uint64, str: *mut ::std::os::raw::c_char, - radix: ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn SDL_ulltoa( + value: Uint64, + str: *mut ::std::os::raw::c_char, + radix: ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn SDL_atoi(str: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn SDL_atoi(str: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; } extern "C" { pub fn SDL_atof(str: *const ::std::os::raw::c_char) -> f64; } extern "C" { - pub fn SDL_strtol(str: *const ::std::os::raw::c_char, - endp: *mut *mut ::std::os::raw::c_char, - base: ::std::os::raw::c_int) -> ::std::os::raw::c_long; + pub fn SDL_strtol( + str: *const ::std::os::raw::c_char, + endp: *mut *mut ::std::os::raw::c_char, + base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_long; } extern "C" { - pub fn SDL_strtoul(str: *const ::std::os::raw::c_char, - endp: *mut *mut ::std::os::raw::c_char, - base: ::std::os::raw::c_int) - -> ::std::os::raw::c_ulong; + pub fn SDL_strtoul( + str: *const ::std::os::raw::c_char, + endp: *mut *mut ::std::os::raw::c_char, + base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulong; } extern "C" { - pub fn SDL_strtoll(str: *const ::std::os::raw::c_char, - endp: *mut *mut ::std::os::raw::c_char, - base: ::std::os::raw::c_int) -> Sint64; + pub fn SDL_strtoll( + str: *const ::std::os::raw::c_char, + endp: *mut *mut ::std::os::raw::c_char, + base: ::std::os::raw::c_int, + ) -> Sint64; } extern "C" { - pub fn SDL_strtoull(str: *const ::std::os::raw::c_char, - endp: *mut *mut ::std::os::raw::c_char, - base: ::std::os::raw::c_int) -> Uint64; + pub fn SDL_strtoull( + str: *const ::std::os::raw::c_char, + endp: *mut *mut ::std::os::raw::c_char, + base: ::std::os::raw::c_int, + ) -> Uint64; } extern "C" { - pub fn SDL_strtod(str: *const ::std::os::raw::c_char, - endp: *mut *mut ::std::os::raw::c_char) -> f64; + pub fn SDL_strtod( + str: *const ::std::os::raw::c_char, + endp: *mut *mut ::std::os::raw::c_char, + ) -> f64; } extern "C" { - pub fn SDL_strcmp(str1: *const ::std::os::raw::c_char, - str2: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn SDL_strcmp( + str1: *const ::std::os::raw::c_char, + str2: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_strncmp(str1: *const ::std::os::raw::c_char, - str2: *const ::std::os::raw::c_char, maxlen: usize) - -> ::std::os::raw::c_int; + pub fn SDL_strncmp( + str1: *const ::std::os::raw::c_char, + str2: *const ::std::os::raw::c_char, + maxlen: usize, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_strcasecmp(str1: *const ::std::os::raw::c_char, - str2: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn SDL_strcasecmp( + str1: *const ::std::os::raw::c_char, + str2: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_strncasecmp(str1: *const ::std::os::raw::c_char, - str2: *const ::std::os::raw::c_char, len: usize) - -> ::std::os::raw::c_int; + pub fn SDL_strncasecmp( + str1: *const ::std::os::raw::c_char, + str2: *const ::std::os::raw::c_char, + len: usize, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_sscanf(text: *const ::std::os::raw::c_char, - fmt: *const ::std::os::raw::c_char, ...) - -> ::std::os::raw::c_int; + pub fn SDL_sscanf( + text: *const ::std::os::raw::c_char, + fmt: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_vsscanf(text: *const ::std::os::raw::c_char, - fmt: *const ::std::os::raw::c_char, - ap: *mut __va_list_tag) -> ::std::os::raw::c_int; + pub fn SDL_vsscanf( + text: *const ::std::os::raw::c_char, + fmt: *const ::std::os::raw::c_char, + ap: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_snprintf(text: *mut ::std::os::raw::c_char, maxlen: usize, - fmt: *const ::std::os::raw::c_char, ...) - -> ::std::os::raw::c_int; + pub fn SDL_snprintf( + text: *mut ::std::os::raw::c_char, + maxlen: usize, + fmt: *const ::std::os::raw::c_char, + ... + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_vsnprintf(text: *mut ::std::os::raw::c_char, maxlen: usize, - fmt: *const ::std::os::raw::c_char, - ap: *mut __va_list_tag) -> ::std::os::raw::c_int; + pub fn SDL_vsnprintf( + text: *mut ::std::os::raw::c_char, + maxlen: usize, + fmt: *const ::std::os::raw::c_char, + ap: *mut __va_list_tag, + ) -> ::std::os::raw::c_int; } extern "C" { pub fn SDL_acos(x: f64) -> f64; @@ -872,54 +1353,64 @@ pub struct _SDL_iconv_t { } pub type SDL_iconv_t = *mut _SDL_iconv_t; extern "C" { - pub fn SDL_iconv_open(tocode: *const ::std::os::raw::c_char, - fromcode: *const ::std::os::raw::c_char) - -> SDL_iconv_t; + pub fn SDL_iconv_open( + tocode: *const ::std::os::raw::c_char, + fromcode: *const ::std::os::raw::c_char, + ) -> SDL_iconv_t; } extern "C" { pub fn SDL_iconv_close(cd: SDL_iconv_t) -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_iconv(cd: SDL_iconv_t, - inbuf: *mut *const ::std::os::raw::c_char, - inbytesleft: *mut usize, - outbuf: *mut *mut ::std::os::raw::c_char, - outbytesleft: *mut usize) -> usize; + pub fn SDL_iconv( + cd: SDL_iconv_t, + inbuf: *mut *const ::std::os::raw::c_char, + inbytesleft: *mut usize, + outbuf: *mut *mut ::std::os::raw::c_char, + outbytesleft: *mut usize, + ) -> usize; } extern "C" { /// This function converts a string between encodings in one pass, returning a -/// string that must be freed with SDL_free() or NULL on error. - pub fn SDL_iconv_string(tocode: *const ::std::os::raw::c_char, - fromcode: *const ::std::os::raw::c_char, - inbuf: *const ::std::os::raw::c_char, - inbytesleft: usize) - -> *mut ::std::os::raw::c_char; + /// string that must be freed with SDL_free() or NULL on error. + pub fn SDL_iconv_string( + tocode: *const ::std::os::raw::c_char, + fromcode: *const ::std::os::raw::c_char, + inbuf: *const ::std::os::raw::c_char, + inbytesleft: usize, + ) -> *mut ::std::os::raw::c_char; } extern "C" { /// The prototype for the application's main() function - pub fn SDL_main(argc: ::std::os::raw::c_int, - argv: *mut *mut ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn SDL_main( + argc: ::std::os::raw::c_int, + argv: *mut *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; } extern "C" { /// This is called by the real SDL main function to let the rest of the -/// library know that initialization was done properly. -/// -/// Calling this yourself without knowing what you're doing can cause -/// crashes and hard to diagnose problems with your application. + /// library know that initialization was done properly. + /// + /// Calling this yourself without knowing what you're doing can cause + /// crashes and hard to diagnose problems with your application. pub fn SDL_SetMainReady(); } #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_AssertState { + /// < Retry the assert immediately. SDL_ASSERTION_RETRY = 0, + /// < Make the debugger trigger a breakpoint. SDL_ASSERTION_BREAK = 1, + /// < Terminate the program. SDL_ASSERTION_ABORT = 2, + /// < Ignore the assert. SDL_ASSERTION_IGNORE = 3, + /// < Ignore the assert from now on. SDL_ASSERTION_ALWAYS_IGNORE = 4, } #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_AssertData { pub always_ignore: ::std::os::raw::c_int, pub trigger_count: ::std::os::raw::c_uint, @@ -931,182 +1422,222 @@ pub struct SDL_AssertData { } #[test] fn bindgen_test_layout_SDL_AssertData() { - assert_eq!(::std::mem::size_of::() , 48usize , concat ! ( - "Size of: " , stringify ! ( SDL_AssertData ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( SDL_AssertData ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AssertData ) ) . always_ignore as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AssertData ) , "::" - , stringify ! ( always_ignore ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AssertData ) ) . trigger_count as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AssertData ) , "::" - , stringify ! ( trigger_count ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AssertData ) ) . condition as * const - _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AssertData ) , "::" - , stringify ! ( condition ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AssertData ) ) . filename as * const - _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AssertData ) , "::" - , stringify ! ( filename ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AssertData ) ) . linenum as * const _ - as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AssertData ) , "::" - , stringify ! ( linenum ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AssertData ) ) . function as * const - _ as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AssertData ) , "::" - , stringify ! ( function ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AssertData ) ) . next as * const _ as - usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AssertData ) , "::" - , stringify ! ( next ) )); -} -impl Clone for SDL_AssertData { - fn clone(&self) -> Self { *self } -} -extern "C" { - pub fn SDL_ReportAssertion(arg1: *mut SDL_AssertData, - arg2: *const ::std::os::raw::c_char, - arg3: *const ::std::os::raw::c_char, - arg4: ::std::os::raw::c_int) - -> SDL_AssertState; -} -pub type SDL_AssertionHandler = - ::std::option::Option SDL_AssertState>; + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(SDL_AssertData)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_AssertData)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).always_ignore as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_AssertData), + "::", + stringify!(always_ignore) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).trigger_count as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_AssertData), + "::", + stringify!(trigger_count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).condition as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_AssertData), + "::", + stringify!(condition) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).filename as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_AssertData), + "::", + stringify!(filename) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).linenum as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_AssertData), + "::", + stringify!(linenum) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).function as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_AssertData), + "::", + stringify!(function) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).next as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(SDL_AssertData), + "::", + stringify!(next) + ) + ); +} +extern "C" { + pub fn SDL_ReportAssertion( + arg1: *mut SDL_AssertData, + arg2: *const ::std::os::raw::c_char, + arg3: *const ::std::os::raw::c_char, + arg4: ::std::os::raw::c_int, + ) -> SDL_AssertState; +} +pub type SDL_AssertionHandler = ::std::option::Option< + unsafe extern "C" fn(data: *const SDL_AssertData, userdata: *mut ::std::os::raw::c_void) + -> SDL_AssertState, +>; extern "C" { /// \brief Set an application-defined assertion handler. -/// -/// This allows an app to show its own assertion UI and/or force the -/// response to an assertion failure. If the app doesn't provide this, SDL -/// will try to do the right thing, popping up a system-specific GUI dialog, -/// and probably minimizing any fullscreen windows. -/// -/// This callback may fire from any thread, but it runs wrapped in a mutex, so -/// it will only fire from one thread at a time. -/// -/// Setting the callback to NULL restores SDL's original internal handler. -/// -/// This callback is NOT reset to SDL's internal handler upon SDL_Quit()! -/// -/// Return SDL_AssertState value of how to handle the assertion failure. -/// -/// \param handler Callback function, called when an assertion fails. -/// \param userdata A pointer passed to the callback as-is. - pub fn SDL_SetAssertionHandler(handler: SDL_AssertionHandler, - userdata: *mut ::std::os::raw::c_void); + /// + /// This allows an app to show its own assertion UI and/or force the + /// response to an assertion failure. If the app doesn't provide this, SDL + /// will try to do the right thing, popping up a system-specific GUI dialog, + /// and probably minimizing any fullscreen windows. + /// + /// This callback may fire from any thread, but it runs wrapped in a mutex, so + /// it will only fire from one thread at a time. + /// + /// Setting the callback to NULL restores SDL's original internal handler. + /// + /// This callback is NOT reset to SDL's internal handler upon SDL_Quit()! + /// + /// Return SDL_AssertState value of how to handle the assertion failure. + /// + /// \param handler Callback function, called when an assertion fails. + /// \param userdata A pointer passed to the callback as-is. + pub fn SDL_SetAssertionHandler( + handler: SDL_AssertionHandler, + userdata: *mut ::std::os::raw::c_void, + ); } extern "C" { /// \brief Get the default assertion handler. -/// -/// This returns the function pointer that is called by default when an -/// assertion is triggered. This is an internal function provided by SDL, -/// that is used for assertions when SDL_SetAssertionHandler() hasn't been -/// used to provide a different function. -/// -/// \return The default SDL_AssertionHandler that is called when an assert triggers. + /// + /// This returns the function pointer that is called by default when an + /// assertion is triggered. This is an internal function provided by SDL, + /// that is used for assertions when SDL_SetAssertionHandler() hasn't been + /// used to provide a different function. + /// + /// \return The default SDL_AssertionHandler that is called when an assert triggers. pub fn SDL_GetDefaultAssertionHandler() -> SDL_AssertionHandler; } extern "C" { /// \brief Get the current assertion handler. -/// -/// This returns the function pointer that is called when an assertion is -/// triggered. This is either the value last passed to -/// SDL_SetAssertionHandler(), or if no application-specified function is -/// set, is equivalent to calling SDL_GetDefaultAssertionHandler(). -/// -/// \param puserdata Pointer to a void*, which will store the "userdata" -/// pointer that was passed to SDL_SetAssertionHandler(). -/// This value will always be NULL for the default handler. -/// If you don't care about this data, it is safe to pass -/// a NULL pointer to this function to ignore it. -/// \return The SDL_AssertionHandler that is called when an assert triggers. - pub fn SDL_GetAssertionHandler(puserdata: - *mut *mut ::std::os::raw::c_void) - -> SDL_AssertionHandler; + /// + /// This returns the function pointer that is called when an assertion is + /// triggered. This is either the value last passed to + /// SDL_SetAssertionHandler(), or if no application-specified function is + /// set, is equivalent to calling SDL_GetDefaultAssertionHandler(). + /// + /// \param puserdata Pointer to a void*, which will store the "userdata" + /// pointer that was passed to SDL_SetAssertionHandler(). + /// This value will always be NULL for the default handler. + /// If you don't care about this data, it is safe to pass + /// a NULL pointer to this function to ignore it. + /// \return The SDL_AssertionHandler that is called when an assert triggers. + pub fn SDL_GetAssertionHandler( + puserdata: *mut *mut ::std::os::raw::c_void, + ) -> SDL_AssertionHandler; } extern "C" { /// \brief Get a list of all assertion failures. -/// -/// Get all assertions triggered since last call to SDL_ResetAssertionReport(), -/// or the start of the program. -/// -/// The proper way to examine this data looks something like this: -/// -/// -/// const SDL_AssertData *item = SDL_GetAssertionReport(); -/// while (item) { -/// printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n", -/// item->condition, item->function, item->filename, -/// item->linenum, item->trigger_count, -/// item->always_ignore ? "yes" : "no"); -/// item = item->next; -/// } -/// -/// -/// \return List of all assertions. -/// \sa SDL_ResetAssertionReport + /// + /// Get all assertions triggered since last call to SDL_ResetAssertionReport(), + /// or the start of the program. + /// + /// The proper way to examine this data looks something like this: + /// + /// + /// const SDL_AssertData *item = SDL_GetAssertionReport(); + /// while (item) { + /// printf("'%s', %s (%s:%d), triggered %u times, always ignore: %s.\\n", + /// item->condition, item->function, item->filename, + /// item->linenum, item->trigger_count, + /// item->always_ignore ? "yes" : "no"); + /// item = item->next; + /// } + /// + /// + /// \return List of all assertions. + /// \sa SDL_ResetAssertionReport pub fn SDL_GetAssertionReport() -> *const SDL_AssertData; } extern "C" { /// \brief Reset the list of all assertion failures. -/// -/// Reset list of all assertions triggered. -/// -/// \sa SDL_GetAssertionReport + /// + /// Reset list of all assertions triggered. + /// + /// \sa SDL_GetAssertionReport pub fn SDL_ResetAssertionReport(); } pub type SDL_SpinLock = ::std::os::raw::c_int; extern "C" { /// \brief Try to lock a spin lock by setting it to a non-zero value. -/// -/// \param lock Points to the lock. -/// -/// \return SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already held. + /// + /// \param lock Points to the lock. + /// + /// \return SDL_TRUE if the lock succeeded, SDL_FALSE if the lock is already held. pub fn SDL_AtomicTryLock(lock: *mut SDL_SpinLock) -> SDL_bool; } extern "C" { /// \brief Lock a spin lock by setting it to a non-zero value. -/// -/// \param lock Points to the lock. + /// + /// \param lock Points to the lock. pub fn SDL_AtomicLock(lock: *mut SDL_SpinLock); } extern "C" { /// \brief Unlock a spin lock by setting it to 0. Always returns immediately -/// -/// \param lock Points to the lock. + /// + /// \param lock Points to the lock. pub fn SDL_AtomicUnlock(lock: *mut SDL_SpinLock); } extern "C" { /// Memory barriers are designed to prevent reads and writes from being -/// reordered by the compiler and being seen out of order on multi-core CPUs. -/// -/// A typical pattern would be for thread A to write some data and a flag, -/// and for thread B to read the flag and get the data. In this case you -/// would insert a release barrier between writing the data and the flag, -/// guaranteeing that the data write completes no later than the flag is -/// written, and you would insert an acquire barrier between reading the -/// flag and reading the data, to ensure that all the reads associated -/// with the flag have completed. -/// -/// In this pattern you should always see a release barrier paired with -/// an acquire barrier and you should gate the data reads/writes with a -/// single flag variable. -/// -/// For more information on these semantics, take a look at the blog post: -/// http://preshing.com/20120913/acquire-and-release-semantics + /// reordered by the compiler and being seen out of order on multi-core CPUs. + /// + /// A typical pattern would be for thread A to write some data and a flag, + /// and for thread B to read the flag and get the data. In this case you + /// would insert a release barrier between writing the data and the flag, + /// guaranteeing that the data write completes no later than the flag is + /// written, and you would insert an acquire barrier between reading the + /// flag and reading the data, to ensure that all the reads associated + /// with the flag have completed. + /// + /// In this pattern you should always see a release barrier paired with + /// an acquire barrier and you should gate the data reads/writes with a + /// single flag variable. + /// + /// For more information on these semantics, take a look at the blog post: + /// http://preshing.com/20120913/acquire-and-release-semantics pub fn SDL_MemoryBarrierReleaseFunction(); } extern "C" { @@ -1115,40 +1646,50 @@ extern "C" { /// \brief A type representing an atomic integer value. It is a struct /// so people don't accidentally use numeric operations on it. #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_atomic_t { pub value: ::std::os::raw::c_int, } #[test] fn bindgen_test_layout_SDL_atomic_t() { - assert_eq!(::std::mem::size_of::() , 4usize , concat ! ( - "Size of: " , stringify ! ( SDL_atomic_t ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! ( - "Alignment of " , stringify ! ( SDL_atomic_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_atomic_t ) ) . value as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_atomic_t ) , "::" , - stringify ! ( value ) )); -} -impl Clone for SDL_atomic_t { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(SDL_atomic_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_atomic_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).value as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_atomic_t), + "::", + stringify!(value) + ) + ); } extern "C" { /// \brief Set an atomic variable to a new value if it is currently an old value. -/// -/// \return SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise. -/// -/// \note If you don't know what this function is for, you shouldn't use it! - pub fn SDL_AtomicCAS(a: *mut SDL_atomic_t, oldval: ::std::os::raw::c_int, - newval: ::std::os::raw::c_int) -> SDL_bool; + /// + /// \return SDL_TRUE if the atomic variable was set, SDL_FALSE otherwise. + /// + /// \note If you don't know what this function is for, you shouldn't use it! + pub fn SDL_AtomicCAS( + a: *mut SDL_atomic_t, + oldval: ::std::os::raw::c_int, + newval: ::std::os::raw::c_int, + ) -> SDL_bool; } extern "C" { /// \brief Set an atomic variable to a value. -/// -/// \return The previous value of the atomic variable. - pub fn SDL_AtomicSet(a: *mut SDL_atomic_t, v: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \return The previous value of the atomic variable. + pub fn SDL_AtomicSet(a: *mut SDL_atomic_t, v: ::std::os::raw::c_int) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the value of an atomic variable @@ -1156,39 +1697,39 @@ extern "C" { } extern "C" { /// \brief Add to an atomic variable. -/// -/// \return The previous value of the atomic variable. -/// -/// \note This same style can be used for any number operation - pub fn SDL_AtomicAdd(a: *mut SDL_atomic_t, v: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \return The previous value of the atomic variable. + /// + /// \note This same style can be used for any number operation + pub fn SDL_AtomicAdd(a: *mut SDL_atomic_t, v: ::std::os::raw::c_int) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set a pointer to a new value if it is currently an old value. -/// -/// \return SDL_TRUE if the pointer was set, SDL_FALSE otherwise. -/// -/// \note If you don't know what this function is for, you shouldn't use it! - pub fn SDL_AtomicCASPtr(a: *mut *mut ::std::os::raw::c_void, - oldval: *mut ::std::os::raw::c_void, - newval: *mut ::std::os::raw::c_void) -> SDL_bool; + /// + /// \return SDL_TRUE if the pointer was set, SDL_FALSE otherwise. + /// + /// \note If you don't know what this function is for, you shouldn't use it! + pub fn SDL_AtomicCASPtr( + a: *mut *mut ::std::os::raw::c_void, + oldval: *mut ::std::os::raw::c_void, + newval: *mut ::std::os::raw::c_void, + ) -> SDL_bool; } extern "C" { /// \brief Set a pointer to a value atomically. -/// -/// \return The previous value of the pointer. - pub fn SDL_AtomicSetPtr(a: *mut *mut ::std::os::raw::c_void, - v: *mut ::std::os::raw::c_void) - -> *mut ::std::os::raw::c_void; + /// + /// \return The previous value of the pointer. + pub fn SDL_AtomicSetPtr( + a: *mut *mut ::std::os::raw::c_void, + v: *mut ::std::os::raw::c_void, + ) -> *mut ::std::os::raw::c_void; } extern "C" { /// \brief Get the value of a pointer atomically. - pub fn SDL_AtomicGetPtr(a: *mut *mut ::std::os::raw::c_void) - -> *mut ::std::os::raw::c_void; + pub fn SDL_AtomicGetPtr(a: *mut *mut ::std::os::raw::c_void) -> *mut ::std::os::raw::c_void; } extern "C" { - pub fn SDL_SetError(fmt: *const ::std::os::raw::c_char, ...) - -> ::std::os::raw::c_int; + pub fn SDL_SetError(fmt: *const ::std::os::raw::c_char, ...) -> ::std::os::raw::c_int; } extern "C" { pub fn SDL_GetError() -> *const ::std::os::raw::c_char; @@ -1223,8 +1764,8 @@ extern "C" { } extern "C" { /// Try to lock the mutex -/// -/// \return 0, SDL_MUTEX_TIMEDOUT, or -1 on error + /// + /// \return 0, SDL_MUTEX_TIMEDOUT, or -1 on error pub fn SDL_TryLockMutex(mutex: *mut SDL_mutex) -> ::std::os::raw::c_int; } extern "C" { @@ -1250,32 +1791,31 @@ extern "C" { } extern "C" { /// This function suspends the calling thread until the semaphore pointed -/// to by \c sem has a positive count. It then atomically decreases the -/// semaphore count. + /// to by \c sem has a positive count. It then atomically decreases the + /// semaphore count. pub fn SDL_SemWait(sem: *mut SDL_sem) -> ::std::os::raw::c_int; } extern "C" { /// Non-blocking variant of SDL_SemWait(). -/// -/// \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait would -/// block, and -1 on error. + /// + /// \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait would + /// block, and -1 on error. pub fn SDL_SemTryWait(sem: *mut SDL_sem) -> ::std::os::raw::c_int; } extern "C" { /// Variant of SDL_SemWait() with a timeout in milliseconds. -/// -/// \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait does not -/// succeed in the allotted time, and -1 on error. -/// -/// \warning On some platforms this function is implemented by looping with a -/// delay of 1 ms, and so should be avoided if possible. - pub fn SDL_SemWaitTimeout(sem: *mut SDL_sem, ms: Uint32) - -> ::std::os::raw::c_int; + /// + /// \return 0 if the wait succeeds, ::SDL_MUTEX_TIMEDOUT if the wait does not + /// succeed in the allotted time, and -1 on error. + /// + /// \warning On some platforms this function is implemented by looping with a + /// delay of 1 ms, and so should be avoided if possible. + pub fn SDL_SemWaitTimeout(sem: *mut SDL_sem, ms: Uint32) -> ::std::os::raw::c_int; } extern "C" { /// Atomically increases the semaphore's count (not blocking). -/// -/// \return 0, or -1 on error. + /// + /// \return 0, or -1 on error. pub fn SDL_SemPost(sem: *mut SDL_sem) -> ::std::os::raw::c_int; } extern "C" { @@ -1289,31 +1829,31 @@ pub struct SDL_cond { } extern "C" { /// Create a condition variable. -/// -/// Typical use of condition variables: -/// -/// Thread A: -/// SDL_LockMutex(lock); -/// while ( ! condition ) { -/// SDL_CondWait(cond, lock); -/// } -/// SDL_UnlockMutex(lock); -/// -/// Thread B: -/// SDL_LockMutex(lock); -/// ... -/// condition = true; -/// ... -/// SDL_CondSignal(cond); -/// SDL_UnlockMutex(lock); -/// -/// There is some discussion whether to signal the condition variable -/// with the mutex locked or not. There is some potential performance -/// benefit to unlocking first on some platforms, but there are some -/// potential race conditions depending on how your code is structured. -/// -/// In general it's safer to signal the condition variable while the -/// mutex is locked. + /// + /// Typical use of condition variables: + /// + /// Thread A: + /// SDL_LockMutex(lock); + /// while ( ! condition ) { + /// SDL_CondWait(cond, lock); + /// } + /// SDL_UnlockMutex(lock); + /// + /// Thread B: + /// SDL_LockMutex(lock); + /// ... + /// condition = true; + /// ... + /// SDL_CondSignal(cond); + /// SDL_UnlockMutex(lock); + /// + /// There is some discussion whether to signal the condition variable + /// with the mutex locked or not. There is some potential performance + /// benefit to unlocking first on some platforms, but there are some + /// potential race conditions depending on how your code is structured. + /// + /// In general it's safer to signal the condition variable while the + /// mutex is locked. pub fn SDL_CreateCond() -> *mut SDL_cond; } extern "C" { @@ -1322,36 +1862,38 @@ extern "C" { } extern "C" { /// Restart one of the threads that are waiting on the condition variable. -/// -/// \return 0 or -1 on error. + /// + /// \return 0 or -1 on error. pub fn SDL_CondSignal(cond: *mut SDL_cond) -> ::std::os::raw::c_int; } extern "C" { /// Restart all threads that are waiting on the condition variable. -/// -/// \return 0 or -1 on error. + /// + /// \return 0 or -1 on error. pub fn SDL_CondBroadcast(cond: *mut SDL_cond) -> ::std::os::raw::c_int; } extern "C" { /// Wait on the condition variable, unlocking the provided mutex. -/// -/// \warning The mutex must be locked before entering this function! -/// -/// The mutex is re-locked once the condition variable is signaled. -/// -/// \return 0 when it is signaled, or -1 on error. - pub fn SDL_CondWait(cond: *mut SDL_cond, mutex: *mut SDL_mutex) - -> ::std::os::raw::c_int; + /// + /// \warning The mutex must be locked before entering this function! + /// + /// The mutex is re-locked once the condition variable is signaled. + /// + /// \return 0 when it is signaled, or -1 on error. + pub fn SDL_CondWait(cond: *mut SDL_cond, mutex: *mut SDL_mutex) -> ::std::os::raw::c_int; } extern "C" { /// Waits for at most \c ms milliseconds, and returns 0 if the condition -/// variable is signaled, ::SDL_MUTEX_TIMEDOUT if the condition is not -/// signaled in the allotted time, and -1 on error. -/// -/// \warning On some platforms this function is implemented by looping with a -/// delay of 1 ms, and so should be avoided if possible. - pub fn SDL_CondWaitTimeout(cond: *mut SDL_cond, mutex: *mut SDL_mutex, - ms: Uint32) -> ::std::os::raw::c_int; + /// variable is signaled, ::SDL_MUTEX_TIMEDOUT if the condition is not + /// signaled in the allotted time, and -1 on error. + /// + /// \warning On some platforms this function is implemented by looping with a + /// delay of 1 ms, and so should be avoided if possible. + pub fn SDL_CondWaitTimeout( + cond: *mut SDL_cond, + mutex: *mut SDL_mutex, + ms: Uint32, + ) -> ::std::os::raw::c_int; } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -1372,40 +1914,39 @@ pub enum SDL_ThreadPriority { } /// The function passed to SDL_CreateThread(). /// It is passed a void* user context parameter and returns an int. -pub type SDL_ThreadFunction = - ::std::option::Option ::std::os::raw::c_int>; +pub type SDL_ThreadFunction = ::std::option::Option< + unsafe extern "C" fn(data: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int, +>; extern "C" { /// Create a thread. -/// -/// Thread naming is a little complicated: Most systems have very small -/// limits for the string length (Haiku has 32 bytes, Linux currently has 16, -/// Visual C++ 6.0 has nine!), and possibly other arbitrary rules. You'll -/// have to see what happens with your system's debugger. The name should be -/// UTF-8 (but using the naming limits of C identifiers is a better bet). -/// There are no requirements for thread naming conventions, so long as the -/// string is null-terminated UTF-8, but these guidelines are helpful in -/// choosing a name: -/// -/// http://stackoverflow.com/questions/149932/naming-conventions-for-threads -/// -/// If a system imposes requirements, SDL will try to munge the string for -/// it (truncate, etc), but the original string contents will be available -/// from SDL_GetThreadName(). - pub fn SDL_CreateThread(fn_: SDL_ThreadFunction, - name: *const ::std::os::raw::c_char, - data: *mut ::std::os::raw::c_void) - -> *mut SDL_Thread; + /// + /// Thread naming is a little complicated: Most systems have very small + /// limits for the string length (Haiku has 32 bytes, Linux currently has 16, + /// Visual C++ 6.0 has nine!), and possibly other arbitrary rules. You'll + /// have to see what happens with your system's debugger. The name should be + /// UTF-8 (but using the naming limits of C identifiers is a better bet). + /// There are no requirements for thread naming conventions, so long as the + /// string is null-terminated UTF-8, but these guidelines are helpful in + /// choosing a name: + /// + /// http://stackoverflow.com/questions/149932/naming-conventions-for-threads + /// + /// If a system imposes requirements, SDL will try to munge the string for + /// it (truncate, etc), but the original string contents will be available + /// from SDL_GetThreadName(). + pub fn SDL_CreateThread( + fn_: SDL_ThreadFunction, + name: *const ::std::os::raw::c_char, + data: *mut ::std::os::raw::c_void, + ) -> *mut SDL_Thread; } extern "C" { /// Get the thread name, as it was specified in SDL_CreateThread(). -/// This function returns a pointer to a UTF-8 string that names the -/// specified thread, or NULL if it doesn't have a name. This is internal -/// memory, not to be free()'d by the caller, and remains valid until the -/// specified thread is cleaned up by SDL_WaitThread(). - pub fn SDL_GetThreadName(thread: *mut SDL_Thread) - -> *const ::std::os::raw::c_char; + /// This function returns a pointer to a UTF-8 string that names the + /// specified thread, or NULL if it doesn't have a name. This is internal + /// memory, not to be free()'d by the caller, and remains valid until the + /// specified thread is cleaned up by SDL_WaitThread(). + pub fn SDL_GetThreadName(thread: *mut SDL_Thread) -> *const ::std::os::raw::c_char; } extern "C" { /// Get the thread identifier for the current thread. @@ -1413,179 +1954,178 @@ extern "C" { } extern "C" { /// Get the thread identifier for the specified thread. -/// -/// Equivalent to SDL_ThreadID() if the specified thread is NULL. + /// + /// Equivalent to SDL_ThreadID() if the specified thread is NULL. pub fn SDL_GetThreadID(thread: *mut SDL_Thread) -> SDL_threadID; } extern "C" { /// Set the priority for the current thread - pub fn SDL_SetThreadPriority(priority: SDL_ThreadPriority) - -> ::std::os::raw::c_int; + pub fn SDL_SetThreadPriority(priority: SDL_ThreadPriority) -> ::std::os::raw::c_int; } extern "C" { /// Wait for a thread to finish. Threads that haven't been detached will -/// remain (as a "zombie") until this function cleans them up. Not doing so -/// is a resource leak. -/// -/// Once a thread has been cleaned up through this function, the SDL_Thread -/// that references it becomes invalid and should not be referenced again. -/// As such, only one thread may call SDL_WaitThread() on another. -/// -/// The return code for the thread function is placed in the area -/// pointed to by \c status, if \c status is not NULL. -/// -/// You may not wait on a thread that has been used in a call to -/// SDL_DetachThread(). Use either that function or this one, but not -/// both, or behavior is undefined. -/// -/// It is safe to pass NULL to this function; it is a no-op. - pub fn SDL_WaitThread(thread: *mut SDL_Thread, - status: *mut ::std::os::raw::c_int); + /// remain (as a "zombie") until this function cleans them up. Not doing so + /// is a resource leak. + /// + /// Once a thread has been cleaned up through this function, the SDL_Thread + /// that references it becomes invalid and should not be referenced again. + /// As such, only one thread may call SDL_WaitThread() on another. + /// + /// The return code for the thread function is placed in the area + /// pointed to by \c status, if \c status is not NULL. + /// + /// You may not wait on a thread that has been used in a call to + /// SDL_DetachThread(). Use either that function or this one, but not + /// both, or behavior is undefined. + /// + /// It is safe to pass NULL to this function; it is a no-op. + pub fn SDL_WaitThread(thread: *mut SDL_Thread, status: *mut ::std::os::raw::c_int); } extern "C" { /// A thread may be "detached" to signify that it should not remain until -/// another thread has called SDL_WaitThread() on it. Detaching a thread -/// is useful for long-running threads that nothing needs to synchronize -/// with or further manage. When a detached thread is done, it simply -/// goes away. -/// -/// There is no way to recover the return code of a detached thread. If you -/// need this, don't detach the thread and instead use SDL_WaitThread(). -/// -/// Once a thread is detached, you should usually assume the SDL_Thread isn't -/// safe to reference again, as it will become invalid immediately upon -/// the detached thread's exit, instead of remaining until someone has called -/// SDL_WaitThread() to finally clean it up. As such, don't detach the same -/// thread more than once. -/// -/// If a thread has already exited when passed to SDL_DetachThread(), it will -/// stop waiting for a call to SDL_WaitThread() and clean up immediately. -/// It is not safe to detach a thread that might be used with SDL_WaitThread(). -/// -/// You may not call SDL_WaitThread() on a thread that has been detached. -/// Use either that function or this one, but not both, or behavior is -/// undefined. -/// -/// It is safe to pass NULL to this function; it is a no-op. + /// another thread has called SDL_WaitThread() on it. Detaching a thread + /// is useful for long-running threads that nothing needs to synchronize + /// with or further manage. When a detached thread is done, it simply + /// goes away. + /// + /// There is no way to recover the return code of a detached thread. If you + /// need this, don't detach the thread and instead use SDL_WaitThread(). + /// + /// Once a thread is detached, you should usually assume the SDL_Thread isn't + /// safe to reference again, as it will become invalid immediately upon + /// the detached thread's exit, instead of remaining until someone has called + /// SDL_WaitThread() to finally clean it up. As such, don't detach the same + /// thread more than once. + /// + /// If a thread has already exited when passed to SDL_DetachThread(), it will + /// stop waiting for a call to SDL_WaitThread() and clean up immediately. + /// It is not safe to detach a thread that might be used with SDL_WaitThread(). + /// + /// You may not call SDL_WaitThread() on a thread that has been detached. + /// Use either that function or this one, but not both, or behavior is + /// undefined. + /// + /// It is safe to pass NULL to this function; it is a no-op. pub fn SDL_DetachThread(thread: *mut SDL_Thread); } extern "C" { /// \brief Create an identifier that is globally visible to all threads but refers to data that is thread-specific. -/// -/// \return The newly created thread local storage identifier, or 0 on error -/// -/// \code -/// static SDL_SpinLock tls_lock; -/// static SDL_TLSID thread_local_storage; -/// -/// void SetMyThreadData(void *value) -/// { -/// if (!thread_local_storage) { -/// SDL_AtomicLock(&tls_lock); -/// if (!thread_local_storage) { -/// thread_local_storage = SDL_TLSCreate(); -/// } -/// SDL_AtomicUnlock(&tls_lock); -/// } -/// SDL_TLSSet(thread_local_storage, value, 0); -/// } -/// -/// void *GetMyThreadData(void) -/// { -/// return SDL_TLSGet(thread_local_storage); -/// } -/// \endcode -/// -/// \sa SDL_TLSGet() -/// \sa SDL_TLSSet() + /// + /// \return The newly created thread local storage identifier, or 0 on error + /// + /// \code + /// static SDL_SpinLock tls_lock; + /// static SDL_TLSID thread_local_storage; + /// + /// void SetMyThreadData(void *value) + /// { + /// if (!thread_local_storage) { + /// SDL_AtomicLock(&tls_lock); + /// if (!thread_local_storage) { + /// thread_local_storage = SDL_TLSCreate(); + /// } + /// SDL_AtomicUnlock(&tls_lock); + /// } + /// SDL_TLSSet(thread_local_storage, value, 0); + /// } + /// + /// void *GetMyThreadData(void) + /// { + /// return SDL_TLSGet(thread_local_storage); + /// } + /// \endcode + /// + /// \sa SDL_TLSGet() + /// \sa SDL_TLSSet() pub fn SDL_TLSCreate() -> SDL_TLSID; } extern "C" { /// \brief Get the value associated with a thread local storage ID for the current thread. -/// -/// \param id The thread local storage ID -/// -/// \return The value associated with the ID for the current thread, or NULL if no value has been set. -/// -/// \sa SDL_TLSCreate() -/// \sa SDL_TLSSet() + /// + /// \param id The thread local storage ID + /// + /// \return The value associated with the ID for the current thread, or NULL if no value has been set. + /// + /// \sa SDL_TLSCreate() + /// \sa SDL_TLSSet() pub fn SDL_TLSGet(id: SDL_TLSID) -> *mut ::std::os::raw::c_void; } extern "C" { /// \brief Set the value associated with a thread local storage ID for the current thread. -/// -/// \param id The thread local storage ID -/// \param value The value to associate with the ID for the current thread -/// \param destructor A function called when the thread exits, to free the value. -/// -/// \return 0 on success, -1 on error -/// -/// \sa SDL_TLSCreate() -/// \sa SDL_TLSGet() - pub fn SDL_TLSSet(id: SDL_TLSID, value: *const ::std::os::raw::c_void, - destructor: - ::std::option::Option) - -> ::std::os::raw::c_int; + /// + /// \param id The thread local storage ID + /// \param value The value to associate with the ID for the current thread + /// \param destructor A function called when the thread exits, to free the value. + /// + /// \return 0 on success, -1 on error + /// + /// \sa SDL_TLSCreate() + /// \sa SDL_TLSGet() + pub fn SDL_TLSSet( + id: SDL_TLSID, + value: *const ::std::os::raw::c_void, + destructor: ::std::option::Option, + ) -> ::std::os::raw::c_int; } /// This is the read/write operation structure -- very basic. #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub struct SDL_RWops { /// Return the size of the file in this rwops, or -1 if unknown - pub size: ::std::option::Option Sint64>, + pub size: ::std::option::Option Sint64>, /// Seek to \c offset relative to \c whence, one of stdio's whence values: /// RW_SEEK_SET, RW_SEEK_CUR, RW_SEEK_END /// /// \return the final offset in the data stream, or -1 on error. - pub seek: ::std::option::Option Sint64>, + pub seek: ::std::option::Option< + unsafe extern "C" fn( + context: *mut SDL_RWops, + offset: Sint64, + whence: ::std::os::raw::c_int, + ) -> Sint64, + >, /// Read up to \c maxnum objects each of size \c size from the data /// stream to the area pointed at by \c ptr. /// /// \return the number of objects read, or 0 at error or end of file. - pub read: ::std::option::Option usize>, + pub read: ::std::option::Option< + unsafe extern "C" fn( + context: *mut SDL_RWops, + ptr: *mut ::std::os::raw::c_void, + size: usize, + maxnum: usize, + ) -> usize, + >, /// Write exactly \c num objects each of size \c size from the area /// pointed at by \c ptr to data stream. /// /// \return the number of objects written, or 0 at error or end of file. - pub write: ::std::option::Option usize>, + pub write: ::std::option::Option< + unsafe extern "C" fn( + context: *mut SDL_RWops, + ptr: *const ::std::os::raw::c_void, + size: usize, + num: usize, + ) -> usize, + >, /// Close and free an allocated SDL_RWops structure. /// /// \return 0 if successful or -1 on write error when flushing data. - pub close: ::std::option::Option ::std::os::raw::c_int>, + pub close: ::std::option::Option< + unsafe extern "C" fn(context: *mut SDL_RWops) -> ::std::os::raw::c_int, + >, pub type_: Uint32, pub hidden: SDL_RWops__bindgen_ty_1, } #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub union SDL_RWops__bindgen_ty_1 { pub mem: SDL_RWops__bindgen_ty_1__bindgen_ty_1, pub unknown: SDL_RWops__bindgen_ty_1__bindgen_ty_2, _bindgen_union_align: [u64; 3usize], } #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_RWops__bindgen_ty_1__bindgen_ty_1 { pub base: *mut Uint8, pub here: *mut Uint8, @@ -1593,151 +2133,249 @@ pub struct SDL_RWops__bindgen_ty_1__bindgen_ty_1 { } #[test] fn bindgen_test_layout_SDL_RWops__bindgen_ty_1__bindgen_ty_1() { - assert_eq!(::std::mem::size_of::() - , 24usize , concat ! ( - "Size of: " , stringify ! ( - SDL_RWops__bindgen_ty_1__bindgen_ty_1 ) )); - assert_eq! (::std::mem::align_of::() - , 8usize , concat ! ( - "Alignment of " , stringify ! ( - SDL_RWops__bindgen_ty_1__bindgen_ty_1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops__bindgen_ty_1__bindgen_ty_1 ) ) - . base as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_RWops__bindgen_ty_1__bindgen_ty_1 ) , "::" , stringify ! ( - base ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops__bindgen_ty_1__bindgen_ty_1 ) ) - . here as * const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_RWops__bindgen_ty_1__bindgen_ty_1 ) , "::" , stringify ! ( - here ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops__bindgen_ty_1__bindgen_ty_1 ) ) - . stop as * const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_RWops__bindgen_ty_1__bindgen_ty_1 ) , "::" , stringify ! ( - stop ) )); -} -impl Clone for SDL_RWops__bindgen_ty_1__bindgen_ty_1 { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Debug, Copy)] + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(SDL_RWops__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(SDL_RWops__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).base as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(base) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).here as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(here) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).stop as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(stop) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct SDL_RWops__bindgen_ty_1__bindgen_ty_2 { pub data1: *mut ::std::os::raw::c_void, pub data2: *mut ::std::os::raw::c_void, } #[test] fn bindgen_test_layout_SDL_RWops__bindgen_ty_1__bindgen_ty_2() { - assert_eq!(::std::mem::size_of::() - , 16usize , concat ! ( - "Size of: " , stringify ! ( - SDL_RWops__bindgen_ty_1__bindgen_ty_2 ) )); - assert_eq! (::std::mem::align_of::() - , 8usize , concat ! ( - "Alignment of " , stringify ! ( - SDL_RWops__bindgen_ty_1__bindgen_ty_2 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops__bindgen_ty_1__bindgen_ty_2 ) ) - . data1 as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_RWops__bindgen_ty_1__bindgen_ty_2 ) , "::" , stringify ! ( - data1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops__bindgen_ty_1__bindgen_ty_2 ) ) - . data2 as * const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_RWops__bindgen_ty_1__bindgen_ty_2 ) , "::" , stringify ! ( - data2 ) )); -} -impl Clone for SDL_RWops__bindgen_ty_1__bindgen_ty_2 { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!( + "Size of: ", + stringify!(SDL_RWops__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(SDL_RWops__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).data1 as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(data1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).data2 as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(data2) + ) + ); } #[test] fn bindgen_test_layout_SDL_RWops__bindgen_ty_1() { - assert_eq!(::std::mem::size_of::() , 24usize , - concat ! ( - "Size of: " , stringify ! ( SDL_RWops__bindgen_ty_1 ) )); - assert_eq! (::std::mem::align_of::() , 8usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_RWops__bindgen_ty_1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops__bindgen_ty_1 ) ) . mem as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RWops__bindgen_ty_1 - ) , "::" , stringify ! ( mem ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops__bindgen_ty_1 ) ) . unknown as - * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RWops__bindgen_ty_1 - ) , "::" , stringify ! ( unknown ) )); -} -impl Clone for SDL_RWops__bindgen_ty_1 { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(SDL_RWops__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_RWops__bindgen_ty_1)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).mem as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops__bindgen_ty_1), + "::", + stringify!(mem) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).unknown as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops__bindgen_ty_1), + "::", + stringify!(unknown) + ) + ); } #[test] fn bindgen_test_layout_SDL_RWops() { - assert_eq!(::std::mem::size_of::() , 72usize , concat ! ( - "Size of: " , stringify ! ( SDL_RWops ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( SDL_RWops ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops ) ) . size as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RWops ) , "::" , - stringify ! ( size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops ) ) . seek as * const _ as - usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RWops ) , "::" , - stringify ! ( seek ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops ) ) . read as * const _ as - usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RWops ) , "::" , - stringify ! ( read ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops ) ) . write as * const _ as - usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RWops ) , "::" , - stringify ! ( write ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops ) ) . close as * const _ as - usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RWops ) , "::" , - stringify ! ( close ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops ) ) . type_ as * const _ as - usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RWops ) , "::" , - stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RWops ) ) . hidden as * const _ as - usize } , 48usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RWops ) , "::" , - stringify ! ( hidden ) )); -} -impl Clone for SDL_RWops { - fn clone(&self) -> Self { *self } -} -extern "C" { - pub fn SDL_RWFromFile(file: *const ::std::os::raw::c_char, - mode: *const ::std::os::raw::c_char) - -> *mut SDL_RWops; -} -extern "C" { - pub fn SDL_RWFromFP(fp: *mut ::std::os::raw::c_void, autoclose: SDL_bool) - -> *mut SDL_RWops; -} -extern "C" { - pub fn SDL_RWFromMem(mem: *mut ::std::os::raw::c_void, - size: ::std::os::raw::c_int) -> *mut SDL_RWops; -} -extern "C" { - pub fn SDL_RWFromConstMem(mem: *const ::std::os::raw::c_void, - size: ::std::os::raw::c_int) -> *mut SDL_RWops; + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!("Size of: ", stringify!(SDL_RWops)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_RWops)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).seek as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops), + "::", + stringify!(seek) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).read as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops), + "::", + stringify!(read) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).write as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops), + "::", + stringify!(write) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).close as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops), + "::", + stringify!(close) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).hidden as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(SDL_RWops), + "::", + stringify!(hidden) + ) + ); +} +extern "C" { + pub fn SDL_RWFromFile( + file: *const ::std::os::raw::c_char, + mode: *const ::std::os::raw::c_char, + ) -> *mut SDL_RWops; +} +extern "C" { + pub fn SDL_RWFromFP(fp: *mut ::std::os::raw::c_void, autoclose: SDL_bool) -> *mut SDL_RWops; +} +extern "C" { + pub fn SDL_RWFromMem( + mem: *mut ::std::os::raw::c_void, + size: ::std::os::raw::c_int, + ) -> *mut SDL_RWops; +} +extern "C" { + pub fn SDL_RWFromConstMem( + mem: *const ::std::os::raw::c_void, + size: ::std::os::raw::c_int, + ) -> *mut SDL_RWops; } extern "C" { pub fn SDL_AllocRW() -> *mut SDL_RWops; @@ -1747,19 +2385,21 @@ extern "C" { } extern "C" { /// Load all the data from an SDL data stream. -/// -/// The data is allocated with a zero byte at the end (null terminated) -/// -/// If \c datasize is not NULL, it is filled with the size of the data read. -/// -/// If \c freesrc is non-zero, the stream will be closed after being read. -/// -/// The data should be freed with SDL_free(). -/// -/// \return the data, or NULL if there was an error. - pub fn SDL_LoadFile_RW(src: *mut SDL_RWops, datasize: *mut usize, - freesrc: ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_void; + /// + /// The data is allocated with a zero byte at the end (null terminated) + /// + /// If \c datasize is not NULL, it is filled with the size of the data read. + /// + /// If \c freesrc is non-zero, the stream will be closed after being read. + /// + /// The data should be freed with SDL_free(). + /// + /// \return the data, or NULL if there was an error. + pub fn SDL_LoadFile_RW( + src: *mut SDL_RWops, + datasize: *mut usize, + freesrc: ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_void; } extern "C" { pub fn SDL_ReadU8(src: *mut SDL_RWops) -> Uint8; @@ -1834,14 +2474,16 @@ pub type SDL_AudioFormat = Uint16; /// /// You can choose to avoid callbacks and use SDL_QueueAudio() instead, if /// you like. Just open your audio device with a NULL callback. -pub type SDL_AudioCallback = - ::std::option::Option; +pub type SDL_AudioCallback = ::std::option::Option< + unsafe extern "C" fn( + userdata: *mut ::std::os::raw::c_void, + stream: *mut Uint8, + len: ::std::os::raw::c_int, + ), +>; /// The calculated values in this structure are calculated by SDL_OpenAudio(). #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_AudioSpec { /// < DSP frequency -- samples per second pub freq: ::std::os::raw::c_int, @@ -1864,61 +2506,111 @@ pub struct SDL_AudioSpec { } #[test] fn bindgen_test_layout_SDL_AudioSpec() { - assert_eq!(::std::mem::size_of::() , 32usize , concat ! ( - "Size of: " , stringify ! ( SDL_AudioSpec ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( SDL_AudioSpec ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioSpec ) ) . freq as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioSpec ) , "::" - , stringify ! ( freq ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioSpec ) ) . format as * const _ - as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioSpec ) , "::" - , stringify ! ( format ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioSpec ) ) . channels as * const _ - as usize } , 6usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioSpec ) , "::" - , stringify ! ( channels ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioSpec ) ) . silence as * const _ - as usize } , 7usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioSpec ) , "::" - , stringify ! ( silence ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioSpec ) ) . samples as * const _ - as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioSpec ) , "::" - , stringify ! ( samples ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioSpec ) ) . padding as * const _ - as usize } , 10usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioSpec ) , "::" - , stringify ! ( padding ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioSpec ) ) . size as * const _ as - usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioSpec ) , "::" - , stringify ! ( size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioSpec ) ) . callback as * const _ - as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioSpec ) , "::" - , stringify ! ( callback ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioSpec ) ) . userdata as * const _ - as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioSpec ) , "::" - , stringify ! ( userdata ) )); -} -impl Clone for SDL_AudioSpec { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(SDL_AudioSpec)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_AudioSpec)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).freq as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioSpec), + "::", + stringify!(freq) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).format as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioSpec), + "::", + stringify!(format) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).channels as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioSpec), + "::", + stringify!(channels) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).silence as *const _ as usize }, + 7usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioSpec), + "::", + stringify!(silence) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).samples as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioSpec), + "::", + stringify!(samples) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding as *const _ as usize }, + 10usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioSpec), + "::", + stringify!(padding) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).size as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioSpec), + "::", + stringify!(size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).callback as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioSpec), + "::", + stringify!(callback) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).userdata as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioSpec), + "::", + stringify!(userdata) + ) + ); } +pub type SDL_AudioFilter = + ::std::option::Option; #[repr(C, packed)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_AudioCVT { /// < Set to 1 if conversion possible pub needed: ::std::os::raw::c_int, @@ -1945,138 +2637,192 @@ pub struct SDL_AudioCVT { } #[test] fn bindgen_test_layout_SDL_AudioCVT() { - assert_eq!(::std::mem::size_of::() , 128usize , concat ! ( - "Size of: " , stringify ! ( SDL_AudioCVT ) )); - assert_eq! (::std::mem::align_of::() , 1usize , concat ! ( - "Alignment of " , stringify ! ( SDL_AudioCVT ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioCVT ) ) . needed as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioCVT ) , "::" , - stringify ! ( needed ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioCVT ) ) . src_format as * const - _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioCVT ) , "::" , - stringify ! ( src_format ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioCVT ) ) . dst_format as * const - _ as usize } , 6usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioCVT ) , "::" , - stringify ! ( dst_format ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioCVT ) ) . rate_incr as * const _ - as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioCVT ) , "::" , - stringify ! ( rate_incr ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioCVT ) ) . buf as * const _ as - usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioCVT ) , "::" , - stringify ! ( buf ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioCVT ) ) . len as * const _ as - usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioCVT ) , "::" , - stringify ! ( len ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioCVT ) ) . len_cvt as * const _ - as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioCVT ) , "::" , - stringify ! ( len_cvt ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioCVT ) ) . len_mult as * const _ - as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioCVT ) , "::" , - stringify ! ( len_mult ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioCVT ) ) . len_ratio as * const _ - as usize } , 36usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioCVT ) , "::" , - stringify ! ( len_ratio ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioCVT ) ) . filters as * const _ - as usize } , 44usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioCVT ) , "::" , - stringify ! ( filters ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioCVT ) ) . filter_index as * - const _ as usize } , 124usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioCVT ) , "::" , - stringify ! ( filter_index ) )); -} -impl Clone for SDL_AudioCVT { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 128usize, + concat!("Size of: ", stringify!(SDL_AudioCVT)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(SDL_AudioCVT)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).needed as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioCVT), + "::", + stringify!(needed) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).src_format as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioCVT), + "::", + stringify!(src_format) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).dst_format as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioCVT), + "::", + stringify!(dst_format) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rate_incr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioCVT), + "::", + stringify!(rate_incr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).buf as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioCVT), + "::", + stringify!(buf) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).len as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioCVT), + "::", + stringify!(len) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).len_cvt as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioCVT), + "::", + stringify!(len_cvt) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).len_mult as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioCVT), + "::", + stringify!(len_mult) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).len_ratio as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioCVT), + "::", + stringify!(len_ratio) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).filters as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioCVT), + "::", + stringify!(filters) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).filter_index as *const _ as usize }, + 124usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioCVT), + "::", + stringify!(filter_index) + ) + ); } -pub type SDL_AudioFilter = - ::std::option::Option; extern "C" { pub fn SDL_GetNumAudioDrivers() -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_GetAudioDriver(index: ::std::os::raw::c_int) - -> *const ::std::os::raw::c_char; + pub fn SDL_GetAudioDriver(index: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char; } extern "C" { - pub fn SDL_AudioInit(driver_name: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn SDL_AudioInit(driver_name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; } extern "C" { pub fn SDL_AudioQuit(); } extern "C" { /// This function returns the name of the current audio driver, or NULL -/// if no driver has been initialized. + /// if no driver has been initialized. pub fn SDL_GetCurrentAudioDriver() -> *const ::std::os::raw::c_char; } extern "C" { /// This function opens the audio device with the desired parameters, and -/// returns 0 if successful, placing the actual hardware parameters in the -/// structure pointed to by \c obtained. If \c obtained is NULL, the audio -/// data passed to the callback function will be guaranteed to be in the -/// requested format, and will be automatically converted to the hardware -/// audio format if necessary. This function returns -1 if it failed -/// to open the audio device, or couldn't set up the audio thread. -/// -/// When filling in the desired audio spec structure, -/// - \c desired->freq should be the desired audio frequency in samples-per- -/// second. -/// - \c desired->format should be the desired audio format. -/// - \c desired->samples is the desired size of the audio buffer, in -/// samples. This number should be a power of two, and may be adjusted by -/// the audio driver to a value more suitable for the hardware. Good values -/// seem to range between 512 and 8096 inclusive, depending on the -/// application and CPU speed. Smaller values yield faster response time, -/// but can lead to underflow if the application is doing heavy processing -/// and cannot fill the audio buffer in time. A stereo sample consists of -/// both right and left channels in LR ordering. -/// Note that the number of samples is directly related to time by the -/// following formula: \code ms = (samples*1000)/freq \endcode -/// - \c desired->size is the size in bytes of the audio buffer, and is -/// calculated by SDL_OpenAudio(). -/// - \c desired->silence is the value used to set the buffer to silence, -/// and is calculated by SDL_OpenAudio(). -/// - \c desired->callback should be set to a function that will be called -/// when the audio device is ready for more data. It is passed a pointer -/// to the audio buffer, and the length in bytes of the audio buffer. -/// This function usually runs in a separate thread, and so you should -/// protect data structures that it accesses by calling SDL_LockAudio() -/// and SDL_UnlockAudio() in your code. Alternately, you may pass a NULL -/// pointer here, and call SDL_QueueAudio() with some frequency, to queue -/// more audio samples to be played (or for capture devices, call -/// SDL_DequeueAudio() with some frequency, to obtain audio samples). -/// - \c desired->userdata is passed as the first parameter to your callback -/// function. If you passed a NULL callback, this value is ignored. -/// -/// The audio device starts out playing silence when it's opened, and should -/// be enabled for playing by calling \c SDL_PauseAudio(0) when you are ready -/// for your audio callback function to be called. Since the audio driver -/// may modify the requested size of the audio buffer, you should allocate -/// any local mixing buffers after you open the audio device. - pub fn SDL_OpenAudio(desired: *mut SDL_AudioSpec, - obtained: *mut SDL_AudioSpec) - -> ::std::os::raw::c_int; + /// returns 0 if successful, placing the actual hardware parameters in the + /// structure pointed to by \c obtained. If \c obtained is NULL, the audio + /// data passed to the callback function will be guaranteed to be in the + /// requested format, and will be automatically converted to the hardware + /// audio format if necessary. This function returns -1 if it failed + /// to open the audio device, or couldn't set up the audio thread. + /// + /// When filling in the desired audio spec structure, + /// - \c desired->freq should be the desired audio frequency in samples-per- + /// second. + /// - \c desired->format should be the desired audio format. + /// - \c desired->samples is the desired size of the audio buffer, in + /// samples. This number should be a power of two, and may be adjusted by + /// the audio driver to a value more suitable for the hardware. Good values + /// seem to range between 512 and 8096 inclusive, depending on the + /// application and CPU speed. Smaller values yield faster response time, + /// but can lead to underflow if the application is doing heavy processing + /// and cannot fill the audio buffer in time. A stereo sample consists of + /// both right and left channels in LR ordering. + /// Note that the number of samples is directly related to time by the + /// following formula: \code ms = (samples*1000)/freq \endcode + /// - \c desired->size is the size in bytes of the audio buffer, and is + /// calculated by SDL_OpenAudio(). + /// - \c desired->silence is the value used to set the buffer to silence, + /// and is calculated by SDL_OpenAudio(). + /// - \c desired->callback should be set to a function that will be called + /// when the audio device is ready for more data. It is passed a pointer + /// to the audio buffer, and the length in bytes of the audio buffer. + /// This function usually runs in a separate thread, and so you should + /// protect data structures that it accesses by calling SDL_LockAudio() + /// and SDL_UnlockAudio() in your code. Alternately, you may pass a NULL + /// pointer here, and call SDL_QueueAudio() with some frequency, to queue + /// more audio samples to be played (or for capture devices, call + /// SDL_DequeueAudio() with some frequency, to obtain audio samples). + /// - \c desired->userdata is passed as the first parameter to your callback + /// function. If you passed a NULL callback, this value is ignored. + /// + /// The audio device starts out playing silence when it's opened, and should + /// be enabled for playing by calling \c SDL_PauseAudio(0) when you are ready + /// for your audio callback function to be called. Since the audio driver + /// may modify the requested size of the audio buffer, you should allocate + /// any local mixing buffers after you open the audio device. + pub fn SDL_OpenAudio( + desired: *mut SDL_AudioSpec, + obtained: *mut SDL_AudioSpec, + ) -> ::std::os::raw::c_int; } /// SDL Audio Device IDs. /// @@ -2088,52 +2834,53 @@ extern "C" { pub type SDL_AudioDeviceID = Uint32; extern "C" { /// Get the number of available devices exposed by the current driver. -/// Only valid after a successfully initializing the audio subsystem. -/// Returns -1 if an explicit list of devices can't be determined; this is -/// not an error. For example, if SDL is set up to talk to a remote audio -/// server, it can't list every one available on the Internet, but it will -/// still allow a specific host to be specified to SDL_OpenAudioDevice(). -/// -/// In many common cases, when this function returns a value <= 0, it can still -/// successfully open the default device (NULL for first argument of -/// SDL_OpenAudioDevice()). - pub fn SDL_GetNumAudioDevices(iscapture: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// Only valid after a successfully initializing the audio subsystem. + /// Returns -1 if an explicit list of devices can't be determined; this is + /// not an error. For example, if SDL is set up to talk to a remote audio + /// server, it can't list every one available on the Internet, but it will + /// still allow a specific host to be specified to SDL_OpenAudioDevice(). + /// + /// In many common cases, when this function returns a value <= 0, it can still + /// successfully open the default device (NULL for first argument of + /// SDL_OpenAudioDevice()). + pub fn SDL_GetNumAudioDevices(iscapture: ::std::os::raw::c_int) -> ::std::os::raw::c_int; } extern "C" { /// Get the human-readable name of a specific audio device. -/// Must be a value between 0 and (number of audio devices-1). -/// Only valid after a successfully initializing the audio subsystem. -/// The values returned by this function reflect the latest call to -/// SDL_GetNumAudioDevices(); recall that function to redetect available -/// hardware. -/// -/// The string returned by this function is UTF-8 encoded, read-only, and -/// managed internally. You are not to free it. If you need to keep the -/// string for any length of time, you should make your own copy of it, as it -/// will be invalid next time any of several other SDL functions is called. - pub fn SDL_GetAudioDeviceName(index: ::std::os::raw::c_int, - iscapture: ::std::os::raw::c_int) - -> *const ::std::os::raw::c_char; + /// Must be a value between 0 and (number of audio devices-1). + /// Only valid after a successfully initializing the audio subsystem. + /// The values returned by this function reflect the latest call to + /// SDL_GetNumAudioDevices(); recall that function to redetect available + /// hardware. + /// + /// The string returned by this function is UTF-8 encoded, read-only, and + /// managed internally. You are not to free it. If you need to keep the + /// string for any length of time, you should make your own copy of it, as it + /// will be invalid next time any of several other SDL functions is called. + pub fn SDL_GetAudioDeviceName( + index: ::std::os::raw::c_int, + iscapture: ::std::os::raw::c_int, + ) -> *const ::std::os::raw::c_char; } extern "C" { /// Open a specific audio device. Passing in a device name of NULL requests -/// the most reasonable default (and is equivalent to calling SDL_OpenAudio()). -/// -/// The device name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but -/// some drivers allow arbitrary and driver-specific strings, such as a -/// hostname/IP address for a remote audio server, or a filename in the -/// diskaudio driver. -/// -/// \return 0 on error, a valid device ID that is >= 2 on success. -/// -/// SDL_OpenAudio(), unlike this function, always acts on device ID 1. - pub fn SDL_OpenAudioDevice(device: *const ::std::os::raw::c_char, - iscapture: ::std::os::raw::c_int, - desired: *const SDL_AudioSpec, - obtained: *mut SDL_AudioSpec, - allowed_changes: ::std::os::raw::c_int) - -> SDL_AudioDeviceID; + /// the most reasonable default (and is equivalent to calling SDL_OpenAudio()). + /// + /// The device name is a UTF-8 string reported by SDL_GetAudioDeviceName(), but + /// some drivers allow arbitrary and driver-specific strings, such as a + /// hostname/IP address for a remote audio server, or a filename in the + /// diskaudio driver. + /// + /// \return 0 on error, a valid device ID that is >= 2 on success. + /// + /// SDL_OpenAudio(), unlike this function, always acts on device ID 1. + pub fn SDL_OpenAudioDevice( + device: *const ::std::os::raw::c_char, + iscapture: ::std::os::raw::c_int, + desired: *const SDL_AudioSpec, + obtained: *mut SDL_AudioSpec, + allowed_changes: ::std::os::raw::c_int, + ) -> SDL_AudioDeviceID; } #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -2146,38 +2893,39 @@ extern "C" { pub fn SDL_GetAudioStatus() -> SDL_AudioStatus; } extern "C" { - pub fn SDL_GetAudioDeviceStatus(dev: SDL_AudioDeviceID) - -> SDL_AudioStatus; + pub fn SDL_GetAudioDeviceStatus(dev: SDL_AudioDeviceID) -> SDL_AudioStatus; } extern "C" { pub fn SDL_PauseAudio(pause_on: ::std::os::raw::c_int); } extern "C" { - pub fn SDL_PauseAudioDevice(dev: SDL_AudioDeviceID, - pause_on: ::std::os::raw::c_int); + pub fn SDL_PauseAudioDevice(dev: SDL_AudioDeviceID, pause_on: ::std::os::raw::c_int); } extern "C" { /// This function loads a WAVE from the data source, automatically freeing -/// that source if \c freesrc is non-zero. For example, to load a WAVE file, -/// you could do: -/// \code -/// SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...); -/// \endcode -/// -/// If this function succeeds, it returns the given SDL_AudioSpec, -/// filled with the audio data format of the wave data, and sets -/// \c *audio_buf to a malloc()'d buffer containing the audio data, -/// and sets \c *audio_len to the length of that audio buffer, in bytes. -/// You need to free the audio buffer with SDL_FreeWAV() when you are -/// done with it. -/// -/// This function returns NULL and sets the SDL error message if the -/// wave file cannot be opened, uses an unknown data format, or is -/// corrupt. Currently raw and MS-ADPCM WAVE files are supported. - pub fn SDL_LoadWAV_RW(src: *mut SDL_RWops, freesrc: ::std::os::raw::c_int, - spec: *mut SDL_AudioSpec, - audio_buf: *mut *mut Uint8, audio_len: *mut Uint32) - -> *mut SDL_AudioSpec; + /// that source if \c freesrc is non-zero. For example, to load a WAVE file, + /// you could do: + /// \code + /// SDL_LoadWAV_RW(SDL_RWFromFile("sample.wav", "rb"), 1, ...); + /// \endcode + /// + /// If this function succeeds, it returns the given SDL_AudioSpec, + /// filled with the audio data format of the wave data, and sets + /// \c *audio_buf to a malloc()'d buffer containing the audio data, + /// and sets \c *audio_len to the length of that audio buffer, in bytes. + /// You need to free the audio buffer with SDL_FreeWAV() when you are + /// done with it. + /// + /// This function returns NULL and sets the SDL error message if the + /// wave file cannot be opened, uses an unknown data format, or is + /// corrupt. Currently raw and MS-ADPCM WAVE files are supported. + pub fn SDL_LoadWAV_RW( + src: *mut SDL_RWops, + freesrc: ::std::os::raw::c_int, + spec: *mut SDL_AudioSpec, + audio_buf: *mut *mut Uint8, + audio_len: *mut Uint32, + ) -> *mut SDL_AudioSpec; } extern "C" { /// This function frees data previously allocated with SDL_LoadWAV_RW() @@ -2185,207 +2933,222 @@ extern "C" { } extern "C" { /// This function takes a source format and rate and a destination format -/// and rate, and initializes the \c cvt structure with information needed -/// by SDL_ConvertAudio() to convert a buffer of audio data from one format -/// to the other. An unsupported format causes an error and -1 will be returned. -/// -/// \return 0 if no conversion is needed, 1 if the audio filter is set up, -/// or -1 on error. - pub fn SDL_BuildAudioCVT(cvt: *mut SDL_AudioCVT, - src_format: SDL_AudioFormat, src_channels: Uint8, - src_rate: ::std::os::raw::c_int, - dst_format: SDL_AudioFormat, dst_channels: Uint8, - dst_rate: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// and rate, and initializes the \c cvt structure with information needed + /// by SDL_ConvertAudio() to convert a buffer of audio data from one format + /// to the other. An unsupported format causes an error and -1 will be returned. + /// + /// \return 0 if no conversion is needed, 1 if the audio filter is set up, + /// or -1 on error. + pub fn SDL_BuildAudioCVT( + cvt: *mut SDL_AudioCVT, + src_format: SDL_AudioFormat, + src_channels: Uint8, + src_rate: ::std::os::raw::c_int, + dst_format: SDL_AudioFormat, + dst_channels: Uint8, + dst_rate: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// Once you have initialized the \c cvt structure using SDL_BuildAudioCVT(), -/// created an audio buffer \c cvt->buf, and filled it with \c cvt->len bytes of -/// audio data in the source format, this function will convert it in-place -/// to the desired format. -/// -/// The data conversion may expand the size of the audio data, so the buffer -/// \c cvt->buf should be allocated after the \c cvt structure is initialized by -/// SDL_BuildAudioCVT(), and should be \c cvt->len*cvt->len_mult bytes long. -/// -/// \return 0 on success or -1 if \c cvt->buf is NULL. + /// created an audio buffer \c cvt->buf, and filled it with \c cvt->len bytes of + /// audio data in the source format, this function will convert it in-place + /// to the desired format. + /// + /// The data conversion may expand the size of the audio data, so the buffer + /// \c cvt->buf should be allocated after the \c cvt structure is initialized by + /// SDL_BuildAudioCVT(), and should be \c cvt->len*cvt->len_mult bytes long. + /// + /// \return 0 on success or -1 if \c cvt->buf is NULL. pub fn SDL_ConvertAudio(cvt: *mut SDL_AudioCVT) -> ::std::os::raw::c_int; } extern "C" { /// This takes two audio buffers of the playing audio format and mixes -/// them, performing addition, volume adjustment, and overflow clipping. -/// The volume ranges from 0 - 128, and should be set to ::SDL_MIX_MAXVOLUME -/// for full audio volume. Note this does not change hardware volume. -/// This is provided for convenience -- you can mix your own audio data. - pub fn SDL_MixAudio(dst: *mut Uint8, src: *const Uint8, len: Uint32, - volume: ::std::os::raw::c_int); + /// them, performing addition, volume adjustment, and overflow clipping. + /// The volume ranges from 0 - 128, and should be set to ::SDL_MIX_MAXVOLUME + /// for full audio volume. Note this does not change hardware volume. + /// This is provided for convenience -- you can mix your own audio data. + pub fn SDL_MixAudio( + dst: *mut Uint8, + src: *const Uint8, + len: Uint32, + volume: ::std::os::raw::c_int, + ); } extern "C" { /// This works like SDL_MixAudio(), but you specify the audio format instead of -/// using the format of audio device 1. Thus it can be used when no audio -/// device is open at all. - pub fn SDL_MixAudioFormat(dst: *mut Uint8, src: *const Uint8, - format: SDL_AudioFormat, len: Uint32, - volume: ::std::os::raw::c_int); + /// using the format of audio device 1. Thus it can be used when no audio + /// device is open at all. + pub fn SDL_MixAudioFormat( + dst: *mut Uint8, + src: *const Uint8, + format: SDL_AudioFormat, + len: Uint32, + volume: ::std::os::raw::c_int, + ); } extern "C" { /// Queue more audio on non-callback devices. -/// -/// (If you are looking to retrieve queued audio from a non-callback capture -/// device, you want SDL_DequeueAudio() instead. This will return -1 to -/// signify an error if you use it with capture devices.) -/// -/// SDL offers two ways to feed audio to the device: you can either supply a -/// callback that SDL triggers with some frequency to obtain more audio -/// (pull method), or you can supply no callback, and then SDL will expect -/// you to supply data at regular intervals (push method) with this function. -/// -/// There are no limits on the amount of data you can queue, short of -/// exhaustion of address space. Queued data will drain to the device as -/// necessary without further intervention from you. If the device needs -/// audio but there is not enough queued, it will play silence to make up -/// the difference. This means you will have skips in your audio playback -/// if you aren't routinely queueing sufficient data. -/// -/// This function copies the supplied data, so you are safe to free it when -/// the function returns. This function is thread-safe, but queueing to the -/// same device from two threads at once does not promise which buffer will -/// be queued first. -/// -/// You may not queue audio on a device that is using an application-supplied -/// callback; doing so returns an error. You have to use the audio callback -/// or queue audio with this function, but not both. -/// -/// You should not call SDL_LockAudio() on the device before queueing; SDL -/// handles locking internally for this function. -/// -/// \param dev The device ID to which we will queue audio. -/// \param data The data to queue to the device for later playback. -/// \param len The number of bytes (not samples!) to which (data) points. -/// \return zero on success, -1 on error. -/// -/// \sa SDL_GetQueuedAudioSize -/// \sa SDL_ClearQueuedAudio - pub fn SDL_QueueAudio(dev: SDL_AudioDeviceID, - data: *const ::std::os::raw::c_void, len: Uint32) - -> ::std::os::raw::c_int; + /// + /// (If you are looking to retrieve queued audio from a non-callback capture + /// device, you want SDL_DequeueAudio() instead. This will return -1 to + /// signify an error if you use it with capture devices.) + /// + /// SDL offers two ways to feed audio to the device: you can either supply a + /// callback that SDL triggers with some frequency to obtain more audio + /// (pull method), or you can supply no callback, and then SDL will expect + /// you to supply data at regular intervals (push method) with this function. + /// + /// There are no limits on the amount of data you can queue, short of + /// exhaustion of address space. Queued data will drain to the device as + /// necessary without further intervention from you. If the device needs + /// audio but there is not enough queued, it will play silence to make up + /// the difference. This means you will have skips in your audio playback + /// if you aren't routinely queueing sufficient data. + /// + /// This function copies the supplied data, so you are safe to free it when + /// the function returns. This function is thread-safe, but queueing to the + /// same device from two threads at once does not promise which buffer will + /// be queued first. + /// + /// You may not queue audio on a device that is using an application-supplied + /// callback; doing so returns an error. You have to use the audio callback + /// or queue audio with this function, but not both. + /// + /// You should not call SDL_LockAudio() on the device before queueing; SDL + /// handles locking internally for this function. + /// + /// \param dev The device ID to which we will queue audio. + /// \param data The data to queue to the device for later playback. + /// \param len The number of bytes (not samples!) to which (data) points. + /// \return zero on success, -1 on error. + /// + /// \sa SDL_GetQueuedAudioSize + /// \sa SDL_ClearQueuedAudio + pub fn SDL_QueueAudio( + dev: SDL_AudioDeviceID, + data: *const ::std::os::raw::c_void, + len: Uint32, + ) -> ::std::os::raw::c_int; } extern "C" { /// Dequeue more audio on non-callback devices. -/// -/// (If you are looking to queue audio for output on a non-callback playback -/// device, you want SDL_QueueAudio() instead. This will always return 0 -/// if you use it with playback devices.) -/// -/// SDL offers two ways to retrieve audio from a capture device: you can -/// either supply a callback that SDL triggers with some frequency as the -/// device records more audio data, (push method), or you can supply no -/// callback, and then SDL will expect you to retrieve data at regular -/// intervals (pull method) with this function. -/// -/// There are no limits on the amount of data you can queue, short of -/// exhaustion of address space. Data from the device will keep queuing as -/// necessary without further intervention from you. This means you will -/// eventually run out of memory if you aren't routinely dequeueing data. -/// -/// Capture devices will not queue data when paused; if you are expecting -/// to not need captured audio for some length of time, use -/// SDL_PauseAudioDevice() to stop the capture device from queueing more -/// data. This can be useful during, say, level loading times. When -/// unpaused, capture devices will start queueing data from that point, -/// having flushed any capturable data available while paused. -/// -/// This function is thread-safe, but dequeueing from the same device from -/// two threads at once does not promise which thread will dequeued data -/// first. -/// -/// You may not dequeue audio from a device that is using an -/// application-supplied callback; doing so returns an error. You have to use -/// the audio callback, or dequeue audio with this function, but not both. -/// -/// You should not call SDL_LockAudio() on the device before queueing; SDL -/// handles locking internally for this function. -/// -/// \param dev The device ID from which we will dequeue audio. -/// \param data A pointer into where audio data should be copied. -/// \param len The number of bytes (not samples!) to which (data) points. -/// \return number of bytes dequeued, which could be less than requested. -/// -/// \sa SDL_GetQueuedAudioSize -/// \sa SDL_ClearQueuedAudio - pub fn SDL_DequeueAudio(dev: SDL_AudioDeviceID, - data: *mut ::std::os::raw::c_void, len: Uint32) - -> Uint32; + /// + /// (If you are looking to queue audio for output on a non-callback playback + /// device, you want SDL_QueueAudio() instead. This will always return 0 + /// if you use it with playback devices.) + /// + /// SDL offers two ways to retrieve audio from a capture device: you can + /// either supply a callback that SDL triggers with some frequency as the + /// device records more audio data, (push method), or you can supply no + /// callback, and then SDL will expect you to retrieve data at regular + /// intervals (pull method) with this function. + /// + /// There are no limits on the amount of data you can queue, short of + /// exhaustion of address space. Data from the device will keep queuing as + /// necessary without further intervention from you. This means you will + /// eventually run out of memory if you aren't routinely dequeueing data. + /// + /// Capture devices will not queue data when paused; if you are expecting + /// to not need captured audio for some length of time, use + /// SDL_PauseAudioDevice() to stop the capture device from queueing more + /// data. This can be useful during, say, level loading times. When + /// unpaused, capture devices will start queueing data from that point, + /// having flushed any capturable data available while paused. + /// + /// This function is thread-safe, but dequeueing from the same device from + /// two threads at once does not promise which thread will dequeued data + /// first. + /// + /// You may not dequeue audio from a device that is using an + /// application-supplied callback; doing so returns an error. You have to use + /// the audio callback, or dequeue audio with this function, but not both. + /// + /// You should not call SDL_LockAudio() on the device before queueing; SDL + /// handles locking internally for this function. + /// + /// \param dev The device ID from which we will dequeue audio. + /// \param data A pointer into where audio data should be copied. + /// \param len The number of bytes (not samples!) to which (data) points. + /// \return number of bytes dequeued, which could be less than requested. + /// + /// \sa SDL_GetQueuedAudioSize + /// \sa SDL_ClearQueuedAudio + pub fn SDL_DequeueAudio( + dev: SDL_AudioDeviceID, + data: *mut ::std::os::raw::c_void, + len: Uint32, + ) -> Uint32; } extern "C" { /// Get the number of bytes of still-queued audio. -/// -/// For playback device: -/// -/// This is the number of bytes that have been queued for playback with -/// SDL_QueueAudio(), but have not yet been sent to the hardware. This -/// number may shrink at any time, so this only informs of pending data. -/// -/// Once we've sent it to the hardware, this function can not decide the -/// exact byte boundary of what has been played. It's possible that we just -/// gave the hardware several kilobytes right before you called this -/// function, but it hasn't played any of it yet, or maybe half of it, etc. -/// -/// For capture devices: -/// -/// This is the number of bytes that have been captured by the device and -/// are waiting for you to dequeue. This number may grow at any time, so -/// this only informs of the lower-bound of available data. -/// -/// You may not queue audio on a device that is using an application-supplied -/// callback; calling this function on such a device always returns 0. -/// You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use -/// the audio callback, but not both. -/// -/// You should not call SDL_LockAudio() on the device before querying; SDL -/// handles locking internally for this function. -/// -/// \param dev The device ID of which we will query queued audio size. -/// \return Number of bytes (not samples!) of queued audio. -/// -/// \sa SDL_QueueAudio -/// \sa SDL_ClearQueuedAudio + /// + /// For playback device: + /// + /// This is the number of bytes that have been queued for playback with + /// SDL_QueueAudio(), but have not yet been sent to the hardware. This + /// number may shrink at any time, so this only informs of pending data. + /// + /// Once we've sent it to the hardware, this function can not decide the + /// exact byte boundary of what has been played. It's possible that we just + /// gave the hardware several kilobytes right before you called this + /// function, but it hasn't played any of it yet, or maybe half of it, etc. + /// + /// For capture devices: + /// + /// This is the number of bytes that have been captured by the device and + /// are waiting for you to dequeue. This number may grow at any time, so + /// this only informs of the lower-bound of available data. + /// + /// You may not queue audio on a device that is using an application-supplied + /// callback; calling this function on such a device always returns 0. + /// You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use + /// the audio callback, but not both. + /// + /// You should not call SDL_LockAudio() on the device before querying; SDL + /// handles locking internally for this function. + /// + /// \param dev The device ID of which we will query queued audio size. + /// \return Number of bytes (not samples!) of queued audio. + /// + /// \sa SDL_QueueAudio + /// \sa SDL_ClearQueuedAudio pub fn SDL_GetQueuedAudioSize(dev: SDL_AudioDeviceID) -> Uint32; } extern "C" { /// Drop any queued audio data. For playback devices, this is any queued data -/// still waiting to be submitted to the hardware. For capture devices, this -/// is any data that was queued by the device that hasn't yet been dequeued by -/// the application. -/// -/// Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For -/// playback devices, the hardware will start playing silence if more audio -/// isn't queued. Unpaused capture devices will start filling the queue again -/// as soon as they have more data available (which, depending on the state -/// of the hardware and the thread, could be before this function call -/// returns!). -/// -/// This will not prevent playback of queued audio that's already been sent -/// to the hardware, as we can not undo that, so expect there to be some -/// fraction of a second of audio that might still be heard. This can be -/// useful if you want to, say, drop any pending music during a level change -/// in your game. -/// -/// You may not queue audio on a device that is using an application-supplied -/// callback; calling this function on such a device is always a no-op. -/// You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use -/// the audio callback, but not both. -/// -/// You should not call SDL_LockAudio() on the device before clearing the -/// queue; SDL handles locking internally for this function. -/// -/// This function always succeeds and thus returns void. -/// -/// \param dev The device ID of which to clear the audio queue. -/// -/// \sa SDL_QueueAudio -/// \sa SDL_GetQueuedAudioSize - pub fn SDL_ClearQueuedAudio(dev: SDL_AudioDeviceID); + /// still waiting to be submitted to the hardware. For capture devices, this + /// is any data that was queued by the device that hasn't yet been dequeued by + /// the application. + /// + /// Immediately after this call, SDL_GetQueuedAudioSize() will return 0. For + /// playback devices, the hardware will start playing silence if more audio + /// isn't queued. Unpaused capture devices will start filling the queue again + /// as soon as they have more data available (which, depending on the state + /// of the hardware and the thread, could be before this function call + /// returns!). + /// + /// This will not prevent playback of queued audio that's already been sent + /// to the hardware, as we can not undo that, so expect there to be some + /// fraction of a second of audio that might still be heard. This can be + /// useful if you want to, say, drop any pending music during a level change + /// in your game. + /// + /// You may not queue audio on a device that is using an application-supplied + /// callback; calling this function on such a device is always a no-op. + /// You have to queue audio with SDL_QueueAudio()/SDL_DequeueAudio(), or use + /// the audio callback, but not both. + /// + /// You should not call SDL_LockAudio() on the device before clearing the + /// queue; SDL handles locking internally for this function. + /// + /// This function always succeeds and thus returns void. + /// + /// \param dev The device ID of which to clear the audio queue. + /// + /// \sa SDL_QueueAudio + /// \sa SDL_GetQueuedAudioSize + pub fn SDL_ClearQueuedAudio(dev: SDL_AudioDeviceID); } extern "C" { pub fn SDL_LockAudio(); @@ -2408,21 +3171,20 @@ extern "C" { } extern "C" { /// \brief Put UTF-8 text into the clipboard -/// -/// \sa SDL_GetClipboardText() - pub fn SDL_SetClipboardText(text: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + /// + /// \sa SDL_GetClipboardText() + pub fn SDL_SetClipboardText(text: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get UTF-8 text from the clipboard, which must be freed with SDL_free() -/// -/// \sa SDL_SetClipboardText() + /// + /// \sa SDL_SetClipboardText() pub fn SDL_GetClipboardText() -> *mut ::std::os::raw::c_char; } extern "C" { /// \brief Returns a flag indicating whether the clipboard exists and contains a text string that is non-empty -/// -/// \sa SDL_GetClipboardText() + /// + /// \sa SDL_GetClipboardText() pub fn SDL_HasClipboardText() -> SDL_bool; } pub type __m64 = [::std::os::raw::c_longlong; 1usize]; @@ -2435,82 +3197,121 @@ pub type __v4sf = [f32; 4usize]; pub type __m128 = [f32; 4usize]; pub type __v4su = [::std::os::raw::c_uint; 4usize]; #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct div_t { pub quot: ::std::os::raw::c_int, pub rem: ::std::os::raw::c_int, } #[test] fn bindgen_test_layout_div_t() { - assert_eq!(::std::mem::size_of::() , 8usize , concat ! ( - "Size of: " , stringify ! ( div_t ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! ( - "Alignment of " , stringify ! ( div_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const div_t ) ) . quot as * const _ as usize } - , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( div_t ) , "::" , - stringify ! ( quot ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const div_t ) ) . rem as * const _ as usize } , - 4usize , concat ! ( - "Alignment of field: " , stringify ! ( div_t ) , "::" , - stringify ! ( rem ) )); -} -impl Clone for div_t { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Debug, Copy)] + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(div_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(div_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(div_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(div_t), + "::", + stringify!(rem) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct ldiv_t { pub quot: ::std::os::raw::c_long, pub rem: ::std::os::raw::c_long, } #[test] fn bindgen_test_layout_ldiv_t() { - assert_eq!(::std::mem::size_of::() , 16usize , concat ! ( - "Size of: " , stringify ! ( ldiv_t ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( ldiv_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const ldiv_t ) ) . quot as * const _ as usize } - , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( ldiv_t ) , "::" , - stringify ! ( quot ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const ldiv_t ) ) . rem as * const _ as usize } - , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( ldiv_t ) , "::" , - stringify ! ( rem ) )); -} -impl Clone for ldiv_t { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Debug, Copy)] + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(ldiv_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ldiv_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ldiv_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ldiv_t), + "::", + stringify!(rem) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct lldiv_t { pub quot: ::std::os::raw::c_longlong, pub rem: ::std::os::raw::c_longlong, } #[test] fn bindgen_test_layout_lldiv_t() { - assert_eq!(::std::mem::size_of::() , 16usize , concat ! ( - "Size of: " , stringify ! ( lldiv_t ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( lldiv_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const lldiv_t ) ) . quot as * const _ as usize - } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( lldiv_t ) , "::" , - stringify ! ( quot ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const lldiv_t ) ) . rem as * const _ as usize } - , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( lldiv_t ) , "::" , - stringify ! ( rem ) )); -} -impl Clone for lldiv_t { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(lldiv_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(lldiv_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quot as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(lldiv_t), + "::", + stringify!(quot) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rem as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(lldiv_t), + "::", + stringify!(rem) + ) + ); } extern "C" { pub fn __ctype_get_mb_cur_max() -> usize; @@ -2519,62 +3320,73 @@ extern "C" { pub fn atof(__nptr: *const ::std::os::raw::c_char) -> f64; } extern "C" { - pub fn atoi(__nptr: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn atoi(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; } extern "C" { - pub fn atol(__nptr: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_long; + pub fn atol(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_long; } extern "C" { - pub fn atoll(__nptr: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_longlong; + pub fn atoll(__nptr: *const ::std::os::raw::c_char) -> ::std::os::raw::c_longlong; } extern "C" { - pub fn strtod(__nptr: *const ::std::os::raw::c_char, - __endptr: *mut *mut ::std::os::raw::c_char) -> f64; + pub fn strtod( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> f64; } extern "C" { - pub fn strtof(__nptr: *const ::std::os::raw::c_char, - __endptr: *mut *mut ::std::os::raw::c_char) -> f32; + pub fn strtof( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> f32; } extern "C" { - pub fn strtold(__nptr: *const ::std::os::raw::c_char, - __endptr: *mut *mut ::std::os::raw::c_char) -> f64; + pub fn strtold( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + ) -> f64; } extern "C" { - pub fn strtol(__nptr: *const ::std::os::raw::c_char, - __endptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int) -> ::std::os::raw::c_long; + pub fn strtol( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_long; } extern "C" { - pub fn strtoul(__nptr: *const ::std::os::raw::c_char, - __endptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int) -> ::std::os::raw::c_ulong; + pub fn strtoul( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulong; } extern "C" { - pub fn strtoq(__nptr: *const ::std::os::raw::c_char, - __endptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int) - -> ::std::os::raw::c_longlong; + pub fn strtoq( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_longlong; } extern "C" { - pub fn strtouq(__nptr: *const ::std::os::raw::c_char, - __endptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int) - -> ::std::os::raw::c_ulonglong; + pub fn strtouq( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulonglong; } extern "C" { - pub fn strtoll(__nptr: *const ::std::os::raw::c_char, - __endptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int) - -> ::std::os::raw::c_longlong; + pub fn strtoll( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_longlong; } extern "C" { - pub fn strtoull(__nptr: *const ::std::os::raw::c_char, - __endptr: *mut *mut ::std::os::raw::c_char, - __base: ::std::os::raw::c_int) - -> ::std::os::raw::c_ulonglong; + pub fn strtoull( + __nptr: *const ::std::os::raw::c_char, + __endptr: *mut *mut ::std::os::raw::c_char, + __base: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulonglong; } extern "C" { pub fn l64a(__n: ::std::os::raw::c_long) -> *mut ::std::os::raw::c_char; @@ -2615,111 +3427,161 @@ pub type u_int32_t = ::std::os::raw::c_uint; pub type u_int64_t = ::std::os::raw::c_ulong; pub type register_t = ::std::os::raw::c_long; #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct __sigset_t { pub __val: [::std::os::raw::c_ulong; 16usize], } #[test] fn bindgen_test_layout___sigset_t() { - assert_eq!(::std::mem::size_of::<__sigset_t>() , 128usize , concat ! ( - "Size of: " , stringify ! ( __sigset_t ) )); - assert_eq! (::std::mem::align_of::<__sigset_t>() , 8usize , concat ! ( - "Alignment of " , stringify ! ( __sigset_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __sigset_t ) ) . __val as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( __sigset_t ) , "::" , - stringify ! ( __val ) )); -} -impl Clone for __sigset_t { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::<__sigset_t>(), + 128usize, + concat!("Size of: ", stringify!(__sigset_t)) + ); + assert_eq!( + ::std::mem::align_of::<__sigset_t>(), + 8usize, + concat!("Alignment of ", stringify!(__sigset_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__sigset_t>())).__val as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__sigset_t), + "::", + stringify!(__val) + ) + ); } pub type sigset_t = __sigset_t; #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct timeval { pub tv_sec: __time_t, pub tv_usec: __suseconds_t, } #[test] fn bindgen_test_layout_timeval() { - assert_eq!(::std::mem::size_of::() , 16usize , concat ! ( - "Size of: " , stringify ! ( timeval ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( timeval ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const timeval ) ) . tv_sec as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( timeval ) , "::" , - stringify ! ( tv_sec ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const timeval ) ) . tv_usec as * const _ as - usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( timeval ) , "::" , - stringify ! ( tv_usec ) )); -} -impl Clone for timeval { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Debug, Copy)] + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(timeval)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(timeval)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timeval), + "::", + stringify!(tv_sec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_usec as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(timeval), + "::", + stringify!(tv_usec) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct timespec { pub tv_sec: __time_t, pub tv_nsec: __syscall_slong_t, } #[test] fn bindgen_test_layout_timespec() { - assert_eq!(::std::mem::size_of::() , 16usize , concat ! ( - "Size of: " , stringify ! ( timespec ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( timespec ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const timespec ) ) . tv_sec as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( timespec ) , "::" , - stringify ! ( tv_sec ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const timespec ) ) . tv_nsec as * const _ as - usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( timespec ) , "::" , - stringify ! ( tv_nsec ) )); -} -impl Clone for timespec { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(timespec)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(timespec)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_sec as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(timespec), + "::", + stringify!(tv_sec) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tv_nsec as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(timespec), + "::", + stringify!(tv_nsec) + ) + ); } pub type suseconds_t = __suseconds_t; pub type __fd_mask = ::std::os::raw::c_long; #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct fd_set { pub __fds_bits: [__fd_mask; 16usize], } #[test] fn bindgen_test_layout_fd_set() { - assert_eq!(::std::mem::size_of::() , 128usize , concat ! ( - "Size of: " , stringify ! ( fd_set ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( fd_set ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const fd_set ) ) . __fds_bits as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( fd_set ) , "::" , - stringify ! ( __fds_bits ) )); -} -impl Clone for fd_set { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 128usize, + concat!("Size of: ", stringify!(fd_set)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(fd_set)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__fds_bits as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(fd_set), + "::", + stringify!(__fds_bits) + ) + ); } pub type fd_mask = __fd_mask; extern "C" { - pub fn select(__nfds: ::std::os::raw::c_int, __readfds: *mut fd_set, - __writefds: *mut fd_set, __exceptfds: *mut fd_set, - __timeout: *mut timeval) -> ::std::os::raw::c_int; + pub fn select( + __nfds: ::std::os::raw::c_int, + __readfds: *mut fd_set, + __writefds: *mut fd_set, + __exceptfds: *mut fd_set, + __timeout: *mut timeval, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn pselect(__nfds: ::std::os::raw::c_int, __readfds: *mut fd_set, - __writefds: *mut fd_set, __exceptfds: *mut fd_set, - __timeout: *const timespec, __sigmask: *const __sigset_t) - -> ::std::os::raw::c_int; + pub fn pselect( + __nfds: ::std::os::raw::c_int, + __readfds: *mut fd_set, + __writefds: *mut fd_set, + __exceptfds: *mut fd_set, + __timeout: *const timespec, + __sigmask: *const __sigset_t, + ) -> ::std::os::raw::c_int; } extern "C" { pub fn gnu_dev_major(__dev: __dev_t) -> ::std::os::raw::c_uint; @@ -2728,15 +3590,17 @@ extern "C" { pub fn gnu_dev_minor(__dev: __dev_t) -> ::std::os::raw::c_uint; } extern "C" { - pub fn gnu_dev_makedev(__major: ::std::os::raw::c_uint, - __minor: ::std::os::raw::c_uint) -> __dev_t; + pub fn gnu_dev_makedev( + __major: ::std::os::raw::c_uint, + __minor: ::std::os::raw::c_uint, + ) -> __dev_t; } pub type blksize_t = __blksize_t; pub type blkcnt_t = __blkcnt_t; pub type fsblkcnt_t = __fsblkcnt_t; pub type fsfilcnt_t = __fsfilcnt_t; #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct __pthread_rwlock_arch_t { pub __readers: ::std::os::raw::c_uint, pub __writers: ::std::os::raw::c_uint, @@ -2753,107 +3617,193 @@ pub struct __pthread_rwlock_arch_t { } #[test] fn bindgen_test_layout___pthread_rwlock_arch_t() { - assert_eq!(::std::mem::size_of::<__pthread_rwlock_arch_t>() , 56usize , - concat ! ( - "Size of: " , stringify ! ( __pthread_rwlock_arch_t ) )); - assert_eq! (::std::mem::align_of::<__pthread_rwlock_arch_t>() , 8usize , - concat ! ( - "Alignment of " , stringify ! ( __pthread_rwlock_arch_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . __readers - as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __readers ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . __writers - as * const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __writers ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . - __wrphase_futex as * const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __wrphase_futex ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . - __writers_futex as * const _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __writers_futex ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . __pad3 as * - const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __pad3 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . __pad4 as * - const _ as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __pad4 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . - __cur_writer as * const _ as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __cur_writer ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . __shared as - * const _ as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __shared ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . __rwelision - as * const _ as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __rwelision ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . __pad1 as * - const _ as usize } , 33usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __pad1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . __pad2 as * - const _ as usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __pad2 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_rwlock_arch_t ) ) . __flags as - * const _ as usize } , 48usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_rwlock_arch_t - ) , "::" , stringify ! ( __flags ) )); -} -impl Clone for __pthread_rwlock_arch_t { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Debug, Copy)] + assert_eq!( + ::std::mem::size_of::<__pthread_rwlock_arch_t>(), + 56usize, + concat!("Size of: ", stringify!(__pthread_rwlock_arch_t)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_rwlock_arch_t>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_rwlock_arch_t)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__readers as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__readers) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__writers) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__wrphase_futex as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__wrphase_futex) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__writers_futex as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__writers_futex) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad3 as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad4 as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad4) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__cur_writer as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__cur_writer) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__shared as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__shared) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__rwelision as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__rwelision) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad1 as *const _ as usize }, + 33usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__pad2 as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__pad2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_rwlock_arch_t>())).__flags as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(__pthread_rwlock_arch_t), + "::", + stringify!(__flags) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct __pthread_internal_list { pub __prev: *mut __pthread_internal_list, pub __next: *mut __pthread_internal_list, } #[test] fn bindgen_test_layout___pthread_internal_list() { - assert_eq!(::std::mem::size_of::<__pthread_internal_list>() , 16usize , - concat ! ( - "Size of: " , stringify ! ( __pthread_internal_list ) )); - assert_eq! (::std::mem::align_of::<__pthread_internal_list>() , 8usize , - concat ! ( - "Alignment of " , stringify ! ( __pthread_internal_list ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_internal_list ) ) . __prev as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_internal_list - ) , "::" , stringify ! ( __prev ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_internal_list ) ) . __next as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_internal_list - ) , "::" , stringify ! ( __next ) )); -} -impl Clone for __pthread_internal_list { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::<__pthread_internal_list>(), + 16usize, + concat!("Size of: ", stringify!(__pthread_internal_list)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_internal_list>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_internal_list)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__prev as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_list), + "::", + stringify!(__prev) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_internal_list>())).__next as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_internal_list), + "::", + stringify!(__next) + ) + ); } pub type __pthread_list_t = __pthread_internal_list; #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct __pthread_mutex_s { pub __lock: ::std::os::raw::c_int, pub __count: ::std::os::raw::c_uint, @@ -2866,56 +3816,99 @@ pub struct __pthread_mutex_s { } #[test] fn bindgen_test_layout___pthread_mutex_s() { - assert_eq!(::std::mem::size_of::<__pthread_mutex_s>() , 40usize , concat ! - ( "Size of: " , stringify ! ( __pthread_mutex_s ) )); - assert_eq! (::std::mem::align_of::<__pthread_mutex_s>() , 8usize , concat - ! ( "Alignment of " , stringify ! ( __pthread_mutex_s ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_mutex_s ) ) . __lock as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_mutex_s ) , - "::" , stringify ! ( __lock ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_mutex_s ) ) . __count as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_mutex_s ) , - "::" , stringify ! ( __count ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_mutex_s ) ) . __owner as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_mutex_s ) , - "::" , stringify ! ( __owner ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_mutex_s ) ) . __nusers as * - const _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_mutex_s ) , - "::" , stringify ! ( __nusers ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_mutex_s ) ) . __kind as * const - _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_mutex_s ) , - "::" , stringify ! ( __kind ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_mutex_s ) ) . __spins as * - const _ as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_mutex_s ) , - "::" , stringify ! ( __spins ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_mutex_s ) ) . __elision as * - const _ as usize } , 22usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_mutex_s ) , - "::" , stringify ! ( __elision ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_mutex_s ) ) . __list as * const - _ as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_mutex_s ) , - "::" , stringify ! ( __list ) )); -} -impl Clone for __pthread_mutex_s { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Copy)] + assert_eq!( + ::std::mem::size_of::<__pthread_mutex_s>(), + 40usize, + concat!("Size of: ", stringify!(__pthread_mutex_s)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_mutex_s>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_mutex_s)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__lock as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__lock) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__count as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__owner as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__owner) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__nusers as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__nusers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__kind as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__kind) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__spins as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__spins) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__elision as *const _ as usize }, + 22usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__elision) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_mutex_s>())).__list as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_mutex_s), + "::", + stringify!(__list) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] pub struct __pthread_cond_s { pub __bindgen_anon_1: __pthread_cond_s__bindgen_ty_1, pub __bindgen_anon_2: __pthread_cond_s__bindgen_ty_2, @@ -2926,177 +3919,263 @@ pub struct __pthread_cond_s { pub __g_signals: [::std::os::raw::c_uint; 2usize], } #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub union __pthread_cond_s__bindgen_ty_1 { pub __wseq: ::std::os::raw::c_ulonglong, pub __wseq32: __pthread_cond_s__bindgen_ty_1__bindgen_ty_1, _bindgen_union_align: u64, } #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 { pub __low: ::std::os::raw::c_uint, pub __high: ::std::os::raw::c_uint, } #[test] fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1__bindgen_ty_1() { - assert_eq!(::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>() - , 8usize , concat ! ( - "Size of: " , stringify ! ( - __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 ) )); - assert_eq! (::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>() - , 4usize , concat ! ( - "Alignment of " , stringify ! ( - __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 ) )); - assert_eq! (unsafe { - & ( - * ( 0 as * const __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 - ) ) . __low as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 ) , "::" , - stringify ! ( __low ) )); - assert_eq! (unsafe { - & ( - * ( 0 as * const __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 - ) ) . __high as * const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( - __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 ) , "::" , - stringify ! ( __high ) )); -} -impl Clone for __pthread_cond_s__bindgen_ty_1__bindgen_ty_1 { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__low + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(__low) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1__bindgen_ty_1>())).__high + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(__high) + ) + ); } #[test] fn bindgen_test_layout___pthread_cond_s__bindgen_ty_1() { - assert_eq!(::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1>() , - 8usize , concat ! ( - "Size of: " , stringify ! ( __pthread_cond_s__bindgen_ty_1 ) - )); - assert_eq! (::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1>() , - 8usize , concat ! ( - "Alignment of " , stringify ! ( __pthread_cond_s__bindgen_ty_1 - ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_cond_s__bindgen_ty_1 ) ) . - __wseq as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - __pthread_cond_s__bindgen_ty_1 ) , "::" , stringify ! ( __wseq - ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_cond_s__bindgen_ty_1 ) ) . - __wseq32 as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - __pthread_cond_s__bindgen_ty_1 ) , "::" , stringify ! ( - __wseq32 ) )); -} -impl Clone for __pthread_cond_s__bindgen_ty_1 { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Copy)] + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1), + "::", + stringify!(__wseq) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_1>())).__wseq32 as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_1), + "::", + stringify!(__wseq32) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] pub union __pthread_cond_s__bindgen_ty_2 { pub __g1_start: ::std::os::raw::c_ulonglong, pub __g1_start32: __pthread_cond_s__bindgen_ty_2__bindgen_ty_1, _bindgen_union_align: u64, } #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 { pub __low: ::std::os::raw::c_uint, pub __high: ::std::os::raw::c_uint, } #[test] fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2__bindgen_ty_1() { - assert_eq!(::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>() - , 8usize , concat ! ( - "Size of: " , stringify ! ( - __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 ) )); - assert_eq! (::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>() - , 4usize , concat ! ( - "Alignment of " , stringify ! ( - __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 ) )); - assert_eq! (unsafe { - & ( - * ( 0 as * const __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 - ) ) . __low as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 ) , "::" , - stringify ! ( __low ) )); - assert_eq! (unsafe { - & ( - * ( 0 as * const __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 - ) ) . __high as * const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( - __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 ) , "::" , - stringify ! ( __high ) )); -} -impl Clone for __pthread_cond_s__bindgen_ty_2__bindgen_ty_1 { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>(), + 4usize, + concat!( + "Alignment of ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__low + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(__low) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2__bindgen_ty_1>())).__high + as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2__bindgen_ty_1), + "::", + stringify!(__high) + ) + ); } #[test] fn bindgen_test_layout___pthread_cond_s__bindgen_ty_2() { - assert_eq!(::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2>() , - 8usize , concat ! ( - "Size of: " , stringify ! ( __pthread_cond_s__bindgen_ty_2 ) - )); - assert_eq! (::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2>() , - 8usize , concat ! ( - "Alignment of " , stringify ! ( __pthread_cond_s__bindgen_ty_2 - ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_cond_s__bindgen_ty_2 ) ) . - __g1_start as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - __pthread_cond_s__bindgen_ty_2 ) , "::" , stringify ! ( - __g1_start ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_cond_s__bindgen_ty_2 ) ) . - __g1_start32 as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - __pthread_cond_s__bindgen_ty_2 ) , "::" , stringify ! ( - __g1_start32 ) )); -} -impl Clone for __pthread_cond_s__bindgen_ty_2 { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s__bindgen_ty_2>(), + 8usize, + concat!("Size of: ", stringify!(__pthread_cond_s__bindgen_ty_2)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s__bindgen_ty_2>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s__bindgen_ty_2)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2), + "::", + stringify!(__g1_start) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<__pthread_cond_s__bindgen_ty_2>())).__g1_start32 as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s__bindgen_ty_2), + "::", + stringify!(__g1_start32) + ) + ); } #[test] fn bindgen_test_layout___pthread_cond_s() { - assert_eq!(::std::mem::size_of::<__pthread_cond_s>() , 48usize , concat ! - ( "Size of: " , stringify ! ( __pthread_cond_s ) )); - assert_eq! (::std::mem::align_of::<__pthread_cond_s>() , 8usize , concat ! - ( "Alignment of " , stringify ! ( __pthread_cond_s ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_cond_s ) ) . __g_refs as * - const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_cond_s ) , - "::" , stringify ! ( __g_refs ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_cond_s ) ) . __g_size as * - const _ as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_cond_s ) , - "::" , stringify ! ( __g_size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_cond_s ) ) . __g1_orig_size as - * const _ as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_cond_s ) , - "::" , stringify ! ( __g1_orig_size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_cond_s ) ) . __wrefs as * const - _ as usize } , 36usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_cond_s ) , - "::" , stringify ! ( __wrefs ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __pthread_cond_s ) ) . __g_signals as * - const _ as usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( __pthread_cond_s ) , - "::" , stringify ! ( __g_signals ) )); -} -impl Clone for __pthread_cond_s { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::<__pthread_cond_s>(), + 48usize, + concat!("Size of: ", stringify!(__pthread_cond_s)) + ); + assert_eq!( + ::std::mem::align_of::<__pthread_cond_s>(), + 8usize, + concat!("Alignment of ", stringify!(__pthread_cond_s)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_refs as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_refs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_size as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g1_orig_size as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g1_orig_size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__wrefs as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__wrefs) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__pthread_cond_s>())).__g_signals as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(__pthread_cond_s), + "::", + stringify!(__g_signals) + ) + ); } pub type pthread_t = ::std::os::raw::c_ulong; #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub union pthread_mutexattr_t { pub __size: [::std::os::raw::c_char; 4usize], pub __align: ::std::os::raw::c_int, @@ -3104,27 +4183,39 @@ pub union pthread_mutexattr_t { } #[test] fn bindgen_test_layout_pthread_mutexattr_t() { - assert_eq!(::std::mem::size_of::() , 4usize , concat - ! ( "Size of: " , stringify ! ( pthread_mutexattr_t ) )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( pthread_mutexattr_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_mutexattr_t ) ) . __size as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_mutexattr_t ) , - "::" , stringify ! ( __size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_mutexattr_t ) ) . __align as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_mutexattr_t ) , - "::" , stringify ! ( __align ) )); -} -impl Clone for pthread_mutexattr_t { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Copy)] + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_mutexattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_mutexattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutexattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutexattr_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] pub union pthread_condattr_t { pub __size: [::std::os::raw::c_char; 4usize], pub __align: ::std::os::raw::c_int, @@ -3132,28 +4223,41 @@ pub union pthread_condattr_t { } #[test] fn bindgen_test_layout_pthread_condattr_t() { - assert_eq!(::std::mem::size_of::() , 4usize , concat ! - ( "Size of: " , stringify ! ( pthread_condattr_t ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat - ! ( "Alignment of " , stringify ! ( pthread_condattr_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_condattr_t ) ) . __size as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_condattr_t ) , - "::" , stringify ! ( __size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_condattr_t ) ) . __align as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_condattr_t ) , - "::" , stringify ! ( __align ) )); -} -impl Clone for pthread_condattr_t { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_condattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_condattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_condattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_condattr_t), + "::", + stringify!(__align) + ) + ); } pub type pthread_key_t = ::std::os::raw::c_uint; pub type pthread_once_t = ::std::os::raw::c_int; #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub union pthread_attr_t { pub __size: [::std::os::raw::c_char; 56usize], pub __align: ::std::os::raw::c_long, @@ -3161,26 +4265,39 @@ pub union pthread_attr_t { } #[test] fn bindgen_test_layout_pthread_attr_t() { - assert_eq!(::std::mem::size_of::() , 56usize , concat ! ( - "Size of: " , stringify ! ( pthread_attr_t ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( pthread_attr_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_attr_t ) ) . __size as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_attr_t ) , "::" - , stringify ! ( __size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_attr_t ) ) . __align as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_attr_t ) , "::" - , stringify ! ( __align ) )); -} -impl Clone for pthread_attr_t { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Copy)] + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(pthread_attr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_attr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_attr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_attr_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] pub union pthread_mutex_t { pub __data: __pthread_mutex_s, pub __size: [::std::os::raw::c_char; 40usize], @@ -3189,31 +4306,49 @@ pub union pthread_mutex_t { } #[test] fn bindgen_test_layout_pthread_mutex_t() { - assert_eq!(::std::mem::size_of::() , 40usize , concat ! ( - "Size of: " , stringify ! ( pthread_mutex_t ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! - ( "Alignment of " , stringify ! ( pthread_mutex_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_mutex_t ) ) . __data as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_mutex_t ) , - "::" , stringify ! ( __data ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_mutex_t ) ) . __size as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_mutex_t ) , - "::" , stringify ! ( __size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_mutex_t ) ) . __align as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_mutex_t ) , - "::" , stringify ! ( __align ) )); -} -impl Clone for pthread_mutex_t { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Copy)] + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(pthread_mutex_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_mutex_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_mutex_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] pub union pthread_cond_t { pub __data: __pthread_cond_s, pub __size: [::std::os::raw::c_char; 48usize], @@ -3222,31 +4357,49 @@ pub union pthread_cond_t { } #[test] fn bindgen_test_layout_pthread_cond_t() { - assert_eq!(::std::mem::size_of::() , 48usize , concat ! ( - "Size of: " , stringify ! ( pthread_cond_t ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( pthread_cond_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_cond_t ) ) . __data as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_cond_t ) , "::" - , stringify ! ( __data ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_cond_t ) ) . __size as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_cond_t ) , "::" - , stringify ! ( __size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_cond_t ) ) . __align as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_cond_t ) , "::" - , stringify ! ( __align ) )); -} -impl Clone for pthread_cond_t { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Copy)] + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(pthread_cond_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_cond_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_cond_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] pub union pthread_rwlock_t { pub __data: __pthread_rwlock_arch_t, pub __size: [::std::os::raw::c_char; 56usize], @@ -3255,31 +4408,49 @@ pub union pthread_rwlock_t { } #[test] fn bindgen_test_layout_pthread_rwlock_t() { - assert_eq!(::std::mem::size_of::() , 56usize , concat ! - ( "Size of: " , stringify ! ( pthread_rwlock_t ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! - ( "Alignment of " , stringify ! ( pthread_rwlock_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_rwlock_t ) ) . __data as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_rwlock_t ) , - "::" , stringify ! ( __data ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_rwlock_t ) ) . __size as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_rwlock_t ) , - "::" , stringify ! ( __size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_rwlock_t ) ) . __align as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_rwlock_t ) , - "::" , stringify ! ( __align ) )); -} -impl Clone for pthread_rwlock_t { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Copy)] + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(pthread_rwlock_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_rwlock_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlock_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] pub union pthread_rwlockattr_t { pub __size: [::std::os::raw::c_char; 8usize], pub __align: ::std::os::raw::c_long, @@ -3287,28 +4458,40 @@ pub union pthread_rwlockattr_t { } #[test] fn bindgen_test_layout_pthread_rwlockattr_t() { - assert_eq!(::std::mem::size_of::() , 8usize , concat - ! ( "Size of: " , stringify ! ( pthread_rwlockattr_t ) )); - assert_eq! (::std::mem::align_of::() , 8usize , - concat ! ( - "Alignment of " , stringify ! ( pthread_rwlockattr_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_rwlockattr_t ) ) . __size as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_rwlockattr_t ) - , "::" , stringify ! ( __size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_rwlockattr_t ) ) . __align as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_rwlockattr_t ) - , "::" , stringify ! ( __align ) )); -} -impl Clone for pthread_rwlockattr_t { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(pthread_rwlockattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_rwlockattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlockattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_rwlockattr_t), + "::", + stringify!(__align) + ) + ); } pub type pthread_spinlock_t = ::std::os::raw::c_int; #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub union pthread_barrier_t { pub __size: [::std::os::raw::c_char; 32usize], pub __align: ::std::os::raw::c_long, @@ -3316,26 +4499,39 @@ pub union pthread_barrier_t { } #[test] fn bindgen_test_layout_pthread_barrier_t() { - assert_eq!(::std::mem::size_of::() , 32usize , concat ! - ( "Size of: " , stringify ! ( pthread_barrier_t ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat - ! ( "Alignment of " , stringify ! ( pthread_barrier_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_barrier_t ) ) . __size as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_barrier_t ) , - "::" , stringify ! ( __size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_barrier_t ) ) . __align as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_barrier_t ) , - "::" , stringify ! ( __align ) )); -} -impl Clone for pthread_barrier_t { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Copy)] + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(pthread_barrier_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(pthread_barrier_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrier_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrier_t), + "::", + stringify!(__align) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] pub union pthread_barrierattr_t { pub __size: [::std::os::raw::c_char; 4usize], pub __align: ::std::os::raw::c_int, @@ -3343,25 +4539,36 @@ pub union pthread_barrierattr_t { } #[test] fn bindgen_test_layout_pthread_barrierattr_t() { - assert_eq!(::std::mem::size_of::() , 4usize , - concat ! ( "Size of: " , stringify ! ( pthread_barrierattr_t ) - )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( pthread_barrierattr_t ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_barrierattr_t ) ) . __size as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_barrierattr_t ) - , "::" , stringify ! ( __size ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const pthread_barrierattr_t ) ) . __align as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( pthread_barrierattr_t ) - , "::" , stringify ! ( __align ) )); -} -impl Clone for pthread_barrierattr_t { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(pthread_barrierattr_t)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(pthread_barrierattr_t)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__size as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrierattr_t), + "::", + stringify!(__size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__align as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(pthread_barrierattr_t), + "::", + stringify!(__align) + ) + ); } extern "C" { pub fn random() -> ::std::os::raw::c_long; @@ -3370,16 +4577,17 @@ extern "C" { pub fn srandom(__seed: ::std::os::raw::c_uint); } extern "C" { - pub fn initstate(__seed: ::std::os::raw::c_uint, - __statebuf: *mut ::std::os::raw::c_char, - __statelen: usize) -> *mut ::std::os::raw::c_char; + pub fn initstate( + __seed: ::std::os::raw::c_uint, + __statebuf: *mut ::std::os::raw::c_char, + __statelen: usize, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn setstate(__statebuf: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; } #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct random_data { pub fptr: *mut i32, pub rptr: *mut i32, @@ -3391,66 +4599,109 @@ pub struct random_data { } #[test] fn bindgen_test_layout_random_data() { - assert_eq!(::std::mem::size_of::() , 48usize , concat ! ( - "Size of: " , stringify ! ( random_data ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( random_data ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const random_data ) ) . fptr as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( random_data ) , "::" , - stringify ! ( fptr ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const random_data ) ) . rptr as * const _ as - usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( random_data ) , "::" , - stringify ! ( rptr ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const random_data ) ) . state as * const _ as - usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( random_data ) , "::" , - stringify ! ( state ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const random_data ) ) . rand_type as * const _ - as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( random_data ) , "::" , - stringify ! ( rand_type ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const random_data ) ) . rand_deg as * const _ - as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( random_data ) , "::" , - stringify ! ( rand_deg ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const random_data ) ) . rand_sep as * const _ - as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( random_data ) , "::" , - stringify ! ( rand_sep ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const random_data ) ) . end_ptr as * const _ as - usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( random_data ) , "::" , - stringify ! ( end_ptr ) )); -} -impl Clone for random_data { - fn clone(&self) -> Self { *self } -} -extern "C" { - pub fn random_r(__buf: *mut random_data, __result: *mut i32) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn srandom_r(__seed: ::std::os::raw::c_uint, __buf: *mut random_data) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn initstate_r(__seed: ::std::os::raw::c_uint, - __statebuf: *mut ::std::os::raw::c_char, - __statelen: usize, __buf: *mut random_data) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn setstate_r(__statebuf: *mut ::std::os::raw::c_char, - __buf: *mut random_data) -> ::std::os::raw::c_int; + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(random_data)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(random_data)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fptr as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(fptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rptr as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rptr) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_type as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_type) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_deg as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_deg) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rand_sep as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(rand_sep) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).end_ptr as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(random_data), + "::", + stringify!(end_ptr) + ) + ); +} +extern "C" { + pub fn random_r(__buf: *mut random_data, __result: *mut i32) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srandom_r( + __seed: ::std::os::raw::c_uint, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn initstate_r( + __seed: ::std::os::raw::c_uint, + __statebuf: *mut ::std::os::raw::c_char, + __statelen: usize, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn setstate_r( + __statebuf: *mut ::std::os::raw::c_char, + __buf: *mut random_data, + ) -> ::std::os::raw::c_int; } extern "C" { pub fn rand() -> ::std::os::raw::c_int; @@ -3459,8 +4710,7 @@ extern "C" { pub fn srand(__seed: ::std::os::raw::c_uint); } extern "C" { - pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) - -> ::std::os::raw::c_int; + pub fn rand_r(__seed: *mut ::std::os::raw::c_uint) -> ::std::os::raw::c_int; } extern "C" { pub fn drand48() -> f64; @@ -3472,28 +4722,25 @@ extern "C" { pub fn lrand48() -> ::std::os::raw::c_long; } extern "C" { - pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) - -> ::std::os::raw::c_long; + pub fn nrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long; } extern "C" { pub fn mrand48() -> ::std::os::raw::c_long; } extern "C" { - pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) - -> ::std::os::raw::c_long; + pub fn jrand48(__xsubi: *mut ::std::os::raw::c_ushort) -> ::std::os::raw::c_long; } extern "C" { pub fn srand48(__seedval: ::std::os::raw::c_long); } extern "C" { - pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) - -> *mut ::std::os::raw::c_ushort; + pub fn seed48(__seed16v: *mut ::std::os::raw::c_ushort) -> *mut ::std::os::raw::c_ushort; } extern "C" { pub fn lcong48(__param: *mut ::std::os::raw::c_ushort); } #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct drand48_data { pub __x: [::std::os::raw::c_ushort; 3usize], pub __old_x: [::std::os::raw::c_ushort; 3usize], @@ -3503,92 +4750,132 @@ pub struct drand48_data { } #[test] fn bindgen_test_layout_drand48_data() { - assert_eq!(::std::mem::size_of::() , 24usize , concat ! ( - "Size of: " , stringify ! ( drand48_data ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( drand48_data ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const drand48_data ) ) . __x as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( drand48_data ) , "::" , - stringify ! ( __x ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const drand48_data ) ) . __old_x as * const _ - as usize } , 6usize , concat ! ( - "Alignment of field: " , stringify ! ( drand48_data ) , "::" , - stringify ! ( __old_x ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const drand48_data ) ) . __c as * const _ as - usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( drand48_data ) , "::" , - stringify ! ( __c ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const drand48_data ) ) . __init as * const _ as - usize } , 14usize , concat ! ( - "Alignment of field: " , stringify ! ( drand48_data ) , "::" , - stringify ! ( __init ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const drand48_data ) ) . __a as * const _ as - usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( drand48_data ) , "::" , - stringify ! ( __a ) )); -} -impl Clone for drand48_data { - fn clone(&self) -> Self { *self } -} -extern "C" { - pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn erand48_r(__xsubi: *mut ::std::os::raw::c_ushort, - __buffer: *mut drand48_data, __result: *mut f64) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn lrand48_r(__buffer: *mut drand48_data, - __result: *mut ::std::os::raw::c_long) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn nrand48_r(__xsubi: *mut ::std::os::raw::c_ushort, - __buffer: *mut drand48_data, - __result: *mut ::std::os::raw::c_long) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn mrand48_r(__buffer: *mut drand48_data, - __result: *mut ::std::os::raw::c_long) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn jrand48_r(__xsubi: *mut ::std::os::raw::c_ushort, - __buffer: *mut drand48_data, - __result: *mut ::std::os::raw::c_long) - -> ::std::os::raw::c_int; -} -extern "C" { - pub fn srand48_r(__seedval: ::std::os::raw::c_long, - __buffer: *mut drand48_data) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn seed48_r(__seed16v: *mut ::std::os::raw::c_ushort, - __buffer: *mut drand48_data) -> ::std::os::raw::c_int; -} -extern "C" { - pub fn lcong48_r(__param: *mut ::std::os::raw::c_ushort, - __buffer: *mut drand48_data) -> ::std::os::raw::c_int; + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(drand48_data)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(drand48_data)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__x as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__old_x as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__old_x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__c as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__c) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__init as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__init) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).__a as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(drand48_data), + "::", + stringify!(__a) + ) + ); +} +extern "C" { + pub fn drand48_r(__buffer: *mut drand48_data, __result: *mut f64) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn erand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut f64, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lrand48_r( + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn nrand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn mrand48_r( + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn jrand48_r( + __xsubi: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + __result: *mut ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn srand48_r( + __seedval: ::std::os::raw::c_long, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn seed48_r( + __seed16v: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lcong48_r( + __param: *mut ::std::os::raw::c_ushort, + __buffer: *mut drand48_data, + ) -> ::std::os::raw::c_int; } extern "C" { pub fn malloc(__size: usize) -> *mut ::std::os::raw::c_void; } extern "C" { - pub fn calloc(__nmemb: usize, __size: usize) - -> *mut ::std::os::raw::c_void; + pub fn calloc(__nmemb: usize, __size: usize) -> *mut ::std::os::raw::c_void; } extern "C" { - pub fn realloc(__ptr: *mut ::std::os::raw::c_void, __size: usize) - -> *mut ::std::os::raw::c_void; + pub fn realloc( + __ptr: *mut ::std::os::raw::c_void, + __size: usize, + ) -> *mut ::std::os::raw::c_void; } extern "C" { pub fn free(__ptr: *mut ::std::os::raw::c_void); @@ -3600,34 +4887,36 @@ extern "C" { pub fn valloc(__size: usize) -> *mut ::std::os::raw::c_void; } extern "C" { - pub fn posix_memalign(__memptr: *mut *mut ::std::os::raw::c_void, - __alignment: usize, __size: usize) - -> ::std::os::raw::c_int; + pub fn posix_memalign( + __memptr: *mut *mut ::std::os::raw::c_void, + __alignment: usize, + __size: usize, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn aligned_alloc(__alignment: usize, __size: usize) - -> *mut ::std::os::raw::c_void; + pub fn aligned_alloc(__alignment: usize, __size: usize) -> *mut ::std::os::raw::c_void; } extern "C" { pub fn abort(); } extern "C" { - pub fn atexit(__func: ::std::option::Option) - -> ::std::os::raw::c_int; + pub fn atexit(__func: ::std::option::Option) -> ::std::os::raw::c_int; } extern "C" { - pub fn at_quick_exit(__func: - ::std::option::Option) - -> ::std::os::raw::c_int; + pub fn at_quick_exit( + __func: ::std::option::Option, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn on_exit(__func: - ::std::option::Option, - __arg: *mut ::std::os::raw::c_void) - -> ::std::os::raw::c_int; + pub fn on_exit( + __func: ::std::option::Option< + unsafe extern "C" fn( + __status: ::std::os::raw::c_int, + __arg: *mut ::std::os::raw::c_void, + ), + >, + __arg: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; } extern "C" { pub fn exit(__status: ::std::os::raw::c_int); @@ -3639,66 +4928,68 @@ extern "C" { pub fn _Exit(__status: ::std::os::raw::c_int); } extern "C" { - pub fn getenv(__name: *const ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn getenv(__name: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn putenv(__string: *mut ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn putenv(__string: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; } extern "C" { - pub fn setenv(__name: *const ::std::os::raw::c_char, - __value: *const ::std::os::raw::c_char, - __replace: ::std::os::raw::c_int) -> ::std::os::raw::c_int; + pub fn setenv( + __name: *const ::std::os::raw::c_char, + __value: *const ::std::os::raw::c_char, + __replace: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn unsetenv(__name: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn unsetenv(__name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; } extern "C" { pub fn clearenv() -> ::std::os::raw::c_int; } extern "C" { - pub fn mktemp(__template: *mut ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn mktemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn mkstemp(__template: *mut ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn mkstemp(__template: *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; } extern "C" { - pub fn mkstemps(__template: *mut ::std::os::raw::c_char, - __suffixlen: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + pub fn mkstemps( + __template: *mut ::std::os::raw::c_char, + __suffixlen: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn mkdtemp(__template: *mut ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn system(__command: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn system(__command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; } extern "C" { - pub fn realpath(__name: *const ::std::os::raw::c_char, - __resolved: *mut ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn realpath( + __name: *const ::std::os::raw::c_char, + __resolved: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; } -pub type __compar_fn_t = - ::std::option::Option ::std::os::raw::c_int>; +pub type __compar_fn_t = ::std::option::Option< + unsafe extern "C" fn(arg1: *const ::std::os::raw::c_void, arg2: *const ::std::os::raw::c_void) + -> ::std::os::raw::c_int, +>; extern "C" { - pub fn bsearch(__key: *const ::std::os::raw::c_void, - __base: *const ::std::os::raw::c_void, __nmemb: usize, - __size: usize, __compar: __compar_fn_t) - -> *mut ::std::os::raw::c_void; + pub fn bsearch( + __key: *const ::std::os::raw::c_void, + __base: *const ::std::os::raw::c_void, + __nmemb: usize, + __size: usize, + __compar: __compar_fn_t, + ) -> *mut ::std::os::raw::c_void; } extern "C" { - pub fn qsort(__base: *mut ::std::os::raw::c_void, __nmemb: usize, - __size: usize, __compar: __compar_fn_t); + pub fn qsort( + __base: *mut ::std::os::raw::c_void, + __nmemb: usize, + __size: usize, + __compar: __compar_fn_t, + ); } extern "C" { pub fn abs(__x: ::std::os::raw::c_int) -> ::std::os::raw::c_int; @@ -3707,116 +4998,138 @@ extern "C" { pub fn labs(__x: ::std::os::raw::c_long) -> ::std::os::raw::c_long; } extern "C" { - pub fn llabs(__x: ::std::os::raw::c_longlong) - -> ::std::os::raw::c_longlong; + pub fn llabs(__x: ::std::os::raw::c_longlong) -> ::std::os::raw::c_longlong; } extern "C" { - pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) - -> div_t; + pub fn div(__numer: ::std::os::raw::c_int, __denom: ::std::os::raw::c_int) -> div_t; } extern "C" { - pub fn ldiv(__numer: ::std::os::raw::c_long, - __denom: ::std::os::raw::c_long) -> ldiv_t; + pub fn ldiv(__numer: ::std::os::raw::c_long, __denom: ::std::os::raw::c_long) -> ldiv_t; } extern "C" { - pub fn lldiv(__numer: ::std::os::raw::c_longlong, - __denom: ::std::os::raw::c_longlong) -> lldiv_t; + pub fn lldiv( + __numer: ::std::os::raw::c_longlong, + __denom: ::std::os::raw::c_longlong, + ) -> lldiv_t; } extern "C" { - pub fn ecvt(__value: f64, __ndigit: ::std::os::raw::c_int, - __decpt: *mut ::std::os::raw::c_int, - __sign: *mut ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn ecvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn fcvt(__value: f64, __ndigit: ::std::os::raw::c_int, - __decpt: *mut ::std::os::raw::c_int, - __sign: *mut ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn fcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn gcvt(__value: f64, __ndigit: ::std::os::raw::c_int, - __buf: *mut ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn gcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn qecvt(__value: f64, __ndigit: ::std::os::raw::c_int, - __decpt: *mut ::std::os::raw::c_int, - __sign: *mut ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn qecvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn qfcvt(__value: f64, __ndigit: ::std::os::raw::c_int, - __decpt: *mut ::std::os::raw::c_int, - __sign: *mut ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + pub fn qfcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn qgcvt(__value: f64, __ndigit: ::std::os::raw::c_int, - __buf: *mut ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; + pub fn qgcvt( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; } extern "C" { - pub fn ecvt_r(__value: f64, __ndigit: ::std::os::raw::c_int, - __decpt: *mut ::std::os::raw::c_int, - __sign: *mut ::std::os::raw::c_int, - __buf: *mut ::std::os::raw::c_char, __len: usize) - -> ::std::os::raw::c_int; + pub fn ecvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: usize, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn fcvt_r(__value: f64, __ndigit: ::std::os::raw::c_int, - __decpt: *mut ::std::os::raw::c_int, - __sign: *mut ::std::os::raw::c_int, - __buf: *mut ::std::os::raw::c_char, __len: usize) - -> ::std::os::raw::c_int; + pub fn fcvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: usize, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn qecvt_r(__value: f64, __ndigit: ::std::os::raw::c_int, - __decpt: *mut ::std::os::raw::c_int, - __sign: *mut ::std::os::raw::c_int, - __buf: *mut ::std::os::raw::c_char, __len: usize) - -> ::std::os::raw::c_int; + pub fn qecvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: usize, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn qfcvt_r(__value: f64, __ndigit: ::std::os::raw::c_int, - __decpt: *mut ::std::os::raw::c_int, - __sign: *mut ::std::os::raw::c_int, - __buf: *mut ::std::os::raw::c_char, __len: usize) - -> ::std::os::raw::c_int; + pub fn qfcvt_r( + __value: f64, + __ndigit: ::std::os::raw::c_int, + __decpt: *mut ::std::os::raw::c_int, + __sign: *mut ::std::os::raw::c_int, + __buf: *mut ::std::os::raw::c_char, + __len: usize, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn mblen(__s: *const ::std::os::raw::c_char, __n: usize) - -> ::std::os::raw::c_int; + pub fn mblen(__s: *const ::std::os::raw::c_char, __n: usize) -> ::std::os::raw::c_int; } extern "C" { - pub fn mbtowc(__pwc: *mut wchar_t, __s: *const ::std::os::raw::c_char, - __n: usize) -> ::std::os::raw::c_int; + pub fn mbtowc( + __pwc: *mut wchar_t, + __s: *const ::std::os::raw::c_char, + __n: usize, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn wctomb(__s: *mut ::std::os::raw::c_char, __wchar: wchar_t) - -> ::std::os::raw::c_int; + pub fn wctomb(__s: *mut ::std::os::raw::c_char, __wchar: wchar_t) -> ::std::os::raw::c_int; } extern "C" { - pub fn mbstowcs(__pwcs: *mut wchar_t, __s: *const ::std::os::raw::c_char, - __n: usize) -> usize; + pub fn mbstowcs(__pwcs: *mut wchar_t, __s: *const ::std::os::raw::c_char, __n: usize) -> usize; } extern "C" { - pub fn wcstombs(__s: *mut ::std::os::raw::c_char, __pwcs: *const wchar_t, - __n: usize) -> usize; + pub fn wcstombs(__s: *mut ::std::os::raw::c_char, __pwcs: *const wchar_t, __n: usize) -> usize; } extern "C" { - pub fn rpmatch(__response: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn rpmatch(__response: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; } extern "C" { - pub fn getsubopt(__optionp: *mut *mut ::std::os::raw::c_char, - __tokens: *const *const ::std::os::raw::c_char, - __valuep: *mut *mut ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + pub fn getsubopt( + __optionp: *mut *mut ::std::os::raw::c_char, + __tokens: *const *const ::std::os::raw::c_char, + __valuep: *mut *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; } extern "C" { pub fn getloadavg(__loadavg: *mut f64, __nelem: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + -> ::std::os::raw::c_int; } extern "C" { pub fn _mm_sfence(); @@ -3855,9 +5168,9 @@ extern "C" { } extern "C" { /// This function returns the L1 cache line size of the CPU -/// -/// This is useful for determining multi-threaded structure padding -/// or SIMD prefetch sizes. + /// + /// This is useful for determining multi-threaded structure padding + /// or SIMD prefetch sizes. pub fn SDL_GetCPUCacheLineSize() -> ::std::os::raw::c_int; } extern "C" { @@ -3912,30 +5225,18 @@ extern "C" { /// This function returns the amount of RAM configured in the system, in MB. pub fn SDL_GetSystemRAM() -> ::std::os::raw::c_int; } -pub const SDL_PIXELTYPE_UNKNOWN: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_UNKNOWN; -pub const SDL_PIXELTYPE_INDEX1: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_INDEX1; -pub const SDL_PIXELTYPE_INDEX4: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_INDEX4; -pub const SDL_PIXELTYPE_INDEX8: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_INDEX8; -pub const SDL_PIXELTYPE_PACKED8: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_PACKED8; -pub const SDL_PIXELTYPE_PACKED16: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_PACKED16; -pub const SDL_PIXELTYPE_PACKED32: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_PACKED32; -pub const SDL_PIXELTYPE_ARRAYU8: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_ARRAYU8; -pub const SDL_PIXELTYPE_ARRAYU16: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_ARRAYU16; -pub const SDL_PIXELTYPE_ARRAYU32: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_ARRAYU32; -pub const SDL_PIXELTYPE_ARRAYF16: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_ARRAYF16; -pub const SDL_PIXELTYPE_ARRAYF32: _bindgen_ty_1 = - _bindgen_ty_1::SDL_PIXELTYPE_ARRAYF32; +pub const SDL_PIXELTYPE_UNKNOWN: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_UNKNOWN; +pub const SDL_PIXELTYPE_INDEX1: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_INDEX1; +pub const SDL_PIXELTYPE_INDEX4: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_INDEX4; +pub const SDL_PIXELTYPE_INDEX8: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_INDEX8; +pub const SDL_PIXELTYPE_PACKED8: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_PACKED8; +pub const SDL_PIXELTYPE_PACKED16: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_PACKED16; +pub const SDL_PIXELTYPE_PACKED32: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_PACKED32; +pub const SDL_PIXELTYPE_ARRAYU8: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_ARRAYU8; +pub const SDL_PIXELTYPE_ARRAYU16: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_ARRAYU16; +pub const SDL_PIXELTYPE_ARRAYU32: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_ARRAYU32; +pub const SDL_PIXELTYPE_ARRAYF16: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_ARRAYF16; +pub const SDL_PIXELTYPE_ARRAYF32: _bindgen_ty_1 = _bindgen_ty_1::SDL_PIXELTYPE_ARRAYF32; #[repr(u32)] /// Pixel type. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -3953,12 +5254,9 @@ pub enum _bindgen_ty_1 { SDL_PIXELTYPE_ARRAYF16 = 10, SDL_PIXELTYPE_ARRAYF32 = 11, } -pub const SDL_BITMAPORDER_NONE: _bindgen_ty_2 = - _bindgen_ty_2::SDL_BITMAPORDER_NONE; -pub const SDL_BITMAPORDER_4321: _bindgen_ty_2 = - _bindgen_ty_2::SDL_BITMAPORDER_4321; -pub const SDL_BITMAPORDER_1234: _bindgen_ty_2 = - _bindgen_ty_2::SDL_BITMAPORDER_1234; +pub const SDL_BITMAPORDER_NONE: _bindgen_ty_2 = _bindgen_ty_2::SDL_BITMAPORDER_NONE; +pub const SDL_BITMAPORDER_4321: _bindgen_ty_2 = _bindgen_ty_2::SDL_BITMAPORDER_4321; +pub const SDL_BITMAPORDER_1234: _bindgen_ty_2 = _bindgen_ty_2::SDL_BITMAPORDER_1234; #[repr(u32)] /// Bitmap pixel order, high bit -> low bit. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -3967,24 +5265,15 @@ pub enum _bindgen_ty_2 { SDL_BITMAPORDER_4321 = 1, SDL_BITMAPORDER_1234 = 2, } -pub const SDL_PACKEDORDER_NONE: _bindgen_ty_3 = - _bindgen_ty_3::SDL_PACKEDORDER_NONE; -pub const SDL_PACKEDORDER_XRGB: _bindgen_ty_3 = - _bindgen_ty_3::SDL_PACKEDORDER_XRGB; -pub const SDL_PACKEDORDER_RGBX: _bindgen_ty_3 = - _bindgen_ty_3::SDL_PACKEDORDER_RGBX; -pub const SDL_PACKEDORDER_ARGB: _bindgen_ty_3 = - _bindgen_ty_3::SDL_PACKEDORDER_ARGB; -pub const SDL_PACKEDORDER_RGBA: _bindgen_ty_3 = - _bindgen_ty_3::SDL_PACKEDORDER_RGBA; -pub const SDL_PACKEDORDER_XBGR: _bindgen_ty_3 = - _bindgen_ty_3::SDL_PACKEDORDER_XBGR; -pub const SDL_PACKEDORDER_BGRX: _bindgen_ty_3 = - _bindgen_ty_3::SDL_PACKEDORDER_BGRX; -pub const SDL_PACKEDORDER_ABGR: _bindgen_ty_3 = - _bindgen_ty_3::SDL_PACKEDORDER_ABGR; -pub const SDL_PACKEDORDER_BGRA: _bindgen_ty_3 = - _bindgen_ty_3::SDL_PACKEDORDER_BGRA; +pub const SDL_PACKEDORDER_NONE: _bindgen_ty_3 = _bindgen_ty_3::SDL_PACKEDORDER_NONE; +pub const SDL_PACKEDORDER_XRGB: _bindgen_ty_3 = _bindgen_ty_3::SDL_PACKEDORDER_XRGB; +pub const SDL_PACKEDORDER_RGBX: _bindgen_ty_3 = _bindgen_ty_3::SDL_PACKEDORDER_RGBX; +pub const SDL_PACKEDORDER_ARGB: _bindgen_ty_3 = _bindgen_ty_3::SDL_PACKEDORDER_ARGB; +pub const SDL_PACKEDORDER_RGBA: _bindgen_ty_3 = _bindgen_ty_3::SDL_PACKEDORDER_RGBA; +pub const SDL_PACKEDORDER_XBGR: _bindgen_ty_3 = _bindgen_ty_3::SDL_PACKEDORDER_XBGR; +pub const SDL_PACKEDORDER_BGRX: _bindgen_ty_3 = _bindgen_ty_3::SDL_PACKEDORDER_BGRX; +pub const SDL_PACKEDORDER_ABGR: _bindgen_ty_3 = _bindgen_ty_3::SDL_PACKEDORDER_ABGR; +pub const SDL_PACKEDORDER_BGRA: _bindgen_ty_3 = _bindgen_ty_3::SDL_PACKEDORDER_BGRA; #[repr(u32)] /// Packed component order, high bit -> low bit. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -3999,20 +5288,13 @@ pub enum _bindgen_ty_3 { SDL_PACKEDORDER_ABGR = 7, SDL_PACKEDORDER_BGRA = 8, } -pub const SDL_ARRAYORDER_NONE: _bindgen_ty_4 = - _bindgen_ty_4::SDL_ARRAYORDER_NONE; -pub const SDL_ARRAYORDER_RGB: _bindgen_ty_4 = - _bindgen_ty_4::SDL_ARRAYORDER_RGB; -pub const SDL_ARRAYORDER_RGBA: _bindgen_ty_4 = - _bindgen_ty_4::SDL_ARRAYORDER_RGBA; -pub const SDL_ARRAYORDER_ARGB: _bindgen_ty_4 = - _bindgen_ty_4::SDL_ARRAYORDER_ARGB; -pub const SDL_ARRAYORDER_BGR: _bindgen_ty_4 = - _bindgen_ty_4::SDL_ARRAYORDER_BGR; -pub const SDL_ARRAYORDER_BGRA: _bindgen_ty_4 = - _bindgen_ty_4::SDL_ARRAYORDER_BGRA; -pub const SDL_ARRAYORDER_ABGR: _bindgen_ty_4 = - _bindgen_ty_4::SDL_ARRAYORDER_ABGR; +pub const SDL_ARRAYORDER_NONE: _bindgen_ty_4 = _bindgen_ty_4::SDL_ARRAYORDER_NONE; +pub const SDL_ARRAYORDER_RGB: _bindgen_ty_4 = _bindgen_ty_4::SDL_ARRAYORDER_RGB; +pub const SDL_ARRAYORDER_RGBA: _bindgen_ty_4 = _bindgen_ty_4::SDL_ARRAYORDER_RGBA; +pub const SDL_ARRAYORDER_ARGB: _bindgen_ty_4 = _bindgen_ty_4::SDL_ARRAYORDER_ARGB; +pub const SDL_ARRAYORDER_BGR: _bindgen_ty_4 = _bindgen_ty_4::SDL_ARRAYORDER_BGR; +pub const SDL_ARRAYORDER_BGRA: _bindgen_ty_4 = _bindgen_ty_4::SDL_ARRAYORDER_BGRA; +pub const SDL_ARRAYORDER_ABGR: _bindgen_ty_4 = _bindgen_ty_4::SDL_ARRAYORDER_ABGR; #[repr(u32)] /// Array component order, low byte -> high byte. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -4025,24 +5307,15 @@ pub enum _bindgen_ty_4 { SDL_ARRAYORDER_BGRA = 5, SDL_ARRAYORDER_ABGR = 6, } -pub const SDL_PACKEDLAYOUT_NONE: _bindgen_ty_5 = - _bindgen_ty_5::SDL_PACKEDLAYOUT_NONE; -pub const SDL_PACKEDLAYOUT_332: _bindgen_ty_5 = - _bindgen_ty_5::SDL_PACKEDLAYOUT_332; -pub const SDL_PACKEDLAYOUT_4444: _bindgen_ty_5 = - _bindgen_ty_5::SDL_PACKEDLAYOUT_4444; -pub const SDL_PACKEDLAYOUT_1555: _bindgen_ty_5 = - _bindgen_ty_5::SDL_PACKEDLAYOUT_1555; -pub const SDL_PACKEDLAYOUT_5551: _bindgen_ty_5 = - _bindgen_ty_5::SDL_PACKEDLAYOUT_5551; -pub const SDL_PACKEDLAYOUT_565: _bindgen_ty_5 = - _bindgen_ty_5::SDL_PACKEDLAYOUT_565; -pub const SDL_PACKEDLAYOUT_8888: _bindgen_ty_5 = - _bindgen_ty_5::SDL_PACKEDLAYOUT_8888; -pub const SDL_PACKEDLAYOUT_2101010: _bindgen_ty_5 = - _bindgen_ty_5::SDL_PACKEDLAYOUT_2101010; -pub const SDL_PACKEDLAYOUT_1010102: _bindgen_ty_5 = - _bindgen_ty_5::SDL_PACKEDLAYOUT_1010102; +pub const SDL_PACKEDLAYOUT_NONE: _bindgen_ty_5 = _bindgen_ty_5::SDL_PACKEDLAYOUT_NONE; +pub const SDL_PACKEDLAYOUT_332: _bindgen_ty_5 = _bindgen_ty_5::SDL_PACKEDLAYOUT_332; +pub const SDL_PACKEDLAYOUT_4444: _bindgen_ty_5 = _bindgen_ty_5::SDL_PACKEDLAYOUT_4444; +pub const SDL_PACKEDLAYOUT_1555: _bindgen_ty_5 = _bindgen_ty_5::SDL_PACKEDLAYOUT_1555; +pub const SDL_PACKEDLAYOUT_5551: _bindgen_ty_5 = _bindgen_ty_5::SDL_PACKEDLAYOUT_5551; +pub const SDL_PACKEDLAYOUT_565: _bindgen_ty_5 = _bindgen_ty_5::SDL_PACKEDLAYOUT_565; +pub const SDL_PACKEDLAYOUT_8888: _bindgen_ty_5 = _bindgen_ty_5::SDL_PACKEDLAYOUT_8888; +pub const SDL_PACKEDLAYOUT_2101010: _bindgen_ty_5 = _bindgen_ty_5::SDL_PACKEDLAYOUT_2101010; +pub const SDL_PACKEDLAYOUT_1010102: _bindgen_ty_5 = _bindgen_ty_5::SDL_PACKEDLAYOUT_1010102; #[repr(u32)] /// Packed component layout. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -4057,90 +5330,48 @@ pub enum _bindgen_ty_5 { SDL_PACKEDLAYOUT_2101010 = 7, SDL_PACKEDLAYOUT_1010102 = 8, } -pub const SDL_PIXELFORMAT_UNKNOWN: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_UNKNOWN; -pub const SDL_PIXELFORMAT_INDEX1LSB: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_INDEX1LSB; -pub const SDL_PIXELFORMAT_INDEX1MSB: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_INDEX1MSB; -pub const SDL_PIXELFORMAT_INDEX4LSB: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_INDEX4LSB; -pub const SDL_PIXELFORMAT_INDEX4MSB: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_INDEX4MSB; -pub const SDL_PIXELFORMAT_INDEX8: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_INDEX8; -pub const SDL_PIXELFORMAT_RGB332: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_RGB332; -pub const SDL_PIXELFORMAT_RGB444: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_RGB444; -pub const SDL_PIXELFORMAT_RGB555: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_RGB555; -pub const SDL_PIXELFORMAT_BGR555: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_BGR555; -pub const SDL_PIXELFORMAT_ARGB4444: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_ARGB4444; -pub const SDL_PIXELFORMAT_RGBA4444: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_RGBA4444; -pub const SDL_PIXELFORMAT_ABGR4444: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_ABGR4444; -pub const SDL_PIXELFORMAT_BGRA4444: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_BGRA4444; -pub const SDL_PIXELFORMAT_ARGB1555: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_ARGB1555; -pub const SDL_PIXELFORMAT_RGBA5551: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_RGBA5551; -pub const SDL_PIXELFORMAT_ABGR1555: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_ABGR1555; -pub const SDL_PIXELFORMAT_BGRA5551: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_BGRA5551; -pub const SDL_PIXELFORMAT_RGB565: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_RGB565; -pub const SDL_PIXELFORMAT_BGR565: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_BGR565; -pub const SDL_PIXELFORMAT_RGB24: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_RGB24; -pub const SDL_PIXELFORMAT_BGR24: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_BGR24; -pub const SDL_PIXELFORMAT_RGB888: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_RGB888; -pub const SDL_PIXELFORMAT_RGBX8888: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_RGBX8888; -pub const SDL_PIXELFORMAT_BGR888: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_BGR888; -pub const SDL_PIXELFORMAT_BGRX8888: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_BGRX8888; -pub const SDL_PIXELFORMAT_ARGB8888: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_ARGB8888; -pub const SDL_PIXELFORMAT_RGBA8888: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_RGBA8888; -pub const SDL_PIXELFORMAT_ABGR8888: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_ABGR8888; -pub const SDL_PIXELFORMAT_BGRA8888: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_BGRA8888; -pub const SDL_PIXELFORMAT_ARGB2101010: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_ARGB2101010; -pub const SDL_PIXELFORMAT_RGBA32: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_ABGR8888; -pub const SDL_PIXELFORMAT_ARGB32: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_BGRA8888; -pub const SDL_PIXELFORMAT_BGRA32: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_ARGB8888; -pub const SDL_PIXELFORMAT_ABGR32: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_RGBA8888; -pub const SDL_PIXELFORMAT_YV12: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_YV12; -pub const SDL_PIXELFORMAT_IYUV: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_IYUV; -pub const SDL_PIXELFORMAT_YUY2: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_YUY2; -pub const SDL_PIXELFORMAT_UYVY: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_UYVY; -pub const SDL_PIXELFORMAT_YVYU: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_YVYU; -pub const SDL_PIXELFORMAT_NV12: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_NV12; -pub const SDL_PIXELFORMAT_NV21: _bindgen_ty_6 = - _bindgen_ty_6::SDL_PIXELFORMAT_NV21; +pub const SDL_PIXELFORMAT_UNKNOWN: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_UNKNOWN; +pub const SDL_PIXELFORMAT_INDEX1LSB: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_INDEX1LSB; +pub const SDL_PIXELFORMAT_INDEX1MSB: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_INDEX1MSB; +pub const SDL_PIXELFORMAT_INDEX4LSB: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_INDEX4LSB; +pub const SDL_PIXELFORMAT_INDEX4MSB: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_INDEX4MSB; +pub const SDL_PIXELFORMAT_INDEX8: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_INDEX8; +pub const SDL_PIXELFORMAT_RGB332: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_RGB332; +pub const SDL_PIXELFORMAT_RGB444: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_RGB444; +pub const SDL_PIXELFORMAT_RGB555: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_RGB555; +pub const SDL_PIXELFORMAT_BGR555: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_BGR555; +pub const SDL_PIXELFORMAT_ARGB4444: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_ARGB4444; +pub const SDL_PIXELFORMAT_RGBA4444: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_RGBA4444; +pub const SDL_PIXELFORMAT_ABGR4444: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_ABGR4444; +pub const SDL_PIXELFORMAT_BGRA4444: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_BGRA4444; +pub const SDL_PIXELFORMAT_ARGB1555: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_ARGB1555; +pub const SDL_PIXELFORMAT_RGBA5551: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_RGBA5551; +pub const SDL_PIXELFORMAT_ABGR1555: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_ABGR1555; +pub const SDL_PIXELFORMAT_BGRA5551: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_BGRA5551; +pub const SDL_PIXELFORMAT_RGB565: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_RGB565; +pub const SDL_PIXELFORMAT_BGR565: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_BGR565; +pub const SDL_PIXELFORMAT_RGB24: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_RGB24; +pub const SDL_PIXELFORMAT_BGR24: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_BGR24; +pub const SDL_PIXELFORMAT_RGB888: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_RGB888; +pub const SDL_PIXELFORMAT_RGBX8888: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_RGBX8888; +pub const SDL_PIXELFORMAT_BGR888: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_BGR888; +pub const SDL_PIXELFORMAT_BGRX8888: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_BGRX8888; +pub const SDL_PIXELFORMAT_ARGB8888: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_ARGB8888; +pub const SDL_PIXELFORMAT_RGBA8888: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_RGBA8888; +pub const SDL_PIXELFORMAT_ABGR8888: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_ABGR8888; +pub const SDL_PIXELFORMAT_BGRA8888: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_BGRA8888; +pub const SDL_PIXELFORMAT_ARGB2101010: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_ARGB2101010; +pub const SDL_PIXELFORMAT_RGBA32: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_ABGR8888; +pub const SDL_PIXELFORMAT_ARGB32: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_BGRA8888; +pub const SDL_PIXELFORMAT_BGRA32: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_ARGB8888; +pub const SDL_PIXELFORMAT_ABGR32: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_RGBA8888; +pub const SDL_PIXELFORMAT_YV12: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_YV12; +pub const SDL_PIXELFORMAT_IYUV: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_IYUV; +pub const SDL_PIXELFORMAT_YUY2: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_YUY2; +pub const SDL_PIXELFORMAT_UYVY: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_UYVY; +pub const SDL_PIXELFORMAT_YVYU: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_YVYU; +pub const SDL_PIXELFORMAT_NV12: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_NV12; +pub const SDL_PIXELFORMAT_NV21: _bindgen_ty_6 = _bindgen_ty_6::SDL_PIXELFORMAT_NV21; #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum _bindgen_ty_6 { @@ -4175,16 +5406,23 @@ pub enum _bindgen_ty_6 { SDL_PIXELFORMAT_ABGR8888 = 376840196, SDL_PIXELFORMAT_BGRA8888 = 377888772, SDL_PIXELFORMAT_ARGB2101010 = 372711428, + /// < Planar mode: Y + V + U (3 planes) SDL_PIXELFORMAT_YV12 = 842094169, + /// < Planar mode: Y + U + V (3 planes) SDL_PIXELFORMAT_IYUV = 1448433993, + /// < Packed mode: Y0+U0+Y1+V0 (1 plane) SDL_PIXELFORMAT_YUY2 = 844715353, + /// < Packed mode: U0+Y0+V0+Y1 (1 plane) SDL_PIXELFORMAT_UYVY = 1498831189, + /// < Packed mode: Y0+V0+Y1+U0 (1 plane) SDL_PIXELFORMAT_YVYU = 1431918169, + /// < Planar mode: Y + U/V interleaved (2 planes) SDL_PIXELFORMAT_NV12 = 842094158, + /// < Planar mode: Y + V/U interleaved (2 planes) SDL_PIXELFORMAT_NV21 = 825382478, } #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_Color { pub r: Uint8, pub g: Uint8, @@ -4193,36 +5431,59 @@ pub struct SDL_Color { } #[test] fn bindgen_test_layout_SDL_Color() { - assert_eq!(::std::mem::size_of::() , 4usize , concat ! ( - "Size of: " , stringify ! ( SDL_Color ) )); - assert_eq! (::std::mem::align_of::() , 1usize , concat ! ( - "Alignment of " , stringify ! ( SDL_Color ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Color ) ) . r as * const _ as usize } - , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Color ) , "::" , - stringify ! ( r ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Color ) ) . g as * const _ as usize } - , 1usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Color ) , "::" , - stringify ! ( g ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Color ) ) . b as * const _ as usize } - , 2usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Color ) , "::" , - stringify ! ( b ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Color ) ) . a as * const _ as usize } - , 3usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Color ) , "::" , - stringify ! ( a ) )); -} -impl Clone for SDL_Color { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Debug, Copy)] + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(SDL_Color)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(SDL_Color)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).r as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Color), + "::", + stringify!(r) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).g as *const _ as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(SDL_Color), + "::", + stringify!(g) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).b as *const _ as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(SDL_Color), + "::", + stringify!(b) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).a as *const _ as usize }, + 3usize, + concat!( + "Offset of field: ", + stringify!(SDL_Color), + "::", + stringify!(a) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] pub struct SDL_Palette { pub ncolors: ::std::os::raw::c_int, pub colors: *mut SDL_Color, @@ -4231,37 +5492,60 @@ pub struct SDL_Palette { } #[test] fn bindgen_test_layout_SDL_Palette() { - assert_eq!(::std::mem::size_of::() , 24usize , concat ! ( - "Size of: " , stringify ! ( SDL_Palette ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( SDL_Palette ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Palette ) ) . ncolors as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Palette ) , "::" , - stringify ! ( ncolors ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Palette ) ) . colors as * const _ as - usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Palette ) , "::" , - stringify ! ( colors ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Palette ) ) . version as * const _ as - usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Palette ) , "::" , - stringify ! ( version ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Palette ) ) . refcount as * const _ - as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Palette ) , "::" , - stringify ! ( refcount ) )); -} -impl Clone for SDL_Palette { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(SDL_Palette)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_Palette)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ncolors as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Palette), + "::", + stringify!(ncolors) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).colors as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_Palette), + "::", + stringify!(colors) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_Palette), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).refcount as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_Palette), + "::", + stringify!(refcount) + ) + ); } /// \note Everything in the pixel format structure is read-only. #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_PixelFormat { pub format: Uint32, pub palette: *mut SDL_Palette, @@ -4285,136 +5569,240 @@ pub struct SDL_PixelFormat { } #[test] fn bindgen_test_layout_SDL_PixelFormat() { - assert_eq!(::std::mem::size_of::() , 56usize , concat ! ( - "Size of: " , stringify ! ( SDL_PixelFormat ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! - ( "Alignment of " , stringify ! ( SDL_PixelFormat ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . format as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( format ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . palette as * const - _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( palette ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . BitsPerPixel as * - const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( BitsPerPixel ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . BytesPerPixel as * - const _ as usize } , 17usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( BytesPerPixel ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . padding as * const - _ as usize } , 18usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( padding ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Rmask as * const _ - as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Rmask ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Gmask as * const _ - as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Gmask ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Bmask as * const _ - as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Bmask ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Amask as * const _ - as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Amask ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Rloss as * const _ - as usize } , 36usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Rloss ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Gloss as * const _ - as usize } , 37usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Gloss ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Bloss as * const _ - as usize } , 38usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Bloss ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Aloss as * const _ - as usize } , 39usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Aloss ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Rshift as * const _ - as usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Rshift ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Gshift as * const _ - as usize } , 41usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Gshift ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Bshift as * const _ - as usize } , 42usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Bshift ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . Ashift as * const _ - as usize } , 43usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( Ashift ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . refcount as * const - _ as usize } , 44usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( refcount ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_PixelFormat ) ) . next as * const _ - as usize } , 48usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_PixelFormat ) , - "::" , stringify ! ( next ) )); -} -impl Clone for SDL_PixelFormat { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(SDL_PixelFormat)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_PixelFormat)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).format as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(format) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).palette as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(palette) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).BitsPerPixel as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(BitsPerPixel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).BytesPerPixel as *const _ as usize }, + 17usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(BytesPerPixel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding as *const _ as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(padding) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Rmask as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Rmask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Gmask as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Gmask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Bmask as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Bmask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Amask as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Amask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Rloss as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Rloss) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Gloss as *const _ as usize }, + 37usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Gloss) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Bloss as *const _ as usize }, + 38usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Bloss) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Aloss as *const _ as usize }, + 39usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Aloss) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Rshift as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Rshift) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Gshift as *const _ as usize }, + 41usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Gshift) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Bshift as *const _ as usize }, + 42usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Bshift) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).Ashift as *const _ as usize }, + 43usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(Ashift) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).refcount as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(refcount) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).next as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(SDL_PixelFormat), + "::", + stringify!(next) + ) + ); } extern "C" { /// \brief Get the human readable name of a pixel format - pub fn SDL_GetPixelFormatName(format: Uint32) - -> *const ::std::os::raw::c_char; + pub fn SDL_GetPixelFormatName(format: Uint32) -> *const ::std::os::raw::c_char; } extern "C" { /// \brief Convert one of the enumerated pixel formats to a bpp and RGBA masks. -/// -/// \return SDL_TRUE, or SDL_FALSE if the conversion wasn't possible. -/// -/// \sa SDL_MasksToPixelFormatEnum() - pub fn SDL_PixelFormatEnumToMasks(format: Uint32, - bpp: *mut ::std::os::raw::c_int, - Rmask: *mut Uint32, Gmask: *mut Uint32, - Bmask: *mut Uint32, Amask: *mut Uint32) - -> SDL_bool; + /// + /// \return SDL_TRUE, or SDL_FALSE if the conversion wasn't possible. + /// + /// \sa SDL_MasksToPixelFormatEnum() + pub fn SDL_PixelFormatEnumToMasks( + format: Uint32, + bpp: *mut ::std::os::raw::c_int, + Rmask: *mut Uint32, + Gmask: *mut Uint32, + Bmask: *mut Uint32, + Amask: *mut Uint32, + ) -> SDL_bool; } extern "C" { /// \brief Convert a bpp and RGBA masks to an enumerated pixel format. -/// -/// \return The pixel format, or ::SDL_PIXELFORMAT_UNKNOWN if the conversion -/// wasn't possible. -/// -/// \sa SDL_PixelFormatEnumToMasks() - pub fn SDL_MasksToPixelFormatEnum(bpp: ::std::os::raw::c_int, - Rmask: Uint32, Gmask: Uint32, - Bmask: Uint32, Amask: Uint32) -> Uint32; + /// + /// \return The pixel format, or ::SDL_PIXELFORMAT_UNKNOWN if the conversion + /// wasn't possible. + /// + /// \sa SDL_PixelFormatEnumToMasks() + pub fn SDL_MasksToPixelFormatEnum( + bpp: ::std::os::raw::c_int, + Rmask: Uint32, + Gmask: Uint32, + Bmask: Uint32, + Amask: Uint32, + ) -> Uint32; } extern "C" { /// \brief Create an SDL_PixelFormat structure from a pixel format enum. @@ -4426,71 +5814,86 @@ extern "C" { } extern "C" { /// \brief Create a palette structure with the specified number of color -/// entries. -/// -/// \return A new palette, or NULL if there wasn't enough memory. -/// -/// \note The palette entries are initialized to white. -/// -/// \sa SDL_FreePalette() - pub fn SDL_AllocPalette(ncolors: ::std::os::raw::c_int) - -> *mut SDL_Palette; + /// entries. + /// + /// \return A new palette, or NULL if there wasn't enough memory. + /// + /// \note The palette entries are initialized to white. + /// + /// \sa SDL_FreePalette() + pub fn SDL_AllocPalette(ncolors: ::std::os::raw::c_int) -> *mut SDL_Palette; } extern "C" { /// \brief Set the palette for a pixel format structure. - pub fn SDL_SetPixelFormatPalette(format: *mut SDL_PixelFormat, - palette: *mut SDL_Palette) - -> ::std::os::raw::c_int; + pub fn SDL_SetPixelFormatPalette( + format: *mut SDL_PixelFormat, + palette: *mut SDL_Palette, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set a range of colors in a palette. -/// -/// \param palette The palette to modify. -/// \param colors An array of colors to copy into the palette. -/// \param firstcolor The index of the first palette entry to modify. -/// \param ncolors The number of entries to modify. -/// -/// \return 0 on success, or -1 if not all of the colors could be set. - pub fn SDL_SetPaletteColors(palette: *mut SDL_Palette, - colors: *const SDL_Color, - firstcolor: ::std::os::raw::c_int, - ncolors: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param palette The palette to modify. + /// \param colors An array of colors to copy into the palette. + /// \param firstcolor The index of the first palette entry to modify. + /// \param ncolors The number of entries to modify. + /// + /// \return 0 on success, or -1 if not all of the colors could be set. + pub fn SDL_SetPaletteColors( + palette: *mut SDL_Palette, + colors: *const SDL_Color, + firstcolor: ::std::os::raw::c_int, + ncolors: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Free a palette created with SDL_AllocPalette(). -/// -/// \sa SDL_AllocPalette() + /// + /// \sa SDL_AllocPalette() pub fn SDL_FreePalette(palette: *mut SDL_Palette); } extern "C" { /// \brief Maps an RGB triple to an opaque pixel value for a given pixel format. -/// -/// \sa SDL_MapRGBA - pub fn SDL_MapRGB(format: *const SDL_PixelFormat, r: Uint8, g: Uint8, - b: Uint8) -> Uint32; + /// + /// \sa SDL_MapRGBA + pub fn SDL_MapRGB(format: *const SDL_PixelFormat, r: Uint8, g: Uint8, b: Uint8) -> Uint32; } extern "C" { /// \brief Maps an RGBA quadruple to a pixel value for a given pixel format. -/// -/// \sa SDL_MapRGB - pub fn SDL_MapRGBA(format: *const SDL_PixelFormat, r: Uint8, g: Uint8, - b: Uint8, a: Uint8) -> Uint32; + /// + /// \sa SDL_MapRGB + pub fn SDL_MapRGBA( + format: *const SDL_PixelFormat, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> Uint32; } extern "C" { /// \brief Get the RGB components from a pixel of the specified format. -/// -/// \sa SDL_GetRGBA - pub fn SDL_GetRGB(pixel: Uint32, format: *const SDL_PixelFormat, - r: *mut Uint8, g: *mut Uint8, b: *mut Uint8); + /// + /// \sa SDL_GetRGBA + pub fn SDL_GetRGB( + pixel: Uint32, + format: *const SDL_PixelFormat, + r: *mut Uint8, + g: *mut Uint8, + b: *mut Uint8, + ); } extern "C" { /// \brief Get the RGBA components from a pixel of the specified format. -/// -/// \sa SDL_GetRGB - pub fn SDL_GetRGBA(pixel: Uint32, format: *const SDL_PixelFormat, - r: *mut Uint8, g: *mut Uint8, b: *mut Uint8, - a: *mut Uint8); + /// + /// \sa SDL_GetRGB + pub fn SDL_GetRGBA( + pixel: Uint32, + format: *const SDL_PixelFormat, + r: *mut Uint8, + g: *mut Uint8, + b: *mut Uint8, + a: *mut Uint8, + ); } extern "C" { /// \brief Calculate a 256 entry gamma ramp for a gamma value. @@ -4501,30 +5904,43 @@ extern "C" { /// \sa SDL_EnclosePoints /// \sa SDL_PointInRect #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_Point { pub x: ::std::os::raw::c_int, pub y: ::std::os::raw::c_int, } #[test] fn bindgen_test_layout_SDL_Point() { - assert_eq!(::std::mem::size_of::() , 8usize , concat ! ( - "Size of: " , stringify ! ( SDL_Point ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! ( - "Alignment of " , stringify ! ( SDL_Point ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Point ) ) . x as * const _ as usize } - , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Point ) , "::" , - stringify ! ( x ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Point ) ) . y as * const _ as usize } - , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Point ) , "::" , - stringify ! ( y ) )); -} -impl Clone for SDL_Point { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(SDL_Point)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_Point)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Point), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_Point), + "::", + stringify!(y) + ) + ); } /// \brief A rectangle, with the origin at the upper left. /// @@ -4535,7 +5951,7 @@ impl Clone for SDL_Point { /// \sa SDL_UnionRect /// \sa SDL_EnclosePoints #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_Rect { pub x: ::std::os::raw::c_int, pub y: ::std::os::raw::c_int, @@ -4544,80 +5960,118 @@ pub struct SDL_Rect { } #[test] fn bindgen_test_layout_SDL_Rect() { - assert_eq!(::std::mem::size_of::() , 16usize , concat ! ( - "Size of: " , stringify ! ( SDL_Rect ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! ( - "Alignment of " , stringify ! ( SDL_Rect ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Rect ) ) . x as * const _ as usize } - , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Rect ) , "::" , - stringify ! ( x ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Rect ) ) . y as * const _ as usize } - , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Rect ) , "::" , - stringify ! ( y ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Rect ) ) . w as * const _ as usize } - , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Rect ) , "::" , - stringify ! ( w ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Rect ) ) . h as * const _ as usize } - , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Rect ) , "::" , - stringify ! ( h ) )); -} -impl Clone for SDL_Rect { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(SDL_Rect)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_Rect)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Rect), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_Rect), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).w as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_Rect), + "::", + stringify!(w) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).h as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_Rect), + "::", + stringify!(h) + ) + ); } extern "C" { /// \brief Determine whether two rectangles intersect. -/// -/// \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. - pub fn SDL_HasIntersection(A: *const SDL_Rect, B: *const SDL_Rect) - -> SDL_bool; + /// + /// \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + pub fn SDL_HasIntersection(A: *const SDL_Rect, B: *const SDL_Rect) -> SDL_bool; } extern "C" { /// \brief Calculate the intersection of two rectangles. -/// -/// \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. - pub fn SDL_IntersectRect(A: *const SDL_Rect, B: *const SDL_Rect, - result: *mut SDL_Rect) -> SDL_bool; + /// + /// \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + pub fn SDL_IntersectRect( + A: *const SDL_Rect, + B: *const SDL_Rect, + result: *mut SDL_Rect, + ) -> SDL_bool; } extern "C" { /// \brief Calculate the union of two rectangles. - pub fn SDL_UnionRect(A: *const SDL_Rect, B: *const SDL_Rect, - result: *mut SDL_Rect); + pub fn SDL_UnionRect(A: *const SDL_Rect, B: *const SDL_Rect, result: *mut SDL_Rect); } extern "C" { /// \brief Calculate a minimal rectangle enclosing a set of points -/// -/// \return SDL_TRUE if any points were within the clipping rect - pub fn SDL_EnclosePoints(points: *const SDL_Point, - count: ::std::os::raw::c_int, - clip: *const SDL_Rect, result: *mut SDL_Rect) - -> SDL_bool; + /// + /// \return SDL_TRUE if any points were within the clipping rect + pub fn SDL_EnclosePoints( + points: *const SDL_Point, + count: ::std::os::raw::c_int, + clip: *const SDL_Rect, + result: *mut SDL_Rect, + ) -> SDL_bool; } extern "C" { /// \brief Calculate the intersection of a rectangle and line segment. -/// -/// \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. - pub fn SDL_IntersectRectAndLine(rect: *const SDL_Rect, - X1: *mut ::std::os::raw::c_int, - Y1: *mut ::std::os::raw::c_int, - X2: *mut ::std::os::raw::c_int, - Y2: *mut ::std::os::raw::c_int) - -> SDL_bool; + /// + /// \return SDL_TRUE if there is an intersection, SDL_FALSE otherwise. + pub fn SDL_IntersectRectAndLine( + rect: *const SDL_Rect, + X1: *mut ::std::os::raw::c_int, + Y1: *mut ::std::os::raw::c_int, + X2: *mut ::std::os::raw::c_int, + Y2: *mut ::std::os::raw::c_int, + ) -> SDL_bool; } #[repr(u32)] /// \brief The blend mode used in SDL_RenderCopy() and drawing operations. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_BlendMode { + /// < no blending + /// dstRGBA = srcRGBA SDL_BLENDMODE_NONE = 0, + /// < alpha blending + /// dstRGB = (srcRGB * srcA) + (dstRGB * (1-srcA)) + /// dstA = srcA + (dstA * (1-srcA)) SDL_BLENDMODE_BLEND = 1, + /// < additive blending + /// dstRGB = (srcRGB * srcA) + dstRGB + /// dstA = dstA SDL_BLENDMODE_ADD = 2, + /// < color modulate + /// dstRGB = srcRGB * dstRGB + /// dstA = dstA SDL_BLENDMODE_MOD = 4, SDL_BLENDMODE_INVALID = 2147483647, } @@ -4625,55 +6079,71 @@ pub enum SDL_BlendMode { /// \brief The blend operation used when combining source and destination pixel components #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_BlendOperation { + /// < dst + src: supported by all renderers SDL_BLENDOPERATION_ADD = 1, + /// < dst - src : supported by D3D9, D3D11, OpenGL, OpenGLES SDL_BLENDOPERATION_SUBTRACT = 2, + /// < src - dst : supported by D3D9, D3D11, OpenGL, OpenGLES SDL_BLENDOPERATION_REV_SUBTRACT = 3, + /// < min(dst, src) : supported by D3D11 SDL_BLENDOPERATION_MINIMUM = 4, + /// < max(dst, src) : supported by D3D11 SDL_BLENDOPERATION_MAXIMUM = 5, } #[repr(u32)] /// \brief The normalized factor used to multiply pixel components #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_BlendFactor { + /// < 0, 0, 0, 0 SDL_BLENDFACTOR_ZERO = 1, + /// < 1, 1, 1, 1 SDL_BLENDFACTOR_ONE = 2, + /// < srcR, srcG, srcB, srcA SDL_BLENDFACTOR_SRC_COLOR = 3, + /// < 1-srcR, 1-srcG, 1-srcB, 1-srcA SDL_BLENDFACTOR_ONE_MINUS_SRC_COLOR = 4, + /// < srcA, srcA, srcA, srcA SDL_BLENDFACTOR_SRC_ALPHA = 5, + /// < 1-srcA, 1-srcA, 1-srcA, 1-srcA SDL_BLENDFACTOR_ONE_MINUS_SRC_ALPHA = 6, + /// < dstR, dstG, dstB, dstA SDL_BLENDFACTOR_DST_COLOR = 7, + /// < 1-dstR, 1-dstG, 1-dstB, 1-dstA SDL_BLENDFACTOR_ONE_MINUS_DST_COLOR = 8, + /// < dstA, dstA, dstA, dstA SDL_BLENDFACTOR_DST_ALPHA = 9, + /// < 1-dstA, 1-dstA, 1-dstA, 1-dstA SDL_BLENDFACTOR_ONE_MINUS_DST_ALPHA = 10, } extern "C" { /// \brief Create a custom blend mode, which may or may not be supported by a given renderer -/// -/// \param srcColorFactor -/// \param dstColorFactor -/// \param colorOperation -/// \param srcAlphaFactor -/// \param dstAlphaFactor -/// \param alphaOperation -/// -/// The result of the blend mode operation will be: -/// dstRGB = dstRGB * dstColorFactor colorOperation srcRGB * srcColorFactor -/// and -/// dstA = dstA * dstAlphaFactor alphaOperation srcA * srcAlphaFactor - pub fn SDL_ComposeCustomBlendMode(srcColorFactor: SDL_BlendFactor, - dstColorFactor: SDL_BlendFactor, - colorOperation: SDL_BlendOperation, - srcAlphaFactor: SDL_BlendFactor, - dstAlphaFactor: SDL_BlendFactor, - alphaOperation: SDL_BlendOperation) - -> SDL_BlendMode; + /// + /// \param srcColorFactor + /// \param dstColorFactor + /// \param colorOperation + /// \param srcAlphaFactor + /// \param dstAlphaFactor + /// \param alphaOperation + /// + /// The result of the blend mode operation will be: + /// dstRGB = dstRGB * dstColorFactor colorOperation srcRGB * srcColorFactor + /// and + /// dstA = dstA * dstAlphaFactor alphaOperation srcA * srcAlphaFactor + pub fn SDL_ComposeCustomBlendMode( + srcColorFactor: SDL_BlendFactor, + dstColorFactor: SDL_BlendFactor, + colorOperation: SDL_BlendOperation, + srcAlphaFactor: SDL_BlendFactor, + dstAlphaFactor: SDL_BlendFactor, + alphaOperation: SDL_BlendOperation, + ) -> SDL_BlendMode; } /// \brief A collection of pixels used in software blitting. /// /// \note This structure should be treated as read-only, except for \c pixels, /// which, if not NULL, contains the raw pixel data for the surface. #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_Surface { /// < Read-only pub flags: Uint32, @@ -4702,164 +6172,239 @@ pub struct SDL_Surface { } #[test] fn bindgen_test_layout_SDL_Surface() { - assert_eq!(::std::mem::size_of::() , 96usize , concat ! ( - "Size of: " , stringify ! ( SDL_Surface ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( SDL_Surface ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . flags as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( flags ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . format as * const _ as - usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( format ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . w as * const _ as usize - } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( w ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . h as * const _ as usize - } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( h ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . pitch as * const _ as - usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( pitch ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . pixels as * const _ as - usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( pixels ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . userdata as * const _ - as usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( userdata ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . locked as * const _ as - usize } , 48usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( locked ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . lock_data as * const _ - as usize } , 56usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( lock_data ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . clip_rect as * const _ - as usize } , 64usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( clip_rect ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . map as * const _ as - usize } , 80usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( map ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Surface ) ) . refcount as * const _ - as usize } , 88usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Surface ) , "::" , - stringify ! ( refcount ) )); -} -impl Clone for SDL_Surface { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 96usize, + concat!("Size of: ", stringify!(SDL_Surface)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_Surface)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).format as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(format) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).w as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(w) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).h as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(h) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).pitch as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(pitch) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).pixels as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(pixels) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).userdata as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(userdata) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).locked as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(locked) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).lock_data as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(lock_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).clip_rect as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(clip_rect) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).map as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(map) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).refcount as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(SDL_Surface), + "::", + stringify!(refcount) + ) + ); } /// \brief The type of function used for surface blitting functions. -pub type SDL_blit = - ::std::option::Option ::std::os::raw::c_int>; +pub type SDL_blit = ::std::option::Option< + unsafe extern "C" fn( + src: *mut SDL_Surface, + srcrect: *mut SDL_Rect, + dst: *mut SDL_Surface, + dstrect: *mut SDL_Rect, + ) -> ::std::os::raw::c_int, +>; extern "C" { /// Allocate and free an RGB surface. -/// -/// If the depth is 4 or 8 bits, an empty palette is allocated for the surface. -/// If the depth is greater than 8 bits, the pixel format is set using the -/// flags '[RGB]mask'. -/// -/// If the function runs out of memory, it will return NULL. -/// -/// \param flags The \c flags are obsolete and should be set to 0. -/// \param width The width in pixels of the surface to create. -/// \param height The height in pixels of the surface to create. -/// \param depth The depth in bits of the surface to create. -/// \param Rmask The red mask of the surface to create. -/// \param Gmask The green mask of the surface to create. -/// \param Bmask The blue mask of the surface to create. -/// \param Amask The alpha mask of the surface to create. - pub fn SDL_CreateRGBSurface(flags: Uint32, width: ::std::os::raw::c_int, - height: ::std::os::raw::c_int, - depth: ::std::os::raw::c_int, Rmask: Uint32, - Gmask: Uint32, Bmask: Uint32, Amask: Uint32) - -> *mut SDL_Surface; -} -extern "C" { - pub fn SDL_CreateRGBSurfaceWithFormat(flags: Uint32, - width: ::std::os::raw::c_int, - height: ::std::os::raw::c_int, - depth: ::std::os::raw::c_int, - format: Uint32) -> *mut SDL_Surface; -} -extern "C" { - pub fn SDL_CreateRGBSurfaceFrom(pixels: *mut ::std::os::raw::c_void, - width: ::std::os::raw::c_int, - height: ::std::os::raw::c_int, - depth: ::std::os::raw::c_int, - pitch: ::std::os::raw::c_int, - Rmask: Uint32, Gmask: Uint32, - Bmask: Uint32, Amask: Uint32) - -> *mut SDL_Surface; -} -extern "C" { - pub fn SDL_CreateRGBSurfaceWithFormatFrom(pixels: - *mut ::std::os::raw::c_void, - width: ::std::os::raw::c_int, - height: ::std::os::raw::c_int, - depth: ::std::os::raw::c_int, - pitch: ::std::os::raw::c_int, - format: Uint32) - -> *mut SDL_Surface; + /// + /// If the depth is 4 or 8 bits, an empty palette is allocated for the surface. + /// If the depth is greater than 8 bits, the pixel format is set using the + /// flags '[RGB]mask'. + /// + /// If the function runs out of memory, it will return NULL. + /// + /// \param flags The \c flags are obsolete and should be set to 0. + /// \param width The width in pixels of the surface to create. + /// \param height The height in pixels of the surface to create. + /// \param depth The depth in bits of the surface to create. + /// \param Rmask The red mask of the surface to create. + /// \param Gmask The green mask of the surface to create. + /// \param Bmask The blue mask of the surface to create. + /// \param Amask The alpha mask of the surface to create. + pub fn SDL_CreateRGBSurface( + flags: Uint32, + width: ::std::os::raw::c_int, + height: ::std::os::raw::c_int, + depth: ::std::os::raw::c_int, + Rmask: Uint32, + Gmask: Uint32, + Bmask: Uint32, + Amask: Uint32, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn SDL_CreateRGBSurfaceWithFormat( + flags: Uint32, + width: ::std::os::raw::c_int, + height: ::std::os::raw::c_int, + depth: ::std::os::raw::c_int, + format: Uint32, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn SDL_CreateRGBSurfaceFrom( + pixels: *mut ::std::os::raw::c_void, + width: ::std::os::raw::c_int, + height: ::std::os::raw::c_int, + depth: ::std::os::raw::c_int, + pitch: ::std::os::raw::c_int, + Rmask: Uint32, + Gmask: Uint32, + Bmask: Uint32, + Amask: Uint32, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn SDL_CreateRGBSurfaceWithFormatFrom( + pixels: *mut ::std::os::raw::c_void, + width: ::std::os::raw::c_int, + height: ::std::os::raw::c_int, + depth: ::std::os::raw::c_int, + pitch: ::std::os::raw::c_int, + format: Uint32, + ) -> *mut SDL_Surface; } extern "C" { pub fn SDL_FreeSurface(surface: *mut SDL_Surface); } extern "C" { /// \brief Set the palette used by a surface. -/// -/// \return 0, or -1 if the surface format doesn't use a palette. -/// -/// \note A single palette can be shared with many surfaces. - pub fn SDL_SetSurfacePalette(surface: *mut SDL_Surface, - palette: *mut SDL_Palette) - -> ::std::os::raw::c_int; + /// + /// \return 0, or -1 if the surface format doesn't use a palette. + /// + /// \note A single palette can be shared with many surfaces. + pub fn SDL_SetSurfacePalette( + surface: *mut SDL_Surface, + palette: *mut SDL_Palette, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Sets up a surface for directly accessing the pixels. -/// -/// Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write -/// to and read from \c surface->pixels, using the pixel format stored in -/// \c surface->format. Once you are done accessing the surface, you should -/// use SDL_UnlockSurface() to release it. -/// -/// Not all surfaces require locking. If SDL_MUSTLOCK(surface) evaluates -/// to 0, then you can read and write to the surface at any time, and the -/// pixel format of the surface will not change. -/// -/// No operating system or library calls should be made between lock/unlock -/// pairs, as critical system locks may be held during this time. -/// -/// SDL_LockSurface() returns 0, or -1 if the surface couldn't be locked. -/// -/// \sa SDL_UnlockSurface() - pub fn SDL_LockSurface(surface: *mut SDL_Surface) - -> ::std::os::raw::c_int; + /// + /// Between calls to SDL_LockSurface() / SDL_UnlockSurface(), you can write + /// to and read from \c surface->pixels, using the pixel format stored in + /// \c surface->format. Once you are done accessing the surface, you should + /// use SDL_UnlockSurface() to release it. + /// + /// Not all surfaces require locking. If SDL_MUSTLOCK(surface) evaluates + /// to 0, then you can read and write to the surface at any time, and the + /// pixel format of the surface will not change. + /// + /// No operating system or library calls should be made between lock/unlock + /// pairs, as critical system locks may be held during this time. + /// + /// SDL_LockSurface() returns 0, or -1 if the surface couldn't be locked. + /// + /// \sa SDL_UnlockSurface() + pub fn SDL_LockSurface(surface: *mut SDL_Surface) -> ::std::os::raw::c_int; } extern "C" { /// \sa SDL_LockSurface() @@ -4867,260 +6412,296 @@ extern "C" { } extern "C" { /// Load a surface from a seekable SDL data stream (memory or file). -/// -/// If \c freesrc is non-zero, the stream will be closed after being read. -/// -/// The new surface should be freed with SDL_FreeSurface(). -/// -/// \return the new surface, or NULL if there was an error. - pub fn SDL_LoadBMP_RW(src: *mut SDL_RWops, freesrc: ::std::os::raw::c_int) - -> *mut SDL_Surface; + /// + /// If \c freesrc is non-zero, the stream will be closed after being read. + /// + /// The new surface should be freed with SDL_FreeSurface(). + /// + /// \return the new surface, or NULL if there was an error. + pub fn SDL_LoadBMP_RW(src: *mut SDL_RWops, freesrc: ::std::os::raw::c_int) -> *mut SDL_Surface; } extern "C" { /// Save a surface to a seekable SDL data stream (memory or file). -/// -/// Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the -/// BMP directly. Other RGB formats with 8-bit or higher get converted to a -/// 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit -/// surface before they are saved. YUV and paletted 1-bit and 4-bit formats are -/// not supported. -/// -/// If \c freedst is non-zero, the stream will be closed after being written. -/// -/// \return 0 if successful or -1 if there was an error. - pub fn SDL_SaveBMP_RW(surface: *mut SDL_Surface, dst: *mut SDL_RWops, - freedst: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// Surfaces with a 24-bit, 32-bit and paletted 8-bit format get saved in the + /// BMP directly. Other RGB formats with 8-bit or higher get converted to a + /// 24-bit surface or, if they have an alpha mask or a colorkey, to a 32-bit + /// surface before they are saved. YUV and paletted 1-bit and 4-bit formats are + /// not supported. + /// + /// If \c freedst is non-zero, the stream will be closed after being written. + /// + /// \return 0 if successful or -1 if there was an error. + pub fn SDL_SaveBMP_RW( + surface: *mut SDL_Surface, + dst: *mut SDL_RWops, + freedst: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Sets the RLE acceleration hint for a surface. -/// -/// \return 0 on success, or -1 if the surface is not valid -/// -/// \note If RLE is enabled, colorkey and alpha blending blits are much faster, -/// but the surface must be locked before directly accessing the pixels. - pub fn SDL_SetSurfaceRLE(surface: *mut SDL_Surface, - flag: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \return 0 on success, or -1 if the surface is not valid + /// + /// \note If RLE is enabled, colorkey and alpha blending blits are much faster, + /// but the surface must be locked before directly accessing the pixels. + pub fn SDL_SetSurfaceRLE( + surface: *mut SDL_Surface, + flag: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Sets the color key (transparent pixel) in a blittable surface. -/// -/// \param surface The surface to update -/// \param flag Non-zero to enable colorkey and 0 to disable colorkey -/// \param key The transparent pixel in the native surface format -/// -/// \return 0 on success, or -1 if the surface is not valid -/// -/// You can pass SDL_RLEACCEL to enable RLE accelerated blits. - pub fn SDL_SetColorKey(surface: *mut SDL_Surface, - flag: ::std::os::raw::c_int, key: Uint32) - -> ::std::os::raw::c_int; + /// + /// \param surface The surface to update + /// \param flag Non-zero to enable colorkey and 0 to disable colorkey + /// \param key The transparent pixel in the native surface format + /// + /// \return 0 on success, or -1 if the surface is not valid + /// + /// You can pass SDL_RLEACCEL to enable RLE accelerated blits. + pub fn SDL_SetColorKey( + surface: *mut SDL_Surface, + flag: ::std::os::raw::c_int, + key: Uint32, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Gets the color key (transparent pixel) in a blittable surface. -/// -/// \param surface The surface to update -/// \param key A pointer filled in with the transparent pixel in the native -/// surface format -/// -/// \return 0 on success, or -1 if the surface is not valid or colorkey is not -/// enabled. - pub fn SDL_GetColorKey(surface: *mut SDL_Surface, key: *mut Uint32) - -> ::std::os::raw::c_int; + /// + /// \param surface The surface to update + /// \param key A pointer filled in with the transparent pixel in the native + /// surface format + /// + /// \return 0 on success, or -1 if the surface is not valid or colorkey is not + /// enabled. + pub fn SDL_GetColorKey(surface: *mut SDL_Surface, key: *mut Uint32) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set an additional color value used in blit operations. -/// -/// \param surface The surface to update. -/// \param r The red color value multiplied into blit operations. -/// \param g The green color value multiplied into blit operations. -/// \param b The blue color value multiplied into blit operations. -/// -/// \return 0 on success, or -1 if the surface is not valid. -/// -/// \sa SDL_GetSurfaceColorMod() - pub fn SDL_SetSurfaceColorMod(surface: *mut SDL_Surface, r: Uint8, - g: Uint8, b: Uint8) - -> ::std::os::raw::c_int; + /// + /// \param surface The surface to update. + /// \param r The red color value multiplied into blit operations. + /// \param g The green color value multiplied into blit operations. + /// \param b The blue color value multiplied into blit operations. + /// + /// \return 0 on success, or -1 if the surface is not valid. + /// + /// \sa SDL_GetSurfaceColorMod() + pub fn SDL_SetSurfaceColorMod( + surface: *mut SDL_Surface, + r: Uint8, + g: Uint8, + b: Uint8, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the additional color value used in blit operations. -/// -/// \param surface The surface to query. -/// \param r A pointer filled in with the current red color value. -/// \param g A pointer filled in with the current green color value. -/// \param b A pointer filled in with the current blue color value. -/// -/// \return 0 on success, or -1 if the surface is not valid. -/// -/// \sa SDL_SetSurfaceColorMod() - pub fn SDL_GetSurfaceColorMod(surface: *mut SDL_Surface, r: *mut Uint8, - g: *mut Uint8, b: *mut Uint8) - -> ::std::os::raw::c_int; + /// + /// \param surface The surface to query. + /// \param r A pointer filled in with the current red color value. + /// \param g A pointer filled in with the current green color value. + /// \param b A pointer filled in with the current blue color value. + /// + /// \return 0 on success, or -1 if the surface is not valid. + /// + /// \sa SDL_SetSurfaceColorMod() + pub fn SDL_GetSurfaceColorMod( + surface: *mut SDL_Surface, + r: *mut Uint8, + g: *mut Uint8, + b: *mut Uint8, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set an additional alpha value used in blit operations. -/// -/// \param surface The surface to update. -/// \param alpha The alpha value multiplied into blit operations. -/// -/// \return 0 on success, or -1 if the surface is not valid. -/// -/// \sa SDL_GetSurfaceAlphaMod() + /// + /// \param surface The surface to update. + /// \param alpha The alpha value multiplied into blit operations. + /// + /// \return 0 on success, or -1 if the surface is not valid. + /// + /// \sa SDL_GetSurfaceAlphaMod() pub fn SDL_SetSurfaceAlphaMod(surface: *mut SDL_Surface, alpha: Uint8) - -> ::std::os::raw::c_int; + -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the additional alpha value used in blit operations. -/// -/// \param surface The surface to query. -/// \param alpha A pointer filled in with the current alpha value. -/// -/// \return 0 on success, or -1 if the surface is not valid. -/// -/// \sa SDL_SetSurfaceAlphaMod() - pub fn SDL_GetSurfaceAlphaMod(surface: *mut SDL_Surface, - alpha: *mut Uint8) -> ::std::os::raw::c_int; + /// + /// \param surface The surface to query. + /// \param alpha A pointer filled in with the current alpha value. + /// + /// \return 0 on success, or -1 if the surface is not valid. + /// + /// \sa SDL_SetSurfaceAlphaMod() + pub fn SDL_GetSurfaceAlphaMod( + surface: *mut SDL_Surface, + alpha: *mut Uint8, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set the blend mode used for blit operations. -/// -/// \param surface The surface to update. -/// \param blendMode ::SDL_BlendMode to use for blit blending. -/// -/// \return 0 on success, or -1 if the parameters are not valid. -/// -/// \sa SDL_GetSurfaceBlendMode() - pub fn SDL_SetSurfaceBlendMode(surface: *mut SDL_Surface, - blendMode: SDL_BlendMode) - -> ::std::os::raw::c_int; + /// + /// \param surface The surface to update. + /// \param blendMode ::SDL_BlendMode to use for blit blending. + /// + /// \return 0 on success, or -1 if the parameters are not valid. + /// + /// \sa SDL_GetSurfaceBlendMode() + pub fn SDL_SetSurfaceBlendMode( + surface: *mut SDL_Surface, + blendMode: SDL_BlendMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the blend mode used for blit operations. -/// -/// \param surface The surface to query. -/// \param blendMode A pointer filled in with the current blend mode. -/// -/// \return 0 on success, or -1 if the surface is not valid. -/// -/// \sa SDL_SetSurfaceBlendMode() - pub fn SDL_GetSurfaceBlendMode(surface: *mut SDL_Surface, - blendMode: *mut SDL_BlendMode) - -> ::std::os::raw::c_int; + /// + /// \param surface The surface to query. + /// \param blendMode A pointer filled in with the current blend mode. + /// + /// \return 0 on success, or -1 if the surface is not valid. + /// + /// \sa SDL_SetSurfaceBlendMode() + pub fn SDL_GetSurfaceBlendMode( + surface: *mut SDL_Surface, + blendMode: *mut SDL_BlendMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// Sets the clipping rectangle for the destination surface in a blit. -/// -/// If the clip rectangle is NULL, clipping will be disabled. -/// -/// If the clip rectangle doesn't intersect the surface, the function will -/// return SDL_FALSE and blits will be completely clipped. Otherwise the -/// function returns SDL_TRUE and blits to the surface will be clipped to -/// the intersection of the surface area and the clipping rectangle. -/// -/// Note that blits are automatically clipped to the edges of the source -/// and destination surfaces. - pub fn SDL_SetClipRect(surface: *mut SDL_Surface, rect: *const SDL_Rect) - -> SDL_bool; + /// + /// If the clip rectangle is NULL, clipping will be disabled. + /// + /// If the clip rectangle doesn't intersect the surface, the function will + /// return SDL_FALSE and blits will be completely clipped. Otherwise the + /// function returns SDL_TRUE and blits to the surface will be clipped to + /// the intersection of the surface area and the clipping rectangle. + /// + /// Note that blits are automatically clipped to the edges of the source + /// and destination surfaces. + pub fn SDL_SetClipRect(surface: *mut SDL_Surface, rect: *const SDL_Rect) -> SDL_bool; } extern "C" { /// Gets the clipping rectangle for the destination surface in a blit. -/// -/// \c rect must be a pointer to a valid rectangle which will be filled -/// with the correct values. + /// + /// \c rect must be a pointer to a valid rectangle which will be filled + /// with the correct values. pub fn SDL_GetClipRect(surface: *mut SDL_Surface, rect: *mut SDL_Rect); } extern "C" { - pub fn SDL_DuplicateSurface(surface: *mut SDL_Surface) - -> *mut SDL_Surface; + pub fn SDL_DuplicateSurface(surface: *mut SDL_Surface) -> *mut SDL_Surface; } extern "C" { /// Creates a new surface of the specified format, and then copies and maps -/// the given surface to it so the blit of the converted surface will be as -/// fast as possible. If this function fails, it returns NULL. -/// -/// The \c flags parameter is passed to SDL_CreateRGBSurface() and has those -/// semantics. You can also pass ::SDL_RLEACCEL in the flags parameter and -/// SDL will try to RLE accelerate colorkey and alpha blits in the resulting -/// surface. - pub fn SDL_ConvertSurface(src: *mut SDL_Surface, - fmt: *const SDL_PixelFormat, flags: Uint32) - -> *mut SDL_Surface; + /// the given surface to it so the blit of the converted surface will be as + /// fast as possible. If this function fails, it returns NULL. + /// + /// The \c flags parameter is passed to SDL_CreateRGBSurface() and has those + /// semantics. You can also pass ::SDL_RLEACCEL in the flags parameter and + /// SDL will try to RLE accelerate colorkey and alpha blits in the resulting + /// surface. + pub fn SDL_ConvertSurface( + src: *mut SDL_Surface, + fmt: *const SDL_PixelFormat, + flags: Uint32, + ) -> *mut SDL_Surface; } extern "C" { - pub fn SDL_ConvertSurfaceFormat(src: *mut SDL_Surface, - pixel_format: Uint32, flags: Uint32) - -> *mut SDL_Surface; + pub fn SDL_ConvertSurfaceFormat( + src: *mut SDL_Surface, + pixel_format: Uint32, + flags: Uint32, + ) -> *mut SDL_Surface; } extern "C" { /// \brief Copy a block of pixels of one format to another format -/// -/// \return 0 on success, or -1 if there was an error - pub fn SDL_ConvertPixels(width: ::std::os::raw::c_int, - height: ::std::os::raw::c_int, - src_format: Uint32, - src: *const ::std::os::raw::c_void, - src_pitch: ::std::os::raw::c_int, - dst_format: Uint32, - dst: *mut ::std::os::raw::c_void, - dst_pitch: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \return 0 on success, or -1 if there was an error + pub fn SDL_ConvertPixels( + width: ::std::os::raw::c_int, + height: ::std::os::raw::c_int, + src_format: Uint32, + src: *const ::std::os::raw::c_void, + src_pitch: ::std::os::raw::c_int, + dst_format: Uint32, + dst: *mut ::std::os::raw::c_void, + dst_pitch: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// Performs a fast fill of the given rectangle with \c color. -/// -/// If \c rect is NULL, the whole surface will be filled with \c color. -/// -/// The color should be a pixel of the format used by the surface, and -/// can be generated by the SDL_MapRGB() function. -/// -/// \return 0 on success, or -1 on error. - pub fn SDL_FillRect(dst: *mut SDL_Surface, rect: *const SDL_Rect, - color: Uint32) -> ::std::os::raw::c_int; + /// + /// If \c rect is NULL, the whole surface will be filled with \c color. + /// + /// The color should be a pixel of the format used by the surface, and + /// can be generated by the SDL_MapRGB() function. + /// + /// \return 0 on success, or -1 on error. + pub fn SDL_FillRect( + dst: *mut SDL_Surface, + rect: *const SDL_Rect, + color: Uint32, + ) -> ::std::os::raw::c_int; } extern "C" { - pub fn SDL_FillRects(dst: *mut SDL_Surface, rects: *const SDL_Rect, - count: ::std::os::raw::c_int, color: Uint32) - -> ::std::os::raw::c_int; + pub fn SDL_FillRects( + dst: *mut SDL_Surface, + rects: *const SDL_Rect, + count: ::std::os::raw::c_int, + color: Uint32, + ) -> ::std::os::raw::c_int; } extern "C" { /// This is the public blit function, SDL_BlitSurface(), and it performs -/// rectangle validation and clipping before passing it to SDL_LowerBlit() - pub fn SDL_UpperBlit(src: *mut SDL_Surface, srcrect: *const SDL_Rect, - dst: *mut SDL_Surface, dstrect: *mut SDL_Rect) - -> ::std::os::raw::c_int; + /// rectangle validation and clipping before passing it to SDL_LowerBlit() + pub fn SDL_UpperBlit( + src: *mut SDL_Surface, + srcrect: *const SDL_Rect, + dst: *mut SDL_Surface, + dstrect: *mut SDL_Rect, + ) -> ::std::os::raw::c_int; } extern "C" { /// This is a semi-private blit function and it performs low-level surface -/// blitting only. - pub fn SDL_LowerBlit(src: *mut SDL_Surface, srcrect: *mut SDL_Rect, - dst: *mut SDL_Surface, dstrect: *mut SDL_Rect) - -> ::std::os::raw::c_int; + /// blitting only. + pub fn SDL_LowerBlit( + src: *mut SDL_Surface, + srcrect: *mut SDL_Rect, + dst: *mut SDL_Surface, + dstrect: *mut SDL_Rect, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Perform a fast, low quality, stretch blit between two surfaces of the -/// same pixel format. -/// -/// \note This function uses a static buffer, and is not thread-safe. - pub fn SDL_SoftStretch(src: *mut SDL_Surface, srcrect: *const SDL_Rect, - dst: *mut SDL_Surface, dstrect: *const SDL_Rect) - -> ::std::os::raw::c_int; + /// same pixel format. + /// + /// \note This function uses a static buffer, and is not thread-safe. + pub fn SDL_SoftStretch( + src: *mut SDL_Surface, + srcrect: *const SDL_Rect, + dst: *mut SDL_Surface, + dstrect: *const SDL_Rect, + ) -> ::std::os::raw::c_int; } extern "C" { /// This is the public scaled blit function, SDL_BlitScaled(), and it performs -/// rectangle validation and clipping before passing it to SDL_LowerBlitScaled() - pub fn SDL_UpperBlitScaled(src: *mut SDL_Surface, - srcrect: *const SDL_Rect, - dst: *mut SDL_Surface, dstrect: *mut SDL_Rect) - -> ::std::os::raw::c_int; + /// rectangle validation and clipping before passing it to SDL_LowerBlitScaled() + pub fn SDL_UpperBlitScaled( + src: *mut SDL_Surface, + srcrect: *const SDL_Rect, + dst: *mut SDL_Surface, + dstrect: *mut SDL_Rect, + ) -> ::std::os::raw::c_int; } extern "C" { /// This is a semi-private blit function and it performs low-level surface -/// scaled blitting only. - pub fn SDL_LowerBlitScaled(src: *mut SDL_Surface, srcrect: *mut SDL_Rect, - dst: *mut SDL_Surface, dstrect: *mut SDL_Rect) - -> ::std::os::raw::c_int; + /// scaled blitting only. + pub fn SDL_LowerBlitScaled( + src: *mut SDL_Surface, + srcrect: *mut SDL_Rect, + dst: *mut SDL_Surface, + dstrect: *mut SDL_Rect, + ) -> ::std::os::raw::c_int; } /// \brief The structure that defines a display mode /// @@ -5132,7 +6713,7 @@ extern "C" { /// \sa SDL_SetWindowDisplayMode() /// \sa SDL_GetWindowDisplayMode() #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_DisplayMode { /// < pixel format pub format: Uint32, @@ -5147,38 +6728,66 @@ pub struct SDL_DisplayMode { } #[test] fn bindgen_test_layout_SDL_DisplayMode() { - assert_eq!(::std::mem::size_of::() , 24usize , concat ! ( - "Size of: " , stringify ! ( SDL_DisplayMode ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! - ( "Alignment of " , stringify ! ( SDL_DisplayMode ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DisplayMode ) ) . format as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DisplayMode ) , - "::" , stringify ! ( format ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DisplayMode ) ) . w as * const _ as - usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DisplayMode ) , - "::" , stringify ! ( w ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DisplayMode ) ) . h as * const _ as - usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DisplayMode ) , - "::" , stringify ! ( h ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DisplayMode ) ) . refresh_rate as * - const _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DisplayMode ) , - "::" , stringify ! ( refresh_rate ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DisplayMode ) ) . driverdata as * - const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DisplayMode ) , - "::" , stringify ! ( driverdata ) )); -} -impl Clone for SDL_DisplayMode { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(SDL_DisplayMode)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_DisplayMode)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).format as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_DisplayMode), + "::", + stringify!(format) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).w as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_DisplayMode), + "::", + stringify!(w) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).h as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_DisplayMode), + "::", + stringify!(h) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).refresh_rate as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_DisplayMode), + "::", + stringify!(refresh_rate) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).driverdata as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_DisplayMode), + "::", + stringify!(driverdata) + ) + ); } #[repr(C)] #[derive(Debug, Copy, Clone)] @@ -5191,48 +6800,89 @@ pub struct SDL_Window { /// \sa SDL_GetWindowFlags() #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_WindowFlags { + /// < fullscreen window SDL_WINDOW_FULLSCREEN = 1, + /// < window usable with OpenGL context SDL_WINDOW_OPENGL = 2, + /// < window is visible SDL_WINDOW_SHOWN = 4, + /// < window is not visible SDL_WINDOW_HIDDEN = 8, + /// < no window decoration SDL_WINDOW_BORDERLESS = 16, + /// < window can be resized SDL_WINDOW_RESIZABLE = 32, + /// < window is minimized SDL_WINDOW_MINIMIZED = 64, + /// < window is maximized SDL_WINDOW_MAXIMIZED = 128, + /// < window has grabbed input focus SDL_WINDOW_INPUT_GRABBED = 256, + /// < window has input focus SDL_WINDOW_INPUT_FOCUS = 512, + /// < window has mouse focus SDL_WINDOW_MOUSE_FOCUS = 1024, SDL_WINDOW_FULLSCREEN_DESKTOP = 4097, + /// < window not created by SDL SDL_WINDOW_FOREIGN = 2048, + /// < window should be created in high-DPI mode if supported SDL_WINDOW_ALLOW_HIGHDPI = 8192, + /// < window has mouse captured (unrelated to INPUT_GRABBED) SDL_WINDOW_MOUSE_CAPTURE = 16384, + /// < window should always be above others SDL_WINDOW_ALWAYS_ON_TOP = 32768, + /// < window should not be added to the taskbar SDL_WINDOW_SKIP_TASKBAR = 65536, + /// < window should be treated as a utility window SDL_WINDOW_UTILITY = 131072, + /// < window should be treated as a tooltip SDL_WINDOW_TOOLTIP = 262144, + /// < window should be treated as a popup menu SDL_WINDOW_POPUP_MENU = 524288, + /// < window usable for Vulkan surface SDL_WINDOW_VULKAN = 268435456, } #[repr(u32)] /// \brief Event subtype for window events #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_WindowEventID { + /// < Never used SDL_WINDOWEVENT_NONE = 0, + /// < Window has been shown SDL_WINDOWEVENT_SHOWN = 1, + /// < Window has been hidden SDL_WINDOWEVENT_HIDDEN = 2, + /// < Window has been exposed and should be + /// redrawn SDL_WINDOWEVENT_EXPOSED = 3, + /// < Window has been moved to data1, data2 SDL_WINDOWEVENT_MOVED = 4, + /// < Window has been resized to data1xdata2 SDL_WINDOWEVENT_RESIZED = 5, + /// < The window size has changed, either as + /// a result of an API call or through the + /// system or user changing the window size. SDL_WINDOWEVENT_SIZE_CHANGED = 6, + /// < Window has been minimized SDL_WINDOWEVENT_MINIMIZED = 7, + /// < Window has been maximized SDL_WINDOWEVENT_MAXIMIZED = 8, + /// < Window has been restored to normal size + /// and position SDL_WINDOWEVENT_RESTORED = 9, + /// < Window has gained mouse focus SDL_WINDOWEVENT_ENTER = 10, + /// < Window has lost mouse focus SDL_WINDOWEVENT_LEAVE = 11, + /// < Window has gained keyboard focus SDL_WINDOWEVENT_FOCUS_GAINED = 12, + /// < Window has lost keyboard focus SDL_WINDOWEVENT_FOCUS_LOST = 13, + /// < The window manager requests that the window be closed SDL_WINDOWEVENT_CLOSE = 14, + /// < Window is being offered a focus (should SetWindowInputFocus() on itself or a subwindow, or ignore) SDL_WINDOWEVENT_TAKE_FOCUS = 15, + /// < Window had a hit test that wasn't SDL_HITTEST_NORMAL. SDL_WINDOWEVENT_HIT_TEST = 16, } /// \brief An opaque handle to an OpenGL context. @@ -5274,6 +6924,7 @@ pub enum SDL_GLattr { pub enum SDL_GLprofile { SDL_GL_CONTEXT_PROFILE_CORE = 1, SDL_GL_CONTEXT_PROFILE_COMPATIBILITY = 2, + /// < GLX_CONTEXT_ES2_PROFILE_BIT_EXT SDL_GL_CONTEXT_PROFILE_ES = 4, } #[repr(u32)] @@ -5298,205 +6949,213 @@ pub enum SDL_GLContextResetNotification { } extern "C" { /// \brief Get the number of video drivers compiled into SDL -/// -/// \sa SDL_GetVideoDriver() + /// + /// \sa SDL_GetVideoDriver() pub fn SDL_GetNumVideoDrivers() -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the name of a built in video driver. -/// -/// \note The video drivers are presented in the order in which they are -/// normally checked during initialization. -/// -/// \sa SDL_GetNumVideoDrivers() - pub fn SDL_GetVideoDriver(index: ::std::os::raw::c_int) - -> *const ::std::os::raw::c_char; + /// + /// \note The video drivers are presented in the order in which they are + /// normally checked during initialization. + /// + /// \sa SDL_GetNumVideoDrivers() + pub fn SDL_GetVideoDriver(index: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char; } extern "C" { /// \brief Initialize the video subsystem, optionally specifying a video driver. -/// -/// \param driver_name Initialize a specific driver by name, or NULL for the -/// default video driver. -/// -/// \return 0 on success, -1 on error -/// -/// This function initializes the video subsystem; setting up a connection -/// to the window manager, etc, and determines the available display modes -/// and pixel formats, but does not initialize a window or graphics mode. -/// -/// \sa SDL_VideoQuit() - pub fn SDL_VideoInit(driver_name: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + /// + /// \param driver_name Initialize a specific driver by name, or NULL for the + /// default video driver. + /// + /// \return 0 on success, -1 on error + /// + /// This function initializes the video subsystem; setting up a connection + /// to the window manager, etc, and determines the available display modes + /// and pixel formats, but does not initialize a window or graphics mode. + /// + /// \sa SDL_VideoQuit() + pub fn SDL_VideoInit(driver_name: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; } extern "C" { /// \brief Shuts down the video subsystem. -/// -/// This function closes all windows, and restores the original video mode. -/// -/// \sa SDL_VideoInit() + /// + /// This function closes all windows, and restores the original video mode. + /// + /// \sa SDL_VideoInit() pub fn SDL_VideoQuit(); } extern "C" { /// \brief Returns the name of the currently initialized video driver. -/// -/// \return The name of the current video driver or NULL if no driver -/// has been initialized -/// -/// \sa SDL_GetNumVideoDrivers() -/// \sa SDL_GetVideoDriver() + /// + /// \return The name of the current video driver or NULL if no driver + /// has been initialized + /// + /// \sa SDL_GetNumVideoDrivers() + /// \sa SDL_GetVideoDriver() pub fn SDL_GetCurrentVideoDriver() -> *const ::std::os::raw::c_char; } extern "C" { /// \brief Returns the number of available video displays. -/// -/// \sa SDL_GetDisplayBounds() + /// + /// \sa SDL_GetDisplayBounds() pub fn SDL_GetNumVideoDisplays() -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the name of a display in UTF-8 encoding -/// -/// \return The name of a display, or NULL for an invalid display index. -/// -/// \sa SDL_GetNumVideoDisplays() + /// + /// \return The name of a display, or NULL for an invalid display index. + /// + /// \sa SDL_GetNumVideoDisplays() pub fn SDL_GetDisplayName(displayIndex: ::std::os::raw::c_int) - -> *const ::std::os::raw::c_char; + -> *const ::std::os::raw::c_char; } extern "C" { /// \brief Get the desktop area represented by a display, with the primary -/// display located at 0,0 -/// -/// \return 0 on success, or -1 if the index is out of range. -/// -/// \sa SDL_GetNumVideoDisplays() - pub fn SDL_GetDisplayBounds(displayIndex: ::std::os::raw::c_int, - rect: *mut SDL_Rect) -> ::std::os::raw::c_int; + /// display located at 0,0 + /// + /// \return 0 on success, or -1 if the index is out of range. + /// + /// \sa SDL_GetNumVideoDisplays() + pub fn SDL_GetDisplayBounds( + displayIndex: ::std::os::raw::c_int, + rect: *mut SDL_Rect, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the dots/pixels-per-inch for a display -/// -/// \note Diagonal, horizontal and vertical DPI can all be optionally -/// returned if the parameter is non-NULL. -/// -/// \return 0 on success, or -1 if no DPI information is available or the index is out of range. -/// -/// \sa SDL_GetNumVideoDisplays() - pub fn SDL_GetDisplayDPI(displayIndex: ::std::os::raw::c_int, - ddpi: *mut f32, hdpi: *mut f32, vdpi: *mut f32) - -> ::std::os::raw::c_int; + /// + /// \note Diagonal, horizontal and vertical DPI can all be optionally + /// returned if the parameter is non-NULL. + /// + /// \return 0 on success, or -1 if no DPI information is available or the index is out of range. + /// + /// \sa SDL_GetNumVideoDisplays() + pub fn SDL_GetDisplayDPI( + displayIndex: ::std::os::raw::c_int, + ddpi: *mut f32, + hdpi: *mut f32, + vdpi: *mut f32, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the usable desktop area represented by a display, with the -/// primary display located at 0,0 -/// -/// This is the same area as SDL_GetDisplayBounds() reports, but with portions -/// reserved by the system removed. For example, on Mac OS X, this subtracts -/// the area occupied by the menu bar and dock. -/// -/// Setting a window to be fullscreen generally bypasses these unusable areas, -/// so these are good guidelines for the maximum space available to a -/// non-fullscreen window. -/// -/// \return 0 on success, or -1 if the index is out of range. -/// -/// \sa SDL_GetDisplayBounds() -/// \sa SDL_GetNumVideoDisplays() - pub fn SDL_GetDisplayUsableBounds(displayIndex: ::std::os::raw::c_int, - rect: *mut SDL_Rect) - -> ::std::os::raw::c_int; + /// primary display located at 0,0 + /// + /// This is the same area as SDL_GetDisplayBounds() reports, but with portions + /// reserved by the system removed. For example, on Mac OS X, this subtracts + /// the area occupied by the menu bar and dock. + /// + /// Setting a window to be fullscreen generally bypasses these unusable areas, + /// so these are good guidelines for the maximum space available to a + /// non-fullscreen window. + /// + /// \return 0 on success, or -1 if the index is out of range. + /// + /// \sa SDL_GetDisplayBounds() + /// \sa SDL_GetNumVideoDisplays() + pub fn SDL_GetDisplayUsableBounds( + displayIndex: ::std::os::raw::c_int, + rect: *mut SDL_Rect, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Returns the number of available display modes. -/// -/// \sa SDL_GetDisplayMode() - pub fn SDL_GetNumDisplayModes(displayIndex: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \sa SDL_GetDisplayMode() + pub fn SDL_GetNumDisplayModes(displayIndex: ::std::os::raw::c_int) -> ::std::os::raw::c_int; } extern "C" { /// \brief Fill in information about a specific display mode. -/// -/// \note The display modes are sorted in this priority: -/// \li bits per pixel -> more colors to fewer colors -/// \li width -> largest to smallest -/// \li height -> largest to smallest -/// \li refresh rate -> highest to lowest -/// -/// \sa SDL_GetNumDisplayModes() - pub fn SDL_GetDisplayMode(displayIndex: ::std::os::raw::c_int, - modeIndex: ::std::os::raw::c_int, - mode: *mut SDL_DisplayMode) - -> ::std::os::raw::c_int; + /// + /// \note The display modes are sorted in this priority: + /// \li bits per pixel -> more colors to fewer colors + /// \li width -> largest to smallest + /// \li height -> largest to smallest + /// \li refresh rate -> highest to lowest + /// + /// \sa SDL_GetNumDisplayModes() + pub fn SDL_GetDisplayMode( + displayIndex: ::std::os::raw::c_int, + modeIndex: ::std::os::raw::c_int, + mode: *mut SDL_DisplayMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Fill in information about the desktop display mode. - pub fn SDL_GetDesktopDisplayMode(displayIndex: ::std::os::raw::c_int, - mode: *mut SDL_DisplayMode) - -> ::std::os::raw::c_int; + pub fn SDL_GetDesktopDisplayMode( + displayIndex: ::std::os::raw::c_int, + mode: *mut SDL_DisplayMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Fill in information about the current display mode. - pub fn SDL_GetCurrentDisplayMode(displayIndex: ::std::os::raw::c_int, - mode: *mut SDL_DisplayMode) - -> ::std::os::raw::c_int; + pub fn SDL_GetCurrentDisplayMode( + displayIndex: ::std::os::raw::c_int, + mode: *mut SDL_DisplayMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the closest match to the requested display mode. -/// -/// \param displayIndex The index of display from which mode should be queried. -/// \param mode The desired display mode -/// \param closest A pointer to a display mode to be filled in with the closest -/// match of the available display modes. -/// -/// \return The passed in value \c closest, or NULL if no matching video mode -/// was available. -/// -/// The available display modes are scanned, and \c closest is filled in with the -/// closest mode matching the requested mode and returned. The mode format and -/// refresh_rate default to the desktop mode if they are 0. The modes are -/// scanned with size being first priority, format being second priority, and -/// finally checking the refresh_rate. If all the available modes are too -/// small, then NULL is returned. -/// -/// \sa SDL_GetNumDisplayModes() -/// \sa SDL_GetDisplayMode() - pub fn SDL_GetClosestDisplayMode(displayIndex: ::std::os::raw::c_int, - mode: *const SDL_DisplayMode, - closest: *mut SDL_DisplayMode) - -> *mut SDL_DisplayMode; + /// + /// \param displayIndex The index of display from which mode should be queried. + /// \param mode The desired display mode + /// \param closest A pointer to a display mode to be filled in with the closest + /// match of the available display modes. + /// + /// \return The passed in value \c closest, or NULL if no matching video mode + /// was available. + /// + /// The available display modes are scanned, and \c closest is filled in with the + /// closest mode matching the requested mode and returned. The mode format and + /// refresh_rate default to the desktop mode if they are 0. The modes are + /// scanned with size being first priority, format being second priority, and + /// finally checking the refresh_rate. If all the available modes are too + /// small, then NULL is returned. + /// + /// \sa SDL_GetNumDisplayModes() + /// \sa SDL_GetDisplayMode() + pub fn SDL_GetClosestDisplayMode( + displayIndex: ::std::os::raw::c_int, + mode: *const SDL_DisplayMode, + closest: *mut SDL_DisplayMode, + ) -> *mut SDL_DisplayMode; } extern "C" { /// \brief Get the display index associated with a window. -/// -/// \return the display index of the display containing the center of the -/// window, or -1 on error. - pub fn SDL_GetWindowDisplayIndex(window: *mut SDL_Window) - -> ::std::os::raw::c_int; + /// + /// \return the display index of the display containing the center of the + /// window, or -1 on error. + pub fn SDL_GetWindowDisplayIndex(window: *mut SDL_Window) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set the display mode used when a fullscreen window is visible. -/// -/// By default the window's dimensions and the desktop format and refresh rate -/// are used. -/// -/// \param window The window for which the display mode should be set. -/// \param mode The mode to use, or NULL for the default mode. -/// -/// \return 0 on success, or -1 if setting the display mode failed. -/// -/// \sa SDL_GetWindowDisplayMode() -/// \sa SDL_SetWindowFullscreen() - pub fn SDL_SetWindowDisplayMode(window: *mut SDL_Window, - mode: *const SDL_DisplayMode) - -> ::std::os::raw::c_int; + /// + /// By default the window's dimensions and the desktop format and refresh rate + /// are used. + /// + /// \param window The window for which the display mode should be set. + /// \param mode The mode to use, or NULL for the default mode. + /// + /// \return 0 on success, or -1 if setting the display mode failed. + /// + /// \sa SDL_GetWindowDisplayMode() + /// \sa SDL_SetWindowFullscreen() + pub fn SDL_SetWindowDisplayMode( + window: *mut SDL_Window, + mode: *const SDL_DisplayMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Fill in information about the display mode used when a fullscreen -/// window is visible. -/// -/// \sa SDL_SetWindowDisplayMode() -/// \sa SDL_SetWindowFullscreen() - pub fn SDL_GetWindowDisplayMode(window: *mut SDL_Window, - mode: *mut SDL_DisplayMode) - -> ::std::os::raw::c_int; + /// window is visible. + /// + /// \sa SDL_SetWindowDisplayMode() + /// \sa SDL_SetWindowFullscreen() + pub fn SDL_GetWindowDisplayMode( + window: *mut SDL_Window, + mode: *mut SDL_DisplayMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the pixel format associated with the window. @@ -5504,62 +7163,63 @@ extern "C" { } extern "C" { /// \brief Create a window with the specified position, dimensions, and flags. -/// -/// \param title The title of the window, in UTF-8 encoding. -/// \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or -/// ::SDL_WINDOWPOS_UNDEFINED. -/// \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or -/// ::SDL_WINDOWPOS_UNDEFINED. -/// \param w The width of the window, in screen coordinates. -/// \param h The height of the window, in screen coordinates. -/// \param flags The flags for the window, a mask of any of the following: -/// ::SDL_WINDOW_FULLSCREEN, ::SDL_WINDOW_OPENGL, -/// ::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_BORDERLESS, -/// ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, -/// ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_INPUT_GRABBED, -/// ::SDL_WINDOW_ALLOW_HIGHDPI, ::SDL_WINDOW_VULKAN. -/// -/// \return The created window, or NULL if window creation failed. -/// -/// If the window is created with the SDL_WINDOW_ALLOW_HIGHDPI flag, its size -/// in pixels may differ from its size in screen coordinates on platforms with -/// high-DPI support (e.g. iOS and Mac OS X). Use SDL_GetWindowSize() to query -/// the client area's size in screen coordinates, and SDL_GL_GetDrawableSize(), -/// SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to query the -/// drawable size in pixels. -/// -/// If the window is created with any of the SDL_WINDOW_OPENGL or -/// SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function -/// (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the -/// corrensponding UnloadLibrary function is called by SDL_DestroyWindow(). -/// -/// If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, -/// SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. -/// -/// \note On non-Apple devices, SDL requires you to either not link to the -/// Vulkan loader or link to a dynamic library version. This limitation -/// may be removed in a future version of SDL. -/// -/// \sa SDL_DestroyWindow() -/// \sa SDL_GL_LoadLibrary() -/// \sa SDL_Vulkan_LoadLibrary() - pub fn SDL_CreateWindow(title: *const ::std::os::raw::c_char, - x: ::std::os::raw::c_int, - y: ::std::os::raw::c_int, - w: ::std::os::raw::c_int, - h: ::std::os::raw::c_int, flags: Uint32) - -> *mut SDL_Window; + /// + /// \param title The title of the window, in UTF-8 encoding. + /// \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or + /// ::SDL_WINDOWPOS_UNDEFINED. + /// \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or + /// ::SDL_WINDOWPOS_UNDEFINED. + /// \param w The width of the window, in screen coordinates. + /// \param h The height of the window, in screen coordinates. + /// \param flags The flags for the window, a mask of any of the following: + /// ::SDL_WINDOW_FULLSCREEN, ::SDL_WINDOW_OPENGL, + /// ::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_BORDERLESS, + /// ::SDL_WINDOW_RESIZABLE, ::SDL_WINDOW_MAXIMIZED, + /// ::SDL_WINDOW_MINIMIZED, ::SDL_WINDOW_INPUT_GRABBED, + /// ::SDL_WINDOW_ALLOW_HIGHDPI, ::SDL_WINDOW_VULKAN. + /// + /// \return The created window, or NULL if window creation failed. + /// + /// If the window is created with the SDL_WINDOW_ALLOW_HIGHDPI flag, its size + /// in pixels may differ from its size in screen coordinates on platforms with + /// high-DPI support (e.g. iOS and Mac OS X). Use SDL_GetWindowSize() to query + /// the client area's size in screen coordinates, and SDL_GL_GetDrawableSize(), + /// SDL_Vulkan_GetDrawableSize(), or SDL_GetRendererOutputSize() to query the + /// drawable size in pixels. + /// + /// If the window is created with any of the SDL_WINDOW_OPENGL or + /// SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function + /// (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the + /// corrensponding UnloadLibrary function is called by SDL_DestroyWindow(). + /// + /// If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, + /// SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. + /// + /// \note On non-Apple devices, SDL requires you to either not link to the + /// Vulkan loader or link to a dynamic library version. This limitation + /// may be removed in a future version of SDL. + /// + /// \sa SDL_DestroyWindow() + /// \sa SDL_GL_LoadLibrary() + /// \sa SDL_Vulkan_LoadLibrary() + pub fn SDL_CreateWindow( + title: *const ::std::os::raw::c_char, + x: ::std::os::raw::c_int, + y: ::std::os::raw::c_int, + w: ::std::os::raw::c_int, + h: ::std::os::raw::c_int, + flags: Uint32, + ) -> *mut SDL_Window; } extern "C" { /// \brief Create an SDL window from an existing native window. -/// -/// \param data A pointer to driver-dependent window creation data -/// -/// \return The created window, or NULL if window creation failed. -/// -/// \sa SDL_DestroyWindow() - pub fn SDL_CreateWindowFrom(data: *const ::std::os::raw::c_void) - -> *mut SDL_Window; + /// + /// \param data A pointer to driver-dependent window creation data + /// + /// \return The created window, or NULL if window creation failed. + /// + /// \sa SDL_DestroyWindow() + pub fn SDL_CreateWindowFrom(data: *const ::std::os::raw::c_void) -> *mut SDL_Window; } extern "C" { /// \brief Get the numeric ID of a window, for logging purposes. @@ -5575,245 +7235,261 @@ extern "C" { } extern "C" { /// \brief Set the title of a window, in UTF-8 format. -/// -/// \sa SDL_GetWindowTitle() - pub fn SDL_SetWindowTitle(window: *mut SDL_Window, - title: *const ::std::os::raw::c_char); + /// + /// \sa SDL_GetWindowTitle() + pub fn SDL_SetWindowTitle(window: *mut SDL_Window, title: *const ::std::os::raw::c_char); } extern "C" { /// \brief Get the title of a window, in UTF-8 format. -/// -/// \sa SDL_SetWindowTitle() - pub fn SDL_GetWindowTitle(window: *mut SDL_Window) - -> *const ::std::os::raw::c_char; + /// + /// \sa SDL_SetWindowTitle() + pub fn SDL_GetWindowTitle(window: *mut SDL_Window) -> *const ::std::os::raw::c_char; } extern "C" { /// \brief Set the icon for a window. -/// -/// \param window The window for which the icon should be set. -/// \param icon The icon for the window. + /// + /// \param window The window for which the icon should be set. + /// \param icon The icon for the window. pub fn SDL_SetWindowIcon(window: *mut SDL_Window, icon: *mut SDL_Surface); } extern "C" { /// \brief Associate an arbitrary named pointer with a window. -/// -/// \param window The window to associate with the pointer. -/// \param name The name of the pointer. -/// \param userdata The associated pointer. -/// -/// \return The previous value associated with 'name' -/// -/// \note The name is case-sensitive. -/// -/// \sa SDL_GetWindowData() - pub fn SDL_SetWindowData(window: *mut SDL_Window, - name: *const ::std::os::raw::c_char, - userdata: *mut ::std::os::raw::c_void) - -> *mut ::std::os::raw::c_void; + /// + /// \param window The window to associate with the pointer. + /// \param name The name of the pointer. + /// \param userdata The associated pointer. + /// + /// \return The previous value associated with 'name' + /// + /// \note The name is case-sensitive. + /// + /// \sa SDL_GetWindowData() + pub fn SDL_SetWindowData( + window: *mut SDL_Window, + name: *const ::std::os::raw::c_char, + userdata: *mut ::std::os::raw::c_void, + ) -> *mut ::std::os::raw::c_void; } extern "C" { /// \brief Retrieve the data pointer associated with a window. -/// -/// \param window The window to query. -/// \param name The name of the pointer. -/// -/// \return The value associated with 'name' -/// -/// \sa SDL_SetWindowData() - pub fn SDL_GetWindowData(window: *mut SDL_Window, - name: *const ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_void; + /// + /// \param window The window to query. + /// \param name The name of the pointer. + /// + /// \return The value associated with 'name' + /// + /// \sa SDL_SetWindowData() + pub fn SDL_GetWindowData( + window: *mut SDL_Window, + name: *const ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_void; } extern "C" { /// \brief Set the position of a window. -/// -/// \param window The window to reposition. -/// \param x The x coordinate of the window in screen coordinates, or -/// ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED. -/// \param y The y coordinate of the window in screen coordinates, or -/// ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED. -/// -/// \note The window coordinate origin is the upper left of the display. -/// -/// \sa SDL_GetWindowPosition() - pub fn SDL_SetWindowPosition(window: *mut SDL_Window, - x: ::std::os::raw::c_int, - y: ::std::os::raw::c_int); + /// + /// \param window The window to reposition. + /// \param x The x coordinate of the window in screen coordinates, or + /// ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED. + /// \param y The y coordinate of the window in screen coordinates, or + /// ::SDL_WINDOWPOS_CENTERED or ::SDL_WINDOWPOS_UNDEFINED. + /// + /// \note The window coordinate origin is the upper left of the display. + /// + /// \sa SDL_GetWindowPosition() + pub fn SDL_SetWindowPosition( + window: *mut SDL_Window, + x: ::std::os::raw::c_int, + y: ::std::os::raw::c_int, + ); } extern "C" { /// \brief Get the position of a window. -/// -/// \param window The window to query. -/// \param x Pointer to variable for storing the x position, in screen -/// coordinates. May be NULL. -/// \param y Pointer to variable for storing the y position, in screen -/// coordinates. May be NULL. -/// -/// \sa SDL_SetWindowPosition() - pub fn SDL_GetWindowPosition(window: *mut SDL_Window, - x: *mut ::std::os::raw::c_int, - y: *mut ::std::os::raw::c_int); + /// + /// \param window The window to query. + /// \param x Pointer to variable for storing the x position, in screen + /// coordinates. May be NULL. + /// \param y Pointer to variable for storing the y position, in screen + /// coordinates. May be NULL. + /// + /// \sa SDL_SetWindowPosition() + pub fn SDL_GetWindowPosition( + window: *mut SDL_Window, + x: *mut ::std::os::raw::c_int, + y: *mut ::std::os::raw::c_int, + ); } extern "C" { /// \brief Set the size of a window's client area. -/// -/// \param window The window to resize. -/// \param w The width of the window, in screen coordinates. Must be >0. -/// \param h The height of the window, in screen coordinates. Must be >0. -/// -/// \note Fullscreen windows automatically match the size of the display mode, -/// and you should use SDL_SetWindowDisplayMode() to change their size. -/// -/// The window size in screen coordinates may differ from the size in pixels, if -/// the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with -/// high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or -/// SDL_GetRendererOutputSize() to get the real client area size in pixels. -/// -/// \sa SDL_GetWindowSize() -/// \sa SDL_SetWindowDisplayMode() - pub fn SDL_SetWindowSize(window: *mut SDL_Window, - w: ::std::os::raw::c_int, - h: ::std::os::raw::c_int); + /// + /// \param window The window to resize. + /// \param w The width of the window, in screen coordinates. Must be >0. + /// \param h The height of the window, in screen coordinates. Must be >0. + /// + /// \note Fullscreen windows automatically match the size of the display mode, + /// and you should use SDL_SetWindowDisplayMode() to change their size. + /// + /// The window size in screen coordinates may differ from the size in pixels, if + /// the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with + /// high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or + /// SDL_GetRendererOutputSize() to get the real client area size in pixels. + /// + /// \sa SDL_GetWindowSize() + /// \sa SDL_SetWindowDisplayMode() + pub fn SDL_SetWindowSize( + window: *mut SDL_Window, + w: ::std::os::raw::c_int, + h: ::std::os::raw::c_int, + ); } extern "C" { /// \brief Get the size of a window's client area. -/// -/// \param window The window to query. -/// \param w Pointer to variable for storing the width, in screen -/// coordinates. May be NULL. -/// \param h Pointer to variable for storing the height, in screen -/// coordinates. May be NULL. -/// -/// The window size in screen coordinates may differ from the size in pixels, if -/// the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with -/// high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or -/// SDL_GetRendererOutputSize() to get the real client area size in pixels. -/// -/// \sa SDL_SetWindowSize() - pub fn SDL_GetWindowSize(window: *mut SDL_Window, - w: *mut ::std::os::raw::c_int, - h: *mut ::std::os::raw::c_int); + /// + /// \param window The window to query. + /// \param w Pointer to variable for storing the width, in screen + /// coordinates. May be NULL. + /// \param h Pointer to variable for storing the height, in screen + /// coordinates. May be NULL. + /// + /// The window size in screen coordinates may differ from the size in pixels, if + /// the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a platform with + /// high-dpi support (e.g. iOS or OS X). Use SDL_GL_GetDrawableSize() or + /// SDL_GetRendererOutputSize() to get the real client area size in pixels. + /// + /// \sa SDL_SetWindowSize() + pub fn SDL_GetWindowSize( + window: *mut SDL_Window, + w: *mut ::std::os::raw::c_int, + h: *mut ::std::os::raw::c_int, + ); } extern "C" { /// \brief Get the size of a window's borders (decorations) around the client area. -/// -/// \param window The window to query. -/// \param top Pointer to variable for storing the size of the top border. NULL is permitted. -/// \param left Pointer to variable for storing the size of the left border. NULL is permitted. -/// \param bottom Pointer to variable for storing the size of the bottom border. NULL is permitted. -/// \param right Pointer to variable for storing the size of the right border. NULL is permitted. -/// -/// \return 0 on success, or -1 if getting this information is not supported. -/// -/// \note if this function fails (returns -1), the size values will be -/// initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as -/// if the window in question was borderless. - pub fn SDL_GetWindowBordersSize(window: *mut SDL_Window, - top: *mut ::std::os::raw::c_int, - left: *mut ::std::os::raw::c_int, - bottom: *mut ::std::os::raw::c_int, - right: *mut ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param window The window to query. + /// \param top Pointer to variable for storing the size of the top border. NULL is permitted. + /// \param left Pointer to variable for storing the size of the left border. NULL is permitted. + /// \param bottom Pointer to variable for storing the size of the bottom border. NULL is permitted. + /// \param right Pointer to variable for storing the size of the right border. NULL is permitted. + /// + /// \return 0 on success, or -1 if getting this information is not supported. + /// + /// \note if this function fails (returns -1), the size values will be + /// initialized to 0, 0, 0, 0 (if a non-NULL pointer is provided), as + /// if the window in question was borderless. + pub fn SDL_GetWindowBordersSize( + window: *mut SDL_Window, + top: *mut ::std::os::raw::c_int, + left: *mut ::std::os::raw::c_int, + bottom: *mut ::std::os::raw::c_int, + right: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set the minimum size of a window's client area. -/// -/// \param window The window to set a new minimum size. -/// \param min_w The minimum width of the window, must be >0 -/// \param min_h The minimum height of the window, must be >0 -/// -/// \note You can't change the minimum size of a fullscreen window, it -/// automatically matches the size of the display mode. -/// -/// \sa SDL_GetWindowMinimumSize() -/// \sa SDL_SetWindowMaximumSize() - pub fn SDL_SetWindowMinimumSize(window: *mut SDL_Window, - min_w: ::std::os::raw::c_int, - min_h: ::std::os::raw::c_int); + /// + /// \param window The window to set a new minimum size. + /// \param min_w The minimum width of the window, must be >0 + /// \param min_h The minimum height of the window, must be >0 + /// + /// \note You can't change the minimum size of a fullscreen window, it + /// automatically matches the size of the display mode. + /// + /// \sa SDL_GetWindowMinimumSize() + /// \sa SDL_SetWindowMaximumSize() + pub fn SDL_SetWindowMinimumSize( + window: *mut SDL_Window, + min_w: ::std::os::raw::c_int, + min_h: ::std::os::raw::c_int, + ); } extern "C" { /// \brief Get the minimum size of a window's client area. -/// -/// \param window The window to query. -/// \param w Pointer to variable for storing the minimum width, may be NULL -/// \param h Pointer to variable for storing the minimum height, may be NULL -/// -/// \sa SDL_GetWindowMaximumSize() -/// \sa SDL_SetWindowMinimumSize() - pub fn SDL_GetWindowMinimumSize(window: *mut SDL_Window, - w: *mut ::std::os::raw::c_int, - h: *mut ::std::os::raw::c_int); + /// + /// \param window The window to query. + /// \param w Pointer to variable for storing the minimum width, may be NULL + /// \param h Pointer to variable for storing the minimum height, may be NULL + /// + /// \sa SDL_GetWindowMaximumSize() + /// \sa SDL_SetWindowMinimumSize() + pub fn SDL_GetWindowMinimumSize( + window: *mut SDL_Window, + w: *mut ::std::os::raw::c_int, + h: *mut ::std::os::raw::c_int, + ); } extern "C" { /// \brief Set the maximum size of a window's client area. -/// -/// \param window The window to set a new maximum size. -/// \param max_w The maximum width of the window, must be >0 -/// \param max_h The maximum height of the window, must be >0 -/// -/// \note You can't change the maximum size of a fullscreen window, it -/// automatically matches the size of the display mode. -/// -/// \sa SDL_GetWindowMaximumSize() -/// \sa SDL_SetWindowMinimumSize() - pub fn SDL_SetWindowMaximumSize(window: *mut SDL_Window, - max_w: ::std::os::raw::c_int, - max_h: ::std::os::raw::c_int); + /// + /// \param window The window to set a new maximum size. + /// \param max_w The maximum width of the window, must be >0 + /// \param max_h The maximum height of the window, must be >0 + /// + /// \note You can't change the maximum size of a fullscreen window, it + /// automatically matches the size of the display mode. + /// + /// \sa SDL_GetWindowMaximumSize() + /// \sa SDL_SetWindowMinimumSize() + pub fn SDL_SetWindowMaximumSize( + window: *mut SDL_Window, + max_w: ::std::os::raw::c_int, + max_h: ::std::os::raw::c_int, + ); } extern "C" { /// \brief Get the maximum size of a window's client area. -/// -/// \param window The window to query. -/// \param w Pointer to variable for storing the maximum width, may be NULL -/// \param h Pointer to variable for storing the maximum height, may be NULL -/// -/// \sa SDL_GetWindowMinimumSize() -/// \sa SDL_SetWindowMaximumSize() - pub fn SDL_GetWindowMaximumSize(window: *mut SDL_Window, - w: *mut ::std::os::raw::c_int, - h: *mut ::std::os::raw::c_int); + /// + /// \param window The window to query. + /// \param w Pointer to variable for storing the maximum width, may be NULL + /// \param h Pointer to variable for storing the maximum height, may be NULL + /// + /// \sa SDL_GetWindowMinimumSize() + /// \sa SDL_SetWindowMaximumSize() + pub fn SDL_GetWindowMaximumSize( + window: *mut SDL_Window, + w: *mut ::std::os::raw::c_int, + h: *mut ::std::os::raw::c_int, + ); } extern "C" { /// \brief Set the border state of a window. -/// -/// This will add or remove the window's SDL_WINDOW_BORDERLESS flag and -/// add or remove the border from the actual window. This is a no-op if the -/// window's border already matches the requested state. -/// -/// \param window The window of which to change the border state. -/// \param bordered SDL_FALSE to remove border, SDL_TRUE to add border. -/// -/// \note You can't change the border state of a fullscreen window. -/// -/// \sa SDL_GetWindowFlags() + /// + /// This will add or remove the window's SDL_WINDOW_BORDERLESS flag and + /// add or remove the border from the actual window. This is a no-op if the + /// window's border already matches the requested state. + /// + /// \param window The window of which to change the border state. + /// \param bordered SDL_FALSE to remove border, SDL_TRUE to add border. + /// + /// \note You can't change the border state of a fullscreen window. + /// + /// \sa SDL_GetWindowFlags() pub fn SDL_SetWindowBordered(window: *mut SDL_Window, bordered: SDL_bool); } extern "C" { /// \brief Set the user-resizable state of a window. -/// -/// This will add or remove the window's SDL_WINDOW_RESIZABLE flag and -/// allow/disallow user resizing of the window. This is a no-op if the -/// window's resizable state already matches the requested state. -/// -/// \param window The window of which to change the resizable state. -/// \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow. -/// -/// \note You can't change the resizable state of a fullscreen window. -/// -/// \sa SDL_GetWindowFlags() - pub fn SDL_SetWindowResizable(window: *mut SDL_Window, - resizable: SDL_bool); + /// + /// This will add or remove the window's SDL_WINDOW_RESIZABLE flag and + /// allow/disallow user resizing of the window. This is a no-op if the + /// window's resizable state already matches the requested state. + /// + /// \param window The window of which to change the resizable state. + /// \param resizable SDL_TRUE to allow resizing, SDL_FALSE to disallow. + /// + /// \note You can't change the resizable state of a fullscreen window. + /// + /// \sa SDL_GetWindowFlags() + pub fn SDL_SetWindowResizable(window: *mut SDL_Window, resizable: SDL_bool); } extern "C" { /// \brief Show a window. -/// -/// \sa SDL_HideWindow() + /// + /// \sa SDL_HideWindow() pub fn SDL_ShowWindow(window: *mut SDL_Window); } extern "C" { /// \brief Hide a window. -/// -/// \sa SDL_ShowWindow() + /// + /// \sa SDL_ShowWindow() pub fn SDL_HideWindow(window: *mut SDL_Window); } extern "C" { @@ -5822,207 +7498,215 @@ extern "C" { } extern "C" { /// \brief Make a window as large as possible. -/// -/// \sa SDL_RestoreWindow() + /// + /// \sa SDL_RestoreWindow() pub fn SDL_MaximizeWindow(window: *mut SDL_Window); } extern "C" { /// \brief Minimize a window to an iconic representation. -/// -/// \sa SDL_RestoreWindow() + /// + /// \sa SDL_RestoreWindow() pub fn SDL_MinimizeWindow(window: *mut SDL_Window); } extern "C" { /// \brief Restore the size and position of a minimized or maximized window. -/// -/// \sa SDL_MaximizeWindow() -/// \sa SDL_MinimizeWindow() + /// + /// \sa SDL_MaximizeWindow() + /// \sa SDL_MinimizeWindow() pub fn SDL_RestoreWindow(window: *mut SDL_Window); } extern "C" { /// \brief Set a window's fullscreen state. -/// -/// \return 0 on success, or -1 if setting the display mode failed. -/// -/// \sa SDL_SetWindowDisplayMode() -/// \sa SDL_GetWindowDisplayMode() + /// + /// \return 0 on success, or -1 if setting the display mode failed. + /// + /// \sa SDL_SetWindowDisplayMode() + /// \sa SDL_GetWindowDisplayMode() pub fn SDL_SetWindowFullscreen(window: *mut SDL_Window, flags: Uint32) - -> ::std::os::raw::c_int; + -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the SDL surface associated with the window. -/// -/// \return The window's framebuffer surface, or NULL on error. -/// -/// A new surface will be created with the optimal format for the window, -/// if necessary. This surface will be freed when the window is destroyed. -/// -/// \note You may not combine this with 3D or the rendering API on this window. -/// -/// \sa SDL_UpdateWindowSurface() -/// \sa SDL_UpdateWindowSurfaceRects() + /// + /// \return The window's framebuffer surface, or NULL on error. + /// + /// A new surface will be created with the optimal format for the window, + /// if necessary. This surface will be freed when the window is destroyed. + /// + /// \note You may not combine this with 3D or the rendering API on this window. + /// + /// \sa SDL_UpdateWindowSurface() + /// \sa SDL_UpdateWindowSurfaceRects() pub fn SDL_GetWindowSurface(window: *mut SDL_Window) -> *mut SDL_Surface; } extern "C" { /// \brief Copy the window surface to the screen. -/// -/// \return 0 on success, or -1 on error. -/// -/// \sa SDL_GetWindowSurface() -/// \sa SDL_UpdateWindowSurfaceRects() - pub fn SDL_UpdateWindowSurface(window: *mut SDL_Window) - -> ::std::os::raw::c_int; + /// + /// \return 0 on success, or -1 on error. + /// + /// \sa SDL_GetWindowSurface() + /// \sa SDL_UpdateWindowSurfaceRects() + pub fn SDL_UpdateWindowSurface(window: *mut SDL_Window) -> ::std::os::raw::c_int; } extern "C" { /// \brief Copy a number of rectangles on the window surface to the screen. -/// -/// \return 0 on success, or -1 on error. -/// -/// \sa SDL_GetWindowSurface() -/// \sa SDL_UpdateWindowSurface() - pub fn SDL_UpdateWindowSurfaceRects(window: *mut SDL_Window, - rects: *const SDL_Rect, - numrects: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \return 0 on success, or -1 on error. + /// + /// \sa SDL_GetWindowSurface() + /// \sa SDL_UpdateWindowSurface() + pub fn SDL_UpdateWindowSurfaceRects( + window: *mut SDL_Window, + rects: *const SDL_Rect, + numrects: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set a window's input grab mode. -/// -/// \param window The window for which the input grab mode should be set. -/// \param grabbed This is SDL_TRUE to grab input, and SDL_FALSE to release input. -/// -/// If the caller enables a grab while another window is currently grabbed, -/// the other window loses its grab in favor of the caller's window. -/// -/// \sa SDL_GetWindowGrab() + /// + /// \param window The window for which the input grab mode should be set. + /// \param grabbed This is SDL_TRUE to grab input, and SDL_FALSE to release input. + /// + /// If the caller enables a grab while another window is currently grabbed, + /// the other window loses its grab in favor of the caller's window. + /// + /// \sa SDL_GetWindowGrab() pub fn SDL_SetWindowGrab(window: *mut SDL_Window, grabbed: SDL_bool); } extern "C" { /// \brief Get a window's input grab mode. -/// -/// \return This returns SDL_TRUE if input is grabbed, and SDL_FALSE otherwise. -/// -/// \sa SDL_SetWindowGrab() + /// + /// \return This returns SDL_TRUE if input is grabbed, and SDL_FALSE otherwise. + /// + /// \sa SDL_SetWindowGrab() pub fn SDL_GetWindowGrab(window: *mut SDL_Window) -> SDL_bool; } extern "C" { /// \brief Get the window that currently has an input grab enabled. -/// -/// \return This returns the window if input is grabbed, and NULL otherwise. -/// -/// \sa SDL_SetWindowGrab() + /// + /// \return This returns the window if input is grabbed, and NULL otherwise. + /// + /// \sa SDL_SetWindowGrab() pub fn SDL_GetGrabbedWindow() -> *mut SDL_Window; } extern "C" { /// \brief Set the brightness (gamma correction) for a window. -/// -/// \return 0 on success, or -1 if setting the brightness isn't supported. -/// -/// \sa SDL_GetWindowBrightness() -/// \sa SDL_SetWindowGammaRamp() - pub fn SDL_SetWindowBrightness(window: *mut SDL_Window, brightness: f32) - -> ::std::os::raw::c_int; + /// + /// \return 0 on success, or -1 if setting the brightness isn't supported. + /// + /// \sa SDL_GetWindowBrightness() + /// \sa SDL_SetWindowGammaRamp() + pub fn SDL_SetWindowBrightness( + window: *mut SDL_Window, + brightness: f32, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the brightness (gamma correction) for a window. -/// -/// \return The last brightness value passed to SDL_SetWindowBrightness() -/// -/// \sa SDL_SetWindowBrightness() + /// + /// \return The last brightness value passed to SDL_SetWindowBrightness() + /// + /// \sa SDL_SetWindowBrightness() pub fn SDL_GetWindowBrightness(window: *mut SDL_Window) -> f32; } extern "C" { /// \brief Set the opacity for a window -/// -/// \param window The window which will be made transparent or opaque -/// \param opacity Opacity (0.0f - transparent, 1.0f - opaque) This will be -/// clamped internally between 0.0f and 1.0f. -/// -/// \return 0 on success, or -1 if setting the opacity isn't supported. -/// -/// \sa SDL_GetWindowOpacity() - pub fn SDL_SetWindowOpacity(window: *mut SDL_Window, opacity: f32) - -> ::std::os::raw::c_int; + /// + /// \param window The window which will be made transparent or opaque + /// \param opacity Opacity (0.0f - transparent, 1.0f - opaque) This will be + /// clamped internally between 0.0f and 1.0f. + /// + /// \return 0 on success, or -1 if setting the opacity isn't supported. + /// + /// \sa SDL_GetWindowOpacity() + pub fn SDL_SetWindowOpacity(window: *mut SDL_Window, opacity: f32) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the opacity of a window. -/// -/// If transparency isn't supported on this platform, opacity will be reported -/// as 1.0f without error. -/// -/// \param window The window in question. -/// \param out_opacity Opacity (0.0f - transparent, 1.0f - opaque) -/// -/// \return 0 on success, or -1 on error (invalid window, etc). -/// -/// \sa SDL_SetWindowOpacity() - pub fn SDL_GetWindowOpacity(window: *mut SDL_Window, - out_opacity: *mut f32) - -> ::std::os::raw::c_int; + /// + /// If transparency isn't supported on this platform, opacity will be reported + /// as 1.0f without error. + /// + /// \param window The window in question. + /// \param out_opacity Opacity (0.0f - transparent, 1.0f - opaque) + /// + /// \return 0 on success, or -1 on error (invalid window, etc). + /// + /// \sa SDL_SetWindowOpacity() + pub fn SDL_GetWindowOpacity( + window: *mut SDL_Window, + out_opacity: *mut f32, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Sets the window as a modal for another window (TODO: reconsider this function and/or its name) -/// -/// \param modal_window The window that should be modal -/// \param parent_window The parent window -/// -/// \return 0 on success, or -1 otherwise. - pub fn SDL_SetWindowModalFor(modal_window: *mut SDL_Window, - parent_window: *mut SDL_Window) - -> ::std::os::raw::c_int; + /// + /// \param modal_window The window that should be modal + /// \param parent_window The parent window + /// + /// \return 0 on success, or -1 otherwise. + pub fn SDL_SetWindowModalFor( + modal_window: *mut SDL_Window, + parent_window: *mut SDL_Window, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Explicitly sets input focus to the window. -/// -/// You almost certainly want SDL_RaiseWindow() instead of this function. Use -/// this with caution, as you might give focus to a window that's completely -/// obscured by other windows. -/// -/// \param window The window that should get the input focus -/// -/// \return 0 on success, or -1 otherwise. -/// \sa SDL_RaiseWindow() - pub fn SDL_SetWindowInputFocus(window: *mut SDL_Window) - -> ::std::os::raw::c_int; + /// + /// You almost certainly want SDL_RaiseWindow() instead of this function. Use + /// this with caution, as you might give focus to a window that's completely + /// obscured by other windows. + /// + /// \param window The window that should get the input focus + /// + /// \return 0 on success, or -1 otherwise. + /// \sa SDL_RaiseWindow() + pub fn SDL_SetWindowInputFocus(window: *mut SDL_Window) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set the gamma ramp for a window. -/// -/// \param window The window for which the gamma ramp should be set. -/// \param red The translation table for the red channel, or NULL. -/// \param green The translation table for the green channel, or NULL. -/// \param blue The translation table for the blue channel, or NULL. -/// -/// \return 0 on success, or -1 if gamma ramps are unsupported. -/// -/// Set the gamma translation table for the red, green, and blue channels -/// of the video hardware. Each table is an array of 256 16-bit quantities, -/// representing a mapping between the input and output for that channel. -/// The input is the index into the array, and the output is the 16-bit -/// gamma value at that index, scaled to the output color precision. -/// -/// \sa SDL_GetWindowGammaRamp() - pub fn SDL_SetWindowGammaRamp(window: *mut SDL_Window, red: *const Uint16, - green: *const Uint16, blue: *const Uint16) - -> ::std::os::raw::c_int; + /// + /// \param window The window for which the gamma ramp should be set. + /// \param red The translation table for the red channel, or NULL. + /// \param green The translation table for the green channel, or NULL. + /// \param blue The translation table for the blue channel, or NULL. + /// + /// \return 0 on success, or -1 if gamma ramps are unsupported. + /// + /// Set the gamma translation table for the red, green, and blue channels + /// of the video hardware. Each table is an array of 256 16-bit quantities, + /// representing a mapping between the input and output for that channel. + /// The input is the index into the array, and the output is the 16-bit + /// gamma value at that index, scaled to the output color precision. + /// + /// \sa SDL_GetWindowGammaRamp() + pub fn SDL_SetWindowGammaRamp( + window: *mut SDL_Window, + red: *const Uint16, + green: *const Uint16, + blue: *const Uint16, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the gamma ramp for a window. -/// -/// \param window The window from which the gamma ramp should be queried. -/// \param red A pointer to a 256 element array of 16-bit quantities to hold -/// the translation table for the red channel, or NULL. -/// \param green A pointer to a 256 element array of 16-bit quantities to hold -/// the translation table for the green channel, or NULL. -/// \param blue A pointer to a 256 element array of 16-bit quantities to hold -/// the translation table for the blue channel, or NULL. -/// -/// \return 0 on success, or -1 if gamma ramps are unsupported. -/// -/// \sa SDL_SetWindowGammaRamp() - pub fn SDL_GetWindowGammaRamp(window: *mut SDL_Window, red: *mut Uint16, - green: *mut Uint16, blue: *mut Uint16) - -> ::std::os::raw::c_int; + /// + /// \param window The window from which the gamma ramp should be queried. + /// \param red A pointer to a 256 element array of 16-bit quantities to hold + /// the translation table for the red channel, or NULL. + /// \param green A pointer to a 256 element array of 16-bit quantities to hold + /// the translation table for the green channel, or NULL. + /// \param blue A pointer to a 256 element array of 16-bit quantities to hold + /// the translation table for the blue channel, or NULL. + /// + /// \return 0 on success, or -1 if gamma ramps are unsupported. + /// + /// \sa SDL_SetWindowGammaRamp() + pub fn SDL_GetWindowGammaRamp( + window: *mut SDL_Window, + red: *mut Uint16, + green: *mut Uint16, + blue: *mut Uint16, + ) -> ::std::os::raw::c_int; } #[repr(u32)] /// \brief Possible return values from the SDL_HitTest callback. @@ -6030,7 +7714,9 @@ extern "C" { /// \sa SDL_HitTest #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_HitTestResult { + /// < Region is normal. No special properties. SDL_HITTEST_NORMAL = 0, + /// < Region can drag entire window. SDL_HITTEST_DRAGGABLE = 1, SDL_HITTEST_RESIZE_TOPLEFT = 2, SDL_HITTEST_RESIZE_TOP = 3, @@ -6044,114 +7730,115 @@ pub enum SDL_HitTestResult { /// \brief Callback used for hit-testing. /// /// \sa SDL_SetWindowHitTest -pub type SDL_HitTest = - ::std::option::Option SDL_HitTestResult>; +pub type SDL_HitTest = ::std::option::Option< + unsafe extern "C" fn( + win: *mut SDL_Window, + area: *const SDL_Point, + data: *mut ::std::os::raw::c_void, + ) -> SDL_HitTestResult, +>; extern "C" { /// \brief Provide a callback that decides if a window region has special properties. -/// -/// Normally windows are dragged and resized by decorations provided by the -/// system window manager (a title bar, borders, etc), but for some apps, it -/// makes sense to drag them from somewhere else inside the window itself; for -/// example, one might have a borderless window that wants to be draggable -/// from any part, or simulate its own title bar, etc. -/// -/// This function lets the app provide a callback that designates pieces of -/// a given window as special. This callback is run during event processing -/// if we need to tell the OS to treat a region of the window specially; the -/// use of this callback is known as "hit testing." -/// -/// Mouse input may not be delivered to your application if it is within -/// a special area; the OS will often apply that input to moving the window or -/// resizing the window and not deliver it to the application. -/// -/// Specifying NULL for a callback disables hit-testing. Hit-testing is -/// disabled by default. -/// -/// Platforms that don't support this functionality will return -1 -/// unconditionally, even if you're attempting to disable hit-testing. -/// -/// Your callback may fire at any time, and its firing does not indicate any -/// specific behavior (for example, on Windows, this certainly might fire -/// when the OS is deciding whether to drag your window, but it fires for lots -/// of other reasons, too, some unrelated to anything you probably care about -/// _and when the mouse isn't actually at the location it is testing_). -/// Since this can fire at any time, you should try to keep your callback -/// efficient, devoid of allocations, etc. -/// -/// \param window The window to set hit-testing on. -/// \param callback The callback to call when doing a hit-test. -/// \param callback_data An app-defined void pointer passed to the callback. -/// \return 0 on success, -1 on error (including unsupported). - pub fn SDL_SetWindowHitTest(window: *mut SDL_Window, - callback: SDL_HitTest, - callback_data: *mut ::std::os::raw::c_void) - -> ::std::os::raw::c_int; -} -extern "C" { + /// + /// Normally windows are dragged and resized by decorations provided by the + /// system window manager (a title bar, borders, etc), but for some apps, it + /// makes sense to drag them from somewhere else inside the window itself; for + /// example, one might have a borderless window that wants to be draggable + /// from any part, or simulate its own title bar, etc. + /// + /// This function lets the app provide a callback that designates pieces of + /// a given window as special. This callback is run during event processing + /// if we need to tell the OS to treat a region of the window specially; the + /// use of this callback is known as "hit testing." + /// + /// Mouse input may not be delivered to your application if it is within + /// a special area; the OS will often apply that input to moving the window or + /// resizing the window and not deliver it to the application. + /// + /// Specifying NULL for a callback disables hit-testing. Hit-testing is + /// disabled by default. + /// + /// Platforms that don't support this functionality will return -1 + /// unconditionally, even if you're attempting to disable hit-testing. + /// + /// Your callback may fire at any time, and its firing does not indicate any + /// specific behavior (for example, on Windows, this certainly might fire + /// when the OS is deciding whether to drag your window, but it fires for lots + /// of other reasons, too, some unrelated to anything you probably care about + /// _and when the mouse isn't actually at the location it is testing_). + /// Since this can fire at any time, you should try to keep your callback + /// efficient, devoid of allocations, etc. + /// + /// \param window The window to set hit-testing on. + /// \param callback The callback to call when doing a hit-test. + /// \param callback_data An app-defined void pointer passed to the callback. + /// \return 0 on success, -1 on error (including unsupported). + pub fn SDL_SetWindowHitTest( + window: *mut SDL_Window, + callback: SDL_HitTest, + callback_data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { /// \brief Destroy a window. pub fn SDL_DestroyWindow(window: *mut SDL_Window); } extern "C" { /// \brief Returns whether the screensaver is currently enabled (default off). -/// -/// \sa SDL_EnableScreenSaver() -/// \sa SDL_DisableScreenSaver() + /// + /// \sa SDL_EnableScreenSaver() + /// \sa SDL_DisableScreenSaver() pub fn SDL_IsScreenSaverEnabled() -> SDL_bool; } extern "C" { /// \brief Allow the screen to be blanked by a screensaver -/// -/// \sa SDL_IsScreenSaverEnabled() -/// \sa SDL_DisableScreenSaver() + /// + /// \sa SDL_IsScreenSaverEnabled() + /// \sa SDL_DisableScreenSaver() pub fn SDL_EnableScreenSaver(); } extern "C" { /// \brief Prevent the screen from being blanked by a screensaver -/// -/// \sa SDL_IsScreenSaverEnabled() -/// \sa SDL_EnableScreenSaver() + /// + /// \sa SDL_IsScreenSaverEnabled() + /// \sa SDL_EnableScreenSaver() pub fn SDL_DisableScreenSaver(); } extern "C" { /// \brief Dynamically load an OpenGL library. -/// -/// \param path The platform dependent OpenGL library name, or NULL to open the -/// default OpenGL library. -/// -/// \return 0 on success, or -1 if the library couldn't be loaded. -/// -/// This should be done after initializing the video driver, but before -/// creating any OpenGL windows. If no OpenGL library is loaded, the default -/// library will be loaded upon creation of the first OpenGL window. -/// -/// \note If you do this, you need to retrieve all of the GL functions used in -/// your program from the dynamic library using SDL_GL_GetProcAddress(). -/// -/// \sa SDL_GL_GetProcAddress() -/// \sa SDL_GL_UnloadLibrary() - pub fn SDL_GL_LoadLibrary(path: *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + /// + /// \param path The platform dependent OpenGL library name, or NULL to open the + /// default OpenGL library. + /// + /// \return 0 on success, or -1 if the library couldn't be loaded. + /// + /// This should be done after initializing the video driver, but before + /// creating any OpenGL windows. If no OpenGL library is loaded, the default + /// library will be loaded upon creation of the first OpenGL window. + /// + /// \note If you do this, you need to retrieve all of the GL functions used in + /// your program from the dynamic library using SDL_GL_GetProcAddress(). + /// + /// \sa SDL_GL_GetProcAddress() + /// \sa SDL_GL_UnloadLibrary() + pub fn SDL_GL_LoadLibrary(path: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the address of an OpenGL function. - pub fn SDL_GL_GetProcAddress(proc_: *const ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_void; + pub fn SDL_GL_GetProcAddress( + proc_: *const ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_void; } extern "C" { /// \brief Unload the OpenGL library previously loaded by SDL_GL_LoadLibrary(). -/// -/// \sa SDL_GL_LoadLibrary() + /// + /// \sa SDL_GL_LoadLibrary() pub fn SDL_GL_UnloadLibrary(); } extern "C" { /// \brief Return true if an OpenGL extension is supported for the current -/// context. - pub fn SDL_GL_ExtensionSupported(extension: *const ::std::os::raw::c_char) - -> SDL_bool; + /// context. + pub fn SDL_GL_ExtensionSupported(extension: *const ::std::os::raw::c_char) -> SDL_bool; } extern "C" { /// \brief Reset all previously set OpenGL context attributes to their default values @@ -6159,33 +7846,38 @@ extern "C" { } extern "C" { /// \brief Set an OpenGL window attribute before window creation. -/// -/// \return 0 on success, or -1 if the attribute could not be set. - pub fn SDL_GL_SetAttribute(attr: SDL_GLattr, value: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \return 0 on success, or -1 if the attribute could not be set. + pub fn SDL_GL_SetAttribute( + attr: SDL_GLattr, + value: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the actual value for an attribute from the current context. -/// -/// \return 0 on success, or -1 if the attribute could not be retrieved. -/// The integer at \c value will be modified in either case. - pub fn SDL_GL_GetAttribute(attr: SDL_GLattr, - value: *mut ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \return 0 on success, or -1 if the attribute could not be retrieved. + /// The integer at \c value will be modified in either case. + pub fn SDL_GL_GetAttribute( + attr: SDL_GLattr, + value: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Create an OpenGL context for use with an OpenGL window, and make it -/// current. -/// -/// \sa SDL_GL_DeleteContext() + /// current. + /// + /// \sa SDL_GL_DeleteContext() pub fn SDL_GL_CreateContext(window: *mut SDL_Window) -> SDL_GLContext; } extern "C" { /// \brief Set up an OpenGL context for rendering into an OpenGL window. -/// -/// \note The context must have been created with a compatible window. - pub fn SDL_GL_MakeCurrent(window: *mut SDL_Window, context: SDL_GLContext) - -> ::std::os::raw::c_int; + /// + /// \note The context must have been created with a compatible window. + pub fn SDL_GL_MakeCurrent( + window: *mut SDL_Window, + context: SDL_GLContext, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the currently active OpenGL window. @@ -6197,58 +7889,59 @@ extern "C" { } extern "C" { /// \brief Get the size of a window's underlying drawable in pixels (for use -/// with glViewport). -/// -/// \param window Window from which the drawable size should be queried -/// \param w Pointer to variable for storing the width in pixels, may be NULL -/// \param h Pointer to variable for storing the height in pixels, may be NULL -/// -/// This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI -/// drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a -/// platform with high-DPI support (Apple calls this "Retina"), and not disabled -/// by the SDL_HINT_VIDEO_HIGHDPI_DISABLED hint. -/// -/// \sa SDL_GetWindowSize() -/// \sa SDL_CreateWindow() - pub fn SDL_GL_GetDrawableSize(window: *mut SDL_Window, - w: *mut ::std::os::raw::c_int, - h: *mut ::std::os::raw::c_int); + /// with glViewport). + /// + /// \param window Window from which the drawable size should be queried + /// \param w Pointer to variable for storing the width in pixels, may be NULL + /// \param h Pointer to variable for storing the height in pixels, may be NULL + /// + /// This may differ from SDL_GetWindowSize() if we're rendering to a high-DPI + /// drawable, i.e. the window was created with SDL_WINDOW_ALLOW_HIGHDPI on a + /// platform with high-DPI support (Apple calls this "Retina"), and not disabled + /// by the SDL_HINT_VIDEO_HIGHDPI_DISABLED hint. + /// + /// \sa SDL_GetWindowSize() + /// \sa SDL_CreateWindow() + pub fn SDL_GL_GetDrawableSize( + window: *mut SDL_Window, + w: *mut ::std::os::raw::c_int, + h: *mut ::std::os::raw::c_int, + ); } extern "C" { /// \brief Set the swap interval for the current OpenGL context. -/// -/// \param interval 0 for immediate updates, 1 for updates synchronized with the -/// vertical retrace. If the system supports it, you may -/// specify -1 to allow late swaps to happen immediately -/// instead of waiting for the next retrace. -/// -/// \return 0 on success, or -1 if setting the swap interval is not supported. -/// -/// \sa SDL_GL_GetSwapInterval() - pub fn SDL_GL_SetSwapInterval(interval: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param interval 0 for immediate updates, 1 for updates synchronized with the + /// vertical retrace. If the system supports it, you may + /// specify -1 to allow late swaps to happen immediately + /// instead of waiting for the next retrace. + /// + /// \return 0 on success, or -1 if setting the swap interval is not supported. + /// + /// \sa SDL_GL_GetSwapInterval() + pub fn SDL_GL_SetSwapInterval(interval: ::std::os::raw::c_int) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the swap interval for the current OpenGL context. -/// -/// \return 0 if there is no vertical retrace synchronization, 1 if the buffer -/// swap is synchronized with the vertical retrace, and -1 if late -/// swaps happen immediately instead of waiting for the next retrace. -/// If the system can't determine the swap interval, or there isn't a -/// valid current context, this will return 0 as a safe default. -/// -/// \sa SDL_GL_SetSwapInterval() + /// + /// \return 0 if there is no vertical retrace synchronization, 1 if the buffer + /// swap is synchronized with the vertical retrace, and -1 if late + /// swaps happen immediately instead of waiting for the next retrace. + /// If the system can't determine the swap interval, or there isn't a + /// valid current context, this will return 0 as a safe default. + /// + /// \sa SDL_GL_SetSwapInterval() pub fn SDL_GL_GetSwapInterval() -> ::std::os::raw::c_int; } extern "C" { /// \brief Swap the OpenGL buffers for a window, if double-buffering is -/// supported. + /// supported. pub fn SDL_GL_SwapWindow(window: *mut SDL_Window); } extern "C" { /// \brief Delete an OpenGL context. -/// -/// \sa SDL_GL_CreateContext() + /// + /// \sa SDL_GL_CreateContext() pub fn SDL_GL_DeleteContext(context: SDL_GLContext); } #[repr(u32)] @@ -6308,10 +8001,50 @@ pub enum SDL_Scancode { SDL_SCANCODE_EQUALS = 46, SDL_SCANCODE_LEFTBRACKET = 47, SDL_SCANCODE_RIGHTBRACKET = 48, + /// < Located at the lower left of the return + /// key on ISO keyboards and at the right end + /// of the QWERTY row on ANSI keyboards. + /// Produces REVERSE SOLIDUS (backslash) and + /// VERTICAL LINE in a US layout, REVERSE + /// SOLIDUS and VERTICAL LINE in a UK Mac + /// layout, NUMBER SIGN and TILDE in a UK + /// Windows layout, DOLLAR SIGN and POUND SIGN + /// in a Swiss German layout, NUMBER SIGN and + /// APOSTROPHE in a German layout, GRAVE + /// ACCENT and POUND SIGN in a French Mac + /// layout, and ASTERISK and MICRO SIGN in a + /// French Windows layout. SDL_SCANCODE_BACKSLASH = 49, + /// < ISO USB keyboards actually use this code + /// instead of 49 for the same key, but all + /// OSes I've seen treat the two codes + /// identically. So, as an implementor, unless + /// your keyboard generates both of those + /// codes and your OS treats them differently, + /// you should generate SDL_SCANCODE_BACKSLASH + /// instead of this code. As a user, you + /// should not rely on this code because SDL + /// will never generate it with most (all?) + /// keyboards. SDL_SCANCODE_NONUSHASH = 50, SDL_SCANCODE_SEMICOLON = 51, SDL_SCANCODE_APOSTROPHE = 52, + /// < Located in the top left corner (on both ANSI + /// and ISO keyboards). Produces GRAVE ACCENT and + /// TILDE in a US Windows layout and in US and UK + /// Mac layouts on ANSI keyboards, GRAVE ACCENT + /// and NOT SIGN in a UK Windows layout, SECTION + /// SIGN and PLUS-MINUS SIGN in US and UK Mac + /// layouts on ISO keyboards, SECTION SIGN and + /// DEGREE SIGN in a Swiss German layout (Mac: + /// only on ISO keyboards), CIRCUMFLEX ACCENT and + /// DEGREE SIGN in a German layout (Mac: only on + /// ISO keyboards), SUPERSCRIPT TWO and TILDE in a + /// French Windows layout, COMMERCIAL AT and + /// NUMBER SIGN in a French Mac layout on ISO + /// keyboards, and LESS-THAN SIGN and GREATER-THAN + /// SIGN in a Swiss German, German, or French Mac + /// layout on ANSI keyboards. SDL_SCANCODE_GRAVE = 53, SDL_SCANCODE_COMMA = 54, SDL_SCANCODE_PERIOD = 55, @@ -6332,6 +8065,8 @@ pub enum SDL_Scancode { SDL_SCANCODE_PRINTSCREEN = 70, SDL_SCANCODE_SCROLLLOCK = 71, SDL_SCANCODE_PAUSE = 72, + /// < insert on PC, help on some Mac keyboards (but + /// does send code 73, not 117) SDL_SCANCODE_INSERT = 73, SDL_SCANCODE_HOME = 74, SDL_SCANCODE_PAGEUP = 75, @@ -6342,6 +8077,7 @@ pub enum SDL_Scancode { SDL_SCANCODE_LEFT = 80, SDL_SCANCODE_DOWN = 81, SDL_SCANCODE_UP = 82, + /// < num lock on PC, clear on Mac keyboards SDL_SCANCODE_NUMLOCKCLEAR = 83, SDL_SCANCODE_KP_DIVIDE = 84, SDL_SCANCODE_KP_MULTIPLY = 85, @@ -6359,8 +8095,22 @@ pub enum SDL_Scancode { SDL_SCANCODE_KP_9 = 97, SDL_SCANCODE_KP_0 = 98, SDL_SCANCODE_KP_PERIOD = 99, + /// < This is the additional key that ISO + /// keyboards have over ANSI ones, + /// located between left shift and Y. + /// Produces GRAVE ACCENT and TILDE in a + /// US or UK Mac layout, REVERSE SOLIDUS + /// (backslash) and VERTICAL LINE in a + /// US or UK Windows layout, and + /// LESS-THAN SIGN and GREATER-THAN SIGN + /// in a Swiss German, German, or French + /// layout. SDL_SCANCODE_NONUSBACKSLASH = 100, + /// < windows contextual menu, compose SDL_SCANCODE_APPLICATION = 101, + /// < The USB document says this is a status flag, + /// not a physical key - but some Mac keyboards + /// do have a power key. SDL_SCANCODE_POWER = 102, SDL_SCANCODE_KP_EQUALS = 103, SDL_SCANCODE_F13 = 104, @@ -6380,6 +8130,7 @@ pub enum SDL_Scancode { SDL_SCANCODE_MENU = 118, SDL_SCANCODE_SELECT = 119, SDL_SCANCODE_STOP = 120, + /// < redo SDL_SCANCODE_AGAIN = 121, SDL_SCANCODE_UNDO = 122, SDL_SCANCODE_CUT = 123, @@ -6391,8 +8142,11 @@ pub enum SDL_Scancode { SDL_SCANCODE_VOLUMEDOWN = 129, SDL_SCANCODE_KP_COMMA = 133, SDL_SCANCODE_KP_EQUALSAS400 = 134, + /// < used on Asian keyboards, see + /// footnotes in USB doc SDL_SCANCODE_INTERNATIONAL1 = 135, SDL_SCANCODE_INTERNATIONAL2 = 136, + /// < Yen SDL_SCANCODE_INTERNATIONAL3 = 137, SDL_SCANCODE_INTERNATIONAL4 = 138, SDL_SCANCODE_INTERNATIONAL5 = 139, @@ -6400,15 +8154,25 @@ pub enum SDL_Scancode { SDL_SCANCODE_INTERNATIONAL7 = 141, SDL_SCANCODE_INTERNATIONAL8 = 142, SDL_SCANCODE_INTERNATIONAL9 = 143, + /// < Hangul/English toggle SDL_SCANCODE_LANG1 = 144, + /// < Hanja conversion SDL_SCANCODE_LANG2 = 145, + /// < Katakana SDL_SCANCODE_LANG3 = 146, + /// < Hiragana SDL_SCANCODE_LANG4 = 147, + /// < Zenkaku/Hankaku SDL_SCANCODE_LANG5 = 148, + /// < reserved SDL_SCANCODE_LANG6 = 149, + /// < reserved SDL_SCANCODE_LANG7 = 150, + /// < reserved SDL_SCANCODE_LANG8 = 151, + /// < reserved SDL_SCANCODE_LANG9 = 152, + /// < Erase-Eaze SDL_SCANCODE_ALTERASE = 153, SDL_SCANCODE_SYSREQ = 154, SDL_SCANCODE_CANCEL = 155, @@ -6469,12 +8233,19 @@ pub enum SDL_Scancode { SDL_SCANCODE_KP_HEXADECIMAL = 221, SDL_SCANCODE_LCTRL = 224, SDL_SCANCODE_LSHIFT = 225, + /// < alt, option SDL_SCANCODE_LALT = 226, + /// < windows, command (apple), meta SDL_SCANCODE_LGUI = 227, SDL_SCANCODE_RCTRL = 228, SDL_SCANCODE_RSHIFT = 229, + /// < alt gr, option SDL_SCANCODE_RALT = 230, + /// < windows, command (apple), meta SDL_SCANCODE_RGUI = 231, + /// < I'm not sure if this is really not covered + /// by any of the above, but since there's a + /// special KMOD_MODE for it I'm adding it here SDL_SCANCODE_MODE = 257, SDL_SCANCODE_AUDIONEXT = 258, SDL_SCANCODE_AUDIOPREV = 259, @@ -6495,6 +8266,8 @@ pub enum SDL_Scancode { SDL_SCANCODE_AC_BOOKMARKS = 274, SDL_SCANCODE_BRIGHTNESSDOWN = 275, SDL_SCANCODE_BRIGHTNESSUP = 276, + /// < display mirroring/dual display + /// switch, video mode switch SDL_SCANCODE_DISPLAYSWITCH = 277, SDL_SCANCODE_KBDILLUMTOGGLE = 278, SDL_SCANCODE_KBDILLUMDOWN = 279, @@ -6505,6 +8278,8 @@ pub enum SDL_Scancode { SDL_SCANCODE_APP2 = 284, SDL_SCANCODE_AUDIOREWIND = 285, SDL_SCANCODE_AUDIOFASTFORWARD = 286, + /// < not a key, just marks the number of scancodes + /// for array bounds SDL_NUM_SCANCODES = 512, } /// \brief The SDL virtual key representation. @@ -6660,8 +8435,7 @@ pub const SDLK_MUTE: _bindgen_ty_7 = _bindgen_ty_7::SDLK_MUTE; pub const SDLK_VOLUMEUP: _bindgen_ty_7 = _bindgen_ty_7::SDLK_VOLUMEUP; pub const SDLK_VOLUMEDOWN: _bindgen_ty_7 = _bindgen_ty_7::SDLK_VOLUMEDOWN; pub const SDLK_KP_COMMA: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_COMMA; -pub const SDLK_KP_EQUALSAS400: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_KP_EQUALSAS400; +pub const SDLK_KP_EQUALSAS400: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_EQUALSAS400; pub const SDLK_ALTERASE: _bindgen_ty_7 = _bindgen_ty_7::SDLK_ALTERASE; pub const SDLK_SYSREQ: _bindgen_ty_7 = _bindgen_ty_7::SDLK_SYSREQ; pub const SDLK_CANCEL: _bindgen_ty_7 = _bindgen_ty_7::SDLK_CANCEL; @@ -6676,19 +8450,14 @@ pub const SDLK_CRSEL: _bindgen_ty_7 = _bindgen_ty_7::SDLK_CRSEL; pub const SDLK_EXSEL: _bindgen_ty_7 = _bindgen_ty_7::SDLK_EXSEL; pub const SDLK_KP_00: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_00; pub const SDLK_KP_000: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_000; -pub const SDLK_THOUSANDSSEPARATOR: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_THOUSANDSSEPARATOR; -pub const SDLK_DECIMALSEPARATOR: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_DECIMALSEPARATOR; +pub const SDLK_THOUSANDSSEPARATOR: _bindgen_ty_7 = _bindgen_ty_7::SDLK_THOUSANDSSEPARATOR; +pub const SDLK_DECIMALSEPARATOR: _bindgen_ty_7 = _bindgen_ty_7::SDLK_DECIMALSEPARATOR; pub const SDLK_CURRENCYUNIT: _bindgen_ty_7 = _bindgen_ty_7::SDLK_CURRENCYUNIT; -pub const SDLK_CURRENCYSUBUNIT: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_CURRENCYSUBUNIT; +pub const SDLK_CURRENCYSUBUNIT: _bindgen_ty_7 = _bindgen_ty_7::SDLK_CURRENCYSUBUNIT; pub const SDLK_KP_LEFTPAREN: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_LEFTPAREN; -pub const SDLK_KP_RIGHTPAREN: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_KP_RIGHTPAREN; +pub const SDLK_KP_RIGHTPAREN: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_RIGHTPAREN; pub const SDLK_KP_LEFTBRACE: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_LEFTBRACE; -pub const SDLK_KP_RIGHTBRACE: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_KP_RIGHTBRACE; +pub const SDLK_KP_RIGHTBRACE: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_RIGHTBRACE; pub const SDLK_KP_TAB: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_TAB; pub const SDLK_KP_BACKSPACE: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_BACKSPACE; pub const SDLK_KP_A: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_A; @@ -6703,12 +8472,9 @@ pub const SDLK_KP_PERCENT: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_PERCENT; pub const SDLK_KP_LESS: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_LESS; pub const SDLK_KP_GREATER: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_GREATER; pub const SDLK_KP_AMPERSAND: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_AMPERSAND; -pub const SDLK_KP_DBLAMPERSAND: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_KP_DBLAMPERSAND; -pub const SDLK_KP_VERTICALBAR: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_KP_VERTICALBAR; -pub const SDLK_KP_DBLVERTICALBAR: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_KP_DBLVERTICALBAR; +pub const SDLK_KP_DBLAMPERSAND: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_DBLAMPERSAND; +pub const SDLK_KP_VERTICALBAR: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_VERTICALBAR; +pub const SDLK_KP_DBLVERTICALBAR: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_DBLVERTICALBAR; pub const SDLK_KP_COLON: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_COLON; pub const SDLK_KP_HASH: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_HASH; pub const SDLK_KP_SPACE: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_SPACE; @@ -6718,20 +8484,16 @@ pub const SDLK_KP_MEMSTORE: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_MEMSTORE; pub const SDLK_KP_MEMRECALL: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_MEMRECALL; pub const SDLK_KP_MEMCLEAR: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_MEMCLEAR; pub const SDLK_KP_MEMADD: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_MEMADD; -pub const SDLK_KP_MEMSUBTRACT: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_KP_MEMSUBTRACT; -pub const SDLK_KP_MEMMULTIPLY: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_KP_MEMMULTIPLY; +pub const SDLK_KP_MEMSUBTRACT: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_MEMSUBTRACT; +pub const SDLK_KP_MEMMULTIPLY: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_MEMMULTIPLY; pub const SDLK_KP_MEMDIVIDE: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_MEMDIVIDE; pub const SDLK_KP_PLUSMINUS: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_PLUSMINUS; pub const SDLK_KP_CLEAR: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_CLEAR; -pub const SDLK_KP_CLEARENTRY: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_KP_CLEARENTRY; +pub const SDLK_KP_CLEARENTRY: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_CLEARENTRY; pub const SDLK_KP_BINARY: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_BINARY; pub const SDLK_KP_OCTAL: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_OCTAL; pub const SDLK_KP_DECIMAL: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_DECIMAL; -pub const SDLK_KP_HEXADECIMAL: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_KP_HEXADECIMAL; +pub const SDLK_KP_HEXADECIMAL: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KP_HEXADECIMAL; pub const SDLK_LCTRL: _bindgen_ty_7 = _bindgen_ty_7::SDLK_LCTRL; pub const SDLK_LSHIFT: _bindgen_ty_7 = _bindgen_ty_7::SDLK_LSHIFT; pub const SDLK_LALT: _bindgen_ty_7 = _bindgen_ty_7::SDLK_LALT; @@ -6758,13 +8520,10 @@ pub const SDLK_AC_FORWARD: _bindgen_ty_7 = _bindgen_ty_7::SDLK_AC_FORWARD; pub const SDLK_AC_STOP: _bindgen_ty_7 = _bindgen_ty_7::SDLK_AC_STOP; pub const SDLK_AC_REFRESH: _bindgen_ty_7 = _bindgen_ty_7::SDLK_AC_REFRESH; pub const SDLK_AC_BOOKMARKS: _bindgen_ty_7 = _bindgen_ty_7::SDLK_AC_BOOKMARKS; -pub const SDLK_BRIGHTNESSDOWN: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_BRIGHTNESSDOWN; +pub const SDLK_BRIGHTNESSDOWN: _bindgen_ty_7 = _bindgen_ty_7::SDLK_BRIGHTNESSDOWN; pub const SDLK_BRIGHTNESSUP: _bindgen_ty_7 = _bindgen_ty_7::SDLK_BRIGHTNESSUP; -pub const SDLK_DISPLAYSWITCH: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_DISPLAYSWITCH; -pub const SDLK_KBDILLUMTOGGLE: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_KBDILLUMTOGGLE; +pub const SDLK_DISPLAYSWITCH: _bindgen_ty_7 = _bindgen_ty_7::SDLK_DISPLAYSWITCH; +pub const SDLK_KBDILLUMTOGGLE: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KBDILLUMTOGGLE; pub const SDLK_KBDILLUMDOWN: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KBDILLUMDOWN; pub const SDLK_KBDILLUMUP: _bindgen_ty_7 = _bindgen_ty_7::SDLK_KBDILLUMUP; pub const SDLK_EJECT: _bindgen_ty_7 = _bindgen_ty_7::SDLK_EJECT; @@ -6772,8 +8531,7 @@ pub const SDLK_SLEEP: _bindgen_ty_7 = _bindgen_ty_7::SDLK_SLEEP; pub const SDLK_APP1: _bindgen_ty_7 = _bindgen_ty_7::SDLK_APP1; pub const SDLK_APP2: _bindgen_ty_7 = _bindgen_ty_7::SDLK_APP2; pub const SDLK_AUDIOREWIND: _bindgen_ty_7 = _bindgen_ty_7::SDLK_AUDIOREWIND; -pub const SDLK_AUDIOFASTFORWARD: _bindgen_ty_7 = - _bindgen_ty_7::SDLK_AUDIOFASTFORWARD; +pub const SDLK_AUDIOFASTFORWARD: _bindgen_ty_7 = _bindgen_ty_7::SDLK_AUDIOFASTFORWARD; #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum _bindgen_ty_7 { @@ -7040,7 +8798,7 @@ pub enum SDL_Keymod { /// /// \note If you are looking for translated character input, see the ::SDL_TEXTINPUT event. #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_Keysym { /// < SDL physical key code - see ::SDL_Scancode for details pub scancode: SDL_Scancode, @@ -7052,33 +8810,56 @@ pub struct SDL_Keysym { } #[test] fn bindgen_test_layout_SDL_Keysym() { - assert_eq!(::std::mem::size_of::() , 16usize , concat ! ( - "Size of: " , stringify ! ( SDL_Keysym ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! ( - "Alignment of " , stringify ! ( SDL_Keysym ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Keysym ) ) . scancode as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Keysym ) , "::" , - stringify ! ( scancode ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Keysym ) ) . sym as * const _ as - usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Keysym ) , "::" , - stringify ! ( sym ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Keysym ) ) . mod_ as * const _ as - usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Keysym ) , "::" , - stringify ! ( mod_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Keysym ) ) . unused as * const _ as - usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Keysym ) , "::" , - stringify ! ( unused ) )); -} -impl Clone for SDL_Keysym { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(SDL_Keysym)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_Keysym)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).scancode as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Keysym), + "::", + stringify!(scancode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).sym as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_Keysym), + "::", + stringify!(sym) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).mod_ as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_Keysym), + "::", + stringify!(mod_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).unused as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_Keysym), + "::", + stringify!(unused) + ) + ); } extern "C" { /// \brief Get the window which currently has keyboard focus. @@ -7086,20 +8867,19 @@ extern "C" { } extern "C" { /// \brief Get a snapshot of the current state of the keyboard. -/// -/// \param numkeys if non-NULL, receives the length of the returned array. -/// -/// \return An array of key states. Indexes into this array are obtained by using ::SDL_Scancode values. -/// -/// \b Example: -/// \code -/// const Uint8 *state = SDL_GetKeyboardState(NULL); -/// if ( state[SDL_SCANCODE_RETURN] ) { -/// printf(" is pressed.\n"); -/// } -/// \endcode - pub fn SDL_GetKeyboardState(numkeys: *mut ::std::os::raw::c_int) - -> *const Uint8; + /// + /// \param numkeys if non-NULL, receives the length of the returned array. + /// + /// \return An array of key states. Indexes into this array are obtained by using ::SDL_Scancode values. + /// + /// \b Example: + /// \code + /// const Uint8 *state = SDL_GetKeyboardState(NULL); + /// if ( state[SDL_SCANCODE_RETURN] ) { + /// printf(" is pressed.\n"); + /// } + /// \endcode + pub fn SDL_GetKeyboardState(numkeys: *mut ::std::os::raw::c_int) -> *const Uint8; } extern "C" { /// \brief Get the current key modifier state for the keyboard. @@ -7107,117 +8887,114 @@ extern "C" { } extern "C" { /// \brief Set the current key modifier state for the keyboard. -/// -/// \note This does not change the keyboard state, only the key modifier flags. + /// + /// \note This does not change the keyboard state, only the key modifier flags. pub fn SDL_SetModState(modstate: SDL_Keymod); } extern "C" { /// \brief Get the key code corresponding to the given scancode according -/// to the current keyboard layout. -/// -/// See ::SDL_Keycode for details. -/// -/// \sa SDL_GetKeyName() + /// to the current keyboard layout. + /// + /// See ::SDL_Keycode for details. + /// + /// \sa SDL_GetKeyName() pub fn SDL_GetKeyFromScancode(scancode: SDL_Scancode) -> SDL_Keycode; } extern "C" { /// \brief Get the scancode corresponding to the given key code according to the -/// current keyboard layout. -/// -/// See ::SDL_Scancode for details. -/// -/// \sa SDL_GetScancodeName() + /// current keyboard layout. + /// + /// See ::SDL_Scancode for details. + /// + /// \sa SDL_GetScancodeName() pub fn SDL_GetScancodeFromKey(key: SDL_Keycode) -> SDL_Scancode; } extern "C" { /// \brief Get a human-readable name for a scancode. -/// -/// \return A pointer to the name for the scancode. -/// If the scancode doesn't have a name, this function returns -/// an empty string (""). -/// -/// \sa SDL_Scancode - pub fn SDL_GetScancodeName(scancode: SDL_Scancode) - -> *const ::std::os::raw::c_char; + /// + /// \return A pointer to the name for the scancode. + /// If the scancode doesn't have a name, this function returns + /// an empty string (""). + /// + /// \sa SDL_Scancode + pub fn SDL_GetScancodeName(scancode: SDL_Scancode) -> *const ::std::os::raw::c_char; } extern "C" { /// \brief Get a scancode from a human-readable name -/// -/// \return scancode, or SDL_SCANCODE_UNKNOWN if the name wasn't recognized -/// -/// \sa SDL_Scancode - pub fn SDL_GetScancodeFromName(name: *const ::std::os::raw::c_char) - -> SDL_Scancode; + /// + /// \return scancode, or SDL_SCANCODE_UNKNOWN if the name wasn't recognized + /// + /// \sa SDL_Scancode + pub fn SDL_GetScancodeFromName(name: *const ::std::os::raw::c_char) -> SDL_Scancode; } extern "C" { /// \brief Get a human-readable name for a key. -/// -/// \return A pointer to a UTF-8 string that stays valid at least until the next -/// call to this function. If you need it around any longer, you must -/// copy it. If the key doesn't have a name, this function returns an -/// empty string (""). -/// -/// \sa SDL_Keycode + /// + /// \return A pointer to a UTF-8 string that stays valid at least until the next + /// call to this function. If you need it around any longer, you must + /// copy it. If the key doesn't have a name, this function returns an + /// empty string (""). + /// + /// \sa SDL_Keycode pub fn SDL_GetKeyName(key: SDL_Keycode) -> *const ::std::os::raw::c_char; } extern "C" { /// \brief Get a key code from a human-readable name -/// -/// \return key code, or SDLK_UNKNOWN if the name wasn't recognized -/// -/// \sa SDL_Keycode - pub fn SDL_GetKeyFromName(name: *const ::std::os::raw::c_char) - -> SDL_Keycode; + /// + /// \return key code, or SDLK_UNKNOWN if the name wasn't recognized + /// + /// \sa SDL_Keycode + pub fn SDL_GetKeyFromName(name: *const ::std::os::raw::c_char) -> SDL_Keycode; } extern "C" { /// \brief Start accepting Unicode text input events. -/// This function will show the on-screen keyboard if supported. -/// -/// \sa SDL_StopTextInput() -/// \sa SDL_SetTextInputRect() -/// \sa SDL_HasScreenKeyboardSupport() + /// This function will show the on-screen keyboard if supported. + /// + /// \sa SDL_StopTextInput() + /// \sa SDL_SetTextInputRect() + /// \sa SDL_HasScreenKeyboardSupport() pub fn SDL_StartTextInput(); } extern "C" { /// \brief Return whether or not Unicode text input events are enabled. -/// -/// \sa SDL_StartTextInput() -/// \sa SDL_StopTextInput() + /// + /// \sa SDL_StartTextInput() + /// \sa SDL_StopTextInput() pub fn SDL_IsTextInputActive() -> SDL_bool; } extern "C" { /// \brief Stop receiving any text input events. -/// This function will hide the on-screen keyboard if supported. -/// -/// \sa SDL_StartTextInput() -/// \sa SDL_HasScreenKeyboardSupport() + /// This function will hide the on-screen keyboard if supported. + /// + /// \sa SDL_StartTextInput() + /// \sa SDL_HasScreenKeyboardSupport() pub fn SDL_StopTextInput(); } extern "C" { /// \brief Set the rectangle used to type Unicode text inputs. -/// This is used as a hint for IME and on-screen keyboard placement. -/// -/// \sa SDL_StartTextInput() + /// This is used as a hint for IME and on-screen keyboard placement. + /// + /// \sa SDL_StartTextInput() pub fn SDL_SetTextInputRect(rect: *mut SDL_Rect); } extern "C" { /// \brief Returns whether the platform has some screen keyboard support. -/// -/// \return SDL_TRUE if some keyboard support is available else SDL_FALSE. -/// -/// \note Not all screen keyboard functions are supported on all platforms. -/// -/// \sa SDL_IsScreenKeyboardShown() + /// + /// \return SDL_TRUE if some keyboard support is available else SDL_FALSE. + /// + /// \note Not all screen keyboard functions are supported on all platforms. + /// + /// \sa SDL_IsScreenKeyboardShown() pub fn SDL_HasScreenKeyboardSupport() -> SDL_bool; } extern "C" { /// \brief Returns whether the screen keyboard is shown for given window. -/// -/// \param window The window for which screen keyboard should be queried. -/// -/// \return SDL_TRUE if screen keyboard is shown else SDL_FALSE. -/// -/// \sa SDL_HasScreenKeyboardSupport() + /// + /// \param window The window for which screen keyboard should be queried. + /// + /// \return SDL_TRUE if screen keyboard is shown else SDL_FALSE. + /// + /// \sa SDL_HasScreenKeyboardSupport() pub fn SDL_IsScreenKeyboardShown(window: *mut SDL_Window) -> SDL_bool; } #[repr(C)] @@ -7229,17 +9006,29 @@ pub struct SDL_Cursor { /// \brief Cursor types for SDL_CreateSystemCursor(). #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_SystemCursor { + /// < Arrow SDL_SYSTEM_CURSOR_ARROW = 0, + /// < I-beam SDL_SYSTEM_CURSOR_IBEAM = 1, + /// < Wait SDL_SYSTEM_CURSOR_WAIT = 2, + /// < Crosshair SDL_SYSTEM_CURSOR_CROSSHAIR = 3, + /// < Small wait cursor (or Wait if not available) SDL_SYSTEM_CURSOR_WAITARROW = 4, + /// < Double arrow pointing northwest and southeast SDL_SYSTEM_CURSOR_SIZENWSE = 5, + /// < Double arrow pointing northeast and southwest SDL_SYSTEM_CURSOR_SIZENESW = 6, + /// < Double arrow pointing west and east SDL_SYSTEM_CURSOR_SIZEWE = 7, + /// < Double arrow pointing north and south SDL_SYSTEM_CURSOR_SIZENS = 8, + /// < Four pointed arrow pointing north, south, east, and west SDL_SYSTEM_CURSOR_SIZEALL = 9, + /// < Slashed circle or crossbones SDL_SYSTEM_CURSOR_NO = 10, + /// < Hand SDL_SYSTEM_CURSOR_HAND = 11, SDL_NUM_SYSTEM_CURSORS = 12, } @@ -7247,7 +9036,9 @@ pub enum SDL_SystemCursor { /// \brief Scroll direction types for the Scroll event #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_MouseWheelDirection { + /// < The scroll direction is normal SDL_MOUSEWHEEL_NORMAL = 0, + /// < The scroll direction is flipped / natural SDL_MOUSEWHEEL_FLIPPED = 1, } extern "C" { @@ -7256,162 +9047,174 @@ extern "C" { } extern "C" { /// \brief Retrieve the current state of the mouse. -/// -/// The current button state is returned as a button bitmask, which can -/// be tested using the SDL_BUTTON(X) macros, and x and y are set to the -/// mouse cursor position relative to the focus window for the currently -/// selected mouse. You can pass NULL for either x or y. - pub fn SDL_GetMouseState(x: *mut ::std::os::raw::c_int, - y: *mut ::std::os::raw::c_int) -> Uint32; + /// + /// The current button state is returned as a button bitmask, which can + /// be tested using the SDL_BUTTON(X) macros, and x and y are set to the + /// mouse cursor position relative to the focus window for the currently + /// selected mouse. You can pass NULL for either x or y. + pub fn SDL_GetMouseState( + x: *mut ::std::os::raw::c_int, + y: *mut ::std::os::raw::c_int, + ) -> Uint32; } extern "C" { /// \brief Get the current state of the mouse, in relation to the desktop -/// -/// This works just like SDL_GetMouseState(), but the coordinates will be -/// reported relative to the top-left of the desktop. This can be useful if -/// you need to track the mouse outside of a specific window and -/// SDL_CaptureMouse() doesn't fit your needs. For example, it could be -/// useful if you need to track the mouse while dragging a window, where -/// coordinates relative to a window might not be in sync at all times. -/// -/// \note SDL_GetMouseState() returns the mouse position as SDL understands -/// it from the last pump of the event queue. This function, however, -/// queries the OS for the current mouse position, and as such, might -/// be a slightly less efficient function. Unless you know what you're -/// doing and have a good reason to use this function, you probably want -/// SDL_GetMouseState() instead. -/// -/// \param x Returns the current X coord, relative to the desktop. Can be NULL. -/// \param y Returns the current Y coord, relative to the desktop. Can be NULL. -/// \return The current button state as a bitmask, which can be tested using the SDL_BUTTON(X) macros. -/// -/// \sa SDL_GetMouseState - pub fn SDL_GetGlobalMouseState(x: *mut ::std::os::raw::c_int, - y: *mut ::std::os::raw::c_int) -> Uint32; + /// + /// This works just like SDL_GetMouseState(), but the coordinates will be + /// reported relative to the top-left of the desktop. This can be useful if + /// you need to track the mouse outside of a specific window and + /// SDL_CaptureMouse() doesn't fit your needs. For example, it could be + /// useful if you need to track the mouse while dragging a window, where + /// coordinates relative to a window might not be in sync at all times. + /// + /// \note SDL_GetMouseState() returns the mouse position as SDL understands + /// it from the last pump of the event queue. This function, however, + /// queries the OS for the current mouse position, and as such, might + /// be a slightly less efficient function. Unless you know what you're + /// doing and have a good reason to use this function, you probably want + /// SDL_GetMouseState() instead. + /// + /// \param x Returns the current X coord, relative to the desktop. Can be NULL. + /// \param y Returns the current Y coord, relative to the desktop. Can be NULL. + /// \return The current button state as a bitmask, which can be tested using the SDL_BUTTON(X) macros. + /// + /// \sa SDL_GetMouseState + pub fn SDL_GetGlobalMouseState( + x: *mut ::std::os::raw::c_int, + y: *mut ::std::os::raw::c_int, + ) -> Uint32; } extern "C" { /// \brief Retrieve the relative state of the mouse. -/// -/// The current button state is returned as a button bitmask, which can -/// be tested using the SDL_BUTTON(X) macros, and x and y are set to the -/// mouse deltas since the last call to SDL_GetRelativeMouseState(). - pub fn SDL_GetRelativeMouseState(x: *mut ::std::os::raw::c_int, - y: *mut ::std::os::raw::c_int) -> Uint32; + /// + /// The current button state is returned as a button bitmask, which can + /// be tested using the SDL_BUTTON(X) macros, and x and y are set to the + /// mouse deltas since the last call to SDL_GetRelativeMouseState(). + pub fn SDL_GetRelativeMouseState( + x: *mut ::std::os::raw::c_int, + y: *mut ::std::os::raw::c_int, + ) -> Uint32; } extern "C" { /// \brief Moves the mouse to the given position within the window. -/// -/// \param window The window to move the mouse into, or NULL for the current mouse focus -/// \param x The x coordinate within the window -/// \param y The y coordinate within the window -/// -/// \note This function generates a mouse motion event - pub fn SDL_WarpMouseInWindow(window: *mut SDL_Window, - x: ::std::os::raw::c_int, - y: ::std::os::raw::c_int); + /// + /// \param window The window to move the mouse into, or NULL for the current mouse focus + /// \param x The x coordinate within the window + /// \param y The y coordinate within the window + /// + /// \note This function generates a mouse motion event + pub fn SDL_WarpMouseInWindow( + window: *mut SDL_Window, + x: ::std::os::raw::c_int, + y: ::std::os::raw::c_int, + ); } extern "C" { /// \brief Moves the mouse to the given position in global screen space. -/// -/// \param x The x coordinate -/// \param y The y coordinate -/// \return 0 on success, -1 on error (usually: unsupported by a platform). -/// -/// \note This function generates a mouse motion event - pub fn SDL_WarpMouseGlobal(x: ::std::os::raw::c_int, - y: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param x The x coordinate + /// \param y The y coordinate + /// \return 0 on success, -1 on error (usually: unsupported by a platform). + /// + /// \note This function generates a mouse motion event + pub fn SDL_WarpMouseGlobal( + x: ::std::os::raw::c_int, + y: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set relative mouse mode. -/// -/// \param enabled Whether or not to enable relative mode -/// -/// \return 0 on success, or -1 if relative mode is not supported. -/// -/// While the mouse is in relative mode, the cursor is hidden, and the -/// driver will try to report continuous motion in the current window. -/// Only relative motion events will be delivered, the mouse position -/// will not change. -/// -/// \note This function will flush any pending mouse motion. -/// -/// \sa SDL_GetRelativeMouseMode() - pub fn SDL_SetRelativeMouseMode(enabled: SDL_bool) - -> ::std::os::raw::c_int; + /// + /// \param enabled Whether or not to enable relative mode + /// + /// \return 0 on success, or -1 if relative mode is not supported. + /// + /// While the mouse is in relative mode, the cursor is hidden, and the + /// driver will try to report continuous motion in the current window. + /// Only relative motion events will be delivered, the mouse position + /// will not change. + /// + /// \note This function will flush any pending mouse motion. + /// + /// \sa SDL_GetRelativeMouseMode() + pub fn SDL_SetRelativeMouseMode(enabled: SDL_bool) -> ::std::os::raw::c_int; } extern "C" { /// \brief Capture the mouse, to track input outside an SDL window. -/// -/// \param enabled Whether or not to enable capturing -/// -/// Capturing enables your app to obtain mouse events globally, instead of -/// just within your window. Not all video targets support this function. -/// When capturing is enabled, the current window will get all mouse events, -/// but unlike relative mode, no change is made to the cursor and it is -/// not restrained to your window. -/// -/// This function may also deny mouse input to other windows--both those in -/// your application and others on the system--so you should use this -/// function sparingly, and in small bursts. For example, you might want to -/// track the mouse while the user is dragging something, until the user -/// releases a mouse button. It is not recommended that you capture the mouse -/// for long periods of time, such as the entire time your app is running. -/// -/// While captured, mouse events still report coordinates relative to the -/// current (foreground) window, but those coordinates may be outside the -/// bounds of the window (including negative values). Capturing is only -/// allowed for the foreground window. If the window loses focus while -/// capturing, the capture will be disabled automatically. -/// -/// While capturing is enabled, the current window will have the -/// SDL_WINDOW_MOUSE_CAPTURE flag set. -/// -/// \return 0 on success, or -1 if not supported. + /// + /// \param enabled Whether or not to enable capturing + /// + /// Capturing enables your app to obtain mouse events globally, instead of + /// just within your window. Not all video targets support this function. + /// When capturing is enabled, the current window will get all mouse events, + /// but unlike relative mode, no change is made to the cursor and it is + /// not restrained to your window. + /// + /// This function may also deny mouse input to other windows--both those in + /// your application and others on the system--so you should use this + /// function sparingly, and in small bursts. For example, you might want to + /// track the mouse while the user is dragging something, until the user + /// releases a mouse button. It is not recommended that you capture the mouse + /// for long periods of time, such as the entire time your app is running. + /// + /// While captured, mouse events still report coordinates relative to the + /// current (foreground) window, but those coordinates may be outside the + /// bounds of the window (including negative values). Capturing is only + /// allowed for the foreground window. If the window loses focus while + /// capturing, the capture will be disabled automatically. + /// + /// While capturing is enabled, the current window will have the + /// SDL_WINDOW_MOUSE_CAPTURE flag set. + /// + /// \return 0 on success, or -1 if not supported. pub fn SDL_CaptureMouse(enabled: SDL_bool) -> ::std::os::raw::c_int; } extern "C" { /// \brief Query whether relative mouse mode is enabled. -/// -/// \sa SDL_SetRelativeMouseMode() + /// + /// \sa SDL_SetRelativeMouseMode() pub fn SDL_GetRelativeMouseMode() -> SDL_bool; } extern "C" { /// \brief Create a cursor, using the specified bitmap data and -/// mask (in MSB format). -/// -/// The cursor width must be a multiple of 8 bits. -/// -/// The cursor is created in black and white according to the following: -/// -/// -/// -/// -/// -/// -///
data mask resulting pixel on screen
0 1 White
1 1 Black
0 0 Transparent
1 0 Inverted color if possible, black -/// if not.
-/// -/// \sa SDL_FreeCursor() - pub fn SDL_CreateCursor(data: *const Uint8, mask: *const Uint8, - w: ::std::os::raw::c_int, - h: ::std::os::raw::c_int, - hot_x: ::std::os::raw::c_int, - hot_y: ::std::os::raw::c_int) -> *mut SDL_Cursor; + /// mask (in MSB format). + /// + /// The cursor width must be a multiple of 8 bits. + /// + /// The cursor is created in black and white according to the following: + /// + /// + /// + /// + /// + /// + ///
data mask resulting pixel on screen
0 1 White
1 1 Black
0 0 Transparent
1 0 Inverted color if possible, black + /// if not.
+ /// + /// \sa SDL_FreeCursor() + pub fn SDL_CreateCursor( + data: *const Uint8, + mask: *const Uint8, + w: ::std::os::raw::c_int, + h: ::std::os::raw::c_int, + hot_x: ::std::os::raw::c_int, + hot_y: ::std::os::raw::c_int, + ) -> *mut SDL_Cursor; } extern "C" { /// \brief Create a color cursor. -/// -/// \sa SDL_FreeCursor() - pub fn SDL_CreateColorCursor(surface: *mut SDL_Surface, - hot_x: ::std::os::raw::c_int, - hot_y: ::std::os::raw::c_int) - -> *mut SDL_Cursor; + /// + /// \sa SDL_FreeCursor() + pub fn SDL_CreateColorCursor( + surface: *mut SDL_Surface, + hot_x: ::std::os::raw::c_int, + hot_y: ::std::os::raw::c_int, + ) -> *mut SDL_Cursor; } extern "C" { /// \brief Create a system cursor. -/// -/// \sa SDL_FreeCursor() + /// + /// \sa SDL_FreeCursor() pub fn SDL_CreateSystemCursor(id: SDL_SystemCursor) -> *mut SDL_Cursor; } extern "C" { @@ -7428,22 +9231,22 @@ extern "C" { } extern "C" { /// \brief Frees a cursor created with SDL_CreateCursor() or similar functions. -/// -/// \sa SDL_CreateCursor() -/// \sa SDL_CreateColorCursor() -/// \sa SDL_CreateSystemCursor() + /// + /// \sa SDL_CreateCursor() + /// \sa SDL_CreateColorCursor() + /// \sa SDL_CreateSystemCursor() pub fn SDL_FreeCursor(cursor: *mut SDL_Cursor); } extern "C" { /// \brief Toggle whether or not the cursor is shown. -/// -/// \param toggle 1 to show the cursor, 0 to hide it, -1 to query the current -/// state. -/// -/// \return 1 if the cursor is shown, or 0 if the cursor is hidden. - pub fn SDL_ShowCursor(toggle: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param toggle 1 to show the cursor, 0 to hide it, -1 to query the current + /// state. + /// + /// \return 1 if the cursor is shown, or 0 if the cursor is hidden. + pub fn SDL_ShowCursor(toggle: ::std::os::raw::c_int) -> ::std::os::raw::c_int; } +/// The joystick structure used to identify an SDL joystick #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct _SDL_Joystick { @@ -7451,24 +9254,32 @@ pub struct _SDL_Joystick { } pub type SDL_Joystick = _SDL_Joystick; #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_JoystickGUID { pub data: [Uint8; 16usize], } #[test] fn bindgen_test_layout_SDL_JoystickGUID() { - assert_eq!(::std::mem::size_of::() , 16usize , concat ! - ( "Size of: " , stringify ! ( SDL_JoystickGUID ) )); - assert_eq! (::std::mem::align_of::() , 1usize , concat ! - ( "Alignment of " , stringify ! ( SDL_JoystickGUID ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoystickGUID ) ) . data as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoystickGUID ) , - "::" , stringify ! ( data ) )); -} -impl Clone for SDL_JoystickGUID { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(SDL_JoystickGUID)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(SDL_JoystickGUID)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoystickGUID), + "::", + stringify!(data) + ) + ); } /// This is a unique ID for a joystick for the time it is connected to the system, /// and is never reused for the lifetime of the application. If the joystick is @@ -7507,113 +9318,102 @@ extern "C" { } extern "C" { /// Get the implementation dependent name of a joystick. -/// This can be called before any joysticks are opened. -/// If no name can be found, this function returns NULL. - pub fn SDL_JoystickNameForIndex(device_index: ::std::os::raw::c_int) - -> *const ::std::os::raw::c_char; + /// This can be called before any joysticks are opened. + /// If no name can be found, this function returns NULL. + pub fn SDL_JoystickNameForIndex( + device_index: ::std::os::raw::c_int, + ) -> *const ::std::os::raw::c_char; } extern "C" { /// Return the GUID for the joystick at this index -/// This can be called before any joysticks are opened. - pub fn SDL_JoystickGetDeviceGUID(device_index: ::std::os::raw::c_int) - -> SDL_JoystickGUID; + /// This can be called before any joysticks are opened. + pub fn SDL_JoystickGetDeviceGUID(device_index: ::std::os::raw::c_int) -> SDL_JoystickGUID; } extern "C" { /// Get the USB vendor ID of a joystick, if available. -/// This can be called before any joysticks are opened. -/// If the vendor ID isn't available this function returns 0. - pub fn SDL_JoystickGetDeviceVendor(device_index: ::std::os::raw::c_int) - -> Uint16; + /// This can be called before any joysticks are opened. + /// If the vendor ID isn't available this function returns 0. + pub fn SDL_JoystickGetDeviceVendor(device_index: ::std::os::raw::c_int) -> Uint16; } extern "C" { /// Get the USB product ID of a joystick, if available. -/// This can be called before any joysticks are opened. -/// If the product ID isn't available this function returns 0. - pub fn SDL_JoystickGetDeviceProduct(device_index: ::std::os::raw::c_int) - -> Uint16; + /// This can be called before any joysticks are opened. + /// If the product ID isn't available this function returns 0. + pub fn SDL_JoystickGetDeviceProduct(device_index: ::std::os::raw::c_int) -> Uint16; } extern "C" { /// Get the product version of a joystick, if available. -/// This can be called before any joysticks are opened. -/// If the product version isn't available this function returns 0. - pub fn SDL_JoystickGetDeviceProductVersion(device_index: - ::std::os::raw::c_int) - -> Uint16; + /// This can be called before any joysticks are opened. + /// If the product version isn't available this function returns 0. + pub fn SDL_JoystickGetDeviceProductVersion(device_index: ::std::os::raw::c_int) -> Uint16; } extern "C" { /// Get the type of a joystick, if available. -/// This can be called before any joysticks are opened. - pub fn SDL_JoystickGetDeviceType(device_index: ::std::os::raw::c_int) - -> SDL_JoystickType; + /// This can be called before any joysticks are opened. + pub fn SDL_JoystickGetDeviceType(device_index: ::std::os::raw::c_int) -> SDL_JoystickType; } extern "C" { /// Get the instance ID of a joystick. -/// This can be called before any joysticks are opened. -/// If the index is out of range, this function will return -1. - pub fn SDL_JoystickGetDeviceInstanceID(device_index: - ::std::os::raw::c_int) - -> SDL_JoystickID; + /// This can be called before any joysticks are opened. + /// If the index is out of range, this function will return -1. + pub fn SDL_JoystickGetDeviceInstanceID(device_index: ::std::os::raw::c_int) -> SDL_JoystickID; } extern "C" { /// Open a joystick for use. -/// The index passed as an argument refers to the N'th joystick on the system. -/// This index is not the value which will identify this joystick in future -/// joystick events. The joystick's instance id (::SDL_JoystickID) will be used -/// there instead. -/// -/// \return A joystick identifier, or NULL if an error occurred. - pub fn SDL_JoystickOpen(device_index: ::std::os::raw::c_int) - -> *mut SDL_Joystick; + /// The index passed as an argument refers to the N'th joystick on the system. + /// This index is not the value which will identify this joystick in future + /// joystick events. The joystick's instance id (::SDL_JoystickID) will be used + /// there instead. + /// + /// \return A joystick identifier, or NULL if an error occurred. + pub fn SDL_JoystickOpen(device_index: ::std::os::raw::c_int) -> *mut SDL_Joystick; } extern "C" { /// Return the SDL_Joystick associated with an instance id. - pub fn SDL_JoystickFromInstanceID(joyid: SDL_JoystickID) - -> *mut SDL_Joystick; + pub fn SDL_JoystickFromInstanceID(joyid: SDL_JoystickID) -> *mut SDL_Joystick; } extern "C" { /// Return the name for this currently opened joystick. -/// If no name can be found, this function returns NULL. - pub fn SDL_JoystickName(joystick: *mut SDL_Joystick) - -> *const ::std::os::raw::c_char; + /// If no name can be found, this function returns NULL. + pub fn SDL_JoystickName(joystick: *mut SDL_Joystick) -> *const ::std::os::raw::c_char; } extern "C" { /// Return the GUID for this opened joystick - pub fn SDL_JoystickGetGUID(joystick: *mut SDL_Joystick) - -> SDL_JoystickGUID; + pub fn SDL_JoystickGetGUID(joystick: *mut SDL_Joystick) -> SDL_JoystickGUID; } extern "C" { /// Get the USB vendor ID of an opened joystick, if available. -/// If the vendor ID isn't available this function returns 0. + /// If the vendor ID isn't available this function returns 0. pub fn SDL_JoystickGetVendor(joystick: *mut SDL_Joystick) -> Uint16; } extern "C" { /// Get the USB product ID of an opened joystick, if available. -/// If the product ID isn't available this function returns 0. + /// If the product ID isn't available this function returns 0. pub fn SDL_JoystickGetProduct(joystick: *mut SDL_Joystick) -> Uint16; } extern "C" { /// Get the product version of an opened joystick, if available. -/// If the product version isn't available this function returns 0. - pub fn SDL_JoystickGetProductVersion(joystick: *mut SDL_Joystick) - -> Uint16; + /// If the product version isn't available this function returns 0. + pub fn SDL_JoystickGetProductVersion(joystick: *mut SDL_Joystick) -> Uint16; } extern "C" { /// Get the type of an opened joystick. - pub fn SDL_JoystickGetType(joystick: *mut SDL_Joystick) - -> SDL_JoystickType; + pub fn SDL_JoystickGetType(joystick: *mut SDL_Joystick) -> SDL_JoystickType; } extern "C" { /// Return a string representation for this guid. pszGUID must point to at least 33 bytes -/// (32 for the string plus a NULL terminator). - pub fn SDL_JoystickGetGUIDString(guid: SDL_JoystickGUID, - pszGUID: *mut ::std::os::raw::c_char, - cbGUID: ::std::os::raw::c_int); + /// (32 for the string plus a NULL terminator). + pub fn SDL_JoystickGetGUIDString( + guid: SDL_JoystickGUID, + pszGUID: *mut ::std::os::raw::c_char, + cbGUID: ::std::os::raw::c_int, + ); } extern "C" { /// Convert a string into a joystick guid - pub fn SDL_JoystickGetGUIDFromString(pchGUID: - *const ::std::os::raw::c_char) - -> SDL_JoystickGUID; + pub fn SDL_JoystickGetGUIDFromString( + pchGUID: *const ::std::os::raw::c_char, + ) -> SDL_JoystickGUID; } extern "C" { /// Returns SDL_TRUE if the joystick has been opened and currently connected, or SDL_FALSE if it has not. @@ -7621,107 +9421,104 @@ extern "C" { } extern "C" { /// Get the instance ID of an opened joystick or -1 if the joystick is invalid. - pub fn SDL_JoystickInstanceID(joystick: *mut SDL_Joystick) - -> SDL_JoystickID; + pub fn SDL_JoystickInstanceID(joystick: *mut SDL_Joystick) -> SDL_JoystickID; } extern "C" { /// Get the number of general axis controls on a joystick. - pub fn SDL_JoystickNumAxes(joystick: *mut SDL_Joystick) - -> ::std::os::raw::c_int; + pub fn SDL_JoystickNumAxes(joystick: *mut SDL_Joystick) -> ::std::os::raw::c_int; } extern "C" { /// Get the number of trackballs on a joystick. -/// -/// Joystick trackballs have only relative motion events associated -/// with them and their state cannot be polled. - pub fn SDL_JoystickNumBalls(joystick: *mut SDL_Joystick) - -> ::std::os::raw::c_int; + /// + /// Joystick trackballs have only relative motion events associated + /// with them and their state cannot be polled. + pub fn SDL_JoystickNumBalls(joystick: *mut SDL_Joystick) -> ::std::os::raw::c_int; } extern "C" { /// Get the number of POV hats on a joystick. - pub fn SDL_JoystickNumHats(joystick: *mut SDL_Joystick) - -> ::std::os::raw::c_int; + pub fn SDL_JoystickNumHats(joystick: *mut SDL_Joystick) -> ::std::os::raw::c_int; } extern "C" { /// Get the number of buttons on a joystick. - pub fn SDL_JoystickNumButtons(joystick: *mut SDL_Joystick) - -> ::std::os::raw::c_int; + pub fn SDL_JoystickNumButtons(joystick: *mut SDL_Joystick) -> ::std::os::raw::c_int; } extern "C" { /// Update the current state of the open joysticks. -/// -/// This is called automatically by the event loop if any joystick -/// events are enabled. + /// + /// This is called automatically by the event loop if any joystick + /// events are enabled. pub fn SDL_JoystickUpdate(); } extern "C" { /// Enable/disable joystick event polling. -/// -/// If joystick events are disabled, you must call SDL_JoystickUpdate() -/// yourself and check the state of the joystick when you want joystick -/// information. -/// -/// The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE. - pub fn SDL_JoystickEventState(state: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// If joystick events are disabled, you must call SDL_JoystickUpdate() + /// yourself and check the state of the joystick when you want joystick + /// information. + /// + /// The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE. + pub fn SDL_JoystickEventState(state: ::std::os::raw::c_int) -> ::std::os::raw::c_int; } extern "C" { /// Get the current state of an axis control on a joystick. -/// -/// The state is a value ranging from -32768 to 32767. -/// -/// The axis indices start at index 0. - pub fn SDL_JoystickGetAxis(joystick: *mut SDL_Joystick, - axis: ::std::os::raw::c_int) -> Sint16; + /// + /// The state is a value ranging from -32768 to 32767. + /// + /// The axis indices start at index 0. + pub fn SDL_JoystickGetAxis(joystick: *mut SDL_Joystick, axis: ::std::os::raw::c_int) -> Sint16; } extern "C" { /// Get the initial state of an axis control on a joystick. -/// -/// The state is a value ranging from -32768 to 32767. -/// -/// The axis indices start at index 0. -/// -/// \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not. - pub fn SDL_JoystickGetAxisInitialState(joystick: *mut SDL_Joystick, - axis: ::std::os::raw::c_int, - state: *mut Sint16) -> SDL_bool; + /// + /// The state is a value ranging from -32768 to 32767. + /// + /// The axis indices start at index 0. + /// + /// \return SDL_TRUE if this axis has any initial value, or SDL_FALSE if not. + pub fn SDL_JoystickGetAxisInitialState( + joystick: *mut SDL_Joystick, + axis: ::std::os::raw::c_int, + state: *mut Sint16, + ) -> SDL_bool; } extern "C" { /// Get the current state of a POV hat on a joystick. -/// -/// The hat indices start at index 0. -/// -/// \return The return value is one of the following positions: -/// - ::SDL_HAT_CENTERED -/// - ::SDL_HAT_UP -/// - ::SDL_HAT_RIGHT -/// - ::SDL_HAT_DOWN -/// - ::SDL_HAT_LEFT -/// - ::SDL_HAT_RIGHTUP -/// - ::SDL_HAT_RIGHTDOWN -/// - ::SDL_HAT_LEFTUP -/// - ::SDL_HAT_LEFTDOWN - pub fn SDL_JoystickGetHat(joystick: *mut SDL_Joystick, - hat: ::std::os::raw::c_int) -> Uint8; + /// + /// The hat indices start at index 0. + /// + /// \return The return value is one of the following positions: + /// - ::SDL_HAT_CENTERED + /// - ::SDL_HAT_UP + /// - ::SDL_HAT_RIGHT + /// - ::SDL_HAT_DOWN + /// - ::SDL_HAT_LEFT + /// - ::SDL_HAT_RIGHTUP + /// - ::SDL_HAT_RIGHTDOWN + /// - ::SDL_HAT_LEFTUP + /// - ::SDL_HAT_LEFTDOWN + pub fn SDL_JoystickGetHat(joystick: *mut SDL_Joystick, hat: ::std::os::raw::c_int) -> Uint8; } extern "C" { /// Get the ball axis change since the last poll. -/// -/// \return 0, or -1 if you passed it invalid parameters. -/// -/// The ball indices start at index 0. - pub fn SDL_JoystickGetBall(joystick: *mut SDL_Joystick, - ball: ::std::os::raw::c_int, - dx: *mut ::std::os::raw::c_int, - dy: *mut ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \return 0, or -1 if you passed it invalid parameters. + /// + /// The ball indices start at index 0. + pub fn SDL_JoystickGetBall( + joystick: *mut SDL_Joystick, + ball: ::std::os::raw::c_int, + dx: *mut ::std::os::raw::c_int, + dy: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// Get the current state of a button on a joystick. -/// -/// The button indices start at index 0. - pub fn SDL_JoystickGetButton(joystick: *mut SDL_Joystick, - button: ::std::os::raw::c_int) -> Uint8; + /// + /// The button indices start at index 0. + pub fn SDL_JoystickGetButton( + joystick: *mut SDL_Joystick, + button: ::std::os::raw::c_int, + ) -> Uint8; } extern "C" { /// Close a joystick previously opened with SDL_JoystickOpen(). @@ -7729,9 +9526,9 @@ extern "C" { } extern "C" { /// Return the battery level of this joystick - pub fn SDL_JoystickCurrentPowerLevel(joystick: *mut SDL_Joystick) - -> SDL_JoystickPowerLevel; + pub fn SDL_JoystickCurrentPowerLevel(joystick: *mut SDL_Joystick) -> SDL_JoystickPowerLevel; } +/// The gamecontroller structure used to identify an SDL game controller #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct _SDL_GameController { @@ -7748,13 +9545,13 @@ pub enum SDL_GameControllerBindType { } /// Get the SDL joystick layer binding for this controller button/axis mapping #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub struct SDL_GameControllerButtonBind { pub bindType: SDL_GameControllerBindType, pub value: SDL_GameControllerButtonBind__bindgen_ty_1, } #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub union SDL_GameControllerButtonBind__bindgen_ty_1 { pub button: ::std::os::raw::c_int, pub axis: ::std::os::raw::c_int, @@ -7762,233 +9559,273 @@ pub union SDL_GameControllerButtonBind__bindgen_ty_1 { _bindgen_union_align: [u32; 2usize], } #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1 { pub hat: ::std::os::raw::c_int, pub hat_mask: ::std::os::raw::c_int, } #[test] fn bindgen_test_layout_SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1() { - assert_eq!(::std::mem::size_of::() - , 8usize , concat ! ( - "Size of: " , stringify ! ( - SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1 ) )); - assert_eq! (::std::mem::align_of::() - , 4usize , concat ! ( - "Alignment of " , stringify ! ( - SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1 ) )); - assert_eq! (unsafe { - & ( - * ( - 0 as * const - SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1 ) ) . - hat as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1 ) , - "::" , stringify ! ( hat ) )); - assert_eq! (unsafe { - & ( - * ( - 0 as * const - SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1 ) ) . - hat_mask as * const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1 ) , - "::" , stringify ! ( hat_mask ) )); -} -impl Clone for SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1 { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!( + "Size of: ", + stringify!(SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).hat + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(hat) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())) + .hat_mask as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_GameControllerButtonBind__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(hat_mask) + ) + ); } #[test] fn bindgen_test_layout_SDL_GameControllerButtonBind__bindgen_ty_1() { - assert_eq!(::std::mem::size_of::() - , 8usize , concat ! ( - "Size of: " , stringify ! ( - SDL_GameControllerButtonBind__bindgen_ty_1 ) )); - assert_eq! (::std::mem::align_of::() - , 4usize , concat ! ( - "Alignment of " , stringify ! ( - SDL_GameControllerButtonBind__bindgen_ty_1 ) )); - assert_eq! (unsafe { - & ( - * ( 0 as * const SDL_GameControllerButtonBind__bindgen_ty_1 ) - ) . button as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_GameControllerButtonBind__bindgen_ty_1 ) , "::" , - stringify ! ( button ) )); - assert_eq! (unsafe { - & ( - * ( 0 as * const SDL_GameControllerButtonBind__bindgen_ty_1 ) - ) . axis as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_GameControllerButtonBind__bindgen_ty_1 ) , "::" , - stringify ! ( axis ) )); - assert_eq! (unsafe { - & ( - * ( 0 as * const SDL_GameControllerButtonBind__bindgen_ty_1 ) - ) . hat as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_GameControllerButtonBind__bindgen_ty_1 ) , "::" , - stringify ! ( hat ) )); -} -impl Clone for SDL_GameControllerButtonBind__bindgen_ty_1 { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!( + "Size of: ", + stringify!(SDL_GameControllerButtonBind__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!( + "Alignment of ", + stringify!(SDL_GameControllerButtonBind__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).button + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_GameControllerButtonBind__bindgen_ty_1), + "::", + stringify!(button) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).axis as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_GameControllerButtonBind__bindgen_ty_1), + "::", + stringify!(axis) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).hat as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_GameControllerButtonBind__bindgen_ty_1), + "::", + stringify!(hat) + ) + ); } #[test] fn bindgen_test_layout_SDL_GameControllerButtonBind() { - assert_eq!(::std::mem::size_of::() , 12usize - , concat ! ( - "Size of: " , stringify ! ( SDL_GameControllerButtonBind ) )); - assert_eq! (::std::mem::align_of::() , - 4usize , concat ! ( - "Alignment of " , stringify ! ( SDL_GameControllerButtonBind ) - )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_GameControllerButtonBind ) ) . - bindType as * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_GameControllerButtonBind ) , "::" , stringify ! ( bindType - ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_GameControllerButtonBind ) ) . value - as * const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_GameControllerButtonBind ) , "::" , stringify ! ( value ) - )); -} -impl Clone for SDL_GameControllerButtonBind { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(SDL_GameControllerButtonBind)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_GameControllerButtonBind)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).bindType as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_GameControllerButtonBind), + "::", + stringify!(bindType) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).value as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_GameControllerButtonBind), + "::", + stringify!(value) + ) + ); } extern "C" { /// Load a set of mappings from a seekable SDL data stream (memory or file), filtered by the current SDL_GetPlatform() -/// A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt -/// -/// If \c freerw is non-zero, the stream will be closed after being read. -/// -/// \return number of mappings added, -1 on error - pub fn SDL_GameControllerAddMappingsFromRW(rw: *mut SDL_RWops, - freerw: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// A community sourced database of controllers is available at https://raw.github.com/gabomdq/SDL_GameControllerDB/master/gamecontrollerdb.txt + /// + /// If \c freerw is non-zero, the stream will be closed after being read. + /// + /// \return number of mappings added, -1 on error + pub fn SDL_GameControllerAddMappingsFromRW( + rw: *mut SDL_RWops, + freerw: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// Add or update an existing mapping configuration -/// -/// \return 1 if mapping is added, 0 if updated, -1 on error - pub fn SDL_GameControllerAddMapping(mappingString: - *const ::std::os::raw::c_char) - -> ::std::os::raw::c_int; + /// + /// \return 1 if mapping is added, 0 if updated, -1 on error + pub fn SDL_GameControllerAddMapping( + mappingString: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; } extern "C" { /// Get the number of mappings installed -/// -/// \return the number of mappings + /// + /// \return the number of mappings pub fn SDL_GameControllerNumMappings() -> ::std::os::raw::c_int; } extern "C" { /// Get the mapping at a particular index. -/// -/// \return the mapping string. Must be freed with SDL_free(). Returns NULL if the index is out of range. - pub fn SDL_GameControllerMappingForIndex(mapping_index: - ::std::os::raw::c_int) - -> *mut ::std::os::raw::c_char; + /// + /// \return the mapping string. Must be freed with SDL_free(). Returns NULL if the index is out of range. + pub fn SDL_GameControllerMappingForIndex( + mapping_index: ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; } extern "C" { /// Get a mapping string for a GUID -/// -/// \return the mapping string. Must be freed with SDL_free(). Returns NULL if no mapping is available - pub fn SDL_GameControllerMappingForGUID(guid: SDL_JoystickGUID) - -> *mut ::std::os::raw::c_char; + /// + /// \return the mapping string. Must be freed with SDL_free(). Returns NULL if no mapping is available + pub fn SDL_GameControllerMappingForGUID(guid: SDL_JoystickGUID) -> *mut ::std::os::raw::c_char; } extern "C" { /// Get a mapping string for an open GameController -/// -/// \return the mapping string. Must be freed with SDL_free(). Returns NULL if no mapping is available - pub fn SDL_GameControllerMapping(gamecontroller: *mut SDL_GameController) - -> *mut ::std::os::raw::c_char; + /// + /// \return the mapping string. Must be freed with SDL_free(). Returns NULL if no mapping is available + pub fn SDL_GameControllerMapping( + gamecontroller: *mut SDL_GameController, + ) -> *mut ::std::os::raw::c_char; } extern "C" { /// Is the joystick on this index supported by the game controller interface? - pub fn SDL_IsGameController(joystick_index: ::std::os::raw::c_int) - -> SDL_bool; + pub fn SDL_IsGameController(joystick_index: ::std::os::raw::c_int) -> SDL_bool; } extern "C" { /// Get the implementation dependent name of a game controller. -/// This can be called before any controllers are opened. -/// If no name can be found, this function returns NULL. - pub fn SDL_GameControllerNameForIndex(joystick_index: - ::std::os::raw::c_int) - -> *const ::std::os::raw::c_char; + /// This can be called before any controllers are opened. + /// If no name can be found, this function returns NULL. + pub fn SDL_GameControllerNameForIndex( + joystick_index: ::std::os::raw::c_int, + ) -> *const ::std::os::raw::c_char; } extern "C" { /// Open a game controller for use. -/// The index passed as an argument refers to the N'th game controller on the system. -/// This index is not the value which will identify this controller in future -/// controller events. The joystick's instance id (::SDL_JoystickID) will be -/// used there instead. -/// -/// \return A controller identifier, or NULL if an error occurred. + /// The index passed as an argument refers to the N'th game controller on the system. + /// This index is not the value which will identify this controller in future + /// controller events. The joystick's instance id (::SDL_JoystickID) will be + /// used there instead. + /// + /// \return A controller identifier, or NULL if an error occurred. pub fn SDL_GameControllerOpen(joystick_index: ::std::os::raw::c_int) - -> *mut SDL_GameController; + -> *mut SDL_GameController; } extern "C" { /// Return the SDL_GameController associated with an instance id. - pub fn SDL_GameControllerFromInstanceID(joyid: SDL_JoystickID) - -> *mut SDL_GameController; + pub fn SDL_GameControllerFromInstanceID(joyid: SDL_JoystickID) -> *mut SDL_GameController; } extern "C" { /// Return the name for this currently opened controller - pub fn SDL_GameControllerName(gamecontroller: *mut SDL_GameController) - -> *const ::std::os::raw::c_char; + pub fn SDL_GameControllerName( + gamecontroller: *mut SDL_GameController, + ) -> *const ::std::os::raw::c_char; } extern "C" { /// Get the USB vendor ID of an opened controller, if available. -/// If the vendor ID isn't available this function returns 0. - pub fn SDL_GameControllerGetVendor(gamecontroller: - *mut SDL_GameController) -> Uint16; + /// If the vendor ID isn't available this function returns 0. + pub fn SDL_GameControllerGetVendor(gamecontroller: *mut SDL_GameController) -> Uint16; } extern "C" { /// Get the USB product ID of an opened controller, if available. -/// If the product ID isn't available this function returns 0. - pub fn SDL_GameControllerGetProduct(gamecontroller: - *mut SDL_GameController) - -> Uint16; + /// If the product ID isn't available this function returns 0. + pub fn SDL_GameControllerGetProduct(gamecontroller: *mut SDL_GameController) -> Uint16; } extern "C" { /// Get the product version of an opened controller, if available. -/// If the product version isn't available this function returns 0. - pub fn SDL_GameControllerGetProductVersion(gamecontroller: - *mut SDL_GameController) - -> Uint16; + /// If the product version isn't available this function returns 0. + pub fn SDL_GameControllerGetProductVersion(gamecontroller: *mut SDL_GameController) -> Uint16; } extern "C" { /// Returns SDL_TRUE if the controller has been opened and currently connected, -/// or SDL_FALSE if it has not. - pub fn SDL_GameControllerGetAttached(gamecontroller: - *mut SDL_GameController) - -> SDL_bool; + /// or SDL_FALSE if it has not. + pub fn SDL_GameControllerGetAttached(gamecontroller: *mut SDL_GameController) -> SDL_bool; } extern "C" { /// Get the underlying joystick object used by a controller - pub fn SDL_GameControllerGetJoystick(gamecontroller: - *mut SDL_GameController) - -> *mut SDL_Joystick; + pub fn SDL_GameControllerGetJoystick( + gamecontroller: *mut SDL_GameController, + ) -> *mut SDL_Joystick; } extern "C" { /// Enable/disable controller event polling. -/// -/// If controller events are disabled, you must call SDL_GameControllerUpdate() -/// yourself and check the state of the controller when you want controller -/// information. -/// -/// The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE. - pub fn SDL_GameControllerEventState(state: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// If controller events are disabled, you must call SDL_GameControllerUpdate() + /// yourself and check the state of the controller when you want controller + /// information. + /// + /// The state can be one of ::SDL_QUERY, ::SDL_ENABLE or ::SDL_IGNORE. + pub fn SDL_GameControllerEventState(state: ::std::os::raw::c_int) -> ::std::os::raw::c_int; } extern "C" { /// Update the current state of the open game controllers. -/// -/// This is called automatically by the event loop if any game controller -/// events are enabled. + /// + /// This is called automatically by the event loop if any game controller + /// events are enabled. pub fn SDL_GameControllerUpdate(); } #[repr(i32)] @@ -8012,31 +9849,34 @@ pub enum SDL_GameControllerAxis { } extern "C" { /// turn this string into a axis mapping - pub fn SDL_GameControllerGetAxisFromString(pchString: - *const ::std::os::raw::c_char) - -> SDL_GameControllerAxis; + pub fn SDL_GameControllerGetAxisFromString( + pchString: *const ::std::os::raw::c_char, + ) -> SDL_GameControllerAxis; } extern "C" { /// turn this axis enum into a string mapping - pub fn SDL_GameControllerGetStringForAxis(axis: SDL_GameControllerAxis) - -> *const ::std::os::raw::c_char; + pub fn SDL_GameControllerGetStringForAxis( + axis: SDL_GameControllerAxis, + ) -> *const ::std::os::raw::c_char; } extern "C" { /// Get the SDL joystick layer binding for this controller button mapping - pub fn SDL_GameControllerGetBindForAxis(gamecontroller: - *mut SDL_GameController, - axis: SDL_GameControllerAxis) - -> SDL_GameControllerButtonBind; + pub fn SDL_GameControllerGetBindForAxis( + gamecontroller: *mut SDL_GameController, + axis: SDL_GameControllerAxis, + ) -> SDL_GameControllerButtonBind; } extern "C" { /// Get the current state of an axis control on a game controller. -/// -/// The state is a value ranging from -32768 to 32767 (except for the triggers, -/// which range from 0 to 32767). -/// -/// The axis indices start at index 0. - pub fn SDL_GameControllerGetAxis(gamecontroller: *mut SDL_GameController, - axis: SDL_GameControllerAxis) -> Sint16; + /// + /// The state is a value ranging from -32768 to 32767 (except for the triggers, + /// which range from 0 to 32767). + /// + /// The axis indices start at index 0. + pub fn SDL_GameControllerGetAxis( + gamecontroller: *mut SDL_GameController, + axis: SDL_GameControllerAxis, + ) -> Sint16; } #[repr(i32)] /// The list of buttons available from a controller @@ -8062,32 +9902,31 @@ pub enum SDL_GameControllerButton { } extern "C" { /// turn this string into a button mapping - pub fn SDL_GameControllerGetButtonFromString(pchString: - *const ::std::os::raw::c_char) - -> SDL_GameControllerButton; + pub fn SDL_GameControllerGetButtonFromString( + pchString: *const ::std::os::raw::c_char, + ) -> SDL_GameControllerButton; } extern "C" { /// turn this button enum into a string mapping - pub fn SDL_GameControllerGetStringForButton(button: - SDL_GameControllerButton) - -> *const ::std::os::raw::c_char; + pub fn SDL_GameControllerGetStringForButton( + button: SDL_GameControllerButton, + ) -> *const ::std::os::raw::c_char; } extern "C" { /// Get the SDL joystick layer binding for this controller button mapping - pub fn SDL_GameControllerGetBindForButton(gamecontroller: - *mut SDL_GameController, - button: - SDL_GameControllerButton) - -> SDL_GameControllerButtonBind; + pub fn SDL_GameControllerGetBindForButton( + gamecontroller: *mut SDL_GameController, + button: SDL_GameControllerButton, + ) -> SDL_GameControllerButtonBind; } extern "C" { /// Get the current state of a button on a game controller. -/// -/// The button indices start at index 0. - pub fn SDL_GameControllerGetButton(gamecontroller: - *mut SDL_GameController, - button: SDL_GameControllerButton) - -> Uint8; + /// + /// The button indices start at index 0. + pub fn SDL_GameControllerGetButton( + gamecontroller: *mut SDL_GameController, + button: SDL_GameControllerButton, + ) -> Uint8; } extern "C" { /// Close a controller previously opened with SDL_GameControllerOpen(). @@ -8096,7 +9935,7 @@ extern "C" { pub type SDL_TouchID = Sint64; pub type SDL_FingerID = Sint64; #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_Finger { pub id: SDL_FingerID, pub x: f32, @@ -8105,33 +9944,56 @@ pub struct SDL_Finger { } #[test] fn bindgen_test_layout_SDL_Finger() { - assert_eq!(::std::mem::size_of::() , 24usize , concat ! ( - "Size of: " , stringify ! ( SDL_Finger ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( SDL_Finger ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Finger ) ) . id as * const _ as usize - } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Finger ) , "::" , - stringify ! ( id ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Finger ) ) . x as * const _ as usize - } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Finger ) , "::" , - stringify ! ( x ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Finger ) ) . y as * const _ as usize - } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Finger ) , "::" , - stringify ! ( y ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Finger ) ) . pressure as * const _ as - usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Finger ) , "::" , - stringify ! ( pressure ) )); -} -impl Clone for SDL_Finger { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(SDL_Finger)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_Finger)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).id as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Finger), + "::", + stringify!(id) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_Finger), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_Finger), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).pressure as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_Finger), + "::", + stringify!(pressure) + ) + ); } extern "C" { /// \brief Get the number of registered touch devices. @@ -8143,79 +10005,126 @@ extern "C" { } extern "C" { /// \brief Get the number of active fingers for a given touch device. - pub fn SDL_GetNumTouchFingers(touchID: SDL_TouchID) - -> ::std::os::raw::c_int; + pub fn SDL_GetNumTouchFingers(touchID: SDL_TouchID) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the finger object of the given touch, with the given index. - pub fn SDL_GetTouchFinger(touchID: SDL_TouchID, - index: ::std::os::raw::c_int) - -> *mut SDL_Finger; + pub fn SDL_GetTouchFinger( + touchID: SDL_TouchID, + index: ::std::os::raw::c_int, + ) -> *mut SDL_Finger; } pub type SDL_GestureID = Sint64; extern "C" { /// \brief Begin Recording a gesture on the specified touch, or all touches (-1) -/// -/// + /// + /// pub fn SDL_RecordGesture(touchId: SDL_TouchID) -> ::std::os::raw::c_int; } extern "C" { /// \brief Save all currently loaded Dollar Gesture templates -/// -/// - pub fn SDL_SaveAllDollarTemplates(dst: *mut SDL_RWops) - -> ::std::os::raw::c_int; + /// + /// + pub fn SDL_SaveAllDollarTemplates(dst: *mut SDL_RWops) -> ::std::os::raw::c_int; } extern "C" { /// \brief Save a currently loaded Dollar Gesture template -/// -/// - pub fn SDL_SaveDollarTemplate(gestureId: SDL_GestureID, - dst: *mut SDL_RWops) - -> ::std::os::raw::c_int; + /// + /// + pub fn SDL_SaveDollarTemplate( + gestureId: SDL_GestureID, + dst: *mut SDL_RWops, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Load Dollar Gesture templates from a file -/// -/// - pub fn SDL_LoadDollarTemplates(touchId: SDL_TouchID, src: *mut SDL_RWops) - -> ::std::os::raw::c_int; + /// + /// + pub fn SDL_LoadDollarTemplates( + touchId: SDL_TouchID, + src: *mut SDL_RWops, + ) -> ::std::os::raw::c_int; } #[repr(u32)] /// \brief The types of events that can be delivered. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_EventType { + /// < Unused (do not remove) SDL_FIRSTEVENT = 0, + /// < User-requested quit SDL_QUIT = 256, + /// < The application is being terminated by the OS + /// Called on iOS in applicationWillTerminate() + /// Called on Android in onDestroy() SDL_APP_TERMINATING = 257, + /// < The application is low on memory, free memory if possible. + /// Called on iOS in applicationDidReceiveMemoryWarning() + /// Called on Android in onLowMemory() SDL_APP_LOWMEMORY = 258, + /// < The application is about to enter the background + /// Called on iOS in applicationWillResignActive() + /// Called on Android in onPause() SDL_APP_WILLENTERBACKGROUND = 259, + /// < The application did enter the background and may not get CPU for some time + /// Called on iOS in applicationDidEnterBackground() + /// Called on Android in onPause() SDL_APP_DIDENTERBACKGROUND = 260, + /// < The application is about to enter the foreground + /// Called on iOS in applicationWillEnterForeground() + /// Called on Android in onResume() SDL_APP_WILLENTERFOREGROUND = 261, + /// < The application is now interactive + /// Called on iOS in applicationDidBecomeActive() + /// Called on Android in onResume() SDL_APP_DIDENTERFOREGROUND = 262, + /// < Window state change SDL_WINDOWEVENT = 512, + /// < System specific event SDL_SYSWMEVENT = 513, + /// < Key pressed SDL_KEYDOWN = 768, + /// < Key released SDL_KEYUP = 769, + /// < Keyboard text editing (composition) SDL_TEXTEDITING = 770, + /// < Keyboard text input SDL_TEXTINPUT = 771, + /// < Keymap changed due to a system event such as an + /// input language or keyboard layout change. SDL_KEYMAPCHANGED = 772, + /// < Mouse moved SDL_MOUSEMOTION = 1024, + /// < Mouse button pressed SDL_MOUSEBUTTONDOWN = 1025, + /// < Mouse button released SDL_MOUSEBUTTONUP = 1026, + /// < Mouse wheel motion SDL_MOUSEWHEEL = 1027, + /// < Joystick axis motion SDL_JOYAXISMOTION = 1536, + /// < Joystick trackball motion SDL_JOYBALLMOTION = 1537, + /// < Joystick hat position change SDL_JOYHATMOTION = 1538, + /// < Joystick button pressed SDL_JOYBUTTONDOWN = 1539, + /// < Joystick button released SDL_JOYBUTTONUP = 1540, + /// < A new joystick has been inserted into the system SDL_JOYDEVICEADDED = 1541, + /// < An opened joystick has been removed SDL_JOYDEVICEREMOVED = 1542, + /// < Game controller axis motion SDL_CONTROLLERAXISMOTION = 1616, + /// < Game controller button pressed SDL_CONTROLLERBUTTONDOWN = 1617, + /// < Game controller button released SDL_CONTROLLERBUTTONUP = 1618, + /// < A new Game controller has been inserted into the system SDL_CONTROLLERDEVICEADDED = 1619, + /// < An opened Game controller has been removed SDL_CONTROLLERDEVICEREMOVED = 1620, + /// < The controller mapping was updated SDL_CONTROLLERDEVICEREMAPPED = 1621, SDL_FINGERDOWN = 1792, SDL_FINGERUP = 1793, @@ -8223,21 +10132,33 @@ pub enum SDL_EventType { SDL_DOLLARGESTURE = 2048, SDL_DOLLARRECORD = 2049, SDL_MULTIGESTURE = 2050, + /// < The clipboard changed SDL_CLIPBOARDUPDATE = 2304, + /// < The system requests a file open SDL_DROPFILE = 4096, + /// < text/plain drag-and-drop event SDL_DROPTEXT = 4097, + /// < A new set of drops is beginning (NULL filename) SDL_DROPBEGIN = 4098, + /// < Current set of drops is now complete (NULL filename) SDL_DROPCOMPLETE = 4099, + /// < A new audio device is available SDL_AUDIODEVICEADDED = 4352, + /// < An audio device has been removed. SDL_AUDIODEVICEREMOVED = 4353, + /// < The render targets have been reset and their contents need to be updated SDL_RENDER_TARGETS_RESET = 8192, + /// < The device has been reset and all textures need to be recreated SDL_RENDER_DEVICE_RESET = 8193, + /// Events ::SDL_USEREVENT through ::SDL_LASTEVENT are for your use, + /// and should be allocated with SDL_RegisterEvents() SDL_USEREVENT = 32768, + /// This last event is only for bounding internal arrays SDL_LASTEVENT = 65535, } /// \brief Fields shared by every event #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_CommonEvent { pub type_: Uint32, /// < In milliseconds, populated using SDL_GetTicks() @@ -8245,27 +10166,40 @@ pub struct SDL_CommonEvent { } #[test] fn bindgen_test_layout_SDL_CommonEvent() { - assert_eq!(::std::mem::size_of::() , 8usize , concat ! ( - "Size of: " , stringify ! ( SDL_CommonEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! - ( "Alignment of " , stringify ! ( SDL_CommonEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_CommonEvent ) ) . type_ as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_CommonEvent ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_CommonEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_CommonEvent ) , - "::" , stringify ! ( timestamp ) )); -} -impl Clone for SDL_CommonEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(SDL_CommonEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_CommonEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_CommonEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_CommonEvent), + "::", + stringify!(timestamp) + ) + ); } /// \brief Window state change event data (event.window.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_WindowEvent { /// < ::SDL_WINDOWEVENT pub type_: Uint32, @@ -8285,62 +10219,110 @@ pub struct SDL_WindowEvent { } #[test] fn bindgen_test_layout_SDL_WindowEvent() { - assert_eq!(::std::mem::size_of::() , 24usize , concat ! ( - "Size of: " , stringify ! ( SDL_WindowEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! - ( "Alignment of " , stringify ! ( SDL_WindowEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowEvent ) ) . type_ as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowEvent ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowEvent ) , - "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowEvent ) ) . windowID as * const - _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowEvent ) , - "::" , stringify ! ( windowID ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowEvent ) ) . event as * const _ - as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowEvent ) , - "::" , stringify ! ( event ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowEvent ) ) . padding1 as * const - _ as usize } , 13usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowEvent ) , - "::" , stringify ! ( padding1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowEvent ) ) . padding2 as * const - _ as usize } , 14usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowEvent ) , - "::" , stringify ! ( padding2 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowEvent ) ) . padding3 as * const - _ as usize } , 15usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowEvent ) , - "::" , stringify ! ( padding3 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowEvent ) ) . data1 as * const _ - as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowEvent ) , - "::" , stringify ! ( data1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowEvent ) ) . data2 as * const _ - as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowEvent ) , - "::" , stringify ! ( data2 ) )); -} -impl Clone for SDL_WindowEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(SDL_WindowEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_WindowEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).windowID as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowEvent), + "::", + stringify!(windowID) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).event as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowEvent), + "::", + stringify!(event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding1 as *const _ as usize }, + 13usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowEvent), + "::", + stringify!(padding1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding2 as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowEvent), + "::", + stringify!(padding2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding3 as *const _ as usize }, + 15usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowEvent), + "::", + stringify!(padding3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data1 as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowEvent), + "::", + stringify!(data1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data2 as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowEvent), + "::", + stringify!(data2) + ) + ); } /// \brief Keyboard button event structure (event.key.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_KeyboardEvent { /// < ::SDL_KEYDOWN or ::SDL_KEYUP pub type_: Uint32, @@ -8359,57 +10341,100 @@ pub struct SDL_KeyboardEvent { } #[test] fn bindgen_test_layout_SDL_KeyboardEvent() { - assert_eq!(::std::mem::size_of::() , 32usize , concat ! - ( "Size of: " , stringify ! ( SDL_KeyboardEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat - ! ( "Alignment of " , stringify ! ( SDL_KeyboardEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_KeyboardEvent ) ) . type_ as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_KeyboardEvent ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_KeyboardEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_KeyboardEvent ) , - "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_KeyboardEvent ) ) . windowID as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_KeyboardEvent ) , - "::" , stringify ! ( windowID ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_KeyboardEvent ) ) . state as * const - _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_KeyboardEvent ) , - "::" , stringify ! ( state ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_KeyboardEvent ) ) . repeat as * const - _ as usize } , 13usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_KeyboardEvent ) , - "::" , stringify ! ( repeat ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_KeyboardEvent ) ) . padding2 as * - const _ as usize } , 14usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_KeyboardEvent ) , - "::" , stringify ! ( padding2 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_KeyboardEvent ) ) . padding3 as * - const _ as usize } , 15usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_KeyboardEvent ) , - "::" , stringify ! ( padding3 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_KeyboardEvent ) ) . keysym as * const - _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_KeyboardEvent ) , - "::" , stringify ! ( keysym ) )); -} -impl Clone for SDL_KeyboardEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(SDL_KeyboardEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_KeyboardEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_KeyboardEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_KeyboardEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).windowID as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_KeyboardEvent), + "::", + stringify!(windowID) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_KeyboardEvent), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).repeat as *const _ as usize }, + 13usize, + concat!( + "Offset of field: ", + stringify!(SDL_KeyboardEvent), + "::", + stringify!(repeat) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding2 as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(SDL_KeyboardEvent), + "::", + stringify!(padding2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding3 as *const _ as usize }, + 15usize, + concat!( + "Offset of field: ", + stringify!(SDL_KeyboardEvent), + "::", + stringify!(padding3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).keysym as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_KeyboardEvent), + "::", + stringify!(keysym) + ) + ); } /// \brief Keyboard text editing event structure (event.edit.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_TextEditingEvent { /// < ::SDL_TEXTEDITING pub type_: Uint32, @@ -8426,49 +10451,80 @@ pub struct SDL_TextEditingEvent { } #[test] fn bindgen_test_layout_SDL_TextEditingEvent() { - assert_eq!(::std::mem::size_of::() , 52usize , - concat ! ( "Size of: " , stringify ! ( SDL_TextEditingEvent ) - )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_TextEditingEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TextEditingEvent ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TextEditingEvent ) - , "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TextEditingEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TextEditingEvent ) - , "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TextEditingEvent ) ) . windowID as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TextEditingEvent ) - , "::" , stringify ! ( windowID ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TextEditingEvent ) ) . text as * - const _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TextEditingEvent ) - , "::" , stringify ! ( text ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TextEditingEvent ) ) . start as * - const _ as usize } , 44usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TextEditingEvent ) - , "::" , stringify ! ( start ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TextEditingEvent ) ) . length as * - const _ as usize } , 48usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TextEditingEvent ) - , "::" , stringify ! ( length ) )); -} -impl Clone for SDL_TextEditingEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 52usize, + concat!("Size of: ", stringify!(SDL_TextEditingEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_TextEditingEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_TextEditingEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_TextEditingEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).windowID as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_TextEditingEvent), + "::", + stringify!(windowID) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).text as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_TextEditingEvent), + "::", + stringify!(text) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).start as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(SDL_TextEditingEvent), + "::", + stringify!(start) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).length as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(SDL_TextEditingEvent), + "::", + stringify!(length) + ) + ); } /// \brief Keyboard text input event structure (event.text.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_TextInputEvent { /// < ::SDL_TEXTINPUT pub type_: Uint32, @@ -8481,37 +10537,60 @@ pub struct SDL_TextInputEvent { } #[test] fn bindgen_test_layout_SDL_TextInputEvent() { - assert_eq!(::std::mem::size_of::() , 44usize , concat - ! ( "Size of: " , stringify ! ( SDL_TextInputEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat - ! ( "Alignment of " , stringify ! ( SDL_TextInputEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TextInputEvent ) ) . type_ as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TextInputEvent ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TextInputEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TextInputEvent ) , - "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TextInputEvent ) ) . windowID as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TextInputEvent ) , - "::" , stringify ! ( windowID ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TextInputEvent ) ) . text as * const - _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TextInputEvent ) , - "::" , stringify ! ( text ) )); -} -impl Clone for SDL_TextInputEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 44usize, + concat!("Size of: ", stringify!(SDL_TextInputEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_TextInputEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_TextInputEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_TextInputEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).windowID as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_TextInputEvent), + "::", + stringify!(windowID) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).text as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_TextInputEvent), + "::", + stringify!(text) + ) + ); } /// \brief Mouse motion event structure (event.motion.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_MouseMotionEvent { /// < ::SDL_MOUSEMOTION pub type_: Uint32, @@ -8534,64 +10613,110 @@ pub struct SDL_MouseMotionEvent { } #[test] fn bindgen_test_layout_SDL_MouseMotionEvent() { - assert_eq!(::std::mem::size_of::() , 36usize , - concat ! ( "Size of: " , stringify ! ( SDL_MouseMotionEvent ) - )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_MouseMotionEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseMotionEvent ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseMotionEvent ) - , "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseMotionEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseMotionEvent ) - , "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseMotionEvent ) ) . windowID as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseMotionEvent ) - , "::" , stringify ! ( windowID ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseMotionEvent ) ) . which as * - const _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseMotionEvent ) - , "::" , stringify ! ( which ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseMotionEvent ) ) . state as * - const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseMotionEvent ) - , "::" , stringify ! ( state ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseMotionEvent ) ) . x as * const _ - as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseMotionEvent ) - , "::" , stringify ! ( x ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseMotionEvent ) ) . y as * const _ - as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseMotionEvent ) - , "::" , stringify ! ( y ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseMotionEvent ) ) . xrel as * - const _ as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseMotionEvent ) - , "::" , stringify ! ( xrel ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseMotionEvent ) ) . yrel as * - const _ as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseMotionEvent ) - , "::" , stringify ! ( yrel ) )); -} -impl Clone for SDL_MouseMotionEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 36usize, + concat!("Size of: ", stringify!(SDL_MouseMotionEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_MouseMotionEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseMotionEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseMotionEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).windowID as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseMotionEvent), + "::", + stringify!(windowID) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseMotionEvent), + "::", + stringify!(which) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseMotionEvent), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseMotionEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseMotionEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).xrel as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseMotionEvent), + "::", + stringify!(xrel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).yrel as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseMotionEvent), + "::", + stringify!(yrel) + ) + ); } /// \brief Mouse button event structure (event.button.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_MouseButtonEvent { /// < ::SDL_MOUSEBUTTONDOWN or ::SDL_MOUSEBUTTONUP pub type_: Uint32, @@ -8615,69 +10740,120 @@ pub struct SDL_MouseButtonEvent { } #[test] fn bindgen_test_layout_SDL_MouseButtonEvent() { - assert_eq!(::std::mem::size_of::() , 28usize , - concat ! ( "Size of: " , stringify ! ( SDL_MouseButtonEvent ) - )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_MouseButtonEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseButtonEvent ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseButtonEvent ) - , "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseButtonEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseButtonEvent ) - , "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseButtonEvent ) ) . windowID as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseButtonEvent ) - , "::" , stringify ! ( windowID ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseButtonEvent ) ) . which as * - const _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseButtonEvent ) - , "::" , stringify ! ( which ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseButtonEvent ) ) . button as * - const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseButtonEvent ) - , "::" , stringify ! ( button ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseButtonEvent ) ) . state as * - const _ as usize } , 17usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseButtonEvent ) - , "::" , stringify ! ( state ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseButtonEvent ) ) . clicks as * - const _ as usize } , 18usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseButtonEvent ) - , "::" , stringify ! ( clicks ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseButtonEvent ) ) . padding1 as * - const _ as usize } , 19usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseButtonEvent ) - , "::" , stringify ! ( padding1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseButtonEvent ) ) . x as * const _ - as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseButtonEvent ) - , "::" , stringify ! ( x ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseButtonEvent ) ) . y as * const _ - as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseButtonEvent ) - , "::" , stringify ! ( y ) )); -} -impl Clone for SDL_MouseButtonEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 28usize, + concat!("Size of: ", stringify!(SDL_MouseButtonEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_MouseButtonEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseButtonEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseButtonEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).windowID as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseButtonEvent), + "::", + stringify!(windowID) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseButtonEvent), + "::", + stringify!(which) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).button as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseButtonEvent), + "::", + stringify!(button) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 17usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseButtonEvent), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).clicks as *const _ as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseButtonEvent), + "::", + stringify!(clicks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding1 as *const _ as usize }, + 19usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseButtonEvent), + "::", + stringify!(padding1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseButtonEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseButtonEvent), + "::", + stringify!(y) + ) + ); } /// \brief Mouse wheel event structure (event.wheel.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_MouseWheelEvent { /// < ::SDL_MOUSEWHEEL pub type_: Uint32, @@ -8696,53 +10872,90 @@ pub struct SDL_MouseWheelEvent { } #[test] fn bindgen_test_layout_SDL_MouseWheelEvent() { - assert_eq!(::std::mem::size_of::() , 28usize , concat - ! ( "Size of: " , stringify ! ( SDL_MouseWheelEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_MouseWheelEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseWheelEvent ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseWheelEvent ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseWheelEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseWheelEvent ) , - "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseWheelEvent ) ) . windowID as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseWheelEvent ) , - "::" , stringify ! ( windowID ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseWheelEvent ) ) . which as * - const _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseWheelEvent ) , - "::" , stringify ! ( which ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseWheelEvent ) ) . x as * const _ - as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseWheelEvent ) , - "::" , stringify ! ( x ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseWheelEvent ) ) . y as * const _ - as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseWheelEvent ) , - "::" , stringify ! ( y ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MouseWheelEvent ) ) . direction as * - const _ as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MouseWheelEvent ) , - "::" , stringify ! ( direction ) )); -} -impl Clone for SDL_MouseWheelEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 28usize, + concat!("Size of: ", stringify!(SDL_MouseWheelEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_MouseWheelEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseWheelEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseWheelEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).windowID as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseWheelEvent), + "::", + stringify!(windowID) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseWheelEvent), + "::", + stringify!(which) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseWheelEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseWheelEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).direction as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_MouseWheelEvent), + "::", + stringify!(direction) + ) + ); } /// \brief Joystick axis motion event structure (event.jaxis.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_JoyAxisEvent { /// < ::SDL_JOYAXISMOTION pub type_: Uint32, @@ -8761,62 +10974,110 @@ pub struct SDL_JoyAxisEvent { } #[test] fn bindgen_test_layout_SDL_JoyAxisEvent() { - assert_eq!(::std::mem::size_of::() , 20usize , concat ! - ( "Size of: " , stringify ! ( SDL_JoyAxisEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! - ( "Alignment of " , stringify ! ( SDL_JoyAxisEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyAxisEvent ) ) . type_ as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyAxisEvent ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyAxisEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyAxisEvent ) , - "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyAxisEvent ) ) . which as * const _ - as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyAxisEvent ) , - "::" , stringify ! ( which ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyAxisEvent ) ) . axis as * const _ - as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyAxisEvent ) , - "::" , stringify ! ( axis ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyAxisEvent ) ) . padding1 as * - const _ as usize } , 13usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyAxisEvent ) , - "::" , stringify ! ( padding1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyAxisEvent ) ) . padding2 as * - const _ as usize } , 14usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyAxisEvent ) , - "::" , stringify ! ( padding2 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyAxisEvent ) ) . padding3 as * - const _ as usize } , 15usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyAxisEvent ) , - "::" , stringify ! ( padding3 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyAxisEvent ) ) . value as * const _ - as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyAxisEvent ) , - "::" , stringify ! ( value ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyAxisEvent ) ) . padding4 as * - const _ as usize } , 18usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyAxisEvent ) , - "::" , stringify ! ( padding4 ) )); -} -impl Clone for SDL_JoyAxisEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 20usize, + concat!("Size of: ", stringify!(SDL_JoyAxisEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_JoyAxisEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyAxisEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyAxisEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyAxisEvent), + "::", + stringify!(which) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).axis as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyAxisEvent), + "::", + stringify!(axis) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding1 as *const _ as usize }, + 13usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyAxisEvent), + "::", + stringify!(padding1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding2 as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyAxisEvent), + "::", + stringify!(padding2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding3 as *const _ as usize }, + 15usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyAxisEvent), + "::", + stringify!(padding3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).value as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyAxisEvent), + "::", + stringify!(value) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding4 as *const _ as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyAxisEvent), + "::", + stringify!(padding4) + ) + ); } /// \brief Joystick trackball motion event structure (event.jball.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_JoyBallEvent { /// < ::SDL_JOYBALLMOTION pub type_: Uint32, @@ -8836,62 +11097,110 @@ pub struct SDL_JoyBallEvent { } #[test] fn bindgen_test_layout_SDL_JoyBallEvent() { - assert_eq!(::std::mem::size_of::() , 20usize , concat ! - ( "Size of: " , stringify ! ( SDL_JoyBallEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! - ( "Alignment of " , stringify ! ( SDL_JoyBallEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyBallEvent ) ) . type_ as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyBallEvent ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyBallEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyBallEvent ) , - "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyBallEvent ) ) . which as * const _ - as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyBallEvent ) , - "::" , stringify ! ( which ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyBallEvent ) ) . ball as * const _ - as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyBallEvent ) , - "::" , stringify ! ( ball ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyBallEvent ) ) . padding1 as * - const _ as usize } , 13usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyBallEvent ) , - "::" , stringify ! ( padding1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyBallEvent ) ) . padding2 as * - const _ as usize } , 14usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyBallEvent ) , - "::" , stringify ! ( padding2 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyBallEvent ) ) . padding3 as * - const _ as usize } , 15usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyBallEvent ) , - "::" , stringify ! ( padding3 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyBallEvent ) ) . xrel as * const _ - as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyBallEvent ) , - "::" , stringify ! ( xrel ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyBallEvent ) ) . yrel as * const _ - as usize } , 18usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyBallEvent ) , - "::" , stringify ! ( yrel ) )); -} -impl Clone for SDL_JoyBallEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 20usize, + concat!("Size of: ", stringify!(SDL_JoyBallEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_JoyBallEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyBallEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyBallEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyBallEvent), + "::", + stringify!(which) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ball as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyBallEvent), + "::", + stringify!(ball) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding1 as *const _ as usize }, + 13usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyBallEvent), + "::", + stringify!(padding1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding2 as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyBallEvent), + "::", + stringify!(padding2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding3 as *const _ as usize }, + 15usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyBallEvent), + "::", + stringify!(padding3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).xrel as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyBallEvent), + "::", + stringify!(xrel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).yrel as *const _ as usize }, + 18usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyBallEvent), + "::", + stringify!(yrel) + ) + ); } /// \brief Joystick hat position change event structure (event.jhat.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_JoyHatEvent { /// < ::SDL_JOYHATMOTION pub type_: Uint32, @@ -8913,52 +11222,90 @@ pub struct SDL_JoyHatEvent { } #[test] fn bindgen_test_layout_SDL_JoyHatEvent() { - assert_eq!(::std::mem::size_of::() , 16usize , concat ! ( - "Size of: " , stringify ! ( SDL_JoyHatEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! - ( "Alignment of " , stringify ! ( SDL_JoyHatEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyHatEvent ) ) . type_ as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyHatEvent ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyHatEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyHatEvent ) , - "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyHatEvent ) ) . which as * const _ - as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyHatEvent ) , - "::" , stringify ! ( which ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyHatEvent ) ) . hat as * const _ as - usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyHatEvent ) , - "::" , stringify ! ( hat ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyHatEvent ) ) . value as * const _ - as usize } , 13usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyHatEvent ) , - "::" , stringify ! ( value ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyHatEvent ) ) . padding1 as * const - _ as usize } , 14usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyHatEvent ) , - "::" , stringify ! ( padding1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyHatEvent ) ) . padding2 as * const - _ as usize } , 15usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyHatEvent ) , - "::" , stringify ! ( padding2 ) )); -} -impl Clone for SDL_JoyHatEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(SDL_JoyHatEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_JoyHatEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyHatEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyHatEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyHatEvent), + "::", + stringify!(which) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).hat as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyHatEvent), + "::", + stringify!(hat) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).value as *const _ as usize }, + 13usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyHatEvent), + "::", + stringify!(value) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding1 as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyHatEvent), + "::", + stringify!(padding1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding2 as *const _ as usize }, + 15usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyHatEvent), + "::", + stringify!(padding2) + ) + ); } /// \brief Joystick button event structure (event.jbutton.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_JoyButtonEvent { /// < ::SDL_JOYBUTTONDOWN or ::SDL_JOYBUTTONUP pub type_: Uint32, @@ -8975,52 +11322,90 @@ pub struct SDL_JoyButtonEvent { } #[test] fn bindgen_test_layout_SDL_JoyButtonEvent() { - assert_eq!(::std::mem::size_of::() , 16usize , concat - ! ( "Size of: " , stringify ! ( SDL_JoyButtonEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat - ! ( "Alignment of " , stringify ! ( SDL_JoyButtonEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyButtonEvent ) ) . type_ as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyButtonEvent ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyButtonEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyButtonEvent ) , - "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyButtonEvent ) ) . which as * const - _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyButtonEvent ) , - "::" , stringify ! ( which ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyButtonEvent ) ) . button as * - const _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyButtonEvent ) , - "::" , stringify ! ( button ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyButtonEvent ) ) . state as * const - _ as usize } , 13usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyButtonEvent ) , - "::" , stringify ! ( state ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyButtonEvent ) ) . padding1 as * - const _ as usize } , 14usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyButtonEvent ) , - "::" , stringify ! ( padding1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyButtonEvent ) ) . padding2 as * - const _ as usize } , 15usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyButtonEvent ) , - "::" , stringify ! ( padding2 ) )); -} -impl Clone for SDL_JoyButtonEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(SDL_JoyButtonEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_JoyButtonEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyButtonEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyButtonEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyButtonEvent), + "::", + stringify!(which) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).button as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyButtonEvent), + "::", + stringify!(button) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 13usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyButtonEvent), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding1 as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyButtonEvent), + "::", + stringify!(padding1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding2 as *const _ as usize }, + 15usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyButtonEvent), + "::", + stringify!(padding2) + ) + ); } /// \brief Joystick device event structure (event.jdevice.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_JoyDeviceEvent { /// < ::SDL_JOYDEVICEADDED or ::SDL_JOYDEVICEREMOVED pub type_: Uint32, @@ -9031,32 +11416,50 @@ pub struct SDL_JoyDeviceEvent { } #[test] fn bindgen_test_layout_SDL_JoyDeviceEvent() { - assert_eq!(::std::mem::size_of::() , 12usize , concat - ! ( "Size of: " , stringify ! ( SDL_JoyDeviceEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat - ! ( "Alignment of " , stringify ! ( SDL_JoyDeviceEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyDeviceEvent ) ) . type_ as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyDeviceEvent ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyDeviceEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyDeviceEvent ) , - "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_JoyDeviceEvent ) ) . which as * const - _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_JoyDeviceEvent ) , - "::" , stringify ! ( which ) )); -} -impl Clone for SDL_JoyDeviceEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(SDL_JoyDeviceEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_JoyDeviceEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyDeviceEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyDeviceEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_JoyDeviceEvent), + "::", + stringify!(which) + ) + ); } /// \brief Game controller axis motion event structure (event.caxis.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_ControllerAxisEvent { /// < ::SDL_CONTROLLERAXISMOTION pub type_: Uint32, @@ -9075,64 +11478,120 @@ pub struct SDL_ControllerAxisEvent { } #[test] fn bindgen_test_layout_SDL_ControllerAxisEvent() { - assert_eq!(::std::mem::size_of::() , 20usize , - concat ! ( - "Size of: " , stringify ! ( SDL_ControllerAxisEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_ControllerAxisEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerAxisEvent ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_ControllerAxisEvent - ) , "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerAxisEvent ) ) . timestamp - as * const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_ControllerAxisEvent - ) , "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerAxisEvent ) ) . which as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_ControllerAxisEvent - ) , "::" , stringify ! ( which ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerAxisEvent ) ) . axis as * - const _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_ControllerAxisEvent - ) , "::" , stringify ! ( axis ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerAxisEvent ) ) . padding1 as - * const _ as usize } , 13usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_ControllerAxisEvent - ) , "::" , stringify ! ( padding1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerAxisEvent ) ) . padding2 as - * const _ as usize } , 14usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_ControllerAxisEvent - ) , "::" , stringify ! ( padding2 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerAxisEvent ) ) . padding3 as - * const _ as usize } , 15usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_ControllerAxisEvent - ) , "::" , stringify ! ( padding3 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerAxisEvent ) ) . value as * - const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_ControllerAxisEvent - ) , "::" , stringify ! ( value ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerAxisEvent ) ) . padding4 as - * const _ as usize } , 18usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_ControllerAxisEvent - ) , "::" , stringify ! ( padding4 ) )); -} -impl Clone for SDL_ControllerAxisEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 20usize, + concat!("Size of: ", stringify!(SDL_ControllerAxisEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_ControllerAxisEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerAxisEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).timestamp as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerAxisEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerAxisEvent), + "::", + stringify!(which) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).axis as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerAxisEvent), + "::", + stringify!(axis) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).padding1 as *const _ as usize + }, + 13usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerAxisEvent), + "::", + stringify!(padding1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).padding2 as *const _ as usize + }, + 14usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerAxisEvent), + "::", + stringify!(padding2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).padding3 as *const _ as usize + }, + 15usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerAxisEvent), + "::", + stringify!(padding3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).value as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerAxisEvent), + "::", + stringify!(value) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).padding4 as *const _ as usize + }, + 18usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerAxisEvent), + "::", + stringify!(padding4) + ) + ); } /// \brief Game controller button event structure (event.cbutton.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_ControllerButtonEvent { /// < ::SDL_CONTROLLERBUTTONDOWN or ::SDL_CONTROLLERBUTTONUP pub type_: Uint32, @@ -9149,59 +11608,98 @@ pub struct SDL_ControllerButtonEvent { } #[test] fn bindgen_test_layout_SDL_ControllerButtonEvent() { - assert_eq!(::std::mem::size_of::() , 16usize , - concat ! ( - "Size of: " , stringify ! ( SDL_ControllerButtonEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_ControllerButtonEvent ) - )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerButtonEvent ) ) . type_ as - * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_ControllerButtonEvent ) , "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerButtonEvent ) ) . timestamp - as * const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_ControllerButtonEvent ) , "::" , stringify ! ( timestamp ) - )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerButtonEvent ) ) . which as - * const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_ControllerButtonEvent ) , "::" , stringify ! ( which ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerButtonEvent ) ) . button as - * const _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_ControllerButtonEvent ) , "::" , stringify ! ( button ) - )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerButtonEvent ) ) . state as - * const _ as usize } , 13usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_ControllerButtonEvent ) , "::" , stringify ! ( state ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerButtonEvent ) ) . padding1 - as * const _ as usize } , 14usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_ControllerButtonEvent ) , "::" , stringify ! ( padding1 ) - )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerButtonEvent ) ) . padding2 - as * const _ as usize } , 15usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_ControllerButtonEvent ) , "::" , stringify ! ( padding2 ) - )); -} -impl Clone for SDL_ControllerButtonEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(SDL_ControllerButtonEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_ControllerButtonEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerButtonEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).timestamp as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerButtonEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerButtonEvent), + "::", + stringify!(which) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).button as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerButtonEvent), + "::", + stringify!(button) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 13usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerButtonEvent), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).padding1 as *const _ as usize + }, + 14usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerButtonEvent), + "::", + stringify!(padding1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).padding2 as *const _ as usize + }, + 15usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerButtonEvent), + "::", + stringify!(padding2) + ) + ); } /// \brief Controller device event structure (event.cdevice.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_ControllerDeviceEvent { /// < ::SDL_CONTROLLERDEVICEADDED, ::SDL_CONTROLLERDEVICEREMOVED, or ::SDL_CONTROLLERDEVICEREMAPPED pub type_: Uint32, @@ -9212,36 +11710,52 @@ pub struct SDL_ControllerDeviceEvent { } #[test] fn bindgen_test_layout_SDL_ControllerDeviceEvent() { - assert_eq!(::std::mem::size_of::() , 12usize , - concat ! ( - "Size of: " , stringify ! ( SDL_ControllerDeviceEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_ControllerDeviceEvent ) - )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerDeviceEvent ) ) . type_ as - * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_ControllerDeviceEvent ) , "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerDeviceEvent ) ) . timestamp - as * const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_ControllerDeviceEvent ) , "::" , stringify ! ( timestamp ) - )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_ControllerDeviceEvent ) ) . which as - * const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_ControllerDeviceEvent ) , "::" , stringify ! ( which ) )); -} -impl Clone for SDL_ControllerDeviceEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(SDL_ControllerDeviceEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_ControllerDeviceEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerDeviceEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).timestamp as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerDeviceEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_ControllerDeviceEvent), + "::", + stringify!(which) + ) + ); } /// \brief Audio device event structure (event.adevice.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_AudioDeviceEvent { /// < ::SDL_AUDIODEVICEADDED, or ::SDL_AUDIODEVICEREMOVED pub type_: Uint32, @@ -9257,54 +11771,90 @@ pub struct SDL_AudioDeviceEvent { } #[test] fn bindgen_test_layout_SDL_AudioDeviceEvent() { - assert_eq!(::std::mem::size_of::() , 16usize , - concat ! ( "Size of: " , stringify ! ( SDL_AudioDeviceEvent ) - )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_AudioDeviceEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioDeviceEvent ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioDeviceEvent ) - , "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioDeviceEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioDeviceEvent ) - , "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioDeviceEvent ) ) . which as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioDeviceEvent ) - , "::" , stringify ! ( which ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioDeviceEvent ) ) . iscapture as * - const _ as usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioDeviceEvent ) - , "::" , stringify ! ( iscapture ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioDeviceEvent ) ) . padding1 as * - const _ as usize } , 13usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioDeviceEvent ) - , "::" , stringify ! ( padding1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioDeviceEvent ) ) . padding2 as * - const _ as usize } , 14usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioDeviceEvent ) - , "::" , stringify ! ( padding2 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_AudioDeviceEvent ) ) . padding3 as * - const _ as usize } , 15usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_AudioDeviceEvent ) - , "::" , stringify ! ( padding3 ) )); -} -impl Clone for SDL_AudioDeviceEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(SDL_AudioDeviceEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_AudioDeviceEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioDeviceEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioDeviceEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).which as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioDeviceEvent), + "::", + stringify!(which) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).iscapture as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioDeviceEvent), + "::", + stringify!(iscapture) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding1 as *const _ as usize }, + 13usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioDeviceEvent), + "::", + stringify!(padding1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding2 as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioDeviceEvent), + "::", + stringify!(padding2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding3 as *const _ as usize }, + 15usize, + concat!( + "Offset of field: ", + stringify!(SDL_AudioDeviceEvent), + "::", + stringify!(padding3) + ) + ); } /// \brief Touch finger event structure (event.tfinger.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_TouchFingerEvent { /// < ::SDL_FINGERMOTION or ::SDL_FINGERDOWN or ::SDL_FINGERUP pub type_: Uint32, @@ -9326,64 +11876,110 @@ pub struct SDL_TouchFingerEvent { } #[test] fn bindgen_test_layout_SDL_TouchFingerEvent() { - assert_eq!(::std::mem::size_of::() , 48usize , - concat ! ( "Size of: " , stringify ! ( SDL_TouchFingerEvent ) - )); - assert_eq! (::std::mem::align_of::() , 8usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_TouchFingerEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TouchFingerEvent ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TouchFingerEvent ) - , "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TouchFingerEvent ) ) . timestamp as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TouchFingerEvent ) - , "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TouchFingerEvent ) ) . touchId as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TouchFingerEvent ) - , "::" , stringify ! ( touchId ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TouchFingerEvent ) ) . fingerId as * - const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TouchFingerEvent ) - , "::" , stringify ! ( fingerId ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TouchFingerEvent ) ) . x as * const _ - as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TouchFingerEvent ) - , "::" , stringify ! ( x ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TouchFingerEvent ) ) . y as * const _ - as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TouchFingerEvent ) - , "::" , stringify ! ( y ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TouchFingerEvent ) ) . dx as * const - _ as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TouchFingerEvent ) - , "::" , stringify ! ( dx ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TouchFingerEvent ) ) . dy as * const - _ as usize } , 36usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TouchFingerEvent ) - , "::" , stringify ! ( dy ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_TouchFingerEvent ) ) . pressure as * - const _ as usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_TouchFingerEvent ) - , "::" , stringify ! ( pressure ) )); -} -impl Clone for SDL_TouchFingerEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(SDL_TouchFingerEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_TouchFingerEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_TouchFingerEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_TouchFingerEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).touchId as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_TouchFingerEvent), + "::", + stringify!(touchId) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fingerId as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_TouchFingerEvent), + "::", + stringify!(fingerId) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_TouchFingerEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(SDL_TouchFingerEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).dx as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_TouchFingerEvent), + "::", + stringify!(dx) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).dy as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(SDL_TouchFingerEvent), + "::", + stringify!(dy) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).pressure as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(SDL_TouchFingerEvent), + "::", + stringify!(pressure) + ) + ); } /// \brief Multiple Finger Gesture Event (event.mgesture.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_MultiGestureEvent { /// < ::SDL_MULTIGESTURE pub type_: Uint32, @@ -9400,64 +11996,112 @@ pub struct SDL_MultiGestureEvent { } #[test] fn bindgen_test_layout_SDL_MultiGestureEvent() { - assert_eq!(::std::mem::size_of::() , 40usize , - concat ! ( "Size of: " , stringify ! ( SDL_MultiGestureEvent ) - )); - assert_eq! (::std::mem::align_of::() , 8usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_MultiGestureEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MultiGestureEvent ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MultiGestureEvent ) - , "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MultiGestureEvent ) ) . timestamp as - * const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MultiGestureEvent ) - , "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MultiGestureEvent ) ) . touchId as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MultiGestureEvent ) - , "::" , stringify ! ( touchId ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MultiGestureEvent ) ) . dTheta as * - const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MultiGestureEvent ) - , "::" , stringify ! ( dTheta ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MultiGestureEvent ) ) . dDist as * - const _ as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MultiGestureEvent ) - , "::" , stringify ! ( dDist ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MultiGestureEvent ) ) . x as * const - _ as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MultiGestureEvent ) - , "::" , stringify ! ( x ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MultiGestureEvent ) ) . y as * const - _ as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MultiGestureEvent ) - , "::" , stringify ! ( y ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MultiGestureEvent ) ) . numFingers as - * const _ as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MultiGestureEvent ) - , "::" , stringify ! ( numFingers ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MultiGestureEvent ) ) . padding as * - const _ as usize } , 34usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MultiGestureEvent ) - , "::" , stringify ! ( padding ) )); -} -impl Clone for SDL_MultiGestureEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(SDL_MultiGestureEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_MultiGestureEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_MultiGestureEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_MultiGestureEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).touchId as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_MultiGestureEvent), + "::", + stringify!(touchId) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).dTheta as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_MultiGestureEvent), + "::", + stringify!(dTheta) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).dDist as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_MultiGestureEvent), + "::", + stringify!(dDist) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_MultiGestureEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(SDL_MultiGestureEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).numFingers as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_MultiGestureEvent), + "::", + stringify!(numFingers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding as *const _ as usize }, + 34usize, + concat!( + "Offset of field: ", + stringify!(SDL_MultiGestureEvent), + "::", + stringify!(padding) + ) + ); } /// \brief Dollar Gesture Event (event.dgesture.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_DollarGestureEvent { /// < ::SDL_DOLLARGESTURE or ::SDL_DOLLARRECORD pub type_: Uint32, @@ -9475,61 +12119,108 @@ pub struct SDL_DollarGestureEvent { } #[test] fn bindgen_test_layout_SDL_DollarGestureEvent() { - assert_eq!(::std::mem::size_of::() , 40usize , - concat ! ( "Size of: " , stringify ! ( SDL_DollarGestureEvent ) - )); - assert_eq! (::std::mem::align_of::() , 8usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_DollarGestureEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DollarGestureEvent ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DollarGestureEvent - ) , "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DollarGestureEvent ) ) . timestamp as - * const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DollarGestureEvent - ) , "::" , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DollarGestureEvent ) ) . touchId as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DollarGestureEvent - ) , "::" , stringify ! ( touchId ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DollarGestureEvent ) ) . gestureId as - * const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DollarGestureEvent - ) , "::" , stringify ! ( gestureId ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DollarGestureEvent ) ) . numFingers - as * const _ as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DollarGestureEvent - ) , "::" , stringify ! ( numFingers ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DollarGestureEvent ) ) . error as * - const _ as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DollarGestureEvent - ) , "::" , stringify ! ( error ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DollarGestureEvent ) ) . x as * const - _ as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DollarGestureEvent - ) , "::" , stringify ! ( x ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DollarGestureEvent ) ) . y as * const - _ as usize } , 36usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DollarGestureEvent - ) , "::" , stringify ! ( y ) )); -} -impl Clone for SDL_DollarGestureEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(SDL_DollarGestureEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_DollarGestureEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_DollarGestureEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).timestamp as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_DollarGestureEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).touchId as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_DollarGestureEvent), + "::", + stringify!(touchId) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).gestureId as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_DollarGestureEvent), + "::", + stringify!(gestureId) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).numFingers as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_DollarGestureEvent), + "::", + stringify!(numFingers) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).error as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(SDL_DollarGestureEvent), + "::", + stringify!(error) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_DollarGestureEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(SDL_DollarGestureEvent), + "::", + stringify!(y) + ) + ); } /// \brief An event used to request a file open by the system (event.drop.*) /// This event is enabled by default, you can disable it with SDL_EventState(). /// \note If this event is enabled, you must free the filename in the event. #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_DropEvent { /// < ::SDL_DROPBEGIN or ::SDL_DROPFILE or ::SDL_DROPTEXT or ::SDL_DROPCOMPLETE pub type_: Uint32, @@ -9542,37 +12233,60 @@ pub struct SDL_DropEvent { } #[test] fn bindgen_test_layout_SDL_DropEvent() { - assert_eq!(::std::mem::size_of::() , 24usize , concat ! ( - "Size of: " , stringify ! ( SDL_DropEvent ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( SDL_DropEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DropEvent ) ) . type_ as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DropEvent ) , "::" - , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DropEvent ) ) . timestamp as * const - _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DropEvent ) , "::" - , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DropEvent ) ) . file as * const _ as - usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DropEvent ) , "::" - , stringify ! ( file ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_DropEvent ) ) . windowID as * const _ - as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_DropEvent ) , "::" - , stringify ! ( windowID ) )); -} -impl Clone for SDL_DropEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(SDL_DropEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_DropEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_DropEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_DropEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).file as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_DropEvent), + "::", + stringify!(file) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).windowID as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_DropEvent), + "::", + stringify!(windowID) + ) + ); } /// \brief The "quit requested" event #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_QuitEvent { /// < ::SDL_QUIT pub type_: Uint32, @@ -9581,27 +12295,40 @@ pub struct SDL_QuitEvent { } #[test] fn bindgen_test_layout_SDL_QuitEvent() { - assert_eq!(::std::mem::size_of::() , 8usize , concat ! ( - "Size of: " , stringify ! ( SDL_QuitEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! ( - "Alignment of " , stringify ! ( SDL_QuitEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_QuitEvent ) ) . type_ as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_QuitEvent ) , "::" - , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_QuitEvent ) ) . timestamp as * const - _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_QuitEvent ) , "::" - , stringify ! ( timestamp ) )); -} -impl Clone for SDL_QuitEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(SDL_QuitEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_QuitEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_QuitEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_QuitEvent), + "::", + stringify!(timestamp) + ) + ); } /// \brief OS Specific event #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_OSEvent { /// < ::SDL_QUIT pub type_: Uint32, @@ -9610,27 +12337,40 @@ pub struct SDL_OSEvent { } #[test] fn bindgen_test_layout_SDL_OSEvent() { - assert_eq!(::std::mem::size_of::() , 8usize , concat ! ( - "Size of: " , stringify ! ( SDL_OSEvent ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! ( - "Alignment of " , stringify ! ( SDL_OSEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_OSEvent ) ) . type_ as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_OSEvent ) , "::" , - stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_OSEvent ) ) . timestamp as * const _ - as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_OSEvent ) , "::" , - stringify ! ( timestamp ) )); -} -impl Clone for SDL_OSEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(SDL_OSEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_OSEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_OSEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_OSEvent), + "::", + stringify!(timestamp) + ) + ); } /// \brief A user-defined event type (event.user.*) #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_UserEvent { /// < ::SDL_USEREVENT through ::SDL_LASTEVENT-1 pub type_: Uint32, @@ -9647,55 +12387,83 @@ pub struct SDL_UserEvent { } #[test] fn bindgen_test_layout_SDL_UserEvent() { - assert_eq!(::std::mem::size_of::() , 32usize , concat ! ( - "Size of: " , stringify ! ( SDL_UserEvent ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( SDL_UserEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_UserEvent ) ) . type_ as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_UserEvent ) , "::" - , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_UserEvent ) ) . timestamp as * const - _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_UserEvent ) , "::" - , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_UserEvent ) ) . windowID as * const _ - as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_UserEvent ) , "::" - , stringify ! ( windowID ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_UserEvent ) ) . code as * const _ as - usize } , 12usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_UserEvent ) , "::" - , stringify ! ( code ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_UserEvent ) ) . data1 as * const _ as - usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_UserEvent ) , "::" - , stringify ! ( data1 ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_UserEvent ) ) . data2 as * const _ as - usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_UserEvent ) , "::" - , stringify ! ( data2 ) )); -} -impl Clone for SDL_UserEvent { - fn clone(&self) -> Self { *self } -} -#[repr(C)] -#[derive(Debug, Copy, Clone)] -pub struct SDL_SysWMmsg { - _unused: [u8; 0], + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(SDL_UserEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_UserEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_UserEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_UserEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).windowID as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_UserEvent), + "::", + stringify!(windowID) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).code as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_UserEvent), + "::", + stringify!(code) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data1 as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_UserEvent), + "::", + stringify!(data1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data2 as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_UserEvent), + "::", + stringify!(data2) + ) + ); } /// \brief A video driver dependent system event (event.syswm.*) /// This event is disabled by default, you can enable it with SDL_EventState() /// /// \note If you want to use this event, you should include SDL_syswm.h. #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_SysWMEvent { /// < ::SDL_SYSWMEVENT pub type_: Uint32, @@ -9706,32 +12474,50 @@ pub struct SDL_SysWMEvent { } #[test] fn bindgen_test_layout_SDL_SysWMEvent() { - assert_eq!(::std::mem::size_of::() , 16usize , concat ! ( - "Size of: " , stringify ! ( SDL_SysWMEvent ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( SDL_SysWMEvent ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_SysWMEvent ) ) . type_ as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_SysWMEvent ) , "::" - , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_SysWMEvent ) ) . timestamp as * const - _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_SysWMEvent ) , "::" - , stringify ! ( timestamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_SysWMEvent ) ) . msg as * const _ as - usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_SysWMEvent ) , "::" - , stringify ! ( msg ) )); -} -impl Clone for SDL_SysWMEvent { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(SDL_SysWMEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_SysWMEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).timestamp as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMEvent), + "::", + stringify!(timestamp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).msg as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMEvent), + "::", + stringify!(msg) + ) + ); } /// \brief General event structure #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub union SDL_Event { /// < Event type, shared with all events pub type_: Uint32, @@ -9788,150 +12574,283 @@ pub union SDL_Event { } #[test] fn bindgen_test_layout_SDL_Event() { - assert_eq!(::std::mem::size_of::() , 56usize , concat ! ( - "Size of: " , stringify ! ( SDL_Event ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! ( - "Alignment of " , stringify ! ( SDL_Event ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . type_ as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . common as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( common ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . window as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( window ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . key as * const _ as usize - } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( key ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . edit as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( edit ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . text as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( text ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . motion as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( motion ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . button as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( button ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . wheel as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( wheel ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . jaxis as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( jaxis ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . jball as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( jball ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . jhat as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( jhat ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . jbutton as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( jbutton ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . jdevice as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( jdevice ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . caxis as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( caxis ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . cbutton as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( cbutton ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . cdevice as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( cdevice ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . adevice as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( adevice ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . quit as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( quit ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . user as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( user ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . syswm as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( syswm ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . tfinger as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( tfinger ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . mgesture as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( mgesture ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . dgesture as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( dgesture ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . drop as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( drop ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_Event ) ) . padding as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_Event ) , "::" , - stringify ! ( padding ) )); -} -impl Clone for SDL_Event { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(SDL_Event)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_Event)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).common as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(common) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).key as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(key) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).edit as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(edit) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).text as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(text) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).motion as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(motion) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).button as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(button) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).wheel as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(wheel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).jaxis as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(jaxis) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).jball as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(jball) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).jhat as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(jhat) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).jbutton as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(jbutton) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).jdevice as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(jdevice) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).caxis as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(caxis) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).cbutton as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(cbutton) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).cdevice as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(cdevice) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).adevice as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(adevice) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).quit as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(quit) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).user as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(user) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).syswm as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(syswm) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tfinger as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(tfinger) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).mgesture as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(mgesture) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).dgesture as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(dgesture) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).drop as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(drop) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).padding as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_Event), + "::", + stringify!(padding) + ) + ); } extern "C" { /// Pumps the event loop, gathering events from the input devices. -/// -/// This function updates the event queue and internal input device state. -/// -/// This should only be run in the thread that sets the video mode. + /// + /// This function updates the event queue and internal input device state. + /// + /// This should only be run in the thread that sets the video mode. pub fn SDL_PumpEvents(); } #[repr(u32)] @@ -9943,25 +12862,28 @@ pub enum SDL_eventaction { } extern "C" { /// Checks the event queue for messages and optionally returns them. -/// -/// If \c action is ::SDL_ADDEVENT, up to \c numevents events will be added to -/// the back of the event queue. -/// -/// If \c action is ::SDL_PEEKEVENT, up to \c numevents events at the front -/// of the event queue, within the specified minimum and maximum type, -/// will be returned and will not be removed from the queue. -/// -/// If \c action is ::SDL_GETEVENT, up to \c numevents events at the front -/// of the event queue, within the specified minimum and maximum type, -/// will be returned and will be removed from the queue. -/// -/// \return The number of events actually stored, or -1 if there was an error. -/// -/// This function is thread-safe. - pub fn SDL_PeepEvents(events: *mut SDL_Event, - numevents: ::std::os::raw::c_int, - action: SDL_eventaction, minType: Uint32, - maxType: Uint32) -> ::std::os::raw::c_int; + /// + /// If \c action is ::SDL_ADDEVENT, up to \c numevents events will be added to + /// the back of the event queue. + /// + /// If \c action is ::SDL_PEEKEVENT, up to \c numevents events at the front + /// of the event queue, within the specified minimum and maximum type, + /// will be returned and will not be removed from the queue. + /// + /// If \c action is ::SDL_GETEVENT, up to \c numevents events at the front + /// of the event queue, within the specified minimum and maximum type, + /// will be returned and will be removed from the queue. + /// + /// \return The number of events actually stored, or -1 if there was an error. + /// + /// This function is thread-safe. + pub fn SDL_PeepEvents( + events: *mut SDL_Event, + numevents: ::std::os::raw::c_int, + action: SDL_eventaction, + minType: Uint32, + maxType: Uint32, + ) -> ::std::os::raw::c_int; } extern "C" { /// Checks to see if certain event types are in the event queue. @@ -9972,9 +12894,9 @@ extern "C" { } extern "C" { /// This function clears events from the event queue -/// This function only affects currently queued events. If you want to make -/// sure that all pending OS events are flushed, you can call SDL_PumpEvents() -/// on the main thread immediately before the flush call. + /// This function only affects currently queued events. If you want to make + /// sure that all pending OS events are flushed, you can call SDL_PumpEvents() + /// on the main thread immediately before the flush call. pub fn SDL_FlushEvent(type_: Uint32); } extern "C" { @@ -9982,204 +12904,208 @@ extern "C" { } extern "C" { /// \brief Polls for currently pending events. -/// -/// \return 1 if there are any pending events, or 0 if there are none available. -/// -/// \param event If not NULL, the next event is removed from the queue and -/// stored in that area. + /// + /// \return 1 if there are any pending events, or 0 if there are none available. + /// + /// \param event If not NULL, the next event is removed from the queue and + /// stored in that area. pub fn SDL_PollEvent(event: *mut SDL_Event) -> ::std::os::raw::c_int; } extern "C" { /// \brief Waits indefinitely for the next available event. -/// -/// \return 1, or 0 if there was an error while waiting for events. -/// -/// \param event If not NULL, the next event is removed from the queue and -/// stored in that area. + /// + /// \return 1, or 0 if there was an error while waiting for events. + /// + /// \param event If not NULL, the next event is removed from the queue and + /// stored in that area. pub fn SDL_WaitEvent(event: *mut SDL_Event) -> ::std::os::raw::c_int; } extern "C" { /// \brief Waits until the specified timeout (in milliseconds) for the next -/// available event. -/// -/// \return 1, or 0 if there was an error while waiting for events. -/// -/// \param event If not NULL, the next event is removed from the queue and -/// stored in that area. -/// \param timeout The timeout (in milliseconds) to wait for next event. - pub fn SDL_WaitEventTimeout(event: *mut SDL_Event, - timeout: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// available event. + /// + /// \return 1, or 0 if there was an error while waiting for events. + /// + /// \param event If not NULL, the next event is removed from the queue and + /// stored in that area. + /// \param timeout The timeout (in milliseconds) to wait for next event. + pub fn SDL_WaitEventTimeout( + event: *mut SDL_Event, + timeout: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Add an event to the event queue. -/// -/// \return 1 on success, 0 if the event was filtered, or -1 if the event queue -/// was full or there was some other error. + /// + /// \return 1 on success, 0 if the event was filtered, or -1 if the event queue + /// was full or there was some other error. pub fn SDL_PushEvent(event: *mut SDL_Event) -> ::std::os::raw::c_int; } -pub type SDL_EventFilter = - ::std::option::Option ::std::os::raw::c_int>; +pub type SDL_EventFilter = ::std::option::Option< + unsafe extern "C" fn(userdata: *mut ::std::os::raw::c_void, event: *mut SDL_Event) + -> ::std::os::raw::c_int, +>; extern "C" { /// Sets up a filter to process all events before they change internal state and -/// are posted to the internal event queue. -/// -/// The filter is prototyped as: -/// \code -/// int SDL_EventFilter(void *userdata, SDL_Event * event); -/// \endcode -/// -/// If the filter returns 1, then the event will be added to the internal queue. -/// If it returns 0, then the event will be dropped from the queue, but the -/// internal state will still be updated. This allows selective filtering of -/// dynamically arriving events. -/// -/// \warning Be very careful of what you do in the event filter function, as -/// it may run in a different thread! -/// -/// There is one caveat when dealing with the ::SDL_QuitEvent event type. The -/// event filter is only called when the window manager desires to close the -/// application window. If the event filter returns 1, then the window will -/// be closed, otherwise the window will remain open if possible. -/// -/// If the quit event is generated by an interrupt signal, it will bypass the -/// internal queue and be delivered to the application at the next event poll. - pub fn SDL_SetEventFilter(filter: SDL_EventFilter, - userdata: *mut ::std::os::raw::c_void); + /// are posted to the internal event queue. + /// + /// The filter is prototyped as: + /// \code + /// int SDL_EventFilter(void *userdata, SDL_Event * event); + /// \endcode + /// + /// If the filter returns 1, then the event will be added to the internal queue. + /// If it returns 0, then the event will be dropped from the queue, but the + /// internal state will still be updated. This allows selective filtering of + /// dynamically arriving events. + /// + /// \warning Be very careful of what you do in the event filter function, as + /// it may run in a different thread! + /// + /// There is one caveat when dealing with the ::SDL_QuitEvent event type. The + /// event filter is only called when the window manager desires to close the + /// application window. If the event filter returns 1, then the window will + /// be closed, otherwise the window will remain open if possible. + /// + /// If the quit event is generated by an interrupt signal, it will bypass the + /// internal queue and be delivered to the application at the next event poll. + pub fn SDL_SetEventFilter(filter: SDL_EventFilter, userdata: *mut ::std::os::raw::c_void); } extern "C" { /// Return the current event filter - can be used to "chain" filters. -/// If there is no event filter set, this function returns SDL_FALSE. - pub fn SDL_GetEventFilter(filter: *mut SDL_EventFilter, - userdata: *mut *mut ::std::os::raw::c_void) - -> SDL_bool; + /// If there is no event filter set, this function returns SDL_FALSE. + pub fn SDL_GetEventFilter( + filter: *mut SDL_EventFilter, + userdata: *mut *mut ::std::os::raw::c_void, + ) -> SDL_bool; } extern "C" { /// Add a function which is called when an event is added to the queue. - pub fn SDL_AddEventWatch(filter: SDL_EventFilter, - userdata: *mut ::std::os::raw::c_void); + pub fn SDL_AddEventWatch(filter: SDL_EventFilter, userdata: *mut ::std::os::raw::c_void); } extern "C" { /// Remove an event watch function added with SDL_AddEventWatch() - pub fn SDL_DelEventWatch(filter: SDL_EventFilter, - userdata: *mut ::std::os::raw::c_void); + pub fn SDL_DelEventWatch(filter: SDL_EventFilter, userdata: *mut ::std::os::raw::c_void); } extern "C" { /// Run the filter function on the current event queue, removing any -/// events for which the filter returns 0. - pub fn SDL_FilterEvents(filter: SDL_EventFilter, - userdata: *mut ::std::os::raw::c_void); + /// events for which the filter returns 0. + pub fn SDL_FilterEvents(filter: SDL_EventFilter, userdata: *mut ::std::os::raw::c_void); } extern "C" { /// This function allows you to set the state of processing certain events. -/// - If \c state is set to ::SDL_IGNORE, that event will be automatically -/// dropped from the event queue and will not be filtered. -/// - If \c state is set to ::SDL_ENABLE, that event will be processed -/// normally. -/// - If \c state is set to ::SDL_QUERY, SDL_EventState() will return the -/// current processing state of the specified event. - pub fn SDL_EventState(type_: Uint32, state: ::std::os::raw::c_int) - -> Uint8; + /// - If \c state is set to ::SDL_IGNORE, that event will be automatically + /// dropped from the event queue and will not be filtered. + /// - If \c state is set to ::SDL_ENABLE, that event will be processed + /// normally. + /// - If \c state is set to ::SDL_QUERY, SDL_EventState() will return the + /// current processing state of the specified event. + pub fn SDL_EventState(type_: Uint32, state: ::std::os::raw::c_int) -> Uint8; } extern "C" { /// This function allocates a set of user-defined events, and returns -/// the beginning event number for that set of events. -/// -/// If there aren't enough user-defined events left, this function -/// returns (Uint32)-1 + /// the beginning event number for that set of events. + /// + /// If there aren't enough user-defined events left, this function + /// returns (Uint32)-1 pub fn SDL_RegisterEvents(numevents: ::std::os::raw::c_int) -> Uint32; } extern "C" { /// \brief Get the path where the application resides. -/// -/// Get the "base path". This is the directory where the application was run -/// from, which is probably the installation directory, and may or may not -/// be the process's current working directory. -/// -/// This returns an absolute path in UTF-8 encoding, and is guaranteed to -/// end with a path separator ('\\' on Windows, '/' most other places). -/// -/// The pointer returned by this function is owned by you. Please call -/// SDL_free() on the pointer when you are done with it, or it will be a -/// memory leak. This is not necessarily a fast call, though, so you should -/// call this once near startup and save the string if you need it. -/// -/// Some platforms can't determine the application's path, and on other -/// platforms, this might be meaningless. In such cases, this function will -/// return NULL. -/// -/// \return String of base dir in UTF-8 encoding, or NULL on error. -/// -/// \sa SDL_GetPrefPath + /// + /// Get the "base path". This is the directory where the application was run + /// from, which is probably the installation directory, and may or may not + /// be the process's current working directory. + /// + /// This returns an absolute path in UTF-8 encoding, and is guaranteed to + /// end with a path separator ('\\' on Windows, '/' most other places). + /// + /// The pointer returned by this function is owned by you. Please call + /// SDL_free() on the pointer when you are done with it, or it will be a + /// memory leak. This is not necessarily a fast call, though, so you should + /// call this once near startup and save the string if you need it. + /// + /// Some platforms can't determine the application's path, and on other + /// platforms, this might be meaningless. In such cases, this function will + /// return NULL. + /// + /// \return String of base dir in UTF-8 encoding, or NULL on error. + /// + /// \sa SDL_GetPrefPath pub fn SDL_GetBasePath() -> *mut ::std::os::raw::c_char; } extern "C" { /// \brief Get the user-and-app-specific path where files can be written. + /// + /// Get the "pref dir". This is meant to be where users can write personal + /// files (preferences and save games, etc) that are specific to your + /// application. This directory is unique per user, per application. + /// + /// This function will decide the appropriate location in the native filesystem, + /// create the directory if necessary, and return a string of the absolute + /// path to the directory in UTF-8 encoding. + /// + /// On Windows, the string might look like: + /// "C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\" + /// + /// On Linux, the string might look like: + /// "/home/bob/.local/share/My Program Name/" + /// + /// On Mac OS X, the string might look like: + /// "/Users/bob/Library/Application Support/My Program Name/" + /// + /// (etc.) + /// + /// You specify the name of your organization (if it's not a real organization, + /// your name or an Internet domain you own might do) and the name of your + /// application. These should be untranslated proper names. + /// + /// Both the org and app strings may become part of a directory name, so + /// please follow these rules: + /// + /// - Try to use the same org string (including case-sensitivity) for + /// all your applications that use this function. + /// - Always use a unique app string for each one, and make sure it never + /// changes for an app once you've decided on it. + /// - Unicode characters are legal, as long as it's UTF-8 encoded, but... + /// - ...only use letters, numbers, and spaces. Avoid punctuation like + /// "Game Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient. + /// + /// This returns an absolute path in UTF-8 encoding, and is guaranteed to + /// end with a path separator ('\\' on Windows, '/' most other places). + /// + /// The pointer returned by this function is owned by you. Please call + /// SDL_free() on the pointer when you are done with it, or it will be a + /// memory leak. This is not necessarily a fast call, though, so you should + /// call this once near startup and save the string if you need it. + /// + /// You should assume the path returned by this function is the only safe + /// place to write files (and that SDL_GetBasePath(), while it might be + /// writable, or even the parent of the returned path, aren't where you + /// should be writing things). + /// + /// Some platforms can't determine the pref path, and on other + /// platforms, this might be meaningless. In such cases, this function will + /// return NULL. + /// + /// \param org The name of your organization. + /// \param app The name of your application. + /// \return UTF-8 string of user dir in platform-dependent notation. NULL + /// if there's a problem (creating directory failed, etc). + /// + /// \sa SDL_GetBasePath + pub fn SDL_GetPrefPath( + org: *const ::std::os::raw::c_char, + app: *const ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +/// \typedef SDL_Haptic /// -/// Get the "pref dir". This is meant to be where users can write personal -/// files (preferences and save games, etc) that are specific to your -/// application. This directory is unique per user, per application. -/// -/// This function will decide the appropriate location in the native filesystem, -/// create the directory if necessary, and return a string of the absolute -/// path to the directory in UTF-8 encoding. -/// -/// On Windows, the string might look like: -/// "C:\\Users\\bob\\AppData\\Roaming\\My Company\\My Program Name\\" -/// -/// On Linux, the string might look like: -/// "/home/bob/.local/share/My Program Name/" -/// -/// On Mac OS X, the string might look like: -/// "/Users/bob/Library/Application Support/My Program Name/" -/// -/// (etc.) -/// -/// You specify the name of your organization (if it's not a real organization, -/// your name or an Internet domain you own might do) and the name of your -/// application. These should be untranslated proper names. -/// -/// Both the org and app strings may become part of a directory name, so -/// please follow these rules: -/// -/// - Try to use the same org string (including case-sensitivity) for -/// all your applications that use this function. -/// - Always use a unique app string for each one, and make sure it never -/// changes for an app once you've decided on it. -/// - Unicode characters are legal, as long as it's UTF-8 encoded, but... -/// - ...only use letters, numbers, and spaces. Avoid punctuation like -/// "Game Name 2: Bad Guy's Revenge!" ... "Game Name 2" is sufficient. -/// -/// This returns an absolute path in UTF-8 encoding, and is guaranteed to -/// end with a path separator ('\\' on Windows, '/' most other places). -/// -/// The pointer returned by this function is owned by you. Please call -/// SDL_free() on the pointer when you are done with it, or it will be a -/// memory leak. This is not necessarily a fast call, though, so you should -/// call this once near startup and save the string if you need it. -/// -/// You should assume the path returned by this function is the only safe -/// place to write files (and that SDL_GetBasePath(), while it might be -/// writable, or even the parent of the returned path, aren't where you -/// should be writing things). -/// -/// Some platforms can't determine the pref path, and on other -/// platforms, this might be meaningless. In such cases, this function will -/// return NULL. -/// -/// \param org The name of your organization. -/// \param app The name of your application. -/// \return UTF-8 string of user dir in platform-dependent notation. NULL -/// if there's a problem (creating directory failed, etc). +/// \brief The haptic structure used to identify an SDL haptic. /// -/// \sa SDL_GetBasePath - pub fn SDL_GetPrefPath(org: *const ::std::os::raw::c_char, - app: *const ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_char; -} +/// \sa SDL_HapticOpen +/// \sa SDL_HapticOpenFromJoystick +/// \sa SDL_HapticClose #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct _SDL_Haptic { @@ -10280,7 +13206,7 @@ pub type SDL_Haptic = _SDL_Haptic; /// \sa SDL_HapticEffect /// \sa SDL_HapticNumAxes #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_HapticDirection { /// < The type of encoding. pub type_: Uint8, @@ -10289,24 +13215,36 @@ pub struct SDL_HapticDirection { } #[test] fn bindgen_test_layout_SDL_HapticDirection() { - assert_eq!(::std::mem::size_of::() , 16usize , concat - ! ( "Size of: " , stringify ! ( SDL_HapticDirection ) )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_HapticDirection ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticDirection ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticDirection ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticDirection ) ) . dir as * const - _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticDirection ) , - "::" , stringify ! ( dir ) )); -} -impl Clone for SDL_HapticDirection { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(SDL_HapticDirection)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_HapticDirection)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticDirection), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).dir as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticDirection), + "::", + stringify!(dir) + ) + ); } /// \brief A structure containing a template for a Constant effect. /// @@ -10318,7 +13256,7 @@ impl Clone for SDL_HapticDirection { /// \sa SDL_HAPTIC_CONSTANT /// \sa SDL_HapticEffect #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_HapticConstant { /// < ::SDL_HAPTIC_CONSTANT pub type_: Uint16, @@ -10345,68 +13283,128 @@ pub struct SDL_HapticConstant { } #[test] fn bindgen_test_layout_SDL_HapticConstant() { - assert_eq!(::std::mem::size_of::() , 40usize , concat - ! ( "Size of: " , stringify ! ( SDL_HapticConstant ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat - ! ( "Alignment of " , stringify ! ( SDL_HapticConstant ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticConstant ) ) . type_ as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticConstant ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticConstant ) ) . direction as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticConstant ) , - "::" , stringify ! ( direction ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticConstant ) ) . length as * - const _ as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticConstant ) , - "::" , stringify ! ( length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticConstant ) ) . delay as * const - _ as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticConstant ) , - "::" , stringify ! ( delay ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticConstant ) ) . button as * - const _ as usize } , 26usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticConstant ) , - "::" , stringify ! ( button ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticConstant ) ) . interval as * - const _ as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticConstant ) , - "::" , stringify ! ( interval ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticConstant ) ) . level as * const - _ as usize } , 30usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticConstant ) , - "::" , stringify ! ( level ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticConstant ) ) . attack_length as - * const _ as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticConstant ) , - "::" , stringify ! ( attack_length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticConstant ) ) . attack_level as - * const _ as usize } , 34usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticConstant ) , - "::" , stringify ! ( attack_level ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticConstant ) ) . fade_length as * - const _ as usize } , 36usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticConstant ) , - "::" , stringify ! ( fade_length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticConstant ) ) . fade_level as * - const _ as usize } , 38usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticConstant ) , - "::" , stringify ! ( fade_level ) )); -} -impl Clone for SDL_HapticConstant { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(SDL_HapticConstant)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_HapticConstant)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticConstant), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).direction as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticConstant), + "::", + stringify!(direction) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).length as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticConstant), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).delay as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticConstant), + "::", + stringify!(delay) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).button as *const _ as usize }, + 26usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticConstant), + "::", + stringify!(button) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).interval as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticConstant), + "::", + stringify!(interval) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).level as *const _ as usize }, + 30usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticConstant), + "::", + stringify!(level) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).attack_length as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticConstant), + "::", + stringify!(attack_length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).attack_level as *const _ as usize }, + 34usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticConstant), + "::", + stringify!(attack_level) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fade_length as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticConstant), + "::", + stringify!(fade_length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fade_level as *const _ as usize }, + 38usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticConstant), + "::", + stringify!(fade_level) + ) + ); } /// \brief A structure containing a template for a Periodic effect. /// @@ -10464,7 +13462,7 @@ impl Clone for SDL_HapticConstant { /// \sa SDL_HAPTIC_SAWTOOTHDOWN /// \sa SDL_HapticEffect #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_HapticPeriodic { /// < ::SDL_HAPTIC_SINE, ::SDL_HAPTIC_LEFTRIGHT, /// ::SDL_HAPTIC_TRIANGLE, ::SDL_HAPTIC_SAWTOOTHUP or @@ -10499,83 +13497,158 @@ pub struct SDL_HapticPeriodic { } #[test] fn bindgen_test_layout_SDL_HapticPeriodic() { - assert_eq!(::std::mem::size_of::() , 48usize , concat - ! ( "Size of: " , stringify ! ( SDL_HapticPeriodic ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat - ! ( "Alignment of " , stringify ! ( SDL_HapticPeriodic ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . type_ as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . direction as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( direction ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . length as * - const _ as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . delay as * const - _ as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( delay ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . button as * - const _ as usize } , 26usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( button ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . interval as * - const _ as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( interval ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . period as * - const _ as usize } , 30usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( period ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . magnitude as * - const _ as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( magnitude ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . offset as * - const _ as usize } , 34usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( offset ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . phase as * const - _ as usize } , 36usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( phase ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . attack_length as - * const _ as usize } , 38usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( attack_length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . attack_level as - * const _ as usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( attack_level ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . fade_length as * - const _ as usize } , 42usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( fade_length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticPeriodic ) ) . fade_level as * - const _ as usize } , 44usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticPeriodic ) , - "::" , stringify ! ( fade_level ) )); -} -impl Clone for SDL_HapticPeriodic { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(SDL_HapticPeriodic)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_HapticPeriodic)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).direction as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(direction) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).length as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).delay as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(delay) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).button as *const _ as usize }, + 26usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(button) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).interval as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(interval) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).period as *const _ as usize }, + 30usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(period) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).magnitude as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(magnitude) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).offset as *const _ as usize }, + 34usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).phase as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(phase) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).attack_length as *const _ as usize + }, + 38usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(attack_length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).attack_level as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(attack_level) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fade_length as *const _ as usize }, + 42usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(fade_length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fade_level as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticPeriodic), + "::", + stringify!(fade_level) + ) + ); } /// \brief A structure containing a template for a Condition effect. /// @@ -10600,7 +13673,7 @@ impl Clone for SDL_HapticPeriodic { /// \sa SDL_HAPTIC_FRICTION /// \sa SDL_HapticEffect #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_HapticCondition { /// < ::SDL_HAPTIC_SPRING, ::SDL_HAPTIC_DAMPER, /// ::SDL_HAPTIC_INERTIA or ::SDL_HAPTIC_FRICTION @@ -10630,74 +13703,136 @@ pub struct SDL_HapticCondition { } #[test] fn bindgen_test_layout_SDL_HapticCondition() { - assert_eq!(::std::mem::size_of::() , 68usize , concat - ! ( "Size of: " , stringify ! ( SDL_HapticCondition ) )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_HapticCondition ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . direction as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( direction ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . length as * - const _ as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . delay as * - const _ as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( delay ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . button as * - const _ as usize } , 26usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( button ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . interval as * - const _ as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( interval ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . right_sat as * - const _ as usize } , 30usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( right_sat ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . left_sat as * - const _ as usize } , 36usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( left_sat ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . right_coeff as - * const _ as usize } , 42usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( right_coeff ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . left_coeff as * - const _ as usize } , 48usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( left_coeff ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . deadband as * - const _ as usize } , 54usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( deadband ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCondition ) ) . center as * - const _ as usize } , 60usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCondition ) , - "::" , stringify ! ( center ) )); -} -impl Clone for SDL_HapticCondition { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 68usize, + concat!("Size of: ", stringify!(SDL_HapticCondition)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_HapticCondition)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).direction as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(direction) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).length as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).delay as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(delay) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).button as *const _ as usize }, + 26usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(button) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).interval as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(interval) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).right_sat as *const _ as usize }, + 30usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(right_sat) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).left_sat as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(left_sat) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).right_coeff as *const _ as usize }, + 42usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(right_coeff) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).left_coeff as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(left_coeff) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).deadband as *const _ as usize }, + 54usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(deadband) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).center as *const _ as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCondition), + "::", + stringify!(center) + ) + ); } /// \brief A structure containing a template for a Ramp effect. /// @@ -10711,7 +13846,7 @@ impl Clone for SDL_HapticCondition { /// \sa SDL_HAPTIC_RAMP /// \sa SDL_HapticEffect #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_HapticRamp { /// < ::SDL_HAPTIC_RAMP pub type_: Uint16, @@ -10740,73 +13875,136 @@ pub struct SDL_HapticRamp { } #[test] fn bindgen_test_layout_SDL_HapticRamp() { - assert_eq!(::std::mem::size_of::() , 44usize , concat ! ( - "Size of: " , stringify ! ( SDL_HapticRamp ) )); - assert_eq! (::std::mem::align_of::() , 4usize , concat ! ( - "Alignment of " , stringify ! ( SDL_HapticRamp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . type_ as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . direction as * const - _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( direction ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . length as * const _ - as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . delay as * const _ - as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( delay ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . button as * const _ - as usize } , 26usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( button ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . interval as * const - _ as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( interval ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . start as * const _ - as usize } , 30usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( start ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . end as * const _ as - usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( end ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . attack_length as * - const _ as usize } , 34usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( attack_length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . attack_level as * - const _ as usize } , 36usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( attack_level ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . fade_length as * - const _ as usize } , 38usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( fade_length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticRamp ) ) . fade_level as * - const _ as usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticRamp ) , "::" - , stringify ! ( fade_level ) )); -} -impl Clone for SDL_HapticRamp { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 44usize, + concat!("Size of: ", stringify!(SDL_HapticRamp)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_HapticRamp)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).direction as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(direction) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).length as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).delay as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(delay) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).button as *const _ as usize }, + 26usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(button) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).interval as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(interval) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).start as *const _ as usize }, + 30usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(start) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).end as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(end) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).attack_length as *const _ as usize }, + 34usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(attack_length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).attack_level as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(attack_level) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fade_length as *const _ as usize }, + 38usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(fade_length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fade_level as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticRamp), + "::", + stringify!(fade_level) + ) + ); } /// \brief A structure containing a template for a Left/Right effect. /// @@ -10819,7 +14017,7 @@ impl Clone for SDL_HapticRamp { /// \sa SDL_HAPTIC_LEFTRIGHT /// \sa SDL_HapticEffect #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_HapticLeftRight { /// < ::SDL_HAPTIC_LEFTRIGHT pub type_: Uint16, @@ -10832,34 +14030,60 @@ pub struct SDL_HapticLeftRight { } #[test] fn bindgen_test_layout_SDL_HapticLeftRight() { - assert_eq!(::std::mem::size_of::() , 12usize , concat - ! ( "Size of: " , stringify ! ( SDL_HapticLeftRight ) )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_HapticLeftRight ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticLeftRight ) ) . type_ as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticLeftRight ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticLeftRight ) ) . length as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticLeftRight ) , - "::" , stringify ! ( length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticLeftRight ) ) . large_magnitude - as * const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticLeftRight ) , - "::" , stringify ! ( large_magnitude ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticLeftRight ) ) . small_magnitude - as * const _ as usize } , 10usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticLeftRight ) , - "::" , stringify ! ( small_magnitude ) )); -} -impl Clone for SDL_HapticLeftRight { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(SDL_HapticLeftRight)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_HapticLeftRight)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticLeftRight), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).length as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticLeftRight), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).large_magnitude as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticLeftRight), + "::", + stringify!(large_magnitude) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).small_magnitude as *const _ as usize + }, + 10usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticLeftRight), + "::", + stringify!(small_magnitude) + ) + ); } /// \brief A structure containing a template for the ::SDL_HAPTIC_CUSTOM effect. /// @@ -10875,7 +14099,7 @@ impl Clone for SDL_HapticLeftRight { /// \sa SDL_HAPTIC_CUSTOM /// \sa SDL_HapticEffect #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_HapticCustom { /// < ::SDL_HAPTIC_CUSTOM pub type_: Uint16, @@ -10908,83 +14132,156 @@ pub struct SDL_HapticCustom { } #[test] fn bindgen_test_layout_SDL_HapticCustom() { - assert_eq!(::std::mem::size_of::() , 56usize , concat ! - ( "Size of: " , stringify ! ( SDL_HapticCustom ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! - ( "Alignment of " , stringify ! ( SDL_HapticCustom ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . type_ as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . direction as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( direction ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . length as * const - _ as usize } , 20usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . delay as * const _ - as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( delay ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . button as * const - _ as usize } , 26usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( button ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . interval as * - const _ as usize } , 28usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( interval ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . channels as * - const _ as usize } , 30usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( channels ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . period as * const - _ as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( period ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . samples as * const - _ as usize } , 34usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( samples ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . data as * const _ - as usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( data ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . attack_length as * - const _ as usize } , 48usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( attack_length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . attack_level as * - const _ as usize } , 50usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( attack_level ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . fade_length as * - const _ as usize } , 52usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( fade_length ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticCustom ) ) . fade_level as * - const _ as usize } , 54usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticCustom ) , - "::" , stringify ! ( fade_level ) )); -} -impl Clone for SDL_HapticCustom { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(SDL_HapticCustom)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_HapticCustom)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).direction as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(direction) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).length as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).delay as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(delay) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).button as *const _ as usize }, + 26usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(button) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).interval as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(interval) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).channels as *const _ as usize }, + 30usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(channels) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).period as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(period) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).samples as *const _ as usize }, + 34usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(samples) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).attack_length as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(attack_length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).attack_level as *const _ as usize }, + 50usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(attack_level) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fade_length as *const _ as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(fade_length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fade_level as *const _ as usize }, + 54usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticCustom), + "::", + stringify!(fade_level) + ) + ); } /// \brief The generic template for any haptic effect. /// @@ -11054,7 +14351,7 @@ impl Clone for SDL_HapticCustom { /// \sa SDL_HapticLeftRight /// \sa SDL_HapticCustom #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub union SDL_HapticEffect { /// < Effect type. pub type_: Uint16, @@ -11074,453 +14371,489 @@ pub union SDL_HapticEffect { } #[test] fn bindgen_test_layout_SDL_HapticEffect() { - assert_eq!(::std::mem::size_of::() , 72usize , concat ! - ( "Size of: " , stringify ! ( SDL_HapticEffect ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! - ( "Alignment of " , stringify ! ( SDL_HapticEffect ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticEffect ) ) . type_ as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticEffect ) , - "::" , stringify ! ( type_ ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticEffect ) ) . constant as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticEffect ) , - "::" , stringify ! ( constant ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticEffect ) ) . periodic as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticEffect ) , - "::" , stringify ! ( periodic ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticEffect ) ) . condition as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticEffect ) , - "::" , stringify ! ( condition ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticEffect ) ) . ramp as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticEffect ) , - "::" , stringify ! ( ramp ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticEffect ) ) . leftright as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticEffect ) , - "::" , stringify ! ( leftright ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_HapticEffect ) ) . custom as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_HapticEffect ) , - "::" , stringify ! ( custom ) )); -} -impl Clone for SDL_HapticEffect { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!("Size of: ", stringify!(SDL_HapticEffect)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_HapticEffect)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticEffect), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).constant as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticEffect), + "::", + stringify!(constant) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).periodic as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticEffect), + "::", + stringify!(periodic) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).condition as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticEffect), + "::", + stringify!(condition) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ramp as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticEffect), + "::", + stringify!(ramp) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).leftright as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticEffect), + "::", + stringify!(leftright) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).custom as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_HapticEffect), + "::", + stringify!(custom) + ) + ); } extern "C" { /// \brief Count the number of haptic devices attached to the system. -/// -/// \return Number of haptic devices detected on the system. + /// + /// \return Number of haptic devices detected on the system. pub fn SDL_NumHaptics() -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the implementation dependent name of a haptic device. -/// -/// This can be called before any joysticks are opened. -/// If no name can be found, this function returns NULL. -/// -/// \param device_index Index of the device to get its name. -/// \return Name of the device or NULL on error. -/// -/// \sa SDL_NumHaptics - pub fn SDL_HapticName(device_index: ::std::os::raw::c_int) - -> *const ::std::os::raw::c_char; + /// + /// This can be called before any joysticks are opened. + /// If no name can be found, this function returns NULL. + /// + /// \param device_index Index of the device to get its name. + /// \return Name of the device or NULL on error. + /// + /// \sa SDL_NumHaptics + pub fn SDL_HapticName(device_index: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char; } extern "C" { /// \brief Opens a haptic device for use. -/// -/// The index passed as an argument refers to the N'th haptic device on this -/// system. -/// -/// When opening a haptic device, its gain will be set to maximum and -/// autocenter will be disabled. To modify these values use -/// SDL_HapticSetGain() and SDL_HapticSetAutocenter(). -/// -/// \param device_index Index of the device to open. -/// \return Device identifier or NULL on error. -/// -/// \sa SDL_HapticIndex -/// \sa SDL_HapticOpenFromMouse -/// \sa SDL_HapticOpenFromJoystick -/// \sa SDL_HapticClose -/// \sa SDL_HapticSetGain -/// \sa SDL_HapticSetAutocenter -/// \sa SDL_HapticPause -/// \sa SDL_HapticStopAll - pub fn SDL_HapticOpen(device_index: ::std::os::raw::c_int) - -> *mut SDL_Haptic; + /// + /// The index passed as an argument refers to the N'th haptic device on this + /// system. + /// + /// When opening a haptic device, its gain will be set to maximum and + /// autocenter will be disabled. To modify these values use + /// SDL_HapticSetGain() and SDL_HapticSetAutocenter(). + /// + /// \param device_index Index of the device to open. + /// \return Device identifier or NULL on error. + /// + /// \sa SDL_HapticIndex + /// \sa SDL_HapticOpenFromMouse + /// \sa SDL_HapticOpenFromJoystick + /// \sa SDL_HapticClose + /// \sa SDL_HapticSetGain + /// \sa SDL_HapticSetAutocenter + /// \sa SDL_HapticPause + /// \sa SDL_HapticStopAll + pub fn SDL_HapticOpen(device_index: ::std::os::raw::c_int) -> *mut SDL_Haptic; } extern "C" { /// \brief Checks if the haptic device at index has been opened. -/// -/// \param device_index Index to check to see if it has been opened. -/// \return 1 if it has been opened or 0 if it hasn't. -/// -/// \sa SDL_HapticOpen -/// \sa SDL_HapticIndex - pub fn SDL_HapticOpened(device_index: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param device_index Index to check to see if it has been opened. + /// \return 1 if it has been opened or 0 if it hasn't. + /// + /// \sa SDL_HapticOpen + /// \sa SDL_HapticIndex + pub fn SDL_HapticOpened(device_index: ::std::os::raw::c_int) -> ::std::os::raw::c_int; } extern "C" { /// \brief Gets the index of a haptic device. -/// -/// \param haptic Haptic device to get the index of. -/// \return The index of the haptic device or -1 on error. -/// -/// \sa SDL_HapticOpen -/// \sa SDL_HapticOpened + /// + /// \param haptic Haptic device to get the index of. + /// \return The index of the haptic device or -1 on error. + /// + /// \sa SDL_HapticOpen + /// \sa SDL_HapticOpened pub fn SDL_HapticIndex(haptic: *mut SDL_Haptic) -> ::std::os::raw::c_int; } extern "C" { /// \brief Gets whether or not the current mouse has haptic capabilities. -/// -/// \return SDL_TRUE if the mouse is haptic, SDL_FALSE if it isn't. -/// -/// \sa SDL_HapticOpenFromMouse + /// + /// \return SDL_TRUE if the mouse is haptic, SDL_FALSE if it isn't. + /// + /// \sa SDL_HapticOpenFromMouse pub fn SDL_MouseIsHaptic() -> ::std::os::raw::c_int; } extern "C" { /// \brief Tries to open a haptic device from the current mouse. -/// -/// \return The haptic device identifier or NULL on error. -/// -/// \sa SDL_MouseIsHaptic -/// \sa SDL_HapticOpen + /// + /// \return The haptic device identifier or NULL on error. + /// + /// \sa SDL_MouseIsHaptic + /// \sa SDL_HapticOpen pub fn SDL_HapticOpenFromMouse() -> *mut SDL_Haptic; } extern "C" { /// \brief Checks to see if a joystick has haptic features. -/// -/// \param joystick Joystick to test for haptic capabilities. -/// \return SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't -/// or -1 if an error occurred. -/// -/// \sa SDL_HapticOpenFromJoystick - pub fn SDL_JoystickIsHaptic(joystick: *mut SDL_Joystick) - -> ::std::os::raw::c_int; + /// + /// \param joystick Joystick to test for haptic capabilities. + /// \return SDL_TRUE if the joystick is haptic, SDL_FALSE if it isn't + /// or -1 if an error occurred. + /// + /// \sa SDL_HapticOpenFromJoystick + pub fn SDL_JoystickIsHaptic(joystick: *mut SDL_Joystick) -> ::std::os::raw::c_int; } extern "C" { /// \brief Opens a haptic device for use from a joystick device. -/// -/// You must still close the haptic device separately. It will not be closed -/// with the joystick. -/// -/// When opening from a joystick you should first close the haptic device before -/// closing the joystick device. If not, on some implementations the haptic -/// device will also get unallocated and you'll be unable to use force feedback -/// on that device. -/// -/// \param joystick Joystick to create a haptic device from. -/// \return A valid haptic device identifier on success or NULL on error. -/// -/// \sa SDL_HapticOpen -/// \sa SDL_HapticClose - pub fn SDL_HapticOpenFromJoystick(joystick: *mut SDL_Joystick) - -> *mut SDL_Haptic; + /// + /// You must still close the haptic device separately. It will not be closed + /// with the joystick. + /// + /// When opening from a joystick you should first close the haptic device before + /// closing the joystick device. If not, on some implementations the haptic + /// device will also get unallocated and you'll be unable to use force feedback + /// on that device. + /// + /// \param joystick Joystick to create a haptic device from. + /// \return A valid haptic device identifier on success or NULL on error. + /// + /// \sa SDL_HapticOpen + /// \sa SDL_HapticClose + pub fn SDL_HapticOpenFromJoystick(joystick: *mut SDL_Joystick) -> *mut SDL_Haptic; } extern "C" { /// \brief Closes a haptic device previously opened with SDL_HapticOpen(). -/// -/// \param haptic Haptic device to close. + /// + /// \param haptic Haptic device to close. pub fn SDL_HapticClose(haptic: *mut SDL_Haptic); } extern "C" { /// \brief Returns the number of effects a haptic device can store. -/// -/// On some platforms this isn't fully supported, and therefore is an -/// approximation. Always check to see if your created effect was actually -/// created and do not rely solely on SDL_HapticNumEffects(). -/// -/// \param haptic The haptic device to query effect max. -/// \return The number of effects the haptic device can store or -/// -1 on error. -/// -/// \sa SDL_HapticNumEffectsPlaying -/// \sa SDL_HapticQuery - pub fn SDL_HapticNumEffects(haptic: *mut SDL_Haptic) - -> ::std::os::raw::c_int; + /// + /// On some platforms this isn't fully supported, and therefore is an + /// approximation. Always check to see if your created effect was actually + /// created and do not rely solely on SDL_HapticNumEffects(). + /// + /// \param haptic The haptic device to query effect max. + /// \return The number of effects the haptic device can store or + /// -1 on error. + /// + /// \sa SDL_HapticNumEffectsPlaying + /// \sa SDL_HapticQuery + pub fn SDL_HapticNumEffects(haptic: *mut SDL_Haptic) -> ::std::os::raw::c_int; } extern "C" { /// \brief Returns the number of effects a haptic device can play at the same -/// time. -/// -/// This is not supported on all platforms, but will always return a value. -/// Added here for the sake of completeness. -/// -/// \param haptic The haptic device to query maximum playing effects. -/// \return The number of effects the haptic device can play at the same time -/// or -1 on error. -/// -/// \sa SDL_HapticNumEffects -/// \sa SDL_HapticQuery - pub fn SDL_HapticNumEffectsPlaying(haptic: *mut SDL_Haptic) - -> ::std::os::raw::c_int; + /// time. + /// + /// This is not supported on all platforms, but will always return a value. + /// Added here for the sake of completeness. + /// + /// \param haptic The haptic device to query maximum playing effects. + /// \return The number of effects the haptic device can play at the same time + /// or -1 on error. + /// + /// \sa SDL_HapticNumEffects + /// \sa SDL_HapticQuery + pub fn SDL_HapticNumEffectsPlaying(haptic: *mut SDL_Haptic) -> ::std::os::raw::c_int; } extern "C" { /// \brief Gets the haptic device's supported features in bitwise manner. -/// -/// Example: -/// \code -/// if (SDL_HapticQuery(haptic) & SDL_HAPTIC_CONSTANT) { -/// printf("We have constant haptic effect!\n"); -/// } -/// \endcode -/// -/// \param haptic The haptic device to query. -/// \return Haptic features in bitwise manner (OR'd). -/// -/// \sa SDL_HapticNumEffects -/// \sa SDL_HapticEffectSupported + /// + /// Example: + /// \code + /// if (SDL_HapticQuery(haptic) & SDL_HAPTIC_CONSTANT) { + /// printf("We have constant haptic effect!\n"); + /// } + /// \endcode + /// + /// \param haptic The haptic device to query. + /// \return Haptic features in bitwise manner (OR'd). + /// + /// \sa SDL_HapticNumEffects + /// \sa SDL_HapticEffectSupported pub fn SDL_HapticQuery(haptic: *mut SDL_Haptic) -> ::std::os::raw::c_uint; } extern "C" { /// \brief Gets the number of haptic axes the device has. -/// -/// \sa SDL_HapticDirection - pub fn SDL_HapticNumAxes(haptic: *mut SDL_Haptic) - -> ::std::os::raw::c_int; + /// + /// \sa SDL_HapticDirection + pub fn SDL_HapticNumAxes(haptic: *mut SDL_Haptic) -> ::std::os::raw::c_int; } extern "C" { /// \brief Checks to see if effect is supported by haptic. -/// -/// \param haptic Haptic device to check on. -/// \param effect Effect to check to see if it is supported. -/// \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error. -/// -/// \sa SDL_HapticQuery -/// \sa SDL_HapticNewEffect - pub fn SDL_HapticEffectSupported(haptic: *mut SDL_Haptic, - effect: *mut SDL_HapticEffect) - -> ::std::os::raw::c_int; + /// + /// \param haptic Haptic device to check on. + /// \param effect Effect to check to see if it is supported. + /// \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error. + /// + /// \sa SDL_HapticQuery + /// \sa SDL_HapticNewEffect + pub fn SDL_HapticEffectSupported( + haptic: *mut SDL_Haptic, + effect: *mut SDL_HapticEffect, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Creates a new haptic effect on the device. -/// -/// \param haptic Haptic device to create the effect on. -/// \param effect Properties of the effect to create. -/// \return The identifier of the effect on success or -1 on error. -/// -/// \sa SDL_HapticUpdateEffect -/// \sa SDL_HapticRunEffect -/// \sa SDL_HapticDestroyEffect - pub fn SDL_HapticNewEffect(haptic: *mut SDL_Haptic, - effect: *mut SDL_HapticEffect) - -> ::std::os::raw::c_int; + /// + /// \param haptic Haptic device to create the effect on. + /// \param effect Properties of the effect to create. + /// \return The identifier of the effect on success or -1 on error. + /// + /// \sa SDL_HapticUpdateEffect + /// \sa SDL_HapticRunEffect + /// \sa SDL_HapticDestroyEffect + pub fn SDL_HapticNewEffect( + haptic: *mut SDL_Haptic, + effect: *mut SDL_HapticEffect, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Updates the properties of an effect. -/// -/// Can be used dynamically, although behavior when dynamically changing -/// direction may be strange. Specifically the effect may reupload itself -/// and start playing from the start. You cannot change the type either when -/// running SDL_HapticUpdateEffect(). -/// -/// \param haptic Haptic device that has the effect. -/// \param effect Identifier of the effect to update. -/// \param data New effect properties to use. -/// \return 0 on success or -1 on error. -/// -/// \sa SDL_HapticNewEffect -/// \sa SDL_HapticRunEffect -/// \sa SDL_HapticDestroyEffect - pub fn SDL_HapticUpdateEffect(haptic: *mut SDL_Haptic, - effect: ::std::os::raw::c_int, - data: *mut SDL_HapticEffect) - -> ::std::os::raw::c_int; + /// + /// Can be used dynamically, although behavior when dynamically changing + /// direction may be strange. Specifically the effect may reupload itself + /// and start playing from the start. You cannot change the type either when + /// running SDL_HapticUpdateEffect(). + /// + /// \param haptic Haptic device that has the effect. + /// \param effect Identifier of the effect to update. + /// \param data New effect properties to use. + /// \return 0 on success or -1 on error. + /// + /// \sa SDL_HapticNewEffect + /// \sa SDL_HapticRunEffect + /// \sa SDL_HapticDestroyEffect + pub fn SDL_HapticUpdateEffect( + haptic: *mut SDL_Haptic, + effect: ::std::os::raw::c_int, + data: *mut SDL_HapticEffect, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Runs the haptic effect on its associated haptic device. -/// -/// If iterations are ::SDL_HAPTIC_INFINITY, it'll run the effect over and over -/// repeating the envelope (attack and fade) every time. If you only want the -/// effect to last forever, set ::SDL_HAPTIC_INFINITY in the effect's length -/// parameter. -/// -/// \param haptic Haptic device to run the effect on. -/// \param effect Identifier of the haptic effect to run. -/// \param iterations Number of iterations to run the effect. Use -/// ::SDL_HAPTIC_INFINITY for infinity. -/// \return 0 on success or -1 on error. -/// -/// \sa SDL_HapticStopEffect -/// \sa SDL_HapticDestroyEffect -/// \sa SDL_HapticGetEffectStatus - pub fn SDL_HapticRunEffect(haptic: *mut SDL_Haptic, - effect: ::std::os::raw::c_int, - iterations: Uint32) -> ::std::os::raw::c_int; + /// + /// If iterations are ::SDL_HAPTIC_INFINITY, it'll run the effect over and over + /// repeating the envelope (attack and fade) every time. If you only want the + /// effect to last forever, set ::SDL_HAPTIC_INFINITY in the effect's length + /// parameter. + /// + /// \param haptic Haptic device to run the effect on. + /// \param effect Identifier of the haptic effect to run. + /// \param iterations Number of iterations to run the effect. Use + /// ::SDL_HAPTIC_INFINITY for infinity. + /// \return 0 on success or -1 on error. + /// + /// \sa SDL_HapticStopEffect + /// \sa SDL_HapticDestroyEffect + /// \sa SDL_HapticGetEffectStatus + pub fn SDL_HapticRunEffect( + haptic: *mut SDL_Haptic, + effect: ::std::os::raw::c_int, + iterations: Uint32, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Stops the haptic effect on its associated haptic device. -/// -/// \param haptic Haptic device to stop the effect on. -/// \param effect Identifier of the effect to stop. -/// \return 0 on success or -1 on error. -/// -/// \sa SDL_HapticRunEffect -/// \sa SDL_HapticDestroyEffect - pub fn SDL_HapticStopEffect(haptic: *mut SDL_Haptic, - effect: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param haptic Haptic device to stop the effect on. + /// \param effect Identifier of the effect to stop. + /// \return 0 on success or -1 on error. + /// + /// \sa SDL_HapticRunEffect + /// \sa SDL_HapticDestroyEffect + pub fn SDL_HapticStopEffect( + haptic: *mut SDL_Haptic, + effect: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Destroys a haptic effect on the device. -/// -/// This will stop the effect if it's running. Effects are automatically -/// destroyed when the device is closed. -/// -/// \param haptic Device to destroy the effect on. -/// \param effect Identifier of the effect to destroy. -/// -/// \sa SDL_HapticNewEffect - pub fn SDL_HapticDestroyEffect(haptic: *mut SDL_Haptic, - effect: ::std::os::raw::c_int); + /// + /// This will stop the effect if it's running. Effects are automatically + /// destroyed when the device is closed. + /// + /// \param haptic Device to destroy the effect on. + /// \param effect Identifier of the effect to destroy. + /// + /// \sa SDL_HapticNewEffect + pub fn SDL_HapticDestroyEffect(haptic: *mut SDL_Haptic, effect: ::std::os::raw::c_int); } extern "C" { /// \brief Gets the status of the current effect on the haptic device. -/// -/// Device must support the ::SDL_HAPTIC_STATUS feature. -/// -/// \param haptic Haptic device to query the effect status on. -/// \param effect Identifier of the effect to query its status. -/// \return 0 if it isn't playing, 1 if it is playing or -1 on error. -/// -/// \sa SDL_HapticRunEffect -/// \sa SDL_HapticStopEffect - pub fn SDL_HapticGetEffectStatus(haptic: *mut SDL_Haptic, - effect: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// Device must support the ::SDL_HAPTIC_STATUS feature. + /// + /// \param haptic Haptic device to query the effect status on. + /// \param effect Identifier of the effect to query its status. + /// \return 0 if it isn't playing, 1 if it is playing or -1 on error. + /// + /// \sa SDL_HapticRunEffect + /// \sa SDL_HapticStopEffect + pub fn SDL_HapticGetEffectStatus( + haptic: *mut SDL_Haptic, + effect: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Sets the global gain of the device. -/// -/// Device must support the ::SDL_HAPTIC_GAIN feature. -/// -/// The user may specify the maximum gain by setting the environment variable -/// SDL_HAPTIC_GAIN_MAX which should be between 0 and 100. All calls to -/// SDL_HapticSetGain() will scale linearly using SDL_HAPTIC_GAIN_MAX as the -/// maximum. -/// -/// \param haptic Haptic device to set the gain on. -/// \param gain Value to set the gain to, should be between 0 and 100. -/// \return 0 on success or -1 on error. -/// -/// \sa SDL_HapticQuery - pub fn SDL_HapticSetGain(haptic: *mut SDL_Haptic, - gain: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// Device must support the ::SDL_HAPTIC_GAIN feature. + /// + /// The user may specify the maximum gain by setting the environment variable + /// SDL_HAPTIC_GAIN_MAX which should be between 0 and 100. All calls to + /// SDL_HapticSetGain() will scale linearly using SDL_HAPTIC_GAIN_MAX as the + /// maximum. + /// + /// \param haptic Haptic device to set the gain on. + /// \param gain Value to set the gain to, should be between 0 and 100. + /// \return 0 on success or -1 on error. + /// + /// \sa SDL_HapticQuery + pub fn SDL_HapticSetGain( + haptic: *mut SDL_Haptic, + gain: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Sets the global autocenter of the device. -/// -/// Autocenter should be between 0 and 100. Setting it to 0 will disable -/// autocentering. -/// -/// Device must support the ::SDL_HAPTIC_AUTOCENTER feature. -/// -/// \param haptic Haptic device to set autocentering on. -/// \param autocenter Value to set autocenter to, 0 disables autocentering. -/// \return 0 on success or -1 on error. -/// -/// \sa SDL_HapticQuery - pub fn SDL_HapticSetAutocenter(haptic: *mut SDL_Haptic, - autocenter: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// Autocenter should be between 0 and 100. Setting it to 0 will disable + /// autocentering. + /// + /// Device must support the ::SDL_HAPTIC_AUTOCENTER feature. + /// + /// \param haptic Haptic device to set autocentering on. + /// \param autocenter Value to set autocenter to, 0 disables autocentering. + /// \return 0 on success or -1 on error. + /// + /// \sa SDL_HapticQuery + pub fn SDL_HapticSetAutocenter( + haptic: *mut SDL_Haptic, + autocenter: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Pauses a haptic device. -/// -/// Device must support the ::SDL_HAPTIC_PAUSE feature. Call -/// SDL_HapticUnpause() to resume playback. -/// -/// Do not modify the effects nor add new ones while the device is paused. -/// That can cause all sorts of weird errors. -/// -/// \param haptic Haptic device to pause. -/// \return 0 on success or -1 on error. -/// -/// \sa SDL_HapticUnpause + /// + /// Device must support the ::SDL_HAPTIC_PAUSE feature. Call + /// SDL_HapticUnpause() to resume playback. + /// + /// Do not modify the effects nor add new ones while the device is paused. + /// That can cause all sorts of weird errors. + /// + /// \param haptic Haptic device to pause. + /// \return 0 on success or -1 on error. + /// + /// \sa SDL_HapticUnpause pub fn SDL_HapticPause(haptic: *mut SDL_Haptic) -> ::std::os::raw::c_int; } extern "C" { /// \brief Unpauses a haptic device. -/// -/// Call to unpause after SDL_HapticPause(). -/// -/// \param haptic Haptic device to unpause. -/// \return 0 on success or -1 on error. -/// -/// \sa SDL_HapticPause - pub fn SDL_HapticUnpause(haptic: *mut SDL_Haptic) - -> ::std::os::raw::c_int; + /// + /// Call to unpause after SDL_HapticPause(). + /// + /// \param haptic Haptic device to unpause. + /// \return 0 on success or -1 on error. + /// + /// \sa SDL_HapticPause + pub fn SDL_HapticUnpause(haptic: *mut SDL_Haptic) -> ::std::os::raw::c_int; } extern "C" { /// \brief Stops all the currently playing effects on a haptic device. -/// -/// \param haptic Haptic device to stop. -/// \return 0 on success or -1 on error. - pub fn SDL_HapticStopAll(haptic: *mut SDL_Haptic) - -> ::std::os::raw::c_int; + /// + /// \param haptic Haptic device to stop. + /// \return 0 on success or -1 on error. + pub fn SDL_HapticStopAll(haptic: *mut SDL_Haptic) -> ::std::os::raw::c_int; } extern "C" { /// \brief Checks to see if rumble is supported on a haptic device. -/// -/// \param haptic Haptic device to check to see if it supports rumble. -/// \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error. -/// -/// \sa SDL_HapticRumbleInit -/// \sa SDL_HapticRumblePlay -/// \sa SDL_HapticRumbleStop - pub fn SDL_HapticRumbleSupported(haptic: *mut SDL_Haptic) - -> ::std::os::raw::c_int; + /// + /// \param haptic Haptic device to check to see if it supports rumble. + /// \return SDL_TRUE if effect is supported, SDL_FALSE if it isn't or -1 on error. + /// + /// \sa SDL_HapticRumbleInit + /// \sa SDL_HapticRumblePlay + /// \sa SDL_HapticRumbleStop + pub fn SDL_HapticRumbleSupported(haptic: *mut SDL_Haptic) -> ::std::os::raw::c_int; } extern "C" { /// \brief Initializes the haptic device for simple rumble playback. -/// -/// \param haptic Haptic device to initialize for simple rumble playback. -/// \return 0 on success or -1 on error. -/// -/// \sa SDL_HapticOpen -/// \sa SDL_HapticRumbleSupported -/// \sa SDL_HapticRumblePlay -/// \sa SDL_HapticRumbleStop - pub fn SDL_HapticRumbleInit(haptic: *mut SDL_Haptic) - -> ::std::os::raw::c_int; + /// + /// \param haptic Haptic device to initialize for simple rumble playback. + /// \return 0 on success or -1 on error. + /// + /// \sa SDL_HapticOpen + /// \sa SDL_HapticRumbleSupported + /// \sa SDL_HapticRumblePlay + /// \sa SDL_HapticRumbleStop + pub fn SDL_HapticRumbleInit(haptic: *mut SDL_Haptic) -> ::std::os::raw::c_int; } extern "C" { /// \brief Runs simple rumble on a haptic device -/// -/// \param haptic Haptic device to play rumble effect on. -/// \param strength Strength of the rumble to play as a 0-1 float value. -/// \param length Length of the rumble to play in milliseconds. -/// \return 0 on success or -1 on error. -/// -/// \sa SDL_HapticRumbleSupported -/// \sa SDL_HapticRumbleInit -/// \sa SDL_HapticRumbleStop - pub fn SDL_HapticRumblePlay(haptic: *mut SDL_Haptic, strength: f32, - length: Uint32) -> ::std::os::raw::c_int; + /// + /// \param haptic Haptic device to play rumble effect on. + /// \param strength Strength of the rumble to play as a 0-1 float value. + /// \param length Length of the rumble to play in milliseconds. + /// \return 0 on success or -1 on error. + /// + /// \sa SDL_HapticRumbleSupported + /// \sa SDL_HapticRumbleInit + /// \sa SDL_HapticRumbleStop + pub fn SDL_HapticRumblePlay( + haptic: *mut SDL_Haptic, + strength: f32, + length: Uint32, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Stops the simple rumble on a haptic device. -/// -/// \param haptic Haptic to stop the rumble on. -/// \return 0 on success or -1 on error. -/// -/// \sa SDL_HapticRumbleSupported -/// \sa SDL_HapticRumbleInit -/// \sa SDL_HapticRumblePlay - pub fn SDL_HapticRumbleStop(haptic: *mut SDL_Haptic) - -> ::std::os::raw::c_int; + /// + /// \param haptic Haptic to stop the rumble on. + /// \return 0 on success or -1 on error. + /// + /// \sa SDL_HapticRumbleSupported + /// \sa SDL_HapticRumbleInit + /// \sa SDL_HapticRumblePlay + pub fn SDL_HapticRumbleStop(haptic: *mut SDL_Haptic) -> ::std::os::raw::c_int; } #[repr(u32)] /// \brief An enumeration of hint priorities @@ -11532,132 +14865,120 @@ pub enum SDL_HintPriority { } extern "C" { /// \brief Set a hint with a specific priority -/// -/// The priority controls the behavior when setting a hint that already -/// has a value. Hints will replace existing hints of their priority and -/// lower. Environment variables are considered to have override priority. -/// -/// \return SDL_TRUE if the hint was set, SDL_FALSE otherwise - pub fn SDL_SetHintWithPriority(name: *const ::std::os::raw::c_char, - value: *const ::std::os::raw::c_char, - priority: SDL_HintPriority) -> SDL_bool; + /// + /// The priority controls the behavior when setting a hint that already + /// has a value. Hints will replace existing hints of their priority and + /// lower. Environment variables are considered to have override priority. + /// + /// \return SDL_TRUE if the hint was set, SDL_FALSE otherwise + pub fn SDL_SetHintWithPriority( + name: *const ::std::os::raw::c_char, + value: *const ::std::os::raw::c_char, + priority: SDL_HintPriority, + ) -> SDL_bool; } extern "C" { /// \brief Set a hint with normal priority -/// -/// \return SDL_TRUE if the hint was set, SDL_FALSE otherwise - pub fn SDL_SetHint(name: *const ::std::os::raw::c_char, - value: *const ::std::os::raw::c_char) -> SDL_bool; + /// + /// \return SDL_TRUE if the hint was set, SDL_FALSE otherwise + pub fn SDL_SetHint( + name: *const ::std::os::raw::c_char, + value: *const ::std::os::raw::c_char, + ) -> SDL_bool; } extern "C" { /// \brief Get a hint -/// -/// \return The string value of a hint variable. - pub fn SDL_GetHint(name: *const ::std::os::raw::c_char) - -> *const ::std::os::raw::c_char; + /// + /// \return The string value of a hint variable. + pub fn SDL_GetHint(name: *const ::std::os::raw::c_char) -> *const ::std::os::raw::c_char; } extern "C" { /// \brief Get a hint -/// -/// \return The boolean value of a hint variable. - pub fn SDL_GetHintBoolean(name: *const ::std::os::raw::c_char, - default_value: SDL_bool) -> SDL_bool; + /// + /// \return The boolean value of a hint variable. + pub fn SDL_GetHintBoolean( + name: *const ::std::os::raw::c_char, + default_value: SDL_bool, + ) -> SDL_bool; } /// \brief type definition of the hint callback function. -pub type SDL_HintCallback = - ::std::option::Option; +pub type SDL_HintCallback = ::std::option::Option< + unsafe extern "C" fn( + userdata: *mut ::std::os::raw::c_void, + name: *const ::std::os::raw::c_char, + oldValue: *const ::std::os::raw::c_char, + newValue: *const ::std::os::raw::c_char, + ), +>; extern "C" { /// \brief Add a function to watch a particular hint -/// -/// \param name The hint to watch -/// \param callback The function to call when the hint value changes -/// \param userdata A pointer to pass to the callback function - pub fn SDL_AddHintCallback(name: *const ::std::os::raw::c_char, - callback: SDL_HintCallback, - userdata: *mut ::std::os::raw::c_void); + /// + /// \param name The hint to watch + /// \param callback The function to call when the hint value changes + /// \param userdata A pointer to pass to the callback function + pub fn SDL_AddHintCallback( + name: *const ::std::os::raw::c_char, + callback: SDL_HintCallback, + userdata: *mut ::std::os::raw::c_void, + ); } extern "C" { /// \brief Remove a function watching a particular hint -/// -/// \param name The hint being watched -/// \param callback The function being called when the hint value changes -/// \param userdata A pointer being passed to the callback function - pub fn SDL_DelHintCallback(name: *const ::std::os::raw::c_char, - callback: SDL_HintCallback, - userdata: *mut ::std::os::raw::c_void); + /// + /// \param name The hint being watched + /// \param callback The function being called when the hint value changes + /// \param userdata A pointer being passed to the callback function + pub fn SDL_DelHintCallback( + name: *const ::std::os::raw::c_char, + callback: SDL_HintCallback, + userdata: *mut ::std::os::raw::c_void, + ); } extern "C" { /// \brief Clear all hints -/// -/// This function is called during SDL_Quit() to free stored hints. + /// + /// This function is called during SDL_Quit() to free stored hints. pub fn SDL_ClearHints(); } extern "C" { /// This function dynamically loads a shared object and returns a pointer -/// to the object handle (or NULL if there was an error). -/// The 'sofile' parameter is a system dependent name of the object file. - pub fn SDL_LoadObject(sofile: *const ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_void; + /// to the object handle (or NULL if there was an error). + /// The 'sofile' parameter is a system dependent name of the object file. + pub fn SDL_LoadObject(sofile: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_void; } extern "C" { /// Given an object handle, this function looks up the address of the -/// named function in the shared object and returns it. This address -/// is no longer valid after calling SDL_UnloadObject(). - pub fn SDL_LoadFunction(handle: *mut ::std::os::raw::c_void, - name: *const ::std::os::raw::c_char) - -> *mut ::std::os::raw::c_void; + /// named function in the shared object and returns it. This address + /// is no longer valid after calling SDL_UnloadObject(). + pub fn SDL_LoadFunction( + handle: *mut ::std::os::raw::c_void, + name: *const ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_void; } extern "C" { /// Unload a shared object from memory. pub fn SDL_UnloadObject(handle: *mut ::std::os::raw::c_void); } -pub const SDL_LOG_CATEGORY_APPLICATION: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_APPLICATION; -pub const SDL_LOG_CATEGORY_ERROR: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_ERROR; -pub const SDL_LOG_CATEGORY_ASSERT: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_ASSERT; -pub const SDL_LOG_CATEGORY_SYSTEM: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_SYSTEM; -pub const SDL_LOG_CATEGORY_AUDIO: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_AUDIO; -pub const SDL_LOG_CATEGORY_VIDEO: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_VIDEO; -pub const SDL_LOG_CATEGORY_RENDER: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_RENDER; -pub const SDL_LOG_CATEGORY_INPUT: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_INPUT; -pub const SDL_LOG_CATEGORY_TEST: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_TEST; -pub const SDL_LOG_CATEGORY_RESERVED1: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED1; -pub const SDL_LOG_CATEGORY_RESERVED2: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED2; -pub const SDL_LOG_CATEGORY_RESERVED3: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED3; -pub const SDL_LOG_CATEGORY_RESERVED4: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED4; -pub const SDL_LOG_CATEGORY_RESERVED5: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED5; -pub const SDL_LOG_CATEGORY_RESERVED6: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED6; -pub const SDL_LOG_CATEGORY_RESERVED7: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED7; -pub const SDL_LOG_CATEGORY_RESERVED8: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED8; -pub const SDL_LOG_CATEGORY_RESERVED9: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED9; -pub const SDL_LOG_CATEGORY_RESERVED10: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED10; -pub const SDL_LOG_CATEGORY_CUSTOM: _bindgen_ty_8 = - _bindgen_ty_8::SDL_LOG_CATEGORY_CUSTOM; +pub const SDL_LOG_CATEGORY_APPLICATION: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_APPLICATION; +pub const SDL_LOG_CATEGORY_ERROR: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_ERROR; +pub const SDL_LOG_CATEGORY_ASSERT: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_ASSERT; +pub const SDL_LOG_CATEGORY_SYSTEM: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_SYSTEM; +pub const SDL_LOG_CATEGORY_AUDIO: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_AUDIO; +pub const SDL_LOG_CATEGORY_VIDEO: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_VIDEO; +pub const SDL_LOG_CATEGORY_RENDER: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_RENDER; +pub const SDL_LOG_CATEGORY_INPUT: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_INPUT; +pub const SDL_LOG_CATEGORY_TEST: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_TEST; +pub const SDL_LOG_CATEGORY_RESERVED1: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED1; +pub const SDL_LOG_CATEGORY_RESERVED2: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED2; +pub const SDL_LOG_CATEGORY_RESERVED3: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED3; +pub const SDL_LOG_CATEGORY_RESERVED4: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED4; +pub const SDL_LOG_CATEGORY_RESERVED5: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED5; +pub const SDL_LOG_CATEGORY_RESERVED6: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED6; +pub const SDL_LOG_CATEGORY_RESERVED7: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED7; +pub const SDL_LOG_CATEGORY_RESERVED8: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED8; +pub const SDL_LOG_CATEGORY_RESERVED9: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED9; +pub const SDL_LOG_CATEGORY_RESERVED10: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_RESERVED10; +pub const SDL_LOG_CATEGORY_CUSTOM: _bindgen_ty_8 = _bindgen_ty_8::SDL_LOG_CATEGORY_CUSTOM; #[repr(u32)] /// \brief The predefined log categories /// @@ -11706,18 +15027,16 @@ extern "C" { } extern "C" { /// \brief Set the priority of a particular log category - pub fn SDL_LogSetPriority(category: ::std::os::raw::c_int, - priority: SDL_LogPriority); + pub fn SDL_LogSetPriority(category: ::std::os::raw::c_int, priority: SDL_LogPriority); } extern "C" { /// \brief Get the priority of a particular log category - pub fn SDL_LogGetPriority(category: ::std::os::raw::c_int) - -> SDL_LogPriority; + pub fn SDL_LogGetPriority(category: ::std::os::raw::c_int) -> SDL_LogPriority; } extern "C" { /// \brief Reset all priorities to default. -/// -/// \note This is called in SDL_Quit(). + /// + /// \note This is called in SDL_Quit(). pub fn SDL_LogResetPriorities(); } extern "C" { @@ -11726,86 +15045,97 @@ extern "C" { } extern "C" { /// \brief Log a message with SDL_LOG_PRIORITY_VERBOSE - pub fn SDL_LogVerbose(category: ::std::os::raw::c_int, - fmt: *const ::std::os::raw::c_char, ...); + pub fn SDL_LogVerbose(category: ::std::os::raw::c_int, fmt: *const ::std::os::raw::c_char, ...); } extern "C" { /// \brief Log a message with SDL_LOG_PRIORITY_DEBUG - pub fn SDL_LogDebug(category: ::std::os::raw::c_int, - fmt: *const ::std::os::raw::c_char, ...); + pub fn SDL_LogDebug(category: ::std::os::raw::c_int, fmt: *const ::std::os::raw::c_char, ...); } extern "C" { /// \brief Log a message with SDL_LOG_PRIORITY_INFO - pub fn SDL_LogInfo(category: ::std::os::raw::c_int, - fmt: *const ::std::os::raw::c_char, ...); + pub fn SDL_LogInfo(category: ::std::os::raw::c_int, fmt: *const ::std::os::raw::c_char, ...); } extern "C" { /// \brief Log a message with SDL_LOG_PRIORITY_WARN - pub fn SDL_LogWarn(category: ::std::os::raw::c_int, - fmt: *const ::std::os::raw::c_char, ...); + pub fn SDL_LogWarn(category: ::std::os::raw::c_int, fmt: *const ::std::os::raw::c_char, ...); } extern "C" { /// \brief Log a message with SDL_LOG_PRIORITY_ERROR - pub fn SDL_LogError(category: ::std::os::raw::c_int, - fmt: *const ::std::os::raw::c_char, ...); + pub fn SDL_LogError(category: ::std::os::raw::c_int, fmt: *const ::std::os::raw::c_char, ...); } extern "C" { /// \brief Log a message with SDL_LOG_PRIORITY_CRITICAL - pub fn SDL_LogCritical(category: ::std::os::raw::c_int, - fmt: *const ::std::os::raw::c_char, ...); + pub fn SDL_LogCritical( + category: ::std::os::raw::c_int, + fmt: *const ::std::os::raw::c_char, + ... + ); } extern "C" { /// \brief Log a message with the specified category and priority. - pub fn SDL_LogMessage(category: ::std::os::raw::c_int, - priority: SDL_LogPriority, - fmt: *const ::std::os::raw::c_char, ...); + pub fn SDL_LogMessage( + category: ::std::os::raw::c_int, + priority: SDL_LogPriority, + fmt: *const ::std::os::raw::c_char, + ... + ); } extern "C" { /// \brief Log a message with the specified category and priority. - pub fn SDL_LogMessageV(category: ::std::os::raw::c_int, - priority: SDL_LogPriority, - fmt: *const ::std::os::raw::c_char, - ap: *mut __va_list_tag); + pub fn SDL_LogMessageV( + category: ::std::os::raw::c_int, + priority: SDL_LogPriority, + fmt: *const ::std::os::raw::c_char, + ap: *mut __va_list_tag, + ); } /// \brief The prototype for the log output function -pub type SDL_LogOutputFunction = - ::std::option::Option; +pub type SDL_LogOutputFunction = ::std::option::Option< + unsafe extern "C" fn( + userdata: *mut ::std::os::raw::c_void, + category: ::std::os::raw::c_int, + priority: SDL_LogPriority, + message: *const ::std::os::raw::c_char, + ), +>; extern "C" { /// \brief Get the current log output function. - pub fn SDL_LogGetOutputFunction(callback: *mut SDL_LogOutputFunction, - userdata: - *mut *mut ::std::os::raw::c_void); + pub fn SDL_LogGetOutputFunction( + callback: *mut SDL_LogOutputFunction, + userdata: *mut *mut ::std::os::raw::c_void, + ); } extern "C" { /// \brief This function allows you to replace the default log output -/// function with one of your own. - pub fn SDL_LogSetOutputFunction(callback: SDL_LogOutputFunction, - userdata: *mut ::std::os::raw::c_void); + /// function with one of your own. + pub fn SDL_LogSetOutputFunction( + callback: SDL_LogOutputFunction, + userdata: *mut ::std::os::raw::c_void, + ); } #[repr(u32)] /// \brief SDL_MessageBox flags. If supported will display warning icon, etc. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_MessageBoxFlags { + /// < error dialog SDL_MESSAGEBOX_ERROR = 16, + /// < warning dialog SDL_MESSAGEBOX_WARNING = 32, + /// < informational dialog SDL_MESSAGEBOX_INFORMATION = 64, } #[repr(u32)] /// \brief Flags for SDL_MessageBoxButtonData. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_MessageBoxButtonFlags { + /// < Marks the default button when return is hit SDL_MESSAGEBOX_BUTTON_RETURNKEY_DEFAULT = 1, + /// < Marks the default button when escape is hit SDL_MESSAGEBOX_BUTTON_ESCAPEKEY_DEFAULT = 2, } /// \brief Individual button data. #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_MessageBoxButtonData { /// < ::SDL_MessageBoxButtonFlags pub flags: Uint32, @@ -11816,35 +15146,52 @@ pub struct SDL_MessageBoxButtonData { } #[test] fn bindgen_test_layout_SDL_MessageBoxButtonData() { - assert_eq!(::std::mem::size_of::() , 16usize , - concat ! ( - "Size of: " , stringify ! ( SDL_MessageBoxButtonData ) )); - assert_eq! (::std::mem::align_of::() , 8usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_MessageBoxButtonData ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxButtonData ) ) . flags as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_MessageBoxButtonData ) , "::" , stringify ! ( flags ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxButtonData ) ) . buttonid - as * const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_MessageBoxButtonData ) , "::" , stringify ! ( buttonid ) - )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxButtonData ) ) . text as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_MessageBoxButtonData ) , "::" , stringify ! ( text ) )); -} -impl Clone for SDL_MessageBoxButtonData { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(SDL_MessageBoxButtonData)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_MessageBoxButtonData)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxButtonData), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).buttonid as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxButtonData), + "::", + stringify!(buttonid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).text as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxButtonData), + "::", + stringify!(text) + ) + ); } /// \brief RGB value used in a message box color scheme #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_MessageBoxColor { pub r: Uint8, pub g: Uint8, @@ -11852,29 +15199,46 @@ pub struct SDL_MessageBoxColor { } #[test] fn bindgen_test_layout_SDL_MessageBoxColor() { - assert_eq!(::std::mem::size_of::() , 3usize , concat - ! ( "Size of: " , stringify ! ( SDL_MessageBoxColor ) )); - assert_eq! (::std::mem::align_of::() , 1usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_MessageBoxColor ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxColor ) ) . r as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MessageBoxColor ) , - "::" , stringify ! ( r ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxColor ) ) . g as * const _ - as usize } , 1usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MessageBoxColor ) , - "::" , stringify ! ( g ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxColor ) ) . b as * const _ - as usize } , 2usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MessageBoxColor ) , - "::" , stringify ! ( b ) )); -} -impl Clone for SDL_MessageBoxColor { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 3usize, + concat!("Size of: ", stringify!(SDL_MessageBoxColor)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(SDL_MessageBoxColor)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).r as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxColor), + "::", + stringify!(r) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).g as *const _ as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxColor), + "::", + stringify!(g) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).b as *const _ as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxColor), + "::", + stringify!(b) + ) + ); } #[repr(u32)] #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] @@ -11888,32 +15252,38 @@ pub enum SDL_MessageBoxColorType { } /// \brief A set of colors to use for message box dialogs #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_MessageBoxColorScheme { pub colors: [SDL_MessageBoxColor; 5usize], } #[test] fn bindgen_test_layout_SDL_MessageBoxColorScheme() { - assert_eq!(::std::mem::size_of::() , 15usize , - concat ! ( - "Size of: " , stringify ! ( SDL_MessageBoxColorScheme ) )); - assert_eq! (::std::mem::align_of::() , 1usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_MessageBoxColorScheme ) - )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxColorScheme ) ) . colors as - * const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( - SDL_MessageBoxColorScheme ) , "::" , stringify ! ( colors ) - )); -} -impl Clone for SDL_MessageBoxColorScheme { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 15usize, + concat!("Size of: ", stringify!(SDL_MessageBoxColorScheme)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(SDL_MessageBoxColorScheme)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).colors as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxColorScheme), + "::", + stringify!(colors) + ) + ); } /// \brief MessageBox structure containing title, text, window, etc. #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_MessageBoxData { /// < ::SDL_MessageBoxFlags pub flags: Uint32, @@ -11930,121 +15300,174 @@ pub struct SDL_MessageBoxData { } #[test] fn bindgen_test_layout_SDL_MessageBoxData() { - assert_eq!(::std::mem::size_of::() , 56usize , concat - ! ( "Size of: " , stringify ! ( SDL_MessageBoxData ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat - ! ( "Alignment of " , stringify ! ( SDL_MessageBoxData ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxData ) ) . flags as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MessageBoxData ) , - "::" , stringify ! ( flags ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxData ) ) . window as * - const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MessageBoxData ) , - "::" , stringify ! ( window ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxData ) ) . title as * const - _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MessageBoxData ) , - "::" , stringify ! ( title ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxData ) ) . message as * - const _ as usize } , 24usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MessageBoxData ) , - "::" , stringify ! ( message ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxData ) ) . numbuttons as * - const _ as usize } , 32usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MessageBoxData ) , - "::" , stringify ! ( numbuttons ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxData ) ) . buttons as * - const _ as usize } , 40usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MessageBoxData ) , - "::" , stringify ! ( buttons ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_MessageBoxData ) ) . colorScheme as * - const _ as usize } , 48usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_MessageBoxData ) , - "::" , stringify ! ( colorScheme ) )); -} -impl Clone for SDL_MessageBoxData { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(SDL_MessageBoxData)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_MessageBoxData)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxData), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxData), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).title as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxData), + "::", + stringify!(title) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).message as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxData), + "::", + stringify!(message) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).numbuttons as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxData), + "::", + stringify!(numbuttons) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).buttons as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxData), + "::", + stringify!(buttons) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).colorScheme as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(SDL_MessageBoxData), + "::", + stringify!(colorScheme) + ) + ); } extern "C" { /// \brief Create a modal message box. -/// -/// \param messageboxdata The SDL_MessageBoxData structure with title, text, etc. -/// \param buttonid The pointer to which user id of hit button should be copied. -/// -/// \return -1 on error, otherwise 0 and buttonid contains user id of button -/// hit or -1 if dialog was closed. -/// -/// \note This function should be called on the thread that created the parent -/// window, or on the main thread if the messagebox has no parent. It will -/// block execution of that thread until the user clicks a button or -/// closes the messagebox. - pub fn SDL_ShowMessageBox(messageboxdata: *const SDL_MessageBoxData, - buttonid: *mut ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param messageboxdata The SDL_MessageBoxData structure with title, text, etc. + /// \param buttonid The pointer to which user id of hit button should be copied. + /// + /// \return -1 on error, otherwise 0 and buttonid contains user id of button + /// hit or -1 if dialog was closed. + /// + /// \note This function should be called on the thread that created the parent + /// window, or on the main thread if the messagebox has no parent. It will + /// block execution of that thread until the user clicks a button or + /// closes the messagebox. + pub fn SDL_ShowMessageBox( + messageboxdata: *const SDL_MessageBoxData, + buttonid: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Create a simple modal message box -/// -/// \param flags ::SDL_MessageBoxFlags -/// \param title UTF-8 title text -/// \param message UTF-8 message text -/// \param window The parent window, or NULL for no parent -/// -/// \return 0 on success, -1 on error -/// -/// \sa SDL_ShowMessageBox - pub fn SDL_ShowSimpleMessageBox(flags: Uint32, - title: *const ::std::os::raw::c_char, - message: *const ::std::os::raw::c_char, - window: *mut SDL_Window) - -> ::std::os::raw::c_int; + /// + /// \param flags ::SDL_MessageBoxFlags + /// \param title UTF-8 title text + /// \param message UTF-8 message text + /// \param window The parent window, or NULL for no parent + /// + /// \return 0 on success, -1 on error + /// + /// \sa SDL_ShowMessageBox + pub fn SDL_ShowSimpleMessageBox( + flags: Uint32, + title: *const ::std::os::raw::c_char, + message: *const ::std::os::raw::c_char, + window: *mut SDL_Window, + ) -> ::std::os::raw::c_int; } #[repr(u32)] /// \brief The basic state for the system's power supply. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_PowerState { + /// < cannot determine power status SDL_POWERSTATE_UNKNOWN = 0, + /// < Not plugged in, running on the battery SDL_POWERSTATE_ON_BATTERY = 1, + /// < Plugged in, no battery available SDL_POWERSTATE_NO_BATTERY = 2, + /// < Plugged in, charging battery SDL_POWERSTATE_CHARGING = 3, + /// < Plugged in, battery charged SDL_POWERSTATE_CHARGED = 4, } extern "C" { /// \brief Get the current power supply details. -/// -/// \param secs Seconds of battery life left. You can pass a NULL here if -/// you don't care. Will return -1 if we can't determine a -/// value, or we're not running on a battery. -/// -/// \param pct Percentage of battery life left, between 0 and 100. You can -/// pass a NULL here if you don't care. Will return -1 if we -/// can't determine a value, or we're not running on a battery. -/// -/// \return The state of the battery (if any). - pub fn SDL_GetPowerInfo(secs: *mut ::std::os::raw::c_int, - pct: *mut ::std::os::raw::c_int) - -> SDL_PowerState; + /// + /// \param secs Seconds of battery life left. You can pass a NULL here if + /// you don't care. Will return -1 if we can't determine a + /// value, or we're not running on a battery. + /// + /// \param pct Percentage of battery life left, between 0 and 100. You can + /// pass a NULL here if you don't care. Will return -1 if we + /// can't determine a value, or we're not running on a battery. + /// + /// \return The state of the battery (if any). + pub fn SDL_GetPowerInfo( + secs: *mut ::std::os::raw::c_int, + pct: *mut ::std::os::raw::c_int, + ) -> SDL_PowerState; } #[repr(u32)] /// \brief Flags used when creating a rendering context #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_RendererFlags { + /// < The renderer is a software fallback SDL_RENDERER_SOFTWARE = 1, + /// < The renderer uses hardware + /// acceleration SDL_RENDERER_ACCELERATED = 2, + /// < Present is synchronized + /// with the refresh rate SDL_RENDERER_PRESENTVSYNC = 4, + /// < The renderer supports + /// rendering to texture SDL_RENDERER_TARGETTEXTURE = 8, } /// \brief Information on the capabilities of a render driver or context. #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_RendererInfo { /// < The name of the renderer pub name: *const ::std::os::raw::c_char, @@ -12061,74 +15484,125 @@ pub struct SDL_RendererInfo { } #[test] fn bindgen_test_layout_SDL_RendererInfo() { - assert_eq!(::std::mem::size_of::() , 88usize , concat ! - ( "Size of: " , stringify ! ( SDL_RendererInfo ) )); - assert_eq! (::std::mem::align_of::() , 8usize , concat ! - ( "Alignment of " , stringify ! ( SDL_RendererInfo ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RendererInfo ) ) . name as * const _ - as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RendererInfo ) , - "::" , stringify ! ( name ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RendererInfo ) ) . flags as * const _ - as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RendererInfo ) , - "::" , stringify ! ( flags ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RendererInfo ) ) . - num_texture_formats as * const _ as usize } , 12usize , concat - ! ( - "Alignment of field: " , stringify ! ( SDL_RendererInfo ) , - "::" , stringify ! ( num_texture_formats ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RendererInfo ) ) . texture_formats as - * const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RendererInfo ) , - "::" , stringify ! ( texture_formats ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RendererInfo ) ) . max_texture_width - as * const _ as usize } , 80usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RendererInfo ) , - "::" , stringify ! ( max_texture_width ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_RendererInfo ) ) . max_texture_height - as * const _ as usize } , 84usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_RendererInfo ) , - "::" , stringify ! ( max_texture_height ) )); -} -impl Clone for SDL_RendererInfo { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 88usize, + concat!("Size of: ", stringify!(SDL_RendererInfo)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_RendererInfo)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_RendererInfo), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_RendererInfo), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).num_texture_formats as *const _ as usize + }, + 12usize, + concat!( + "Offset of field: ", + stringify!(SDL_RendererInfo), + "::", + stringify!(num_texture_formats) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).texture_formats as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_RendererInfo), + "::", + stringify!(texture_formats) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).max_texture_width as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(SDL_RendererInfo), + "::", + stringify!(max_texture_width) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).max_texture_height as *const _ as usize + }, + 84usize, + concat!( + "Offset of field: ", + stringify!(SDL_RendererInfo), + "::", + stringify!(max_texture_height) + ) + ); } #[repr(u32)] /// \brief The access pattern allowed for a texture. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_TextureAccess { + /// < Changes rarely, not lockable SDL_TEXTUREACCESS_STATIC = 0, + /// < Changes frequently, lockable SDL_TEXTUREACCESS_STREAMING = 1, + /// < Texture can be used as a render target SDL_TEXTUREACCESS_TARGET = 2, } #[repr(u32)] /// \brief The texture channel modulation used in SDL_RenderCopy(). #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_TextureModulate { + /// < No modulation SDL_TEXTUREMODULATE_NONE = 0, + /// < srcC = srcC * color SDL_TEXTUREMODULATE_COLOR = 1, + /// < srcA = srcA * alpha SDL_TEXTUREMODULATE_ALPHA = 2, } #[repr(u32)] /// \brief Flip constants for SDL_RenderCopyEx #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum SDL_RendererFlip { + /// < Do not flip SDL_FLIP_NONE = 0, + /// < flip horizontally SDL_FLIP_HORIZONTAL = 1, + /// < flip vertically SDL_FLIP_VERTICAL = 2, } +/// \brief A structure representing rendering state #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct SDL_Renderer { _unused: [u8; 0], } +/// \brief An efficient driver-specific representation of pixel data #[repr(C)] #[derive(Debug, Copy, Clone)] pub struct SDL_Texture { @@ -12136,76 +15610,79 @@ pub struct SDL_Texture { } extern "C" { /// \brief Get the number of 2D rendering drivers available for the current -/// display. -/// -/// A render driver is a set of code that handles rendering and texture -/// management on a particular display. Normally there is only one, but -/// some drivers may have several available with different capabilities. -/// -/// \sa SDL_GetRenderDriverInfo() -/// \sa SDL_CreateRenderer() + /// display. + /// + /// A render driver is a set of code that handles rendering and texture + /// management on a particular display. Normally there is only one, but + /// some drivers may have several available with different capabilities. + /// + /// \sa SDL_GetRenderDriverInfo() + /// \sa SDL_CreateRenderer() pub fn SDL_GetNumRenderDrivers() -> ::std::os::raw::c_int; } extern "C" { /// \brief Get information about a specific 2D rendering driver for the current -/// display. -/// -/// \param index The index of the driver to query information about. -/// \param info A pointer to an SDL_RendererInfo struct to be filled with -/// information on the rendering driver. -/// -/// \return 0 on success, -1 if the index was out of range. -/// -/// \sa SDL_CreateRenderer() - pub fn SDL_GetRenderDriverInfo(index: ::std::os::raw::c_int, - info: *mut SDL_RendererInfo) - -> ::std::os::raw::c_int; + /// display. + /// + /// \param index The index of the driver to query information about. + /// \param info A pointer to an SDL_RendererInfo struct to be filled with + /// information on the rendering driver. + /// + /// \return 0 on success, -1 if the index was out of range. + /// + /// \sa SDL_CreateRenderer() + pub fn SDL_GetRenderDriverInfo( + index: ::std::os::raw::c_int, + info: *mut SDL_RendererInfo, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Create a window and default renderer -/// -/// \param width The width of the window -/// \param height The height of the window -/// \param window_flags The flags used to create the window -/// \param window A pointer filled with the window, or NULL on error -/// \param renderer A pointer filled with the renderer, or NULL on error -/// -/// \return 0 on success, or -1 on error - pub fn SDL_CreateWindowAndRenderer(width: ::std::os::raw::c_int, - height: ::std::os::raw::c_int, - window_flags: Uint32, - window: *mut *mut SDL_Window, - renderer: *mut *mut SDL_Renderer) - -> ::std::os::raw::c_int; + /// + /// \param width The width of the window + /// \param height The height of the window + /// \param window_flags The flags used to create the window + /// \param window A pointer filled with the window, or NULL on error + /// \param renderer A pointer filled with the renderer, or NULL on error + /// + /// \return 0 on success, or -1 on error + pub fn SDL_CreateWindowAndRenderer( + width: ::std::os::raw::c_int, + height: ::std::os::raw::c_int, + window_flags: Uint32, + window: *mut *mut SDL_Window, + renderer: *mut *mut SDL_Renderer, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Create a 2D rendering context for a window. -/// -/// \param window The window where rendering is displayed. -/// \param index The index of the rendering driver to initialize, or -1 to -/// initialize the first one supporting the requested flags. -/// \param flags ::SDL_RendererFlags. -/// -/// \return A valid rendering context or NULL if there was an error. -/// -/// \sa SDL_CreateSoftwareRenderer() -/// \sa SDL_GetRendererInfo() -/// \sa SDL_DestroyRenderer() - pub fn SDL_CreateRenderer(window: *mut SDL_Window, - index: ::std::os::raw::c_int, flags: Uint32) - -> *mut SDL_Renderer; + /// + /// \param window The window where rendering is displayed. + /// \param index The index of the rendering driver to initialize, or -1 to + /// initialize the first one supporting the requested flags. + /// \param flags ::SDL_RendererFlags. + /// + /// \return A valid rendering context or NULL if there was an error. + /// + /// \sa SDL_CreateSoftwareRenderer() + /// \sa SDL_GetRendererInfo() + /// \sa SDL_DestroyRenderer() + pub fn SDL_CreateRenderer( + window: *mut SDL_Window, + index: ::std::os::raw::c_int, + flags: Uint32, + ) -> *mut SDL_Renderer; } extern "C" { /// \brief Create a 2D software rendering context for a surface. -/// -/// \param surface The surface where rendering is done. -/// -/// \return A valid rendering context or NULL if there was an error. -/// -/// \sa SDL_CreateRenderer() -/// \sa SDL_DestroyRenderer() - pub fn SDL_CreateSoftwareRenderer(surface: *mut SDL_Surface) - -> *mut SDL_Renderer; + /// + /// \param surface The surface where rendering is done. + /// + /// \return A valid rendering context or NULL if there was an error. + /// + /// \sa SDL_CreateRenderer() + /// \sa SDL_DestroyRenderer() + pub fn SDL_CreateSoftwareRenderer(surface: *mut SDL_Surface) -> *mut SDL_Renderer; } extern "C" { /// \brief Get the renderer associated with a window. @@ -12213,640 +15690,697 @@ extern "C" { } extern "C" { /// \brief Get information about a rendering context. - pub fn SDL_GetRendererInfo(renderer: *mut SDL_Renderer, - info: *mut SDL_RendererInfo) - -> ::std::os::raw::c_int; + pub fn SDL_GetRendererInfo( + renderer: *mut SDL_Renderer, + info: *mut SDL_RendererInfo, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the output size in pixels of a rendering context. - pub fn SDL_GetRendererOutputSize(renderer: *mut SDL_Renderer, - w: *mut ::std::os::raw::c_int, - h: *mut ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + pub fn SDL_GetRendererOutputSize( + renderer: *mut SDL_Renderer, + w: *mut ::std::os::raw::c_int, + h: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Create a texture for a rendering context. -/// -/// \param renderer The renderer. -/// \param format The format of the texture. -/// \param access One of the enumerated values in ::SDL_TextureAccess. -/// \param w The width of the texture in pixels. -/// \param h The height of the texture in pixels. -/// -/// \return The created texture is returned, or NULL if no rendering context was -/// active, the format was unsupported, or the width or height were out -/// of range. -/// -/// \note The contents of the texture are not defined at creation. -/// -/// \sa SDL_QueryTexture() -/// \sa SDL_UpdateTexture() -/// \sa SDL_DestroyTexture() - pub fn SDL_CreateTexture(renderer: *mut SDL_Renderer, format: Uint32, - access: ::std::os::raw::c_int, - w: ::std::os::raw::c_int, - h: ::std::os::raw::c_int) -> *mut SDL_Texture; + /// + /// \param renderer The renderer. + /// \param format The format of the texture. + /// \param access One of the enumerated values in ::SDL_TextureAccess. + /// \param w The width of the texture in pixels. + /// \param h The height of the texture in pixels. + /// + /// \return The created texture is returned, or NULL if no rendering context was + /// active, the format was unsupported, or the width or height were out + /// of range. + /// + /// \note The contents of the texture are not defined at creation. + /// + /// \sa SDL_QueryTexture() + /// \sa SDL_UpdateTexture() + /// \sa SDL_DestroyTexture() + pub fn SDL_CreateTexture( + renderer: *mut SDL_Renderer, + format: Uint32, + access: ::std::os::raw::c_int, + w: ::std::os::raw::c_int, + h: ::std::os::raw::c_int, + ) -> *mut SDL_Texture; } extern "C" { /// \brief Create a texture from an existing surface. -/// -/// \param renderer The renderer. -/// \param surface The surface containing pixel data used to fill the texture. -/// -/// \return The created texture is returned, or NULL on error. -/// -/// \note The surface is not modified or freed by this function. -/// -/// \sa SDL_QueryTexture() -/// \sa SDL_DestroyTexture() - pub fn SDL_CreateTextureFromSurface(renderer: *mut SDL_Renderer, - surface: *mut SDL_Surface) - -> *mut SDL_Texture; + /// + /// \param renderer The renderer. + /// \param surface The surface containing pixel data used to fill the texture. + /// + /// \return The created texture is returned, or NULL on error. + /// + /// \note The surface is not modified or freed by this function. + /// + /// \sa SDL_QueryTexture() + /// \sa SDL_DestroyTexture() + pub fn SDL_CreateTextureFromSurface( + renderer: *mut SDL_Renderer, + surface: *mut SDL_Surface, + ) -> *mut SDL_Texture; } extern "C" { /// \brief Query the attributes of a texture -/// -/// \param texture A texture to be queried. -/// \param format A pointer filled in with the raw format of the texture. The -/// actual format may differ, but pixel transfers will use this -/// format. -/// \param access A pointer filled in with the actual access to the texture. -/// \param w A pointer filled in with the width of the texture in pixels. -/// \param h A pointer filled in with the height of the texture in pixels. -/// -/// \return 0 on success, or -1 if the texture is not valid. - pub fn SDL_QueryTexture(texture: *mut SDL_Texture, format: *mut Uint32, - access: *mut ::std::os::raw::c_int, - w: *mut ::std::os::raw::c_int, - h: *mut ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param texture A texture to be queried. + /// \param format A pointer filled in with the raw format of the texture. The + /// actual format may differ, but pixel transfers will use this + /// format. + /// \param access A pointer filled in with the actual access to the texture. + /// \param w A pointer filled in with the width of the texture in pixels. + /// \param h A pointer filled in with the height of the texture in pixels. + /// + /// \return 0 on success, or -1 if the texture is not valid. + pub fn SDL_QueryTexture( + texture: *mut SDL_Texture, + format: *mut Uint32, + access: *mut ::std::os::raw::c_int, + w: *mut ::std::os::raw::c_int, + h: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set an additional color value used in render copy operations. -/// -/// \param texture The texture to update. -/// \param r The red color value multiplied into copy operations. -/// \param g The green color value multiplied into copy operations. -/// \param b The blue color value multiplied into copy operations. -/// -/// \return 0 on success, or -1 if the texture is not valid or color modulation -/// is not supported. -/// -/// \sa SDL_GetTextureColorMod() - pub fn SDL_SetTextureColorMod(texture: *mut SDL_Texture, r: Uint8, - g: Uint8, b: Uint8) - -> ::std::os::raw::c_int; + /// + /// \param texture The texture to update. + /// \param r The red color value multiplied into copy operations. + /// \param g The green color value multiplied into copy operations. + /// \param b The blue color value multiplied into copy operations. + /// + /// \return 0 on success, or -1 if the texture is not valid or color modulation + /// is not supported. + /// + /// \sa SDL_GetTextureColorMod() + pub fn SDL_SetTextureColorMod( + texture: *mut SDL_Texture, + r: Uint8, + g: Uint8, + b: Uint8, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the additional color value used in render copy operations. -/// -/// \param texture The texture to query. -/// \param r A pointer filled in with the current red color value. -/// \param g A pointer filled in with the current green color value. -/// \param b A pointer filled in with the current blue color value. -/// -/// \return 0 on success, or -1 if the texture is not valid. -/// -/// \sa SDL_SetTextureColorMod() - pub fn SDL_GetTextureColorMod(texture: *mut SDL_Texture, r: *mut Uint8, - g: *mut Uint8, b: *mut Uint8) - -> ::std::os::raw::c_int; + /// + /// \param texture The texture to query. + /// \param r A pointer filled in with the current red color value. + /// \param g A pointer filled in with the current green color value. + /// \param b A pointer filled in with the current blue color value. + /// + /// \return 0 on success, or -1 if the texture is not valid. + /// + /// \sa SDL_SetTextureColorMod() + pub fn SDL_GetTextureColorMod( + texture: *mut SDL_Texture, + r: *mut Uint8, + g: *mut Uint8, + b: *mut Uint8, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set an additional alpha value used in render copy operations. -/// -/// \param texture The texture to update. -/// \param alpha The alpha value multiplied into copy operations. -/// -/// \return 0 on success, or -1 if the texture is not valid or alpha modulation -/// is not supported. -/// -/// \sa SDL_GetTextureAlphaMod() + /// + /// \param texture The texture to update. + /// \param alpha The alpha value multiplied into copy operations. + /// + /// \return 0 on success, or -1 if the texture is not valid or alpha modulation + /// is not supported. + /// + /// \sa SDL_GetTextureAlphaMod() pub fn SDL_SetTextureAlphaMod(texture: *mut SDL_Texture, alpha: Uint8) - -> ::std::os::raw::c_int; + -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the additional alpha value used in render copy operations. -/// -/// \param texture The texture to query. -/// \param alpha A pointer filled in with the current alpha value. -/// -/// \return 0 on success, or -1 if the texture is not valid. -/// -/// \sa SDL_SetTextureAlphaMod() - pub fn SDL_GetTextureAlphaMod(texture: *mut SDL_Texture, - alpha: *mut Uint8) -> ::std::os::raw::c_int; + /// + /// \param texture The texture to query. + /// \param alpha A pointer filled in with the current alpha value. + /// + /// \return 0 on success, or -1 if the texture is not valid. + /// + /// \sa SDL_SetTextureAlphaMod() + pub fn SDL_GetTextureAlphaMod( + texture: *mut SDL_Texture, + alpha: *mut Uint8, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set the blend mode used for texture copy operations. -/// -/// \param texture The texture to update. -/// \param blendMode ::SDL_BlendMode to use for texture blending. -/// -/// \return 0 on success, or -1 if the texture is not valid or the blend mode is -/// not supported. -/// -/// \note If the blend mode is not supported, the closest supported mode is -/// chosen. -/// -/// \sa SDL_GetTextureBlendMode() - pub fn SDL_SetTextureBlendMode(texture: *mut SDL_Texture, - blendMode: SDL_BlendMode) - -> ::std::os::raw::c_int; + /// + /// \param texture The texture to update. + /// \param blendMode ::SDL_BlendMode to use for texture blending. + /// + /// \return 0 on success, or -1 if the texture is not valid or the blend mode is + /// not supported. + /// + /// \note If the blend mode is not supported, the closest supported mode is + /// chosen. + /// + /// \sa SDL_GetTextureBlendMode() + pub fn SDL_SetTextureBlendMode( + texture: *mut SDL_Texture, + blendMode: SDL_BlendMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the blend mode used for texture copy operations. -/// -/// \param texture The texture to query. -/// \param blendMode A pointer filled in with the current blend mode. -/// -/// \return 0 on success, or -1 if the texture is not valid. -/// -/// \sa SDL_SetTextureBlendMode() - pub fn SDL_GetTextureBlendMode(texture: *mut SDL_Texture, - blendMode: *mut SDL_BlendMode) - -> ::std::os::raw::c_int; + /// + /// \param texture The texture to query. + /// \param blendMode A pointer filled in with the current blend mode. + /// + /// \return 0 on success, or -1 if the texture is not valid. + /// + /// \sa SDL_SetTextureBlendMode() + pub fn SDL_GetTextureBlendMode( + texture: *mut SDL_Texture, + blendMode: *mut SDL_BlendMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Update the given texture rectangle with new pixel data. -/// -/// \param texture The texture to update -/// \param rect A pointer to the rectangle of pixels to update, or NULL to -/// update the entire texture. -/// \param pixels The raw pixel data in the format of the texture. -/// \param pitch The number of bytes in a row of pixel data, including padding between lines. -/// -/// The pixel data must be in the format of the texture. The pixel format can be -/// queried with SDL_QueryTexture. -/// -/// \return 0 on success, or -1 if the texture is not valid. -/// -/// \note This is a fairly slow function. - pub fn SDL_UpdateTexture(texture: *mut SDL_Texture, rect: *const SDL_Rect, - pixels: *const ::std::os::raw::c_void, - pitch: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param texture The texture to update + /// \param rect A pointer to the rectangle of pixels to update, or NULL to + /// update the entire texture. + /// \param pixels The raw pixel data in the format of the texture. + /// \param pitch The number of bytes in a row of pixel data, including padding between lines. + /// + /// The pixel data must be in the format of the texture. The pixel format can be + /// queried with SDL_QueryTexture. + /// + /// \return 0 on success, or -1 if the texture is not valid. + /// + /// \note This is a fairly slow function. + pub fn SDL_UpdateTexture( + texture: *mut SDL_Texture, + rect: *const SDL_Rect, + pixels: *const ::std::os::raw::c_void, + pitch: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Update a rectangle within a planar YV12 or IYUV texture with new pixel data. -/// -/// \param texture The texture to update -/// \param rect A pointer to the rectangle of pixels to update, or NULL to -/// update the entire texture. -/// \param Yplane The raw pixel data for the Y plane. -/// \param Ypitch The number of bytes between rows of pixel data for the Y plane. -/// \param Uplane The raw pixel data for the U plane. -/// \param Upitch The number of bytes between rows of pixel data for the U plane. -/// \param Vplane The raw pixel data for the V plane. -/// \param Vpitch The number of bytes between rows of pixel data for the V plane. -/// -/// \return 0 on success, or -1 if the texture is not valid. -/// -/// \note You can use SDL_UpdateTexture() as long as your pixel data is -/// a contiguous block of Y and U/V planes in the proper order, but -/// this function is available if your pixel data is not contiguous. - pub fn SDL_UpdateYUVTexture(texture: *mut SDL_Texture, - rect: *const SDL_Rect, Yplane: *const Uint8, - Ypitch: ::std::os::raw::c_int, - Uplane: *const Uint8, - Upitch: ::std::os::raw::c_int, - Vplane: *const Uint8, - Vpitch: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param texture The texture to update + /// \param rect A pointer to the rectangle of pixels to update, or NULL to + /// update the entire texture. + /// \param Yplane The raw pixel data for the Y plane. + /// \param Ypitch The number of bytes between rows of pixel data for the Y plane. + /// \param Uplane The raw pixel data for the U plane. + /// \param Upitch The number of bytes between rows of pixel data for the U plane. + /// \param Vplane The raw pixel data for the V plane. + /// \param Vpitch The number of bytes between rows of pixel data for the V plane. + /// + /// \return 0 on success, or -1 if the texture is not valid. + /// + /// \note You can use SDL_UpdateTexture() as long as your pixel data is + /// a contiguous block of Y and U/V planes in the proper order, but + /// this function is available if your pixel data is not contiguous. + pub fn SDL_UpdateYUVTexture( + texture: *mut SDL_Texture, + rect: *const SDL_Rect, + Yplane: *const Uint8, + Ypitch: ::std::os::raw::c_int, + Uplane: *const Uint8, + Upitch: ::std::os::raw::c_int, + Vplane: *const Uint8, + Vpitch: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Lock a portion of the texture for write-only pixel access. -/// -/// \param texture The texture to lock for access, which was created with -/// ::SDL_TEXTUREACCESS_STREAMING. -/// \param rect A pointer to the rectangle to lock for access. If the rect -/// is NULL, the entire texture will be locked. -/// \param pixels This is filled in with a pointer to the locked pixels, -/// appropriately offset by the locked area. -/// \param pitch This is filled in with the pitch of the locked pixels. -/// -/// \return 0 on success, or -1 if the texture is not valid or was not created with ::SDL_TEXTUREACCESS_STREAMING. -/// -/// \sa SDL_UnlockTexture() - pub fn SDL_LockTexture(texture: *mut SDL_Texture, rect: *const SDL_Rect, - pixels: *mut *mut ::std::os::raw::c_void, - pitch: *mut ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param texture The texture to lock for access, which was created with + /// ::SDL_TEXTUREACCESS_STREAMING. + /// \param rect A pointer to the rectangle to lock for access. If the rect + /// is NULL, the entire texture will be locked. + /// \param pixels This is filled in with a pointer to the locked pixels, + /// appropriately offset by the locked area. + /// \param pitch This is filled in with the pitch of the locked pixels. + /// + /// \return 0 on success, or -1 if the texture is not valid or was not created with ::SDL_TEXTUREACCESS_STREAMING. + /// + /// \sa SDL_UnlockTexture() + pub fn SDL_LockTexture( + texture: *mut SDL_Texture, + rect: *const SDL_Rect, + pixels: *mut *mut ::std::os::raw::c_void, + pitch: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Unlock a texture, uploading the changes to video memory, if needed. -/// -/// \sa SDL_LockTexture() + /// + /// \sa SDL_LockTexture() pub fn SDL_UnlockTexture(texture: *mut SDL_Texture); } extern "C" { /// \brief Determines whether a window supports the use of render targets -/// -/// \param renderer The renderer that will be checked -/// -/// \return SDL_TRUE if supported, SDL_FALSE if not. + /// + /// \param renderer The renderer that will be checked + /// + /// \return SDL_TRUE if supported, SDL_FALSE if not. pub fn SDL_RenderTargetSupported(renderer: *mut SDL_Renderer) -> SDL_bool; } extern "C" { /// \brief Set a texture as the current rendering target. -/// -/// \param renderer The renderer. -/// \param texture The targeted texture, which must be created with the SDL_TEXTUREACCESS_TARGET flag, or NULL for the default render target -/// -/// \return 0 on success, or -1 on error -/// -/// \sa SDL_GetRenderTarget() - pub fn SDL_SetRenderTarget(renderer: *mut SDL_Renderer, - texture: *mut SDL_Texture) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer. + /// \param texture The targeted texture, which must be created with the SDL_TEXTUREACCESS_TARGET flag, or NULL for the default render target + /// + /// \return 0 on success, or -1 on error + /// + /// \sa SDL_GetRenderTarget() + pub fn SDL_SetRenderTarget( + renderer: *mut SDL_Renderer, + texture: *mut SDL_Texture, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the current render target or NULL for the default render target. -/// -/// \return The current render target -/// -/// \sa SDL_SetRenderTarget() - pub fn SDL_GetRenderTarget(renderer: *mut SDL_Renderer) - -> *mut SDL_Texture; + /// + /// \return The current render target + /// + /// \sa SDL_SetRenderTarget() + pub fn SDL_GetRenderTarget(renderer: *mut SDL_Renderer) -> *mut SDL_Texture; } extern "C" { /// \brief Set device independent resolution for rendering -/// -/// \param renderer The renderer for which resolution should be set. -/// \param w The width of the logical resolution -/// \param h The height of the logical resolution -/// -/// This function uses the viewport and scaling functionality to allow a fixed logical -/// resolution for rendering, regardless of the actual output resolution. If the actual -/// output resolution doesn't have the same aspect ratio the output rendering will be -/// centered within the output display. -/// -/// If the output display is a window, mouse events in the window will be filtered -/// and scaled so they seem to arrive within the logical resolution. -/// -/// \note If this function results in scaling or subpixel drawing by the -/// rendering backend, it will be handled using the appropriate -/// quality hints. -/// -/// \sa SDL_RenderGetLogicalSize() -/// \sa SDL_RenderSetScale() -/// \sa SDL_RenderSetViewport() - pub fn SDL_RenderSetLogicalSize(renderer: *mut SDL_Renderer, - w: ::std::os::raw::c_int, - h: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer for which resolution should be set. + /// \param w The width of the logical resolution + /// \param h The height of the logical resolution + /// + /// This function uses the viewport and scaling functionality to allow a fixed logical + /// resolution for rendering, regardless of the actual output resolution. If the actual + /// output resolution doesn't have the same aspect ratio the output rendering will be + /// centered within the output display. + /// + /// If the output display is a window, mouse events in the window will be filtered + /// and scaled so they seem to arrive within the logical resolution. + /// + /// \note If this function results in scaling or subpixel drawing by the + /// rendering backend, it will be handled using the appropriate + /// quality hints. + /// + /// \sa SDL_RenderGetLogicalSize() + /// \sa SDL_RenderSetScale() + /// \sa SDL_RenderSetViewport() + pub fn SDL_RenderSetLogicalSize( + renderer: *mut SDL_Renderer, + w: ::std::os::raw::c_int, + h: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get device independent resolution for rendering -/// -/// \param renderer The renderer from which resolution should be queried. -/// \param w A pointer filled with the width of the logical resolution -/// \param h A pointer filled with the height of the logical resolution -/// -/// \sa SDL_RenderSetLogicalSize() - pub fn SDL_RenderGetLogicalSize(renderer: *mut SDL_Renderer, - w: *mut ::std::os::raw::c_int, - h: *mut ::std::os::raw::c_int); + /// + /// \param renderer The renderer from which resolution should be queried. + /// \param w A pointer filled with the width of the logical resolution + /// \param h A pointer filled with the height of the logical resolution + /// + /// \sa SDL_RenderSetLogicalSize() + pub fn SDL_RenderGetLogicalSize( + renderer: *mut SDL_Renderer, + w: *mut ::std::os::raw::c_int, + h: *mut ::std::os::raw::c_int, + ); } extern "C" { /// \brief Set whether to force integer scales for resolution-independent rendering -/// -/// \param renderer The renderer for which integer scaling should be set. -/// \param enable Enable or disable integer scaling -/// -/// This function restricts the logical viewport to integer values - that is, when -/// a resolution is between two multiples of a logical size, the viewport size is -/// rounded down to the lower multiple. -/// -/// \sa SDL_RenderSetLogicalSize() - pub fn SDL_RenderSetIntegerScale(renderer: *mut SDL_Renderer, - enable: SDL_bool) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer for which integer scaling should be set. + /// \param enable Enable or disable integer scaling + /// + /// This function restricts the logical viewport to integer values - that is, when + /// a resolution is between two multiples of a logical size, the viewport size is + /// rounded down to the lower multiple. + /// + /// \sa SDL_RenderSetLogicalSize() + pub fn SDL_RenderSetIntegerScale( + renderer: *mut SDL_Renderer, + enable: SDL_bool, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get whether integer scales are forced for resolution-independent rendering -/// -/// \param renderer The renderer from which integer scaling should be queried. -/// -/// \sa SDL_RenderSetIntegerScale() + /// + /// \param renderer The renderer from which integer scaling should be queried. + /// + /// \sa SDL_RenderSetIntegerScale() pub fn SDL_RenderGetIntegerScale(renderer: *mut SDL_Renderer) -> SDL_bool; } extern "C" { /// \brief Set the drawing area for rendering on the current target. -/// -/// \param renderer The renderer for which the drawing area should be set. -/// \param rect The rectangle representing the drawing area, or NULL to set the viewport to the entire target. -/// -/// The x,y of the viewport rect represents the origin for rendering. -/// -/// \return 0 on success, or -1 on error -/// -/// \note If the window associated with the renderer is resized, the viewport is automatically reset. -/// -/// \sa SDL_RenderGetViewport() -/// \sa SDL_RenderSetLogicalSize() - pub fn SDL_RenderSetViewport(renderer: *mut SDL_Renderer, - rect: *const SDL_Rect) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer for which the drawing area should be set. + /// \param rect The rectangle representing the drawing area, or NULL to set the viewport to the entire target. + /// + /// The x,y of the viewport rect represents the origin for rendering. + /// + /// \return 0 on success, or -1 on error + /// + /// \note If the window associated with the renderer is resized, the viewport is automatically reset. + /// + /// \sa SDL_RenderGetViewport() + /// \sa SDL_RenderSetLogicalSize() + pub fn SDL_RenderSetViewport( + renderer: *mut SDL_Renderer, + rect: *const SDL_Rect, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the drawing area for the current target. -/// -/// \sa SDL_RenderSetViewport() - pub fn SDL_RenderGetViewport(renderer: *mut SDL_Renderer, - rect: *mut SDL_Rect); + /// + /// \sa SDL_RenderSetViewport() + pub fn SDL_RenderGetViewport(renderer: *mut SDL_Renderer, rect: *mut SDL_Rect); } extern "C" { /// \brief Set the clip rectangle for the current target. -/// -/// \param renderer The renderer for which clip rectangle should be set. -/// \param rect A pointer to the rectangle to set as the clip rectangle, or -/// NULL to disable clipping. -/// -/// \return 0 on success, or -1 on error -/// -/// \sa SDL_RenderGetClipRect() - pub fn SDL_RenderSetClipRect(renderer: *mut SDL_Renderer, - rect: *const SDL_Rect) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer for which clip rectangle should be set. + /// \param rect A pointer to the rectangle to set as the clip rectangle, or + /// NULL to disable clipping. + /// + /// \return 0 on success, or -1 on error + /// + /// \sa SDL_RenderGetClipRect() + pub fn SDL_RenderSetClipRect( + renderer: *mut SDL_Renderer, + rect: *const SDL_Rect, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the clip rectangle for the current target. -/// -/// \param renderer The renderer from which clip rectangle should be queried. -/// \param rect A pointer filled in with the current clip rectangle, or -/// an empty rectangle if clipping is disabled. -/// -/// \sa SDL_RenderSetClipRect() - pub fn SDL_RenderGetClipRect(renderer: *mut SDL_Renderer, - rect: *mut SDL_Rect); + /// + /// \param renderer The renderer from which clip rectangle should be queried. + /// \param rect A pointer filled in with the current clip rectangle, or + /// an empty rectangle if clipping is disabled. + /// + /// \sa SDL_RenderSetClipRect() + pub fn SDL_RenderGetClipRect(renderer: *mut SDL_Renderer, rect: *mut SDL_Rect); } extern "C" { /// \brief Get whether clipping is enabled on the given renderer. -/// -/// \param renderer The renderer from which clip state should be queried. -/// -/// \sa SDL_RenderGetClipRect() + /// + /// \param renderer The renderer from which clip state should be queried. + /// + /// \sa SDL_RenderGetClipRect() pub fn SDL_RenderIsClipEnabled(renderer: *mut SDL_Renderer) -> SDL_bool; } extern "C" { /// \brief Set the drawing scale for rendering on the current target. -/// -/// \param renderer The renderer for which the drawing scale should be set. -/// \param scaleX The horizontal scaling factor -/// \param scaleY The vertical scaling factor -/// -/// The drawing coordinates are scaled by the x/y scaling factors -/// before they are used by the renderer. This allows resolution -/// independent drawing with a single coordinate system. -/// -/// \note If this results in scaling or subpixel drawing by the -/// rendering backend, it will be handled using the appropriate -/// quality hints. For best results use integer scaling factors. -/// -/// \sa SDL_RenderGetScale() -/// \sa SDL_RenderSetLogicalSize() - pub fn SDL_RenderSetScale(renderer: *mut SDL_Renderer, scaleX: f32, - scaleY: f32) -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer for which the drawing scale should be set. + /// \param scaleX The horizontal scaling factor + /// \param scaleY The vertical scaling factor + /// + /// The drawing coordinates are scaled by the x/y scaling factors + /// before they are used by the renderer. This allows resolution + /// independent drawing with a single coordinate system. + /// + /// \note If this results in scaling or subpixel drawing by the + /// rendering backend, it will be handled using the appropriate + /// quality hints. For best results use integer scaling factors. + /// + /// \sa SDL_RenderGetScale() + /// \sa SDL_RenderSetLogicalSize() + pub fn SDL_RenderSetScale( + renderer: *mut SDL_Renderer, + scaleX: f32, + scaleY: f32, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the drawing scale for the current target. -/// -/// \param renderer The renderer from which drawing scale should be queried. -/// \param scaleX A pointer filled in with the horizontal scaling factor -/// \param scaleY A pointer filled in with the vertical scaling factor -/// -/// \sa SDL_RenderSetScale() - pub fn SDL_RenderGetScale(renderer: *mut SDL_Renderer, scaleX: *mut f32, - scaleY: *mut f32); + /// + /// \param renderer The renderer from which drawing scale should be queried. + /// \param scaleX A pointer filled in with the horizontal scaling factor + /// \param scaleY A pointer filled in with the vertical scaling factor + /// + /// \sa SDL_RenderSetScale() + pub fn SDL_RenderGetScale(renderer: *mut SDL_Renderer, scaleX: *mut f32, scaleY: *mut f32); } extern "C" { /// \brief Set the color used for drawing operations (Rect, Line and Clear). -/// -/// \param renderer The renderer for which drawing color should be set. -/// \param r The red value used to draw on the rendering target. -/// \param g The green value used to draw on the rendering target. -/// \param b The blue value used to draw on the rendering target. -/// \param a The alpha value used to draw on the rendering target, usually -/// ::SDL_ALPHA_OPAQUE (255). -/// -/// \return 0 on success, or -1 on error - pub fn SDL_SetRenderDrawColor(renderer: *mut SDL_Renderer, r: Uint8, - g: Uint8, b: Uint8, a: Uint8) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer for which drawing color should be set. + /// \param r The red value used to draw on the rendering target. + /// \param g The green value used to draw on the rendering target. + /// \param b The blue value used to draw on the rendering target. + /// \param a The alpha value used to draw on the rendering target, usually + /// ::SDL_ALPHA_OPAQUE (255). + /// + /// \return 0 on success, or -1 on error + pub fn SDL_SetRenderDrawColor( + renderer: *mut SDL_Renderer, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the color used for drawing operations (Rect, Line and Clear). -/// -/// \param renderer The renderer from which drawing color should be queried. -/// \param r A pointer to the red value used to draw on the rendering target. -/// \param g A pointer to the green value used to draw on the rendering target. -/// \param b A pointer to the blue value used to draw on the rendering target. -/// \param a A pointer to the alpha value used to draw on the rendering target, -/// usually ::SDL_ALPHA_OPAQUE (255). -/// -/// \return 0 on success, or -1 on error - pub fn SDL_GetRenderDrawColor(renderer: *mut SDL_Renderer, r: *mut Uint8, - g: *mut Uint8, b: *mut Uint8, a: *mut Uint8) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer from which drawing color should be queried. + /// \param r A pointer to the red value used to draw on the rendering target. + /// \param g A pointer to the green value used to draw on the rendering target. + /// \param b A pointer to the blue value used to draw on the rendering target. + /// \param a A pointer to the alpha value used to draw on the rendering target, + /// usually ::SDL_ALPHA_OPAQUE (255). + /// + /// \return 0 on success, or -1 on error + pub fn SDL_GetRenderDrawColor( + renderer: *mut SDL_Renderer, + r: *mut Uint8, + g: *mut Uint8, + b: *mut Uint8, + a: *mut Uint8, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Set the blend mode used for drawing operations (Fill and Line). -/// -/// \param renderer The renderer for which blend mode should be set. -/// \param blendMode ::SDL_BlendMode to use for blending. -/// -/// \return 0 on success, or -1 on error -/// -/// \note If the blend mode is not supported, the closest supported mode is -/// chosen. -/// -/// \sa SDL_GetRenderDrawBlendMode() - pub fn SDL_SetRenderDrawBlendMode(renderer: *mut SDL_Renderer, - blendMode: SDL_BlendMode) - -> ::std::os::raw::c_int; -} -extern "C" { + /// + /// \param renderer The renderer for which blend mode should be set. + /// \param blendMode ::SDL_BlendMode to use for blending. + /// + /// \return 0 on success, or -1 on error + /// + /// \note If the blend mode is not supported, the closest supported mode is + /// chosen. + /// + /// \sa SDL_GetRenderDrawBlendMode() + pub fn SDL_SetRenderDrawBlendMode( + renderer: *mut SDL_Renderer, + blendMode: SDL_BlendMode, + ) -> ::std::os::raw::c_int; +} +extern "C" { /// \brief Get the blend mode used for drawing operations. -/// -/// \param renderer The renderer from which blend mode should be queried. -/// \param blendMode A pointer filled in with the current blend mode. -/// -/// \return 0 on success, or -1 on error -/// -/// \sa SDL_SetRenderDrawBlendMode() - pub fn SDL_GetRenderDrawBlendMode(renderer: *mut SDL_Renderer, - blendMode: *mut SDL_BlendMode) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer from which blend mode should be queried. + /// \param blendMode A pointer filled in with the current blend mode. + /// + /// \return 0 on success, or -1 on error + /// + /// \sa SDL_SetRenderDrawBlendMode() + pub fn SDL_GetRenderDrawBlendMode( + renderer: *mut SDL_Renderer, + blendMode: *mut SDL_BlendMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Clear the current rendering target with the drawing color -/// -/// This function clears the entire rendering target, ignoring the viewport and -/// the clip rectangle. -/// -/// \return 0 on success, or -1 on error - pub fn SDL_RenderClear(renderer: *mut SDL_Renderer) - -> ::std::os::raw::c_int; + /// + /// This function clears the entire rendering target, ignoring the viewport and + /// the clip rectangle. + /// + /// \return 0 on success, or -1 on error + pub fn SDL_RenderClear(renderer: *mut SDL_Renderer) -> ::std::os::raw::c_int; } extern "C" { /// \brief Draw a point on the current rendering target. -/// -/// \param renderer The renderer which should draw a point. -/// \param x The x coordinate of the point. -/// \param y The y coordinate of the point. -/// -/// \return 0 on success, or -1 on error - pub fn SDL_RenderDrawPoint(renderer: *mut SDL_Renderer, - x: ::std::os::raw::c_int, - y: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer which should draw a point. + /// \param x The x coordinate of the point. + /// \param y The y coordinate of the point. + /// + /// \return 0 on success, or -1 on error + pub fn SDL_RenderDrawPoint( + renderer: *mut SDL_Renderer, + x: ::std::os::raw::c_int, + y: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Draw multiple points on the current rendering target. -/// -/// \param renderer The renderer which should draw multiple points. -/// \param points The points to draw -/// \param count The number of points to draw -/// -/// \return 0 on success, or -1 on error - pub fn SDL_RenderDrawPoints(renderer: *mut SDL_Renderer, - points: *const SDL_Point, - count: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer which should draw multiple points. + /// \param points The points to draw + /// \param count The number of points to draw + /// + /// \return 0 on success, or -1 on error + pub fn SDL_RenderDrawPoints( + renderer: *mut SDL_Renderer, + points: *const SDL_Point, + count: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Draw a line on the current rendering target. -/// -/// \param renderer The renderer which should draw a line. -/// \param x1 The x coordinate of the start point. -/// \param y1 The y coordinate of the start point. -/// \param x2 The x coordinate of the end point. -/// \param y2 The y coordinate of the end point. -/// -/// \return 0 on success, or -1 on error - pub fn SDL_RenderDrawLine(renderer: *mut SDL_Renderer, - x1: ::std::os::raw::c_int, - y1: ::std::os::raw::c_int, - x2: ::std::os::raw::c_int, - y2: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer which should draw a line. + /// \param x1 The x coordinate of the start point. + /// \param y1 The y coordinate of the start point. + /// \param x2 The x coordinate of the end point. + /// \param y2 The y coordinate of the end point. + /// + /// \return 0 on success, or -1 on error + pub fn SDL_RenderDrawLine( + renderer: *mut SDL_Renderer, + x1: ::std::os::raw::c_int, + y1: ::std::os::raw::c_int, + x2: ::std::os::raw::c_int, + y2: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Draw a series of connected lines on the current rendering target. -/// -/// \param renderer The renderer which should draw multiple lines. -/// \param points The points along the lines -/// \param count The number of points, drawing count-1 lines -/// -/// \return 0 on success, or -1 on error - pub fn SDL_RenderDrawLines(renderer: *mut SDL_Renderer, - points: *const SDL_Point, - count: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer which should draw multiple lines. + /// \param points The points along the lines + /// \param count The number of points, drawing count-1 lines + /// + /// \return 0 on success, or -1 on error + pub fn SDL_RenderDrawLines( + renderer: *mut SDL_Renderer, + points: *const SDL_Point, + count: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Draw a rectangle on the current rendering target. -/// -/// \param renderer The renderer which should draw a rectangle. -/// \param rect A pointer to the destination rectangle, or NULL to outline the entire rendering target. -/// -/// \return 0 on success, or -1 on error - pub fn SDL_RenderDrawRect(renderer: *mut SDL_Renderer, - rect: *const SDL_Rect) -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer which should draw a rectangle. + /// \param rect A pointer to the destination rectangle, or NULL to outline the entire rendering target. + /// + /// \return 0 on success, or -1 on error + pub fn SDL_RenderDrawRect( + renderer: *mut SDL_Renderer, + rect: *const SDL_Rect, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Draw some number of rectangles on the current rendering target. -/// -/// \param renderer The renderer which should draw multiple rectangles. -/// \param rects A pointer to an array of destination rectangles. -/// \param count The number of rectangles. -/// -/// \return 0 on success, or -1 on error - pub fn SDL_RenderDrawRects(renderer: *mut SDL_Renderer, - rects: *const SDL_Rect, - count: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer which should draw multiple rectangles. + /// \param rects A pointer to an array of destination rectangles. + /// \param count The number of rectangles. + /// + /// \return 0 on success, or -1 on error + pub fn SDL_RenderDrawRects( + renderer: *mut SDL_Renderer, + rects: *const SDL_Rect, + count: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Fill a rectangle on the current rendering target with the drawing color. -/// -/// \param renderer The renderer which should fill a rectangle. -/// \param rect A pointer to the destination rectangle, or NULL for the entire -/// rendering target. -/// -/// \return 0 on success, or -1 on error - pub fn SDL_RenderFillRect(renderer: *mut SDL_Renderer, - rect: *const SDL_Rect) -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer which should fill a rectangle. + /// \param rect A pointer to the destination rectangle, or NULL for the entire + /// rendering target. + /// + /// \return 0 on success, or -1 on error + pub fn SDL_RenderFillRect( + renderer: *mut SDL_Renderer, + rect: *const SDL_Rect, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Fill some number of rectangles on the current rendering target with the drawing color. -/// -/// \param renderer The renderer which should fill multiple rectangles. -/// \param rects A pointer to an array of destination rectangles. -/// \param count The number of rectangles. -/// -/// \return 0 on success, or -1 on error - pub fn SDL_RenderFillRects(renderer: *mut SDL_Renderer, - rects: *const SDL_Rect, - count: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer which should fill multiple rectangles. + /// \param rects A pointer to an array of destination rectangles. + /// \param count The number of rectangles. + /// + /// \return 0 on success, or -1 on error + pub fn SDL_RenderFillRects( + renderer: *mut SDL_Renderer, + rects: *const SDL_Rect, + count: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Copy a portion of the texture to the current rendering target. -/// -/// \param renderer The renderer which should copy parts of a texture. -/// \param texture The source texture. -/// \param srcrect A pointer to the source rectangle, or NULL for the entire -/// texture. -/// \param dstrect A pointer to the destination rectangle, or NULL for the -/// entire rendering target. -/// -/// \return 0 on success, or -1 on error - pub fn SDL_RenderCopy(renderer: *mut SDL_Renderer, - texture: *mut SDL_Texture, srcrect: *const SDL_Rect, - dstrect: *const SDL_Rect) -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer which should copy parts of a texture. + /// \param texture The source texture. + /// \param srcrect A pointer to the source rectangle, or NULL for the entire + /// texture. + /// \param dstrect A pointer to the destination rectangle, or NULL for the + /// entire rendering target. + /// + /// \return 0 on success, or -1 on error + pub fn SDL_RenderCopy( + renderer: *mut SDL_Renderer, + texture: *mut SDL_Texture, + srcrect: *const SDL_Rect, + dstrect: *const SDL_Rect, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Copy a portion of the source texture to the current rendering target, rotating it by angle around the given center -/// -/// \param renderer The renderer which should copy parts of a texture. -/// \param texture The source texture. -/// \param srcrect A pointer to the source rectangle, or NULL for the entire -/// texture. -/// \param dstrect A pointer to the destination rectangle, or NULL for the -/// entire rendering target. -/// \param angle An angle in degrees that indicates the rotation that will be applied to dstrect, rotating it in a clockwise direction -/// \param center A pointer to a point indicating the point around which dstrect will be rotated (if NULL, rotation will be done around dstrect.w/2, dstrect.h/2). -/// \param flip An SDL_RendererFlip value stating which flipping actions should be performed on the texture -/// -/// \return 0 on success, or -1 on error - pub fn SDL_RenderCopyEx(renderer: *mut SDL_Renderer, - texture: *mut SDL_Texture, - srcrect: *const SDL_Rect, - dstrect: *const SDL_Rect, angle: f64, - center: *const SDL_Point, flip: SDL_RendererFlip) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer which should copy parts of a texture. + /// \param texture The source texture. + /// \param srcrect A pointer to the source rectangle, or NULL for the entire + /// texture. + /// \param dstrect A pointer to the destination rectangle, or NULL for the + /// entire rendering target. + /// \param angle An angle in degrees that indicates the rotation that will be applied to dstrect, rotating it in a clockwise direction + /// \param center A pointer to a point indicating the point around which dstrect will be rotated (if NULL, rotation will be done around dstrect.w/2, dstrect.h/2). + /// \param flip An SDL_RendererFlip value stating which flipping actions should be performed on the texture + /// + /// \return 0 on success, or -1 on error + pub fn SDL_RenderCopyEx( + renderer: *mut SDL_Renderer, + texture: *mut SDL_Texture, + srcrect: *const SDL_Rect, + dstrect: *const SDL_Rect, + angle: f64, + center: *const SDL_Point, + flip: SDL_RendererFlip, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Read pixels from the current rendering target. -/// -/// \param renderer The renderer from which pixels should be read. -/// \param rect A pointer to the rectangle to read, or NULL for the entire -/// render target. -/// \param format The desired format of the pixel data, or 0 to use the format -/// of the rendering target -/// \param pixels A pointer to be filled in with the pixel data -/// \param pitch The pitch of the pixels parameter. -/// -/// \return 0 on success, or -1 if pixel reading is not supported. -/// -/// \warning This is a very slow operation, and should not be used frequently. - pub fn SDL_RenderReadPixels(renderer: *mut SDL_Renderer, - rect: *const SDL_Rect, format: Uint32, - pixels: *mut ::std::os::raw::c_void, - pitch: ::std::os::raw::c_int) - -> ::std::os::raw::c_int; + /// + /// \param renderer The renderer from which pixels should be read. + /// \param rect A pointer to the rectangle to read, or NULL for the entire + /// render target. + /// \param format The desired format of the pixel data, or 0 to use the format + /// of the rendering target + /// \param pixels A pointer to be filled in with the pixel data + /// \param pitch The pitch of the pixels parameter. + /// + /// \return 0 on success, or -1 if pixel reading is not supported. + /// + /// \warning This is a very slow operation, and should not be used frequently. + pub fn SDL_RenderReadPixels( + renderer: *mut SDL_Renderer, + rect: *const SDL_Rect, + format: Uint32, + pixels: *mut ::std::os::raw::c_void, + pitch: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Update the screen with rendering performed. @@ -12854,87 +16388,95 @@ extern "C" { } extern "C" { /// \brief Destroy the specified texture. -/// -/// \sa SDL_CreateTexture() -/// \sa SDL_CreateTextureFromSurface() + /// + /// \sa SDL_CreateTexture() + /// \sa SDL_CreateTextureFromSurface() pub fn SDL_DestroyTexture(texture: *mut SDL_Texture); } extern "C" { /// \brief Destroy the rendering context for a window and free associated -/// textures. -/// -/// \sa SDL_CreateRenderer() + /// textures. + /// + /// \sa SDL_CreateRenderer() pub fn SDL_DestroyRenderer(renderer: *mut SDL_Renderer); } extern "C" { /// \brief Bind the texture to the current OpenGL/ES/ES2 context for use with -/// OpenGL instructions. -/// -/// \param texture The SDL texture to bind -/// \param texw A pointer to a float that will be filled with the texture width -/// \param texh A pointer to a float that will be filled with the texture height -/// -/// \return 0 on success, or -1 if the operation is not supported - pub fn SDL_GL_BindTexture(texture: *mut SDL_Texture, texw: *mut f32, - texh: *mut f32) -> ::std::os::raw::c_int; + /// OpenGL instructions. + /// + /// \param texture The SDL texture to bind + /// \param texw A pointer to a float that will be filled with the texture width + /// \param texh A pointer to a float that will be filled with the texture height + /// + /// \return 0 on success, or -1 if the operation is not supported + pub fn SDL_GL_BindTexture( + texture: *mut SDL_Texture, + texw: *mut f32, + texh: *mut f32, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Unbind a texture from the current OpenGL/ES/ES2 context. -/// -/// \param texture The SDL texture to unbind -/// -/// \return 0 on success, or -1 if the operation is not supported - pub fn SDL_GL_UnbindTexture(texture: *mut SDL_Texture) - -> ::std::os::raw::c_int; + /// + /// \param texture The SDL texture to unbind + /// + /// \return 0 on success, or -1 if the operation is not supported + pub fn SDL_GL_UnbindTexture(texture: *mut SDL_Texture) -> ::std::os::raw::c_int; } extern "C" { /// \brief Create a window that can be shaped with the specified position, dimensions, and flags. -/// -/// \param title The title of the window, in UTF-8 encoding. -/// \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or -/// ::SDL_WINDOWPOS_UNDEFINED. -/// \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or -/// ::SDL_WINDOWPOS_UNDEFINED. -/// \param w The width of the window. -/// \param h The height of the window. -/// \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with any of the following: -/// ::SDL_WINDOW_OPENGL, ::SDL_WINDOW_INPUT_GRABBED, -/// ::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_RESIZABLE, -/// ::SDL_WINDOW_MAXIMIZED, ::SDL_WINDOW_MINIMIZED, -/// ::SDL_WINDOW_BORDERLESS is always set, and ::SDL_WINDOW_FULLSCREEN is always unset. -/// -/// \return The window created, or NULL if window creation failed. -/// -/// \sa SDL_DestroyWindow() - pub fn SDL_CreateShapedWindow(title: *const ::std::os::raw::c_char, - x: ::std::os::raw::c_uint, - y: ::std::os::raw::c_uint, - w: ::std::os::raw::c_uint, - h: ::std::os::raw::c_uint, flags: Uint32) - -> *mut SDL_Window; + /// + /// \param title The title of the window, in UTF-8 encoding. + /// \param x The x position of the window, ::SDL_WINDOWPOS_CENTERED, or + /// ::SDL_WINDOWPOS_UNDEFINED. + /// \param y The y position of the window, ::SDL_WINDOWPOS_CENTERED, or + /// ::SDL_WINDOWPOS_UNDEFINED. + /// \param w The width of the window. + /// \param h The height of the window. + /// \param flags The flags for the window, a mask of SDL_WINDOW_BORDERLESS with any of the following: + /// ::SDL_WINDOW_OPENGL, ::SDL_WINDOW_INPUT_GRABBED, + /// ::SDL_WINDOW_HIDDEN, ::SDL_WINDOW_RESIZABLE, + /// ::SDL_WINDOW_MAXIMIZED, ::SDL_WINDOW_MINIMIZED, + /// ::SDL_WINDOW_BORDERLESS is always set, and ::SDL_WINDOW_FULLSCREEN is always unset. + /// + /// \return The window created, or NULL if window creation failed. + /// + /// \sa SDL_DestroyWindow() + pub fn SDL_CreateShapedWindow( + title: *const ::std::os::raw::c_char, + x: ::std::os::raw::c_uint, + y: ::std::os::raw::c_uint, + w: ::std::os::raw::c_uint, + h: ::std::os::raw::c_uint, + flags: Uint32, + ) -> *mut SDL_Window; } extern "C" { /// \brief Return whether the given window is a shaped window. -/// -/// \param window The window to query for being shaped. -/// -/// \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if the window is unshaped or NULL. -/// -/// \sa SDL_CreateShapedWindow + /// + /// \param window The window to query for being shaped. + /// + /// \return SDL_TRUE if the window is a window that can be shaped, SDL_FALSE if the window is unshaped or NULL. + /// + /// \sa SDL_CreateShapedWindow pub fn SDL_IsShapedWindow(window: *const SDL_Window) -> SDL_bool; } #[repr(u32)] /// \brief An enum denoting the specific type of contents present in an SDL_WindowShapeParams union. #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub enum WindowShapeMode { + /// \brief The default mode, a binarized alpha cutoff of 1. ShapeModeDefault = 0, + /// \brief A binarized alpha cutoff with a given integer value. ShapeModeBinarizeAlpha = 1, + /// \brief A binarized alpha cutoff with a given integer value, but with the opposite comparison. ShapeModeReverseBinarizeAlpha = 2, + /// \brief A color key is applied. ShapeModeColorKey = 3, } /// \brief A union containing parameters for shaped windows. #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub union SDL_WindowShapeParams { /// \brief A cutoff alpha value for binarization of the window shape's alpha channel. pub binarizationCutoff: Uint8, @@ -12943,30 +16485,43 @@ pub union SDL_WindowShapeParams { } #[test] fn bindgen_test_layout_SDL_WindowShapeParams() { - assert_eq!(::std::mem::size_of::() , 4usize , - concat ! ( "Size of: " , stringify ! ( SDL_WindowShapeParams ) - )); - assert_eq! (::std::mem::align_of::() , 1usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_WindowShapeParams ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowShapeParams ) ) . - binarizationCutoff as * const _ as usize } , 0usize , concat ! - ( - "Alignment of field: " , stringify ! ( SDL_WindowShapeParams ) - , "::" , stringify ! ( binarizationCutoff ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowShapeParams ) ) . colorKey as * - const _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowShapeParams ) - , "::" , stringify ! ( colorKey ) )); -} -impl Clone for SDL_WindowShapeParams { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(SDL_WindowShapeParams)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(SDL_WindowShapeParams)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).binarizationCutoff as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowShapeParams), + "::", + stringify!(binarizationCutoff) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).colorKey as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowShapeParams), + "::", + stringify!(colorKey) + ) + ); } /// \brief A struct that tags the SDL_WindowShapeParams union with an enum describing the type of its contents. #[repr(C)] -#[derive(Copy)] +#[derive(Copy, Clone)] pub struct SDL_WindowShapeMode { /// \brief The mode of these window-shape parameters. pub mode: WindowShapeMode, @@ -12975,62 +16530,76 @@ pub struct SDL_WindowShapeMode { } #[test] fn bindgen_test_layout_SDL_WindowShapeMode() { - assert_eq!(::std::mem::size_of::() , 8usize , concat - ! ( "Size of: " , stringify ! ( SDL_WindowShapeMode ) )); - assert_eq! (::std::mem::align_of::() , 4usize , - concat ! ( - "Alignment of " , stringify ! ( SDL_WindowShapeMode ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowShapeMode ) ) . mode as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowShapeMode ) , - "::" , stringify ! ( mode ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_WindowShapeMode ) ) . parameters as * - const _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_WindowShapeMode ) , - "::" , stringify ! ( parameters ) )); -} -impl Clone for SDL_WindowShapeMode { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(SDL_WindowShapeMode)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(SDL_WindowShapeMode)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).mode as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowShapeMode), + "::", + stringify!(mode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).parameters as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_WindowShapeMode), + "::", + stringify!(parameters) + ) + ); } extern "C" { /// \brief Set the shape and parameters of a shaped window. -/// -/// \param window The shaped window whose parameters should be set. -/// \param shape A surface encoding the desired shape for the window. -/// \param shape_mode The parameters to set for the shaped window. -/// -/// \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape argument, or SDL_NONSHAPEABLE_WINDOW -/// if the SDL_Window given does not reference a valid shaped window. -/// -/// \sa SDL_WindowShapeMode -/// \sa SDL_GetShapedWindowMode. - pub fn SDL_SetWindowShape(window: *mut SDL_Window, - shape: *mut SDL_Surface, - shape_mode: *mut SDL_WindowShapeMode) - -> ::std::os::raw::c_int; + /// + /// \param window The shaped window whose parameters should be set. + /// \param shape A surface encoding the desired shape for the window. + /// \param shape_mode The parameters to set for the shaped window. + /// + /// \return 0 on success, SDL_INVALID_SHAPE_ARGUMENT on an invalid shape argument, or SDL_NONSHAPEABLE_WINDOW + /// if the SDL_Window given does not reference a valid shaped window. + /// + /// \sa SDL_WindowShapeMode + /// \sa SDL_GetShapedWindowMode. + pub fn SDL_SetWindowShape( + window: *mut SDL_Window, + shape: *mut SDL_Surface, + shape_mode: *mut SDL_WindowShapeMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the shape parameters of a shaped window. -/// -/// \param window The shaped window whose parameters should be retrieved. -/// \param shape_mode An empty shape-mode structure to fill, or NULL to check whether the window has a shape. -/// -/// \return 0 if the window has a shape and, provided shape_mode was not NULL, shape_mode has been filled with the mode -/// data, SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped window, or SDL_WINDOW_LACKS_SHAPE if -/// the SDL_Window given is a shapeable window currently lacking a shape. -/// -/// \sa SDL_WindowShapeMode -/// \sa SDL_SetWindowShape - pub fn SDL_GetShapedWindowMode(window: *mut SDL_Window, - shape_mode: *mut SDL_WindowShapeMode) - -> ::std::os::raw::c_int; + /// + /// \param window The shaped window whose parameters should be retrieved. + /// \param shape_mode An empty shape-mode structure to fill, or NULL to check whether the window has a shape. + /// + /// \return 0 if the window has a shape and, provided shape_mode was not NULL, shape_mode has been filled with the mode + /// data, SDL_NONSHAPEABLE_WINDOW if the SDL_Window given is not a shaped window, or SDL_WINDOW_LACKS_SHAPE if + /// the SDL_Window given is a shapeable window currently lacking a shape. + /// + /// \sa SDL_WindowShapeMode + /// \sa SDL_SetWindowShape + pub fn SDL_GetShapedWindowMode( + window: *mut SDL_Window, + shape_mode: *mut SDL_WindowShapeMode, + ) -> ::std::os::raw::c_int; } extern "C" { /// \brief Get the number of milliseconds since the SDL library initialization. -/// -/// \note This value wraps if the program runs for more than ~49 days. + /// + /// \note This value wraps if the program runs for more than ~49 days. pub fn SDL_GetTicks() -> Uint32; } extern "C" { @@ -13051,26 +16620,27 @@ extern "C" { /// the next timer interval. If the returned value is the same as the one /// passed in, the periodic alarm continues, otherwise a new alarm is /// scheduled. If the callback returns 0, the periodic alarm is cancelled. -pub type SDL_TimerCallback = - ::std::option::Option Uint32>; +pub type SDL_TimerCallback = ::std::option::Option< + unsafe extern "C" fn(interval: Uint32, param: *mut ::std::os::raw::c_void) -> Uint32, +>; /// Definition of the timer ID type. pub type SDL_TimerID = ::std::os::raw::c_int; extern "C" { /// \brief Add a new timer to the pool of timers already running. -/// -/// \return A timer ID, or 0 when an error occurs. - pub fn SDL_AddTimer(interval: Uint32, callback: SDL_TimerCallback, - param: *mut ::std::os::raw::c_void) -> SDL_TimerID; + /// + /// \return A timer ID, or 0 when an error occurs. + pub fn SDL_AddTimer( + interval: Uint32, + callback: SDL_TimerCallback, + param: *mut ::std::os::raw::c_void, + ) -> SDL_TimerID; } extern "C" { /// \brief Remove a timer knowing its ID. -/// -/// \return A boolean value indicating success or failure. -/// -/// \warning It is not safe to remove a timer multiple times. + /// + /// \return A boolean value indicating success or failure. + /// + /// \warning It is not safe to remove a timer multiple times. pub fn SDL_RemoveTimer(id: SDL_TimerID) -> SDL_bool; } /// \brief Information the version of SDL in use. @@ -13084,7 +16654,7 @@ extern "C" { /// \sa SDL_VERSION /// \sa SDL_GetVersion #[repr(C)] -#[derive(Debug, Copy)] +#[derive(Debug, Copy, Clone)] pub struct SDL_version { /// < major version pub major: Uint8, @@ -13095,68 +16665,86 @@ pub struct SDL_version { } #[test] fn bindgen_test_layout_SDL_version() { - assert_eq!(::std::mem::size_of::() , 3usize , concat ! ( - "Size of: " , stringify ! ( SDL_version ) )); - assert_eq! (::std::mem::align_of::() , 1usize , concat ! ( - "Alignment of " , stringify ! ( SDL_version ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_version ) ) . major as * const _ as - usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_version ) , "::" , - stringify ! ( major ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_version ) ) . minor as * const _ as - usize } , 1usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_version ) , "::" , - stringify ! ( minor ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const SDL_version ) ) . patch as * const _ as - usize } , 2usize , concat ! ( - "Alignment of field: " , stringify ! ( SDL_version ) , "::" , - stringify ! ( patch ) )); -} -impl Clone for SDL_version { - fn clone(&self) -> Self { *self } + assert_eq!( + ::std::mem::size_of::(), + 3usize, + concat!("Size of: ", stringify!(SDL_version)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(SDL_version)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).major as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_version), + "::", + stringify!(major) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).minor as *const _ as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(SDL_version), + "::", + stringify!(minor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).patch as *const _ as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(SDL_version), + "::", + stringify!(patch) + ) + ); } extern "C" { /// \brief Get the version of SDL that is linked against your program. -/// -/// If you are linking to SDL dynamically, then it is possible that the -/// current version will be different than the version you compiled against. -/// This function returns the current version, while SDL_VERSION() is a -/// macro that tells you what version you compiled with. -/// -/// \code -/// SDL_version compiled; -/// SDL_version linked; -/// -/// SDL_VERSION(&compiled); -/// SDL_GetVersion(&linked); -/// printf("We compiled against SDL version %d.%d.%d ...\n", -/// compiled.major, compiled.minor, compiled.patch); -/// printf("But we linked against SDL version %d.%d.%d.\n", -/// linked.major, linked.minor, linked.patch); -/// \endcode -/// -/// This function may be called safely at any time, even before SDL_Init(). -/// -/// \sa SDL_VERSION + /// + /// If you are linking to SDL dynamically, then it is possible that the + /// current version will be different than the version you compiled against. + /// This function returns the current version, while SDL_VERSION() is a + /// macro that tells you what version you compiled with. + /// + /// \code + /// SDL_version compiled; + /// SDL_version linked; + /// + /// SDL_VERSION(&compiled); + /// SDL_GetVersion(&linked); + /// printf("We compiled against SDL version %d.%d.%d ...\n", + /// compiled.major, compiled.minor, compiled.patch); + /// printf("But we linked against SDL version %d.%d.%d.\n", + /// linked.major, linked.minor, linked.patch); + /// \endcode + /// + /// This function may be called safely at any time, even before SDL_Init(). + /// + /// \sa SDL_VERSION pub fn SDL_GetVersion(ver: *mut SDL_version); } extern "C" { /// \brief Get the code revision of SDL that is linked against your program. -/// -/// Returns an arbitrary string (a hash value) uniquely identifying the -/// exact revision of the SDL library in use, and is only useful in comparing -/// against other revisions. It is NOT an incrementing number. + /// + /// Returns an arbitrary string (a hash value) uniquely identifying the + /// exact revision of the SDL library in use, and is only useful in comparing + /// against other revisions. It is NOT an incrementing number. pub fn SDL_GetRevision() -> *const ::std::os::raw::c_char; } extern "C" { /// \brief Get the revision number of SDL that is linked against your program. -/// -/// Returns a number uniquely identifying the exact revision of the SDL -/// library in use. It is an incrementing number based on commits to -/// hg.libsdl.org. + /// + /// Returns a number uniquely identifying the exact revision of the SDL + /// library in use. It is an incrementing number based on commits to + /// hg.libsdl.org. pub fn SDL_GetRevisionNumber() -> ::std::os::raw::c_int; } extern "C" { @@ -13165,12 +16753,12 @@ extern "C" { } extern "C" { /// This function initializes specific SDL subsystems -/// -/// Subsystem initialization is ref-counted, you must call -/// SDL_QuitSubSystem() for each SDL_InitSubSystem() to correctly -/// shutdown a subsystem manually (or call SDL_Quit() to force shutdown). -/// If a subsystem is already loaded then this call will -/// increase the ref-count and return. + /// + /// Subsystem initialization is ref-counted, you must call + /// SDL_QuitSubSystem() for each SDL_InitSubSystem() to correctly + /// shutdown a subsystem manually (or call SDL_Quit() to force shutdown). + /// If a subsystem is already loaded then this call will + /// increase the ref-count and return. pub fn SDL_InitSubSystem(flags: Uint32) -> ::std::os::raw::c_int; } extern "C" { @@ -13179,61 +16767,12289 @@ extern "C" { } extern "C" { /// This function returns a mask of the specified subsystems which have -/// previously been initialized. -/// -/// If \c flags is 0, it returns a mask of all initialized subsystems. + /// previously been initialized. + /// + /// If \c flags is 0, it returns a mask of all initialized subsystems. pub fn SDL_WasInit(flags: Uint32) -> Uint32; } extern "C" { /// This function cleans up all initialized subsystems. You should -/// call it upon all exit conditions. + /// call it upon all exit conditions. pub fn SDL_Quit(); } -pub type __builtin_va_list = [__va_list_tag; 1usize]; +pub type XID = ::std::os::raw::c_ulong; +pub type Mask = ::std::os::raw::c_ulong; +pub type Atom = ::std::os::raw::c_ulong; +pub type VisualID = ::std::os::raw::c_ulong; +pub type Time = ::std::os::raw::c_ulong; +pub type Window = XID; +pub type Drawable = XID; +pub type Font = XID; +pub type Pixmap = XID; +pub type Cursor = XID; +pub type Colormap = XID; +pub type GContext = XID; +pub type KeySym = XID; +pub type KeyCode = ::std::os::raw::c_uchar; +extern "C" { + pub fn _Xmblen( + str: *mut ::std::os::raw::c_char, + len: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +pub type XPointer = *mut ::std::os::raw::c_char; #[repr(C)] -#[derive(Debug, Copy)] -pub struct __va_list_tag { - pub gp_offset: ::std::os::raw::c_uint, - pub fp_offset: ::std::os::raw::c_uint, - pub overflow_arg_area: *mut ::std::os::raw::c_void, - pub reg_save_area: *mut ::std::os::raw::c_void, +#[derive(Debug, Copy, Clone)] +pub struct _XExtData { + pub number: ::std::os::raw::c_int, + pub next: *mut _XExtData, + pub free_private: ::std::option::Option< + unsafe extern "C" fn(extension: *mut _XExtData) -> ::std::os::raw::c_int, + >, + pub private_data: XPointer, } #[test] -fn bindgen_test_layout___va_list_tag() { - assert_eq!(::std::mem::size_of::<__va_list_tag>() , 24usize , concat ! ( - "Size of: " , stringify ! ( __va_list_tag ) )); - assert_eq! (::std::mem::align_of::<__va_list_tag>() , 8usize , concat ! ( - "Alignment of " , stringify ! ( __va_list_tag ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __va_list_tag ) ) . gp_offset as * const - _ as usize } , 0usize , concat ! ( - "Alignment of field: " , stringify ! ( __va_list_tag ) , "::" - , stringify ! ( gp_offset ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __va_list_tag ) ) . fp_offset as * const - _ as usize } , 4usize , concat ! ( - "Alignment of field: " , stringify ! ( __va_list_tag ) , "::" - , stringify ! ( fp_offset ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __va_list_tag ) ) . overflow_arg_area as - * const _ as usize } , 8usize , concat ! ( - "Alignment of field: " , stringify ! ( __va_list_tag ) , "::" - , stringify ! ( overflow_arg_area ) )); - assert_eq! (unsafe { - & ( * ( 0 as * const __va_list_tag ) ) . reg_save_area as * - const _ as usize } , 16usize , concat ! ( - "Alignment of field: " , stringify ! ( __va_list_tag ) , "::" - , stringify ! ( reg_save_area ) )); -} -impl Clone for __va_list_tag { - fn clone(&self) -> Self { *self } +fn bindgen_test_layout__XExtData() { + assert_eq!( + ::std::mem::size_of::<_XExtData>(), + 32usize, + concat!("Size of: ", stringify!(_XExtData)) + ); + assert_eq!( + ::std::mem::align_of::<_XExtData>(), + 8usize, + concat!("Alignment of ", stringify!(_XExtData)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XExtData>())).number as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XExtData), + "::", + stringify!(number) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XExtData>())).next as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_XExtData), + "::", + stringify!(next) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XExtData>())).free_private as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_XExtData), + "::", + stringify!(free_private) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XExtData>())).private_data as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_XExtData), + "::", + stringify!(private_data) + ) + ); +} +pub type XExtData = _XExtData; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XExtCodes { + pub extension: ::std::os::raw::c_int, + pub major_opcode: ::std::os::raw::c_int, + pub first_event: ::std::os::raw::c_int, + pub first_error: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XExtCodes() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XExtCodes)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(XExtCodes)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).extension as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XExtCodes), + "::", + stringify!(extension) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).major_opcode as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XExtCodes), + "::", + stringify!(major_opcode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).first_event as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XExtCodes), + "::", + stringify!(first_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).first_error as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(XExtCodes), + "::", + stringify!(first_error) + ) + ); } -/// < Private #[repr(C)] -#[derive(Debug, Copy)] -pub struct SDL_BlitMap { - pub _address: u8, +#[derive(Debug, Copy, Clone)] +pub struct XPixmapFormatValues { + pub depth: ::std::os::raw::c_int, + pub bits_per_pixel: ::std::os::raw::c_int, + pub scanline_pad: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XPixmapFormatValues() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(XPixmapFormatValues)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(XPixmapFormatValues)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).depth as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XPixmapFormatValues), + "::", + stringify!(depth) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).bits_per_pixel as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XPixmapFormatValues), + "::", + stringify!(bits_per_pixel) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).scanline_pad as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XPixmapFormatValues), + "::", + stringify!(scanline_pad) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XGCValues { + pub function: ::std::os::raw::c_int, + pub plane_mask: ::std::os::raw::c_ulong, + pub foreground: ::std::os::raw::c_ulong, + pub background: ::std::os::raw::c_ulong, + pub line_width: ::std::os::raw::c_int, + pub line_style: ::std::os::raw::c_int, + pub cap_style: ::std::os::raw::c_int, + pub join_style: ::std::os::raw::c_int, + pub fill_style: ::std::os::raw::c_int, + pub fill_rule: ::std::os::raw::c_int, + pub arc_mode: ::std::os::raw::c_int, + pub tile: Pixmap, + pub stipple: Pixmap, + pub ts_x_origin: ::std::os::raw::c_int, + pub ts_y_origin: ::std::os::raw::c_int, + pub font: Font, + pub subwindow_mode: ::std::os::raw::c_int, + pub graphics_exposures: ::std::os::raw::c_int, + pub clip_x_origin: ::std::os::raw::c_int, + pub clip_y_origin: ::std::os::raw::c_int, + pub clip_mask: Pixmap, + pub dash_offset: ::std::os::raw::c_int, + pub dashes: ::std::os::raw::c_char, +} +#[test] +fn bindgen_test_layout_XGCValues() { + assert_eq!( + ::std::mem::size_of::(), + 128usize, + concat!("Size of: ", stringify!(XGCValues)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XGCValues)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).function as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(function) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).plane_mask as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(plane_mask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).foreground as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(foreground) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).background as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(background) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).line_width as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(line_width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).line_style as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(line_style) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).cap_style as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(cap_style) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).join_style as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(join_style) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fill_style as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(fill_style) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fill_rule as *const _ as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(fill_rule) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).arc_mode as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(arc_mode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).tile as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(tile) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).stipple as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(stipple) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ts_x_origin as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(ts_x_origin) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ts_y_origin as *const _ as usize }, + 84usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(ts_y_origin) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).font as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(font) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).subwindow_mode as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(subwindow_mode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).graphics_exposures as *const _ as usize }, + 100usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(graphics_exposures) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).clip_x_origin as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(clip_x_origin) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).clip_y_origin as *const _ as usize }, + 108usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(clip_y_origin) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).clip_mask as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(clip_mask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).dash_offset as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(dash_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).dashes as *const _ as usize }, + 124usize, + concat!( + "Offset of field: ", + stringify!(XGCValues), + "::", + stringify!(dashes) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XGC { + _unused: [u8; 0], +} +pub type GC = *mut _XGC; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct Visual { + pub ext_data: *mut XExtData, + pub visualid: VisualID, + pub class: ::std::os::raw::c_int, + pub red_mask: ::std::os::raw::c_ulong, + pub green_mask: ::std::os::raw::c_ulong, + pub blue_mask: ::std::os::raw::c_ulong, + pub bits_per_rgb: ::std::os::raw::c_int, + pub map_entries: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_Visual() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(Visual)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(Visual)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ext_data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Visual), + "::", + stringify!(ext_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).visualid as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(Visual), + "::", + stringify!(visualid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).class as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(Visual), + "::", + stringify!(class) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).red_mask as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(Visual), + "::", + stringify!(red_mask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).green_mask as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(Visual), + "::", + stringify!(green_mask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).blue_mask as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(Visual), + "::", + stringify!(blue_mask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).bits_per_rgb as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(Visual), + "::", + stringify!(bits_per_rgb) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).map_entries as *const _ as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(Visual), + "::", + stringify!(map_entries) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct Depth { + pub depth: ::std::os::raw::c_int, + pub nvisuals: ::std::os::raw::c_int, + pub visuals: *mut Visual, +} +#[test] +fn bindgen_test_layout_Depth() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(Depth)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(Depth)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).depth as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Depth), + "::", + stringify!(depth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).nvisuals as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(Depth), + "::", + stringify!(nvisuals) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).visuals as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(Depth), + "::", + stringify!(visuals) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XDisplay { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct Screen { + pub ext_data: *mut XExtData, + pub display: *mut _XDisplay, + pub root: Window, + pub width: ::std::os::raw::c_int, + pub height: ::std::os::raw::c_int, + pub mwidth: ::std::os::raw::c_int, + pub mheight: ::std::os::raw::c_int, + pub ndepths: ::std::os::raw::c_int, + pub depths: *mut Depth, + pub root_depth: ::std::os::raw::c_int, + pub root_visual: *mut Visual, + pub default_gc: GC, + pub cmap: Colormap, + pub white_pixel: ::std::os::raw::c_ulong, + pub black_pixel: ::std::os::raw::c_ulong, + pub max_maps: ::std::os::raw::c_int, + pub min_maps: ::std::os::raw::c_int, + pub backing_store: ::std::os::raw::c_int, + pub save_unders: ::std::os::raw::c_int, + pub root_input_mask: ::std::os::raw::c_long, +} +#[test] +fn bindgen_test_layout_Screen() { + assert_eq!( + ::std::mem::size_of::(), + 128usize, + concat!("Size of: ", stringify!(Screen)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(Screen)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ext_data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(ext_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).root as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).mwidth as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(mwidth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).mheight as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(mheight) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ndepths as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(ndepths) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).depths as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(depths) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).root_depth as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(root_depth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).root_visual as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(root_visual) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).default_gc as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(default_gc) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).cmap as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(cmap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).white_pixel as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(white_pixel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).black_pixel as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(black_pixel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).max_maps as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(max_maps) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).min_maps as *const _ as usize }, + 108usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(min_maps) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).backing_store as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(backing_store) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).save_unders as *const _ as usize }, + 116usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(save_unders) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).root_input_mask as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(Screen), + "::", + stringify!(root_input_mask) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct ScreenFormat { + pub ext_data: *mut XExtData, + pub depth: ::std::os::raw::c_int, + pub bits_per_pixel: ::std::os::raw::c_int, + pub scanline_pad: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_ScreenFormat() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(ScreenFormat)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(ScreenFormat)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ext_data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(ScreenFormat), + "::", + stringify!(ext_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).depth as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(ScreenFormat), + "::", + stringify!(depth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).bits_per_pixel as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(ScreenFormat), + "::", + stringify!(bits_per_pixel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).scanline_pad as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(ScreenFormat), + "::", + stringify!(scanline_pad) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XSetWindowAttributes { + pub background_pixmap: Pixmap, + pub background_pixel: ::std::os::raw::c_ulong, + pub border_pixmap: Pixmap, + pub border_pixel: ::std::os::raw::c_ulong, + pub bit_gravity: ::std::os::raw::c_int, + pub win_gravity: ::std::os::raw::c_int, + pub backing_store: ::std::os::raw::c_int, + pub backing_planes: ::std::os::raw::c_ulong, + pub backing_pixel: ::std::os::raw::c_ulong, + pub save_under: ::std::os::raw::c_int, + pub event_mask: ::std::os::raw::c_long, + pub do_not_propagate_mask: ::std::os::raw::c_long, + pub override_redirect: ::std::os::raw::c_int, + pub colormap: Colormap, + pub cursor: Cursor, +} +#[test] +fn bindgen_test_layout_XSetWindowAttributes() { + assert_eq!( + ::std::mem::size_of::(), + 112usize, + concat!("Size of: ", stringify!(XSetWindowAttributes)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XSetWindowAttributes)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).background_pixmap as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(background_pixmap) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).background_pixel as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(background_pixel) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).border_pixmap as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(border_pixmap) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).border_pixel as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(border_pixel) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).bit_gravity as *const _ as usize + }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(bit_gravity) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).win_gravity as *const _ as usize + }, + 36usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(win_gravity) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).backing_store as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(backing_store) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).backing_planes as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(backing_planes) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).backing_pixel as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(backing_pixel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).save_under as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(save_under) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).event_mask as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(event_mask) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).do_not_propagate_mask as *const _ + as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(do_not_propagate_mask) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).override_redirect as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(override_redirect) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).colormap as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(colormap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).cursor as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(XSetWindowAttributes), + "::", + stringify!(cursor) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XWindowAttributes { + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub width: ::std::os::raw::c_int, + pub height: ::std::os::raw::c_int, + pub border_width: ::std::os::raw::c_int, + pub depth: ::std::os::raw::c_int, + pub visual: *mut Visual, + pub root: Window, + pub class: ::std::os::raw::c_int, + pub bit_gravity: ::std::os::raw::c_int, + pub win_gravity: ::std::os::raw::c_int, + pub backing_store: ::std::os::raw::c_int, + pub backing_planes: ::std::os::raw::c_ulong, + pub backing_pixel: ::std::os::raw::c_ulong, + pub save_under: ::std::os::raw::c_int, + pub colormap: Colormap, + pub map_installed: ::std::os::raw::c_int, + pub map_state: ::std::os::raw::c_int, + pub all_event_masks: ::std::os::raw::c_long, + pub your_event_mask: ::std::os::raw::c_long, + pub do_not_propagate_mask: ::std::os::raw::c_long, + pub override_redirect: ::std::os::raw::c_int, + pub screen: *mut Screen, +} +#[test] +fn bindgen_test_layout_XWindowAttributes() { + assert_eq!( + ::std::mem::size_of::(), + 136usize, + concat!("Size of: ", stringify!(XWindowAttributes)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XWindowAttributes)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).border_width as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(border_width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).depth as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(depth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).visual as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(visual) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).root as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).class as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(class) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).bit_gravity as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(bit_gravity) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).win_gravity as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(win_gravity) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).backing_store as *const _ as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(backing_store) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).backing_planes as *const _ as usize + }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(backing_planes) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).backing_pixel as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(backing_pixel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).save_under as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(save_under) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).colormap as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(colormap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).map_installed as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(map_installed) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).map_state as *const _ as usize }, + 92usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(map_state) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).all_event_masks as *const _ as usize + }, + 96usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(all_event_masks) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).your_event_mask as *const _ as usize + }, + 104usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(your_event_mask) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).do_not_propagate_mask as *const _ as usize + }, + 112usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(do_not_propagate_mask) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).override_redirect as *const _ as usize + }, + 120usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(override_redirect) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).screen as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(XWindowAttributes), + "::", + stringify!(screen) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XHostAddress { + pub family: ::std::os::raw::c_int, + pub length: ::std::os::raw::c_int, + pub address: *mut ::std::os::raw::c_char, +} +#[test] +fn bindgen_test_layout_XHostAddress() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XHostAddress)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XHostAddress)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).family as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XHostAddress), + "::", + stringify!(family) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).length as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XHostAddress), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).address as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XHostAddress), + "::", + stringify!(address) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XServerInterpretedAddress { + pub typelength: ::std::os::raw::c_int, + pub valuelength: ::std::os::raw::c_int, + pub type_: *mut ::std::os::raw::c_char, + pub value: *mut ::std::os::raw::c_char, +} +#[test] +fn bindgen_test_layout_XServerInterpretedAddress() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(XServerInterpretedAddress)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XServerInterpretedAddress)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).typelength as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XServerInterpretedAddress), + "::", + stringify!(typelength) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).valuelength as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XServerInterpretedAddress), + "::", + stringify!(valuelength) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XServerInterpretedAddress), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).value as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XServerInterpretedAddress), + "::", + stringify!(value) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XImage { + pub width: ::std::os::raw::c_int, + pub height: ::std::os::raw::c_int, + pub xoffset: ::std::os::raw::c_int, + pub format: ::std::os::raw::c_int, + pub data: *mut ::std::os::raw::c_char, + pub byte_order: ::std::os::raw::c_int, + pub bitmap_unit: ::std::os::raw::c_int, + pub bitmap_bit_order: ::std::os::raw::c_int, + pub bitmap_pad: ::std::os::raw::c_int, + pub depth: ::std::os::raw::c_int, + pub bytes_per_line: ::std::os::raw::c_int, + pub bits_per_pixel: ::std::os::raw::c_int, + pub red_mask: ::std::os::raw::c_ulong, + pub green_mask: ::std::os::raw::c_ulong, + pub blue_mask: ::std::os::raw::c_ulong, + pub obdata: XPointer, + pub f: _XImage_funcs, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XImage_funcs { + pub create_image: ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut _XDisplay, + arg2: *mut Visual, + arg3: ::std::os::raw::c_uint, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *mut ::std::os::raw::c_char, + arg7: ::std::os::raw::c_uint, + arg8: ::std::os::raw::c_uint, + arg9: ::std::os::raw::c_int, + arg10: ::std::os::raw::c_int, + ) -> *mut _XImage, + >, + pub destroy_image: + ::std::option::Option ::std::os::raw::c_int>, + pub get_pixel: ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut _XImage, + arg2: ::std::os::raw::c_int, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_ulong, + >, + pub put_pixel: ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut _XImage, + arg2: ::std::os::raw::c_int, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_ulong, + ) -> ::std::os::raw::c_int, + >, + pub sub_image: ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut _XImage, + arg2: ::std::os::raw::c_int, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_uint, + arg5: ::std::os::raw::c_uint, + ) -> *mut _XImage, + >, + pub add_pixel: ::std::option::Option< + unsafe extern "C" fn(arg1: *mut _XImage, arg2: ::std::os::raw::c_long) + -> ::std::os::raw::c_int, + >, +} +#[test] +fn bindgen_test_layout__XImage_funcs() { + assert_eq!( + ::std::mem::size_of::<_XImage_funcs>(), + 48usize, + concat!("Size of: ", stringify!(_XImage_funcs)) + ); + assert_eq!( + ::std::mem::align_of::<_XImage_funcs>(), + 8usize, + concat!("Alignment of ", stringify!(_XImage_funcs)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage_funcs>())).create_image as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XImage_funcs), + "::", + stringify!(create_image) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage_funcs>())).destroy_image as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_XImage_funcs), + "::", + stringify!(destroy_image) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage_funcs>())).get_pixel as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_XImage_funcs), + "::", + stringify!(get_pixel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage_funcs>())).put_pixel as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_XImage_funcs), + "::", + stringify!(put_pixel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage_funcs>())).sub_image as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_XImage_funcs), + "::", + stringify!(sub_image) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage_funcs>())).add_pixel as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_XImage_funcs), + "::", + stringify!(add_pixel) + ) + ); +} +#[test] +fn bindgen_test_layout__XImage() { + assert_eq!( + ::std::mem::size_of::<_XImage>(), + 136usize, + concat!("Size of: ", stringify!(_XImage)) + ); + assert_eq!( + ::std::mem::align_of::<_XImage>(), + 8usize, + concat!("Alignment of ", stringify!(_XImage)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).width as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).height as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).xoffset as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(xoffset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).format as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(format) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).data as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).byte_order as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(byte_order) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).bitmap_unit as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(bitmap_unit) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).bitmap_bit_order as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(bitmap_bit_order) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).bitmap_pad as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(bitmap_pad) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).depth as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(depth) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).bytes_per_line as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(bytes_per_line) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).bits_per_pixel as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(bits_per_pixel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).red_mask as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(red_mask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).green_mask as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(green_mask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).blue_mask as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(blue_mask) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).obdata as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(obdata) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XImage>())).f as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_XImage), + "::", + stringify!(f) + ) + ); +} +pub type XImage = _XImage; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XWindowChanges { + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub width: ::std::os::raw::c_int, + pub height: ::std::os::raw::c_int, + pub border_width: ::std::os::raw::c_int, + pub sibling: Window, + pub stack_mode: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XWindowChanges() { + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(XWindowChanges)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XWindowChanges)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XWindowChanges), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XWindowChanges), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XWindowChanges), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(XWindowChanges), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).border_width as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XWindowChanges), + "::", + stringify!(border_width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).sibling as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XWindowChanges), + "::", + stringify!(sibling) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).stack_mode as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XWindowChanges), + "::", + stringify!(stack_mode) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XColor { + pub pixel: ::std::os::raw::c_ulong, + pub red: ::std::os::raw::c_ushort, + pub green: ::std::os::raw::c_ushort, + pub blue: ::std::os::raw::c_ushort, + pub flags: ::std::os::raw::c_char, + pub pad: ::std::os::raw::c_char, +} +#[test] +fn bindgen_test_layout_XColor() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XColor)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XColor)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).pixel as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XColor), + "::", + stringify!(pixel) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).red as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XColor), + "::", + stringify!(red) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).green as *const _ as usize }, + 10usize, + concat!( + "Offset of field: ", + stringify!(XColor), + "::", + stringify!(green) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).blue as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(XColor), + "::", + stringify!(blue) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).flags as *const _ as usize }, + 14usize, + concat!( + "Offset of field: ", + stringify!(XColor), + "::", + stringify!(flags) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).pad as *const _ as usize }, + 15usize, + concat!( + "Offset of field: ", + stringify!(XColor), + "::", + stringify!(pad) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XSegment { + pub x1: ::std::os::raw::c_short, + pub y1: ::std::os::raw::c_short, + pub x2: ::std::os::raw::c_short, + pub y2: ::std::os::raw::c_short, +} +#[test] +fn bindgen_test_layout_XSegment() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(XSegment)) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!("Alignment of ", stringify!(XSegment)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x1 as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XSegment), + "::", + stringify!(x1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y1 as *const _ as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(XSegment), + "::", + stringify!(y1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x2 as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XSegment), + "::", + stringify!(x2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y2 as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(XSegment), + "::", + stringify!(y2) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XPoint { + pub x: ::std::os::raw::c_short, + pub y: ::std::os::raw::c_short, +} +#[test] +fn bindgen_test_layout_XPoint() { + assert_eq!( + ::std::mem::size_of::(), + 4usize, + concat!("Size of: ", stringify!(XPoint)) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!("Alignment of ", stringify!(XPoint)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 0usize, + concat!("Offset of field: ", stringify!(XPoint), "::", stringify!(x)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 2usize, + concat!("Offset of field: ", stringify!(XPoint), "::", stringify!(y)) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XRectangle { + pub x: ::std::os::raw::c_short, + pub y: ::std::os::raw::c_short, + pub width: ::std::os::raw::c_ushort, + pub height: ::std::os::raw::c_ushort, +} +#[test] +fn bindgen_test_layout_XRectangle() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(XRectangle)) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!("Alignment of ", stringify!(XRectangle)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XRectangle), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(XRectangle), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XRectangle), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(XRectangle), + "::", + stringify!(height) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XArc { + pub x: ::std::os::raw::c_short, + pub y: ::std::os::raw::c_short, + pub width: ::std::os::raw::c_ushort, + pub height: ::std::os::raw::c_ushort, + pub angle1: ::std::os::raw::c_short, + pub angle2: ::std::os::raw::c_short, } -impl Clone for SDL_BlitMap { - fn clone(&self) -> Self { *self } +#[test] +fn bindgen_test_layout_XArc() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(XArc)) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!("Alignment of ", stringify!(XArc)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 0usize, + concat!("Offset of field: ", stringify!(XArc), "::", stringify!(x)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 2usize, + concat!("Offset of field: ", stringify!(XArc), "::", stringify!(y)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XArc), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(XArc), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).angle1 as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XArc), + "::", + stringify!(angle1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).angle2 as *const _ as usize }, + 10usize, + concat!( + "Offset of field: ", + stringify!(XArc), + "::", + stringify!(angle2) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XKeyboardControl { + pub key_click_percent: ::std::os::raw::c_int, + pub bell_percent: ::std::os::raw::c_int, + pub bell_pitch: ::std::os::raw::c_int, + pub bell_duration: ::std::os::raw::c_int, + pub led: ::std::os::raw::c_int, + pub led_mode: ::std::os::raw::c_int, + pub key: ::std::os::raw::c_int, + pub auto_repeat_mode: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XKeyboardControl() { + assert_eq!( + ::std::mem::size_of::(), + 32usize, + concat!("Size of: ", stringify!(XKeyboardControl)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(XKeyboardControl)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).key_click_percent as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardControl), + "::", + stringify!(key_click_percent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).bell_percent as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardControl), + "::", + stringify!(bell_percent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).bell_pitch as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardControl), + "::", + stringify!(bell_pitch) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).bell_duration as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardControl), + "::", + stringify!(bell_duration) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).led as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardControl), + "::", + stringify!(led) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).led_mode as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardControl), + "::", + stringify!(led_mode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).key as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardControl), + "::", + stringify!(key) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).auto_repeat_mode as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardControl), + "::", + stringify!(auto_repeat_mode) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XKeyboardState { + pub key_click_percent: ::std::os::raw::c_int, + pub bell_percent: ::std::os::raw::c_int, + pub bell_pitch: ::std::os::raw::c_uint, + pub bell_duration: ::std::os::raw::c_uint, + pub led_mask: ::std::os::raw::c_ulong, + pub global_auto_repeat: ::std::os::raw::c_int, + pub auto_repeats: [::std::os::raw::c_char; 32usize], +} +#[test] +fn bindgen_test_layout_XKeyboardState() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!("Size of: ", stringify!(XKeyboardState)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XKeyboardState)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).key_click_percent as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardState), + "::", + stringify!(key_click_percent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).bell_percent as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardState), + "::", + stringify!(bell_percent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).bell_pitch as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardState), + "::", + stringify!(bell_pitch) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).bell_duration as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardState), + "::", + stringify!(bell_duration) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).led_mask as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardState), + "::", + stringify!(led_mask) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).global_auto_repeat as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardState), + "::", + stringify!(global_auto_repeat) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).auto_repeats as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(XKeyboardState), + "::", + stringify!(auto_repeats) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XTimeCoord { + pub time: Time, + pub x: ::std::os::raw::c_short, + pub y: ::std::os::raw::c_short, +} +#[test] +fn bindgen_test_layout_XTimeCoord() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XTimeCoord)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XTimeCoord)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).time as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XTimeCoord), + "::", + stringify!(time) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XTimeCoord), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 10usize, + concat!( + "Offset of field: ", + stringify!(XTimeCoord), + "::", + stringify!(y) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XModifierKeymap { + pub max_keypermod: ::std::os::raw::c_int, + pub modifiermap: *mut KeyCode, +} +#[test] +fn bindgen_test_layout_XModifierKeymap() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XModifierKeymap)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XModifierKeymap)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).max_keypermod as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XModifierKeymap), + "::", + stringify!(max_keypermod) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).modifiermap as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XModifierKeymap), + "::", + stringify!(modifiermap) + ) + ); +} +pub type Display = _XDisplay; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XPrivate { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XrmHashBucketRec { + _unused: [u8; 0], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _bindgen_ty_9 { + pub ext_data: *mut XExtData, + pub private1: *mut _XPrivate, + pub fd: ::std::os::raw::c_int, + pub private2: ::std::os::raw::c_int, + pub proto_major_version: ::std::os::raw::c_int, + pub proto_minor_version: ::std::os::raw::c_int, + pub vendor: *mut ::std::os::raw::c_char, + pub private3: XID, + pub private4: XID, + pub private5: XID, + pub private6: ::std::os::raw::c_int, + pub resource_alloc: ::std::option::Option XID>, + pub byte_order: ::std::os::raw::c_int, + pub bitmap_unit: ::std::os::raw::c_int, + pub bitmap_pad: ::std::os::raw::c_int, + pub bitmap_bit_order: ::std::os::raw::c_int, + pub nformats: ::std::os::raw::c_int, + pub pixmap_format: *mut ScreenFormat, + pub private8: ::std::os::raw::c_int, + pub release: ::std::os::raw::c_int, + pub private9: *mut _XPrivate, + pub private10: *mut _XPrivate, + pub qlen: ::std::os::raw::c_int, + pub last_request_read: ::std::os::raw::c_ulong, + pub request: ::std::os::raw::c_ulong, + pub private11: XPointer, + pub private12: XPointer, + pub private13: XPointer, + pub private14: XPointer, + pub max_request_size: ::std::os::raw::c_uint, + pub db: *mut _XrmHashBucketRec, + pub private15: + ::std::option::Option ::std::os::raw::c_int>, + pub display_name: *mut ::std::os::raw::c_char, + pub default_screen: ::std::os::raw::c_int, + pub nscreens: ::std::os::raw::c_int, + pub screens: *mut Screen, + pub motion_buffer: ::std::os::raw::c_ulong, + pub private16: ::std::os::raw::c_ulong, + pub min_keycode: ::std::os::raw::c_int, + pub max_keycode: ::std::os::raw::c_int, + pub private17: XPointer, + pub private18: XPointer, + pub private19: ::std::os::raw::c_int, + pub xdefaults: *mut ::std::os::raw::c_char, +} +#[test] +fn bindgen_test_layout__bindgen_ty_9() { + assert_eq!( + ::std::mem::size_of::<_bindgen_ty_9>(), + 296usize, + concat!("Size of: ", stringify!(_bindgen_ty_9)) + ); + assert_eq!( + ::std::mem::align_of::<_bindgen_ty_9>(), + 8usize, + concat!("Alignment of ", stringify!(_bindgen_ty_9)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).ext_data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(ext_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private1 as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).fd as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(fd) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private2 as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_bindgen_ty_9>())).proto_major_version as *const _ as usize + }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(proto_major_version) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_bindgen_ty_9>())).proto_minor_version as *const _ as usize + }, + 28usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(proto_minor_version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).vendor as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(vendor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private3 as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private3) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private4 as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private4) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private5 as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private5) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private6 as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private6) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).resource_alloc as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(resource_alloc) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).byte_order as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(byte_order) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).bitmap_unit as *const _ as usize }, + 84usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(bitmap_unit) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).bitmap_pad as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(bitmap_pad) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).bitmap_bit_order as *const _ as usize }, + 92usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(bitmap_bit_order) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).nformats as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(nformats) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).pixmap_format as *const _ as usize }, + 104usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(pixmap_format) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private8 as *const _ as usize }, + 112usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private8) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).release as *const _ as usize }, + 116usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(release) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private9 as *const _ as usize }, + 120usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private9) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private10 as *const _ as usize }, + 128usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private10) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).qlen as *const _ as usize }, + 136usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(qlen) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).last_request_read as *const _ as usize }, + 144usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(last_request_read) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).request as *const _ as usize }, + 152usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(request) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private11 as *const _ as usize }, + 160usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private11) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private12 as *const _ as usize }, + 168usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private12) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private13 as *const _ as usize }, + 176usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private13) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private14 as *const _ as usize }, + 184usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private14) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).max_request_size as *const _ as usize }, + 192usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(max_request_size) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).db as *const _ as usize }, + 200usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(db) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private15 as *const _ as usize }, + 208usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private15) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).display_name as *const _ as usize }, + 216usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(display_name) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).default_screen as *const _ as usize }, + 224usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(default_screen) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).nscreens as *const _ as usize }, + 228usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(nscreens) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).screens as *const _ as usize }, + 232usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(screens) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).motion_buffer as *const _ as usize }, + 240usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(motion_buffer) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private16 as *const _ as usize }, + 248usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private16) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).min_keycode as *const _ as usize }, + 256usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(min_keycode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).max_keycode as *const _ as usize }, + 260usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(max_keycode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private17 as *const _ as usize }, + 264usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private17) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private18 as *const _ as usize }, + 272usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private18) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).private19 as *const _ as usize }, + 280usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(private19) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_bindgen_ty_9>())).xdefaults as *const _ as usize }, + 288usize, + concat!( + "Offset of field: ", + stringify!(_bindgen_ty_9), + "::", + stringify!(xdefaults) + ) + ); +} +pub type _XPrivDisplay = *mut _bindgen_ty_9; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XKeyEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub root: Window, + pub subwindow: Window, + pub time: Time, + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub x_root: ::std::os::raw::c_int, + pub y_root: ::std::os::raw::c_int, + pub state: ::std::os::raw::c_uint, + pub keycode: ::std::os::raw::c_uint, + pub same_screen: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XKeyEvent() { + assert_eq!( + ::std::mem::size_of::(), + 96usize, + concat!("Size of: ", stringify!(XKeyEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XKeyEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).root as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).subwindow as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(subwindow) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).time as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(time) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 68usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x_root as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(x_root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y_root as *const _ as usize }, + 76usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(y_root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).keycode as *const _ as usize }, + 84usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(keycode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).same_screen as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(XKeyEvent), + "::", + stringify!(same_screen) + ) + ); +} +pub type XKeyPressedEvent = XKeyEvent; +pub type XKeyReleasedEvent = XKeyEvent; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XButtonEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub root: Window, + pub subwindow: Window, + pub time: Time, + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub x_root: ::std::os::raw::c_int, + pub y_root: ::std::os::raw::c_int, + pub state: ::std::os::raw::c_uint, + pub button: ::std::os::raw::c_uint, + pub same_screen: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XButtonEvent() { + assert_eq!( + ::std::mem::size_of::(), + 96usize, + concat!("Size of: ", stringify!(XButtonEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XButtonEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).root as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).subwindow as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(subwindow) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).time as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(time) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 68usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x_root as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(x_root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y_root as *const _ as usize }, + 76usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(y_root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).button as *const _ as usize }, + 84usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(button) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).same_screen as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(XButtonEvent), + "::", + stringify!(same_screen) + ) + ); +} +pub type XButtonPressedEvent = XButtonEvent; +pub type XButtonReleasedEvent = XButtonEvent; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XMotionEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub root: Window, + pub subwindow: Window, + pub time: Time, + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub x_root: ::std::os::raw::c_int, + pub y_root: ::std::os::raw::c_int, + pub state: ::std::os::raw::c_uint, + pub is_hint: ::std::os::raw::c_char, + pub same_screen: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XMotionEvent() { + assert_eq!( + ::std::mem::size_of::(), + 96usize, + concat!("Size of: ", stringify!(XMotionEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XMotionEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).root as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).subwindow as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(subwindow) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).time as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(time) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 68usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x_root as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(x_root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y_root as *const _ as usize }, + 76usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(y_root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(state) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).is_hint as *const _ as usize }, + 84usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(is_hint) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).same_screen as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(XMotionEvent), + "::", + stringify!(same_screen) + ) + ); +} +pub type XPointerMovedEvent = XMotionEvent; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XCrossingEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub root: Window, + pub subwindow: Window, + pub time: Time, + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub x_root: ::std::os::raw::c_int, + pub y_root: ::std::os::raw::c_int, + pub mode: ::std::os::raw::c_int, + pub detail: ::std::os::raw::c_int, + pub same_screen: ::std::os::raw::c_int, + pub focus: ::std::os::raw::c_int, + pub state: ::std::os::raw::c_uint, +} +#[test] +fn bindgen_test_layout_XCrossingEvent() { + assert_eq!( + ::std::mem::size_of::(), + 104usize, + concat!("Size of: ", stringify!(XCrossingEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XCrossingEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).root as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).subwindow as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(subwindow) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).time as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(time) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 68usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x_root as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(x_root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y_root as *const _ as usize }, + 76usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(y_root) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).mode as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(mode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).detail as *const _ as usize }, + 84usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(detail) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).same_screen as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(same_screen) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).focus as *const _ as usize }, + 92usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(focus) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 96usize, + concat!( + "Offset of field: ", + stringify!(XCrossingEvent), + "::", + stringify!(state) + ) + ); +} +pub type XEnterWindowEvent = XCrossingEvent; +pub type XLeaveWindowEvent = XCrossingEvent; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XFocusChangeEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub mode: ::std::os::raw::c_int, + pub detail: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XFocusChangeEvent() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(XFocusChangeEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XFocusChangeEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XFocusChangeEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XFocusChangeEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XFocusChangeEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XFocusChangeEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XFocusChangeEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).mode as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XFocusChangeEvent), + "::", + stringify!(mode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).detail as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(XFocusChangeEvent), + "::", + stringify!(detail) + ) + ); +} +pub type XFocusInEvent = XFocusChangeEvent; +pub type XFocusOutEvent = XFocusChangeEvent; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XKeymapEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub key_vector: [::std::os::raw::c_char; 32usize], +} +#[test] +fn bindgen_test_layout_XKeymapEvent() { + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!("Size of: ", stringify!(XKeymapEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XKeymapEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XKeymapEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XKeymapEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XKeymapEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XKeymapEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XKeymapEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).key_vector as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XKeymapEvent), + "::", + stringify!(key_vector) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XExposeEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub width: ::std::os::raw::c_int, + pub height: ::std::os::raw::c_int, + pub count: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XExposeEvent() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!("Size of: ", stringify!(XExposeEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XExposeEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XExposeEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XExposeEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XExposeEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XExposeEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XExposeEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XExposeEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(XExposeEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XExposeEvent), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(XExposeEvent), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).count as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XExposeEvent), + "::", + stringify!(count) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XGraphicsExposeEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub drawable: Drawable, + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub width: ::std::os::raw::c_int, + pub height: ::std::os::raw::c_int, + pub count: ::std::os::raw::c_int, + pub major_code: ::std::os::raw::c_int, + pub minor_code: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XGraphicsExposeEvent() { + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!("Size of: ", stringify!(XGraphicsExposeEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XGraphicsExposeEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).drawable as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(drawable) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).count as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).major_code as *const _ as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(major_code) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).minor_code as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XGraphicsExposeEvent), + "::", + stringify!(minor_code) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XNoExposeEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub drawable: Drawable, + pub major_code: ::std::os::raw::c_int, + pub minor_code: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XNoExposeEvent() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(XNoExposeEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XNoExposeEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XNoExposeEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XNoExposeEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XNoExposeEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XNoExposeEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).drawable as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XNoExposeEvent), + "::", + stringify!(drawable) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).major_code as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XNoExposeEvent), + "::", + stringify!(major_code) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).minor_code as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(XNoExposeEvent), + "::", + stringify!(minor_code) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XVisibilityEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub state: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XVisibilityEvent() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(XVisibilityEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XVisibilityEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XVisibilityEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XVisibilityEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XVisibilityEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XVisibilityEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XVisibilityEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XVisibilityEvent), + "::", + stringify!(state) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XCreateWindowEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub parent: Window, + pub window: Window, + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub width: ::std::os::raw::c_int, + pub height: ::std::os::raw::c_int, + pub border_width: ::std::os::raw::c_int, + pub override_redirect: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XCreateWindowEvent() { + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!("Size of: ", stringify!(XCreateWindowEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XCreateWindowEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).parent as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(parent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).border_width as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(border_width) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).override_redirect as *const _ as usize + }, + 68usize, + concat!( + "Offset of field: ", + stringify!(XCreateWindowEvent), + "::", + stringify!(override_redirect) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XDestroyWindowEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub event: Window, + pub window: Window, +} +#[test] +fn bindgen_test_layout_XDestroyWindowEvent() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(XDestroyWindowEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XDestroyWindowEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XDestroyWindowEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XDestroyWindowEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XDestroyWindowEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XDestroyWindowEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).event as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XDestroyWindowEvent), + "::", + stringify!(event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XDestroyWindowEvent), + "::", + stringify!(window) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XUnmapEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub event: Window, + pub window: Window, + pub from_configure: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XUnmapEvent() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(XUnmapEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XUnmapEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XUnmapEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XUnmapEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XUnmapEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XUnmapEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).event as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XUnmapEvent), + "::", + stringify!(event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XUnmapEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).from_configure as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XUnmapEvent), + "::", + stringify!(from_configure) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XMapEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub event: Window, + pub window: Window, + pub override_redirect: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XMapEvent() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(XMapEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XMapEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XMapEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XMapEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XMapEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XMapEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).event as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XMapEvent), + "::", + stringify!(event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XMapEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).override_redirect as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XMapEvent), + "::", + stringify!(override_redirect) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XMapRequestEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub parent: Window, + pub window: Window, +} +#[test] +fn bindgen_test_layout_XMapRequestEvent() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(XMapRequestEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XMapRequestEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XMapRequestEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XMapRequestEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XMapRequestEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XMapRequestEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).parent as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XMapRequestEvent), + "::", + stringify!(parent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XMapRequestEvent), + "::", + stringify!(window) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XReparentEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub event: Window, + pub window: Window, + pub parent: Window, + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub override_redirect: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XReparentEvent() { + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!("Size of: ", stringify!(XReparentEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XReparentEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XReparentEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XReparentEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XReparentEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XReparentEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).event as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XReparentEvent), + "::", + stringify!(event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XReparentEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).parent as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XReparentEvent), + "::", + stringify!(parent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XReparentEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(XReparentEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).override_redirect as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XReparentEvent), + "::", + stringify!(override_redirect) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XConfigureEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub event: Window, + pub window: Window, + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub width: ::std::os::raw::c_int, + pub height: ::std::os::raw::c_int, + pub border_width: ::std::os::raw::c_int, + pub above: Window, + pub override_redirect: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XConfigureEvent() { + assert_eq!( + ::std::mem::size_of::(), + 88usize, + concat!("Size of: ", stringify!(XConfigureEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XConfigureEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).event as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).border_width as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(border_width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).above as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(above) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).override_redirect as *const _ as usize + }, + 80usize, + concat!( + "Offset of field: ", + stringify!(XConfigureEvent), + "::", + stringify!(override_redirect) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XGravityEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub event: Window, + pub window: Window, + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XGravityEvent() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(XGravityEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XGravityEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XGravityEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XGravityEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XGravityEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XGravityEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).event as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XGravityEvent), + "::", + stringify!(event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XGravityEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XGravityEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(XGravityEvent), + "::", + stringify!(y) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XResizeRequestEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub width: ::std::os::raw::c_int, + pub height: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XResizeRequestEvent() { + assert_eq!( + ::std::mem::size_of::(), + 48usize, + concat!("Size of: ", stringify!(XResizeRequestEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XResizeRequestEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XResizeRequestEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XResizeRequestEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XResizeRequestEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XResizeRequestEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XResizeRequestEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XResizeRequestEvent), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(XResizeRequestEvent), + "::", + stringify!(height) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XConfigureRequestEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub parent: Window, + pub window: Window, + pub x: ::std::os::raw::c_int, + pub y: ::std::os::raw::c_int, + pub width: ::std::os::raw::c_int, + pub height: ::std::os::raw::c_int, + pub border_width: ::std::os::raw::c_int, + pub above: Window, + pub detail: ::std::os::raw::c_int, + pub value_mask: ::std::os::raw::c_ulong, +} +#[test] +fn bindgen_test_layout_XConfigureRequestEvent() { + assert_eq!( + ::std::mem::size_of::(), + 96usize, + concat!("Size of: ", stringify!(XConfigureRequestEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XConfigureRequestEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).send_event as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).parent as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(parent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(x) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).y as *const _ as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(y) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).height as *const _ as usize }, + 60usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(height) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).border_width as *const _ as usize + }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(border_width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).above as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(above) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).detail as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(detail) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).value_mask as *const _ as usize + }, + 88usize, + concat!( + "Offset of field: ", + stringify!(XConfigureRequestEvent), + "::", + stringify!(value_mask) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XCirculateEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub event: Window, + pub window: Window, + pub place: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XCirculateEvent() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(XCirculateEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XCirculateEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XCirculateEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XCirculateEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XCirculateEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XCirculateEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).event as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XCirculateEvent), + "::", + stringify!(event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XCirculateEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).place as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XCirculateEvent), + "::", + stringify!(place) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XCirculateRequestEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub parent: Window, + pub window: Window, + pub place: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XCirculateRequestEvent() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(XCirculateRequestEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XCirculateRequestEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XCirculateRequestEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XCirculateRequestEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).send_event as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XCirculateRequestEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XCirculateRequestEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).parent as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XCirculateRequestEvent), + "::", + stringify!(parent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XCirculateRequestEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).place as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XCirculateRequestEvent), + "::", + stringify!(place) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XPropertyEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub atom: Atom, + pub time: Time, + pub state: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XPropertyEvent() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!("Size of: ", stringify!(XPropertyEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XPropertyEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XPropertyEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XPropertyEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XPropertyEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XPropertyEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XPropertyEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).atom as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XPropertyEvent), + "::", + stringify!(atom) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).time as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XPropertyEvent), + "::", + stringify!(time) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XPropertyEvent), + "::", + stringify!(state) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XSelectionClearEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub selection: Atom, + pub time: Time, +} +#[test] +fn bindgen_test_layout_XSelectionClearEvent() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(XSelectionClearEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XSelectionClearEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XSelectionClearEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XSelectionClearEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XSelectionClearEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XSelectionClearEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XSelectionClearEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).selection as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XSelectionClearEvent), + "::", + stringify!(selection) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).time as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XSelectionClearEvent), + "::", + stringify!(time) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XSelectionRequestEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub owner: Window, + pub requestor: Window, + pub selection: Atom, + pub target: Atom, + pub property: Atom, + pub time: Time, +} +#[test] +fn bindgen_test_layout_XSelectionRequestEvent() { + assert_eq!( + ::std::mem::size_of::(), + 80usize, + concat!("Size of: ", stringify!(XSelectionRequestEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XSelectionRequestEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XSelectionRequestEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XSelectionRequestEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).send_event as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XSelectionRequestEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XSelectionRequestEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).owner as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XSelectionRequestEvent), + "::", + stringify!(owner) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).requestor as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XSelectionRequestEvent), + "::", + stringify!(requestor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).selection as *const _ as usize + }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XSelectionRequestEvent), + "::", + stringify!(selection) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).target as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XSelectionRequestEvent), + "::", + stringify!(target) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).property as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XSelectionRequestEvent), + "::", + stringify!(property) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).time as *const _ as usize }, + 72usize, + concat!( + "Offset of field: ", + stringify!(XSelectionRequestEvent), + "::", + stringify!(time) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XSelectionEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub requestor: Window, + pub selection: Atom, + pub target: Atom, + pub property: Atom, + pub time: Time, +} +#[test] +fn bindgen_test_layout_XSelectionEvent() { + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!("Size of: ", stringify!(XSelectionEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XSelectionEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XSelectionEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XSelectionEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XSelectionEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XSelectionEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).requestor as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XSelectionEvent), + "::", + stringify!(requestor) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).selection as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XSelectionEvent), + "::", + stringify!(selection) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).target as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XSelectionEvent), + "::", + stringify!(target) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).property as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XSelectionEvent), + "::", + stringify!(property) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).time as *const _ as usize }, + 64usize, + concat!( + "Offset of field: ", + stringify!(XSelectionEvent), + "::", + stringify!(time) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XColormapEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub colormap: Colormap, + pub new: ::std::os::raw::c_int, + pub state: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XColormapEvent() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(XColormapEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XColormapEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XColormapEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XColormapEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XColormapEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XColormapEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XColormapEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).colormap as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XColormapEvent), + "::", + stringify!(colormap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).new as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XColormapEvent), + "::", + stringify!(new) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).state as *const _ as usize }, + 52usize, + concat!( + "Offset of field: ", + stringify!(XColormapEvent), + "::", + stringify!(state) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct XClientMessageEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub message_type: Atom, + pub format: ::std::os::raw::c_int, + pub data: XClientMessageEvent__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union XClientMessageEvent__bindgen_ty_1 { + pub b: [::std::os::raw::c_char; 20usize], + pub s: [::std::os::raw::c_short; 10usize], + pub l: [::std::os::raw::c_long; 5usize], + _bindgen_union_align: [u64; 5usize], +} +#[test] +fn bindgen_test_layout_XClientMessageEvent__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(XClientMessageEvent__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(XClientMessageEvent__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).b as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XClientMessageEvent__bindgen_ty_1), + "::", + stringify!(b) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).s as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XClientMessageEvent__bindgen_ty_1), + "::", + stringify!(s) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).l as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XClientMessageEvent__bindgen_ty_1), + "::", + stringify!(l) + ) + ); +} +#[test] +fn bindgen_test_layout_XClientMessageEvent() { + assert_eq!( + ::std::mem::size_of::(), + 96usize, + concat!("Size of: ", stringify!(XClientMessageEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XClientMessageEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XClientMessageEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XClientMessageEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XClientMessageEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XClientMessageEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XClientMessageEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).message_type as *const _ as usize + }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XClientMessageEvent), + "::", + stringify!(message_type) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).format as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XClientMessageEvent), + "::", + stringify!(format) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XClientMessageEvent), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XMappingEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, + pub request: ::std::os::raw::c_int, + pub first_keycode: ::std::os::raw::c_int, + pub count: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XMappingEvent() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(XMappingEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XMappingEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XMappingEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XMappingEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XMappingEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XMappingEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XMappingEvent), + "::", + stringify!(window) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).request as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XMappingEvent), + "::", + stringify!(request) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).first_keycode as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(XMappingEvent), + "::", + stringify!(first_keycode) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).count as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XMappingEvent), + "::", + stringify!(count) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XErrorEvent { + pub type_: ::std::os::raw::c_int, + pub display: *mut Display, + pub resourceid: XID, + pub serial: ::std::os::raw::c_ulong, + pub error_code: ::std::os::raw::c_uchar, + pub request_code: ::std::os::raw::c_uchar, + pub minor_code: ::std::os::raw::c_uchar, +} +#[test] +fn bindgen_test_layout_XErrorEvent() { + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(XErrorEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XErrorEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XErrorEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XErrorEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).resourceid as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XErrorEvent), + "::", + stringify!(resourceid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XErrorEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).error_code as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XErrorEvent), + "::", + stringify!(error_code) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).request_code as *const _ as usize }, + 33usize, + concat!( + "Offset of field: ", + stringify!(XErrorEvent), + "::", + stringify!(request_code) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).minor_code as *const _ as usize }, + 34usize, + concat!( + "Offset of field: ", + stringify!(XErrorEvent), + "::", + stringify!(minor_code) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XAnyEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub window: Window, +} +#[test] +fn bindgen_test_layout_XAnyEvent() { + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(XAnyEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XAnyEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XAnyEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XAnyEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XAnyEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XAnyEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).window as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XAnyEvent), + "::", + stringify!(window) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XGenericEvent { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub extension: ::std::os::raw::c_int, + pub evtype: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XGenericEvent() { + assert_eq!( + ::std::mem::size_of::(), + 40usize, + concat!("Size of: ", stringify!(XGenericEvent)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XGenericEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XGenericEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XGenericEvent), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XGenericEvent), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XGenericEvent), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).extension as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XGenericEvent), + "::", + stringify!(extension) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).evtype as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(XGenericEvent), + "::", + stringify!(evtype) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XGenericEventCookie { + pub type_: ::std::os::raw::c_int, + pub serial: ::std::os::raw::c_ulong, + pub send_event: ::std::os::raw::c_int, + pub display: *mut Display, + pub extension: ::std::os::raw::c_int, + pub evtype: ::std::os::raw::c_int, + pub cookie: ::std::os::raw::c_uint, + pub data: *mut ::std::os::raw::c_void, +} +#[test] +fn bindgen_test_layout_XGenericEventCookie() { + assert_eq!( + ::std::mem::size_of::(), + 56usize, + concat!("Size of: ", stringify!(XGenericEventCookie)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XGenericEventCookie)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XGenericEventCookie), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).serial as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XGenericEventCookie), + "::", + stringify!(serial) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).send_event as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XGenericEventCookie), + "::", + stringify!(send_event) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XGenericEventCookie), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).extension as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XGenericEventCookie), + "::", + stringify!(extension) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).evtype as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(XGenericEventCookie), + "::", + stringify!(evtype) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).cookie as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XGenericEventCookie), + "::", + stringify!(cookie) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).data as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XGenericEventCookie), + "::", + stringify!(data) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union _XEvent { + pub type_: ::std::os::raw::c_int, + pub xany: XAnyEvent, + pub xkey: XKeyEvent, + pub xbutton: XButtonEvent, + pub xmotion: XMotionEvent, + pub xcrossing: XCrossingEvent, + pub xfocus: XFocusChangeEvent, + pub xexpose: XExposeEvent, + pub xgraphicsexpose: XGraphicsExposeEvent, + pub xnoexpose: XNoExposeEvent, + pub xvisibility: XVisibilityEvent, + pub xcreatewindow: XCreateWindowEvent, + pub xdestroywindow: XDestroyWindowEvent, + pub xunmap: XUnmapEvent, + pub xmap: XMapEvent, + pub xmaprequest: XMapRequestEvent, + pub xreparent: XReparentEvent, + pub xconfigure: XConfigureEvent, + pub xgravity: XGravityEvent, + pub xresizerequest: XResizeRequestEvent, + pub xconfigurerequest: XConfigureRequestEvent, + pub xcirculate: XCirculateEvent, + pub xcirculaterequest: XCirculateRequestEvent, + pub xproperty: XPropertyEvent, + pub xselectionclear: XSelectionClearEvent, + pub xselectionrequest: XSelectionRequestEvent, + pub xselection: XSelectionEvent, + pub xcolormap: XColormapEvent, + pub xclient: XClientMessageEvent, + pub xmapping: XMappingEvent, + pub xerror: XErrorEvent, + pub xkeymap: XKeymapEvent, + pub xgeneric: XGenericEvent, + pub xcookie: XGenericEventCookie, + pub pad: [::std::os::raw::c_long; 24usize], + _bindgen_union_align: [u64; 24usize], +} +#[test] +fn bindgen_test_layout__XEvent() { + assert_eq!( + ::std::mem::size_of::<_XEvent>(), + 192usize, + concat!("Size of: ", stringify!(_XEvent)) + ); + assert_eq!( + ::std::mem::align_of::<_XEvent>(), + 8usize, + concat!("Alignment of ", stringify!(_XEvent)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).type_ as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xany as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xany) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xkey as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xkey) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xbutton as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xbutton) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xmotion as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xmotion) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xcrossing as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xcrossing) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xfocus as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xfocus) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xexpose as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xexpose) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xgraphicsexpose as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xgraphicsexpose) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xnoexpose as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xnoexpose) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xvisibility as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xvisibility) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xcreatewindow as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xcreatewindow) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xdestroywindow as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xdestroywindow) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xunmap as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xunmap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xmap as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xmap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xmaprequest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xmaprequest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xreparent as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xreparent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xconfigure as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xconfigure) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xgravity as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xgravity) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xresizerequest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xresizerequest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xconfigurerequest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xconfigurerequest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xcirculate as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xcirculate) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xcirculaterequest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xcirculaterequest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xproperty as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xproperty) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xselectionclear as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xselectionclear) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xselectionrequest as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xselectionrequest) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xselection as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xselection) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xcolormap as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xcolormap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xclient as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xclient) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xmapping as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xmapping) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xerror as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xerror) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xkeymap as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xkeymap) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xgeneric as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xgeneric) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).xcookie as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(xcookie) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XEvent>())).pad as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XEvent), + "::", + stringify!(pad) + ) + ); +} +pub type XEvent = _XEvent; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XCharStruct { + pub lbearing: ::std::os::raw::c_short, + pub rbearing: ::std::os::raw::c_short, + pub width: ::std::os::raw::c_short, + pub ascent: ::std::os::raw::c_short, + pub descent: ::std::os::raw::c_short, + pub attributes: ::std::os::raw::c_ushort, +} +#[test] +fn bindgen_test_layout_XCharStruct() { + assert_eq!( + ::std::mem::size_of::(), + 12usize, + concat!("Size of: ", stringify!(XCharStruct)) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!("Alignment of ", stringify!(XCharStruct)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).lbearing as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XCharStruct), + "::", + stringify!(lbearing) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rbearing as *const _ as usize }, + 2usize, + concat!( + "Offset of field: ", + stringify!(XCharStruct), + "::", + stringify!(rbearing) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).width as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(XCharStruct), + "::", + stringify!(width) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ascent as *const _ as usize }, + 6usize, + concat!( + "Offset of field: ", + stringify!(XCharStruct), + "::", + stringify!(ascent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).descent as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XCharStruct), + "::", + stringify!(descent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).attributes as *const _ as usize }, + 10usize, + concat!( + "Offset of field: ", + stringify!(XCharStruct), + "::", + stringify!(attributes) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XFontProp { + pub name: Atom, + pub card32: ::std::os::raw::c_ulong, +} +#[test] +fn bindgen_test_layout_XFontProp() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XFontProp)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XFontProp)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).name as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XFontProp), + "::", + stringify!(name) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).card32 as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XFontProp), + "::", + stringify!(card32) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XFontStruct { + pub ext_data: *mut XExtData, + pub fid: Font, + pub direction: ::std::os::raw::c_uint, + pub min_char_or_byte2: ::std::os::raw::c_uint, + pub max_char_or_byte2: ::std::os::raw::c_uint, + pub min_byte1: ::std::os::raw::c_uint, + pub max_byte1: ::std::os::raw::c_uint, + pub all_chars_exist: ::std::os::raw::c_int, + pub default_char: ::std::os::raw::c_uint, + pub n_properties: ::std::os::raw::c_int, + pub properties: *mut XFontProp, + pub min_bounds: XCharStruct, + pub max_bounds: XCharStruct, + pub per_char: *mut XCharStruct, + pub ascent: ::std::os::raw::c_int, + pub descent: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout_XFontStruct() { + assert_eq!( + ::std::mem::size_of::(), + 96usize, + concat!("Size of: ", stringify!(XFontStruct)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XFontStruct)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ext_data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(ext_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).fid as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(fid) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).direction as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(direction) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).min_char_or_byte2 as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(min_char_or_byte2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).max_char_or_byte2 as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(max_char_or_byte2) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).min_byte1 as *const _ as usize }, + 28usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(min_byte1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).max_byte1 as *const _ as usize }, + 32usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(max_byte1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).all_chars_exist as *const _ as usize }, + 36usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(all_chars_exist) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).default_char as *const _ as usize }, + 40usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(default_char) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).n_properties as *const _ as usize }, + 44usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(n_properties) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).properties as *const _ as usize }, + 48usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(properties) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).min_bounds as *const _ as usize }, + 56usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(min_bounds) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).max_bounds as *const _ as usize }, + 68usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(max_bounds) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).per_char as *const _ as usize }, + 80usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(per_char) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).ascent as *const _ as usize }, + 88usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(ascent) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).descent as *const _ as usize }, + 92usize, + concat!( + "Offset of field: ", + stringify!(XFontStruct), + "::", + stringify!(descent) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XTextItem { + pub chars: *mut ::std::os::raw::c_char, + pub nchars: ::std::os::raw::c_int, + pub delta: ::std::os::raw::c_int, + pub font: Font, +} +#[test] +fn bindgen_test_layout_XTextItem() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(XTextItem)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XTextItem)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).chars as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XTextItem), + "::", + stringify!(chars) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).nchars as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XTextItem), + "::", + stringify!(nchars) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).delta as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(XTextItem), + "::", + stringify!(delta) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).font as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XTextItem), + "::", + stringify!(font) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XChar2b { + pub byte1: ::std::os::raw::c_uchar, + pub byte2: ::std::os::raw::c_uchar, +} +#[test] +fn bindgen_test_layout_XChar2b() { + assert_eq!( + ::std::mem::size_of::(), + 2usize, + concat!("Size of: ", stringify!(XChar2b)) + ); + assert_eq!( + ::std::mem::align_of::(), + 1usize, + concat!("Alignment of ", stringify!(XChar2b)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).byte1 as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XChar2b), + "::", + stringify!(byte1) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).byte2 as *const _ as usize }, + 1usize, + concat!( + "Offset of field: ", + stringify!(XChar2b), + "::", + stringify!(byte2) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XTextItem16 { + pub chars: *mut XChar2b, + pub nchars: ::std::os::raw::c_int, + pub delta: ::std::os::raw::c_int, + pub font: Font, +} +#[test] +fn bindgen_test_layout_XTextItem16() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(XTextItem16)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XTextItem16)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).chars as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XTextItem16), + "::", + stringify!(chars) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).nchars as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XTextItem16), + "::", + stringify!(nchars) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).delta as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(XTextItem16), + "::", + stringify!(delta) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).font as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XTextItem16), + "::", + stringify!(font) + ) + ); +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union XEDataObject { + pub display: *mut Display, + pub gc: GC, + pub visual: *mut Visual, + pub screen: *mut Screen, + pub pixmap_format: *mut ScreenFormat, + pub font: *mut XFontStruct, + _bindgen_union_align: u64, +} +#[test] +fn bindgen_test_layout_XEDataObject() { + assert_eq!( + ::std::mem::size_of::(), + 8usize, + concat!("Size of: ", stringify!(XEDataObject)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XEDataObject)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).display as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XEDataObject), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).gc as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XEDataObject), + "::", + stringify!(gc) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).visual as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XEDataObject), + "::", + stringify!(visual) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).screen as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XEDataObject), + "::", + stringify!(screen) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).pixmap_format as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XEDataObject), + "::", + stringify!(pixmap_format) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).font as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XEDataObject), + "::", + stringify!(font) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XFontSetExtents { + pub max_ink_extent: XRectangle, + pub max_logical_extent: XRectangle, +} +#[test] +fn bindgen_test_layout_XFontSetExtents() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XFontSetExtents)) + ); + assert_eq!( + ::std::mem::align_of::(), + 2usize, + concat!("Alignment of ", stringify!(XFontSetExtents)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).max_ink_extent as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XFontSetExtents), + "::", + stringify!(max_ink_extent) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).max_logical_extent as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XFontSetExtents), + "::", + stringify!(max_logical_extent) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XOM { + _unused: [u8; 0], +} +pub type XOM = *mut _XOM; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XOC { + _unused: [u8; 0], +} +pub type XOC = *mut _XOC; +pub type XFontSet = *mut _XOC; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XmbTextItem { + pub chars: *mut ::std::os::raw::c_char, + pub nchars: ::std::os::raw::c_int, + pub delta: ::std::os::raw::c_int, + pub font_set: XFontSet, +} +#[test] +fn bindgen_test_layout_XmbTextItem() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(XmbTextItem)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XmbTextItem)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).chars as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XmbTextItem), + "::", + stringify!(chars) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).nchars as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XmbTextItem), + "::", + stringify!(nchars) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).delta as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(XmbTextItem), + "::", + stringify!(delta) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).font_set as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XmbTextItem), + "::", + stringify!(font_set) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XwcTextItem { + pub chars: *mut wchar_t, + pub nchars: ::std::os::raw::c_int, + pub delta: ::std::os::raw::c_int, + pub font_set: XFontSet, +} +#[test] +fn bindgen_test_layout_XwcTextItem() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(XwcTextItem)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XwcTextItem)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).chars as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XwcTextItem), + "::", + stringify!(chars) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).nchars as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XwcTextItem), + "::", + stringify!(nchars) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).delta as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(XwcTextItem), + "::", + stringify!(delta) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).font_set as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XwcTextItem), + "::", + stringify!(font_set) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XOMCharSetList { + pub charset_count: ::std::os::raw::c_int, + pub charset_list: *mut *mut ::std::os::raw::c_char, +} +#[test] +fn bindgen_test_layout_XOMCharSetList() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XOMCharSetList)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XOMCharSetList)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).charset_count as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XOMCharSetList), + "::", + stringify!(charset_count) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).charset_list as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XOMCharSetList), + "::", + stringify!(charset_list) + ) + ); +} +#[repr(u32)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +pub enum XOrientation { + XOMOrientation_LTR_TTB = 0, + XOMOrientation_RTL_TTB = 1, + XOMOrientation_TTB_LTR = 2, + XOMOrientation_TTB_RTL = 3, + XOMOrientation_Context = 4, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XOMOrientation { + pub num_orientation: ::std::os::raw::c_int, + pub orientation: *mut XOrientation, +} +#[test] +fn bindgen_test_layout_XOMOrientation() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XOMOrientation)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XOMOrientation)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).num_orientation as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XOMOrientation), + "::", + stringify!(num_orientation) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).orientation as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XOMOrientation), + "::", + stringify!(orientation) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XOMFontInfo { + pub num_font: ::std::os::raw::c_int, + pub font_struct_list: *mut *mut XFontStruct, + pub font_name_list: *mut *mut ::std::os::raw::c_char, +} +#[test] +fn bindgen_test_layout_XOMFontInfo() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(XOMFontInfo)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XOMFontInfo)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).num_font as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XOMFontInfo), + "::", + stringify!(num_font) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).font_struct_list as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XOMFontInfo), + "::", + stringify!(font_struct_list) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).font_name_list as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(XOMFontInfo), + "::", + stringify!(font_name_list) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XIM { + _unused: [u8; 0], +} +pub type XIM = *mut _XIM; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XIC { + _unused: [u8; 0], +} +pub type XIC = *mut _XIC; +pub type XIMProc = + ::std::option::Option; +pub type XICProc = ::std::option::Option< + unsafe extern "C" fn(arg1: XIC, arg2: XPointer, arg3: XPointer) -> ::std::os::raw::c_int, +>; +pub type XIDProc = + ::std::option::Option; +pub type XIMStyle = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XIMStyles { + pub count_styles: ::std::os::raw::c_ushort, + pub supported_styles: *mut XIMStyle, +} +#[test] +fn bindgen_test_layout_XIMStyles() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XIMStyles)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XIMStyles)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).count_styles as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XIMStyles), + "::", + stringify!(count_styles) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).supported_styles as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XIMStyles), + "::", + stringify!(supported_styles) + ) + ); +} +pub type XVaNestedList = *mut ::std::os::raw::c_void; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XIMCallback { + pub client_data: XPointer, + pub callback: XIMProc, +} +#[test] +fn bindgen_test_layout_XIMCallback() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XIMCallback)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XIMCallback)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).client_data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XIMCallback), + "::", + stringify!(client_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).callback as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XIMCallback), + "::", + stringify!(callback) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XICCallback { + pub client_data: XPointer, + pub callback: XICProc, +} +#[test] +fn bindgen_test_layout_XICCallback() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XICCallback)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XICCallback)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).client_data as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XICCallback), + "::", + stringify!(client_data) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).callback as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XICCallback), + "::", + stringify!(callback) + ) + ); +} +pub type XIMFeedback = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _XIMText { + pub length: ::std::os::raw::c_ushort, + pub feedback: *mut XIMFeedback, + pub encoding_is_wchar: ::std::os::raw::c_int, + pub string: _XIMText__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union _XIMText__bindgen_ty_1 { + pub multi_byte: *mut ::std::os::raw::c_char, + pub wide_char: *mut wchar_t, + _bindgen_union_align: u64, +} +#[test] +fn bindgen_test_layout__XIMText__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<_XIMText__bindgen_ty_1>(), + 8usize, + concat!("Size of: ", stringify!(_XIMText__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::<_XIMText__bindgen_ty_1>(), + 8usize, + concat!("Alignment of ", stringify!(_XIMText__bindgen_ty_1)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMText__bindgen_ty_1>())).multi_byte as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMText__bindgen_ty_1), + "::", + stringify!(multi_byte) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMText__bindgen_ty_1>())).wide_char as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMText__bindgen_ty_1), + "::", + stringify!(wide_char) + ) + ); +} +#[test] +fn bindgen_test_layout__XIMText() { + assert_eq!( + ::std::mem::size_of::<_XIMText>(), + 32usize, + concat!("Size of: ", stringify!(_XIMText)) + ); + assert_eq!( + ::std::mem::align_of::<_XIMText>(), + 8usize, + concat!("Alignment of ", stringify!(_XIMText)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XIMText>())).length as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMText), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XIMText>())).feedback as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_XIMText), + "::", + stringify!(feedback) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XIMText>())).encoding_is_wchar as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_XIMText), + "::", + stringify!(encoding_is_wchar) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XIMText>())).string as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_XIMText), + "::", + stringify!(string) + ) + ); +} +pub type XIMText = _XIMText; +pub type XIMPreeditState = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XIMPreeditStateNotifyCallbackStruct { + pub state: XIMPreeditState, +} +#[test] +fn bindgen_test_layout__XIMPreeditStateNotifyCallbackStruct() { + assert_eq!( + ::std::mem::size_of::<_XIMPreeditStateNotifyCallbackStruct>(), + 8usize, + concat!( + "Size of: ", + stringify!(_XIMPreeditStateNotifyCallbackStruct) + ) + ); + assert_eq!( + ::std::mem::align_of::<_XIMPreeditStateNotifyCallbackStruct>(), + 8usize, + concat!( + "Alignment of ", + stringify!(_XIMPreeditStateNotifyCallbackStruct) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMPreeditStateNotifyCallbackStruct>())).state as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMPreeditStateNotifyCallbackStruct), + "::", + stringify!(state) + ) + ); +} +pub type XIMPreeditStateNotifyCallbackStruct = _XIMPreeditStateNotifyCallbackStruct; +pub type XIMResetState = ::std::os::raw::c_ulong; +pub type XIMStringConversionFeedback = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _XIMStringConversionText { + pub length: ::std::os::raw::c_ushort, + pub feedback: *mut XIMStringConversionFeedback, + pub encoding_is_wchar: ::std::os::raw::c_int, + pub string: _XIMStringConversionText__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union _XIMStringConversionText__bindgen_ty_1 { + pub mbs: *mut ::std::os::raw::c_char, + pub wcs: *mut wchar_t, + _bindgen_union_align: u64, +} +#[test] +fn bindgen_test_layout__XIMStringConversionText__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<_XIMStringConversionText__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(_XIMStringConversionText__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<_XIMStringConversionText__bindgen_ty_1>(), + 8usize, + concat!( + "Alignment of ", + stringify!(_XIMStringConversionText__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStringConversionText__bindgen_ty_1>())).mbs as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMStringConversionText__bindgen_ty_1), + "::", + stringify!(mbs) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStringConversionText__bindgen_ty_1>())).wcs as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMStringConversionText__bindgen_ty_1), + "::", + stringify!(wcs) + ) + ); +} +#[test] +fn bindgen_test_layout__XIMStringConversionText() { + assert_eq!( + ::std::mem::size_of::<_XIMStringConversionText>(), + 32usize, + concat!("Size of: ", stringify!(_XIMStringConversionText)) + ); + assert_eq!( + ::std::mem::align_of::<_XIMStringConversionText>(), + 8usize, + concat!("Alignment of ", stringify!(_XIMStringConversionText)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XIMStringConversionText>())).length as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMStringConversionText), + "::", + stringify!(length) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStringConversionText>())).feedback as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_XIMStringConversionText), + "::", + stringify!(feedback) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStringConversionText>())).encoding_is_wchar as *const _ + as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_XIMStringConversionText), + "::", + stringify!(encoding_is_wchar) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XIMStringConversionText>())).string as *const _ as usize }, + 24usize, + concat!( + "Offset of field: ", + stringify!(_XIMStringConversionText), + "::", + stringify!(string) + ) + ); +} +pub type XIMStringConversionText = _XIMStringConversionText; +pub type XIMStringConversionPosition = ::std::os::raw::c_ushort; +pub type XIMStringConversionType = ::std::os::raw::c_ushort; +pub type XIMStringConversionOperation = ::std::os::raw::c_ushort; +#[repr(u32)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +pub enum XIMCaretDirection { + XIMForwardChar = 0, + XIMBackwardChar = 1, + XIMForwardWord = 2, + XIMBackwardWord = 3, + XIMCaretUp = 4, + XIMCaretDown = 5, + XIMNextLine = 6, + XIMPreviousLine = 7, + XIMLineStart = 8, + XIMLineEnd = 9, + XIMAbsolutePosition = 10, + XIMDontChange = 11, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XIMStringConversionCallbackStruct { + pub position: XIMStringConversionPosition, + pub direction: XIMCaretDirection, + pub operation: XIMStringConversionOperation, + pub factor: ::std::os::raw::c_ushort, + pub text: *mut XIMStringConversionText, +} +#[test] +fn bindgen_test_layout__XIMStringConversionCallbackStruct() { + assert_eq!( + ::std::mem::size_of::<_XIMStringConversionCallbackStruct>(), + 24usize, + concat!("Size of: ", stringify!(_XIMStringConversionCallbackStruct)) + ); + assert_eq!( + ::std::mem::align_of::<_XIMStringConversionCallbackStruct>(), + 8usize, + concat!( + "Alignment of ", + stringify!(_XIMStringConversionCallbackStruct) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStringConversionCallbackStruct>())).position as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMStringConversionCallbackStruct), + "::", + stringify!(position) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStringConversionCallbackStruct>())).direction as *const _ + as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(_XIMStringConversionCallbackStruct), + "::", + stringify!(direction) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStringConversionCallbackStruct>())).operation as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_XIMStringConversionCallbackStruct), + "::", + stringify!(operation) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStringConversionCallbackStruct>())).factor as *const _ + as usize + }, + 10usize, + concat!( + "Offset of field: ", + stringify!(_XIMStringConversionCallbackStruct), + "::", + stringify!(factor) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStringConversionCallbackStruct>())).text as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_XIMStringConversionCallbackStruct), + "::", + stringify!(text) + ) + ); +} +pub type XIMStringConversionCallbackStruct = _XIMStringConversionCallbackStruct; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XIMPreeditDrawCallbackStruct { + pub caret: ::std::os::raw::c_int, + pub chg_first: ::std::os::raw::c_int, + pub chg_length: ::std::os::raw::c_int, + pub text: *mut XIMText, +} +#[test] +fn bindgen_test_layout__XIMPreeditDrawCallbackStruct() { + assert_eq!( + ::std::mem::size_of::<_XIMPreeditDrawCallbackStruct>(), + 24usize, + concat!("Size of: ", stringify!(_XIMPreeditDrawCallbackStruct)) + ); + assert_eq!( + ::std::mem::align_of::<_XIMPreeditDrawCallbackStruct>(), + 8usize, + concat!("Alignment of ", stringify!(_XIMPreeditDrawCallbackStruct)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMPreeditDrawCallbackStruct>())).caret as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMPreeditDrawCallbackStruct), + "::", + stringify!(caret) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMPreeditDrawCallbackStruct>())).chg_first as *const _ as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(_XIMPreeditDrawCallbackStruct), + "::", + stringify!(chg_first) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMPreeditDrawCallbackStruct>())).chg_length as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_XIMPreeditDrawCallbackStruct), + "::", + stringify!(chg_length) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMPreeditDrawCallbackStruct>())).text as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(_XIMPreeditDrawCallbackStruct), + "::", + stringify!(text) + ) + ); +} +pub type XIMPreeditDrawCallbackStruct = _XIMPreeditDrawCallbackStruct; +#[repr(u32)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +pub enum XIMCaretStyle { + XIMIsInvisible = 0, + XIMIsPrimary = 1, + XIMIsSecondary = 2, +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XIMPreeditCaretCallbackStruct { + pub position: ::std::os::raw::c_int, + pub direction: XIMCaretDirection, + pub style: XIMCaretStyle, +} +#[test] +fn bindgen_test_layout__XIMPreeditCaretCallbackStruct() { + assert_eq!( + ::std::mem::size_of::<_XIMPreeditCaretCallbackStruct>(), + 12usize, + concat!("Size of: ", stringify!(_XIMPreeditCaretCallbackStruct)) + ); + assert_eq!( + ::std::mem::align_of::<_XIMPreeditCaretCallbackStruct>(), + 4usize, + concat!("Alignment of ", stringify!(_XIMPreeditCaretCallbackStruct)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMPreeditCaretCallbackStruct>())).position as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMPreeditCaretCallbackStruct), + "::", + stringify!(position) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMPreeditCaretCallbackStruct>())).direction as *const _ + as usize + }, + 4usize, + concat!( + "Offset of field: ", + stringify!(_XIMPreeditCaretCallbackStruct), + "::", + stringify!(direction) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMPreeditCaretCallbackStruct>())).style as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_XIMPreeditCaretCallbackStruct), + "::", + stringify!(style) + ) + ); +} +pub type XIMPreeditCaretCallbackStruct = _XIMPreeditCaretCallbackStruct; +#[repr(u32)] +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +pub enum XIMStatusDataType { + XIMTextType = 0, + XIMBitmapType = 1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct _XIMStatusDrawCallbackStruct { + pub type_: XIMStatusDataType, + pub data: _XIMStatusDrawCallbackStruct__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union _XIMStatusDrawCallbackStruct__bindgen_ty_1 { + pub text: *mut XIMText, + pub bitmap: Pixmap, + _bindgen_union_align: u64, +} +#[test] +fn bindgen_test_layout__XIMStatusDrawCallbackStruct__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::<_XIMStatusDrawCallbackStruct__bindgen_ty_1>(), + 8usize, + concat!( + "Size of: ", + stringify!(_XIMStatusDrawCallbackStruct__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::<_XIMStatusDrawCallbackStruct__bindgen_ty_1>(), + 8usize, + concat!( + "Alignment of ", + stringify!(_XIMStatusDrawCallbackStruct__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStatusDrawCallbackStruct__bindgen_ty_1>())).text as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMStatusDrawCallbackStruct__bindgen_ty_1), + "::", + stringify!(text) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStatusDrawCallbackStruct__bindgen_ty_1>())).bitmap + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMStatusDrawCallbackStruct__bindgen_ty_1), + "::", + stringify!(bitmap) + ) + ); +} +#[test] +fn bindgen_test_layout__XIMStatusDrawCallbackStruct() { + assert_eq!( + ::std::mem::size_of::<_XIMStatusDrawCallbackStruct>(), + 16usize, + concat!("Size of: ", stringify!(_XIMStatusDrawCallbackStruct)) + ); + assert_eq!( + ::std::mem::align_of::<_XIMStatusDrawCallbackStruct>(), + 8usize, + concat!("Alignment of ", stringify!(_XIMStatusDrawCallbackStruct)) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStatusDrawCallbackStruct>())).type_ as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMStatusDrawCallbackStruct), + "::", + stringify!(type_) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::<_XIMStatusDrawCallbackStruct>())).data as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_XIMStatusDrawCallbackStruct), + "::", + stringify!(data) + ) + ); +} +pub type XIMStatusDrawCallbackStruct = _XIMStatusDrawCallbackStruct; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XIMHotKeyTrigger { + pub keysym: KeySym, + pub modifier: ::std::os::raw::c_int, + pub modifier_mask: ::std::os::raw::c_int, +} +#[test] +fn bindgen_test_layout__XIMHotKeyTrigger() { + assert_eq!( + ::std::mem::size_of::<_XIMHotKeyTrigger>(), + 16usize, + concat!("Size of: ", stringify!(_XIMHotKeyTrigger)) + ); + assert_eq!( + ::std::mem::align_of::<_XIMHotKeyTrigger>(), + 8usize, + concat!("Alignment of ", stringify!(_XIMHotKeyTrigger)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XIMHotKeyTrigger>())).keysym as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMHotKeyTrigger), + "::", + stringify!(keysym) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XIMHotKeyTrigger>())).modifier as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_XIMHotKeyTrigger), + "::", + stringify!(modifier) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XIMHotKeyTrigger>())).modifier_mask as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(_XIMHotKeyTrigger), + "::", + stringify!(modifier_mask) + ) + ); +} +pub type XIMHotKeyTrigger = _XIMHotKeyTrigger; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _XIMHotKeyTriggers { + pub num_hot_key: ::std::os::raw::c_int, + pub key: *mut XIMHotKeyTrigger, +} +#[test] +fn bindgen_test_layout__XIMHotKeyTriggers() { + assert_eq!( + ::std::mem::size_of::<_XIMHotKeyTriggers>(), + 16usize, + concat!("Size of: ", stringify!(_XIMHotKeyTriggers)) + ); + assert_eq!( + ::std::mem::align_of::<_XIMHotKeyTriggers>(), + 8usize, + concat!("Alignment of ", stringify!(_XIMHotKeyTriggers)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XIMHotKeyTriggers>())).num_hot_key as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(_XIMHotKeyTriggers), + "::", + stringify!(num_hot_key) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<_XIMHotKeyTriggers>())).key as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(_XIMHotKeyTriggers), + "::", + stringify!(key) + ) + ); +} +pub type XIMHotKeyTriggers = _XIMHotKeyTriggers; +pub type XIMHotKeyState = ::std::os::raw::c_ulong; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct XIMValuesList { + pub count_values: ::std::os::raw::c_ushort, + pub supported_values: *mut *mut ::std::os::raw::c_char, +} +#[test] +fn bindgen_test_layout_XIMValuesList() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!("Size of: ", stringify!(XIMValuesList)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(XIMValuesList)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).count_values as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(XIMValuesList), + "::", + stringify!(count_values) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).supported_values as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(XIMValuesList), + "::", + stringify!(supported_values) + ) + ); +} +extern "C" { + #[link_name = "\u{1}_Xdebug"] + pub static mut _Xdebug: ::std::os::raw::c_int; +} +extern "C" { + pub fn XLoadQueryFont( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + ) -> *mut XFontStruct; +} +extern "C" { + pub fn XQueryFont(arg1: *mut Display, arg2: XID) -> *mut XFontStruct; +} +extern "C" { + pub fn XGetMotionEvents( + arg1: *mut Display, + arg2: Window, + arg3: Time, + arg4: Time, + arg5: *mut ::std::os::raw::c_int, + ) -> *mut XTimeCoord; +} +extern "C" { + pub fn XDeleteModifiermapEntry( + arg1: *mut XModifierKeymap, + arg2: KeyCode, + arg3: ::std::os::raw::c_int, + ) -> *mut XModifierKeymap; +} +extern "C" { + pub fn XGetModifierMapping(arg1: *mut Display) -> *mut XModifierKeymap; +} +extern "C" { + pub fn XInsertModifiermapEntry( + arg1: *mut XModifierKeymap, + arg2: KeyCode, + arg3: ::std::os::raw::c_int, + ) -> *mut XModifierKeymap; +} +extern "C" { + pub fn XNewModifiermap(arg1: ::std::os::raw::c_int) -> *mut XModifierKeymap; +} +extern "C" { + pub fn XCreateImage( + arg1: *mut Display, + arg2: *mut Visual, + arg3: ::std::os::raw::c_uint, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *mut ::std::os::raw::c_char, + arg7: ::std::os::raw::c_uint, + arg8: ::std::os::raw::c_uint, + arg9: ::std::os::raw::c_int, + arg10: ::std::os::raw::c_int, + ) -> *mut XImage; +} +extern "C" { + pub fn XInitImage(arg1: *mut XImage) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetImage( + arg1: *mut Display, + arg2: Drawable, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_uint, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_ulong, + arg8: ::std::os::raw::c_int, + ) -> *mut XImage; +} +extern "C" { + pub fn XGetSubImage( + arg1: *mut Display, + arg2: Drawable, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_uint, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_ulong, + arg8: ::std::os::raw::c_int, + arg9: *mut XImage, + arg10: ::std::os::raw::c_int, + arg11: ::std::os::raw::c_int, + ) -> *mut XImage; +} +extern "C" { + pub fn XOpenDisplay(arg1: *const ::std::os::raw::c_char) -> *mut Display; +} +extern "C" { + pub fn XrmInitialize(); +} +extern "C" { + pub fn XFetchBytes( + arg1: *mut Display, + arg2: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XFetchBuffer( + arg1: *mut Display, + arg2: *mut ::std::os::raw::c_int, + arg3: ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XGetAtomName(arg1: *mut Display, arg2: Atom) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XGetAtomNames( + arg1: *mut Display, + arg2: *mut Atom, + arg3: ::std::os::raw::c_int, + arg4: *mut *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetDefault( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + arg3: *const ::std::os::raw::c_char, + ) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XDisplayName(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XKeysymToString(arg1: KeySym) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XSynchronize( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + ) -> ::std::option::Option< + unsafe extern "C" fn(arg1: *mut Display, arg2: ::std::os::raw::c_int) + -> ::std::os::raw::c_int, + >; +} +extern "C" { + pub fn XSetAfterFunction( + arg1: *mut Display, + arg2: ::std::option::Option< + unsafe extern "C" fn(arg1: *mut Display) -> ::std::os::raw::c_int, + >, + ) -> ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut Display, + arg2: ::std::option::Option< + unsafe extern "C" fn(arg1: *mut Display) -> ::std::os::raw::c_int, + >, + ) -> ::std::os::raw::c_int, + >; +} +extern "C" { + pub fn XInternAtom( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + ) -> Atom; +} +extern "C" { + pub fn XInternAtoms( + arg1: *mut Display, + arg2: *mut *mut ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: *mut Atom, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCopyColormapAndFree(arg1: *mut Display, arg2: Colormap) -> Colormap; +} +extern "C" { + pub fn XCreateColormap( + arg1: *mut Display, + arg2: Window, + arg3: *mut Visual, + arg4: ::std::os::raw::c_int, + ) -> Colormap; +} +extern "C" { + pub fn XCreatePixmapCursor( + arg1: *mut Display, + arg2: Pixmap, + arg3: Pixmap, + arg4: *mut XColor, + arg5: *mut XColor, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_uint, + ) -> Cursor; +} +extern "C" { + pub fn XCreateGlyphCursor( + arg1: *mut Display, + arg2: Font, + arg3: Font, + arg4: ::std::os::raw::c_uint, + arg5: ::std::os::raw::c_uint, + arg6: *const XColor, + arg7: *const XColor, + ) -> Cursor; +} +extern "C" { + pub fn XCreateFontCursor(arg1: *mut Display, arg2: ::std::os::raw::c_uint) -> Cursor; +} +extern "C" { + pub fn XLoadFont(arg1: *mut Display, arg2: *const ::std::os::raw::c_char) -> Font; +} +extern "C" { + pub fn XCreateGC( + arg1: *mut Display, + arg2: Drawable, + arg3: ::std::os::raw::c_ulong, + arg4: *mut XGCValues, + ) -> GC; +} +extern "C" { + pub fn XGContextFromGC(arg1: GC) -> GContext; +} +extern "C" { + pub fn XFlushGC(arg1: *mut Display, arg2: GC); +} +extern "C" { + pub fn XCreatePixmap( + arg1: *mut Display, + arg2: Drawable, + arg3: ::std::os::raw::c_uint, + arg4: ::std::os::raw::c_uint, + arg5: ::std::os::raw::c_uint, + ) -> Pixmap; +} +extern "C" { + pub fn XCreateBitmapFromData( + arg1: *mut Display, + arg2: Drawable, + arg3: *const ::std::os::raw::c_char, + arg4: ::std::os::raw::c_uint, + arg5: ::std::os::raw::c_uint, + ) -> Pixmap; +} +extern "C" { + pub fn XCreatePixmapFromBitmapData( + arg1: *mut Display, + arg2: Drawable, + arg3: *mut ::std::os::raw::c_char, + arg4: ::std::os::raw::c_uint, + arg5: ::std::os::raw::c_uint, + arg6: ::std::os::raw::c_ulong, + arg7: ::std::os::raw::c_ulong, + arg8: ::std::os::raw::c_uint, + ) -> Pixmap; +} +extern "C" { + pub fn XCreateSimpleWindow( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_uint, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_uint, + arg8: ::std::os::raw::c_ulong, + arg9: ::std::os::raw::c_ulong, + ) -> Window; +} +extern "C" { + pub fn XGetSelectionOwner(arg1: *mut Display, arg2: Atom) -> Window; +} +extern "C" { + pub fn XCreateWindow( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_uint, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_uint, + arg8: ::std::os::raw::c_int, + arg9: ::std::os::raw::c_uint, + arg10: *mut Visual, + arg11: ::std::os::raw::c_ulong, + arg12: *mut XSetWindowAttributes, + ) -> Window; +} +extern "C" { + pub fn XListInstalledColormaps( + arg1: *mut Display, + arg2: Window, + arg3: *mut ::std::os::raw::c_int, + ) -> *mut Colormap; +} +extern "C" { + pub fn XListFonts( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + arg4: *mut ::std::os::raw::c_int, + ) -> *mut *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XListFontsWithInfo( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + arg4: *mut ::std::os::raw::c_int, + arg5: *mut *mut XFontStruct, + ) -> *mut *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XGetFontPath( + arg1: *mut Display, + arg2: *mut ::std::os::raw::c_int, + ) -> *mut *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XListExtensions( + arg1: *mut Display, + arg2: *mut ::std::os::raw::c_int, + ) -> *mut *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XListProperties( + arg1: *mut Display, + arg2: Window, + arg3: *mut ::std::os::raw::c_int, + ) -> *mut Atom; +} +extern "C" { + pub fn XListHosts( + arg1: *mut Display, + arg2: *mut ::std::os::raw::c_int, + arg3: *mut ::std::os::raw::c_int, + ) -> *mut XHostAddress; +} +extern "C" { + pub fn XKeycodeToKeysym( + arg1: *mut Display, + arg2: KeyCode, + arg3: ::std::os::raw::c_int, + ) -> KeySym; +} +extern "C" { + pub fn XLookupKeysym(arg1: *mut XKeyEvent, arg2: ::std::os::raw::c_int) -> KeySym; +} +extern "C" { + pub fn XGetKeyboardMapping( + arg1: *mut Display, + arg2: KeyCode, + arg3: ::std::os::raw::c_int, + arg4: *mut ::std::os::raw::c_int, + ) -> *mut KeySym; +} +extern "C" { + pub fn XStringToKeysym(arg1: *const ::std::os::raw::c_char) -> KeySym; +} +extern "C" { + pub fn XMaxRequestSize(arg1: *mut Display) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn XExtendedMaxRequestSize(arg1: *mut Display) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn XResourceManagerString(arg1: *mut Display) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XScreenResourceString(arg1: *mut Screen) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XDisplayMotionBufferSize(arg1: *mut Display) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn XVisualIDFromVisual(arg1: *mut Visual) -> VisualID; +} +extern "C" { + pub fn XInitThreads() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XLockDisplay(arg1: *mut Display); +} +extern "C" { + pub fn XUnlockDisplay(arg1: *mut Display); +} +extern "C" { + pub fn XInitExtension( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + ) -> *mut XExtCodes; +} +extern "C" { + pub fn XAddExtension(arg1: *mut Display) -> *mut XExtCodes; +} +extern "C" { + pub fn XFindOnExtensionList( + arg1: *mut *mut XExtData, + arg2: ::std::os::raw::c_int, + ) -> *mut XExtData; +} +extern "C" { + pub fn XEHeadOfExtensionList(arg1: XEDataObject) -> *mut *mut XExtData; +} +extern "C" { + pub fn XRootWindow(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> Window; +} +extern "C" { + pub fn XDefaultRootWindow(arg1: *mut Display) -> Window; +} +extern "C" { + pub fn XRootWindowOfScreen(arg1: *mut Screen) -> Window; +} +extern "C" { + pub fn XDefaultVisual(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> *mut Visual; +} +extern "C" { + pub fn XDefaultVisualOfScreen(arg1: *mut Screen) -> *mut Visual; +} +extern "C" { + pub fn XDefaultGC(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> GC; +} +extern "C" { + pub fn XDefaultGCOfScreen(arg1: *mut Screen) -> GC; +} +extern "C" { + pub fn XBlackPixel(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn XWhitePixel(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn XAllPlanes() -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn XBlackPixelOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn XWhitePixelOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn XNextRequest(arg1: *mut Display) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn XLastKnownRequestProcessed(arg1: *mut Display) -> ::std::os::raw::c_ulong; +} +extern "C" { + pub fn XServerVendor(arg1: *mut Display) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XDisplayString(arg1: *mut Display) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XDefaultColormap(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> Colormap; +} +extern "C" { + pub fn XDefaultColormapOfScreen(arg1: *mut Screen) -> Colormap; +} +extern "C" { + pub fn XDisplayOfScreen(arg1: *mut Screen) -> *mut Display; +} +extern "C" { + pub fn XScreenOfDisplay(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> *mut Screen; +} +extern "C" { + pub fn XDefaultScreenOfDisplay(arg1: *mut Display) -> *mut Screen; +} +extern "C" { + pub fn XEventMaskOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn XScreenNumberOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +pub type XErrorHandler = ::std::option::Option< + unsafe extern "C" fn(arg1: *mut Display, arg2: *mut XErrorEvent) -> ::std::os::raw::c_int, +>; +extern "C" { + pub fn XSetErrorHandler(arg1: XErrorHandler) -> XErrorHandler; +} +pub type XIOErrorHandler = + ::std::option::Option ::std::os::raw::c_int>; +extern "C" { + pub fn XSetIOErrorHandler(arg1: XIOErrorHandler) -> XIOErrorHandler; +} +extern "C" { + pub fn XListPixmapFormats( + arg1: *mut Display, + arg2: *mut ::std::os::raw::c_int, + ) -> *mut XPixmapFormatValues; +} +extern "C" { + pub fn XListDepths( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + arg3: *mut ::std::os::raw::c_int, + ) -> *mut ::std::os::raw::c_int; +} +extern "C" { + pub fn XReconfigureWMWindow( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_uint, + arg5: *mut XWindowChanges, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetWMProtocols( + arg1: *mut Display, + arg2: Window, + arg3: *mut *mut Atom, + arg4: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetWMProtocols( + arg1: *mut Display, + arg2: Window, + arg3: *mut Atom, + arg4: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XIconifyWindow( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XWithdrawWindow( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetCommand( + arg1: *mut Display, + arg2: Window, + arg3: *mut *mut *mut ::std::os::raw::c_char, + arg4: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetWMColormapWindows( + arg1: *mut Display, + arg2: Window, + arg3: *mut *mut Window, + arg4: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetWMColormapWindows( + arg1: *mut Display, + arg2: Window, + arg3: *mut Window, + arg4: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeStringList(arg1: *mut *mut ::std::os::raw::c_char); +} +extern "C" { + pub fn XSetTransientForHint( + arg1: *mut Display, + arg2: Window, + arg3: Window, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XActivateScreenSaver(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XAddHost(arg1: *mut Display, arg2: *mut XHostAddress) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XAddHosts( + arg1: *mut Display, + arg2: *mut XHostAddress, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XAddToExtensionList( + arg1: *mut *mut _XExtData, + arg2: *mut XExtData, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XAddToSaveSet(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XAllocColor( + arg1: *mut Display, + arg2: Colormap, + arg3: *mut XColor, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XAllocColorCells( + arg1: *mut Display, + arg2: Colormap, + arg3: ::std::os::raw::c_int, + arg4: *mut ::std::os::raw::c_ulong, + arg5: ::std::os::raw::c_uint, + arg6: *mut ::std::os::raw::c_ulong, + arg7: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XAllocColorPlanes( + arg1: *mut Display, + arg2: Colormap, + arg3: ::std::os::raw::c_int, + arg4: *mut ::std::os::raw::c_ulong, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: ::std::os::raw::c_int, + arg8: ::std::os::raw::c_int, + arg9: *mut ::std::os::raw::c_ulong, + arg10: *mut ::std::os::raw::c_ulong, + arg11: *mut ::std::os::raw::c_ulong, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XAllocNamedColor( + arg1: *mut Display, + arg2: Colormap, + arg3: *const ::std::os::raw::c_char, + arg4: *mut XColor, + arg5: *mut XColor, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XAllowEvents( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + arg3: Time, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XAutoRepeatOff(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XAutoRepeatOn(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XBell(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XBitmapBitOrder(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XBitmapPad(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XBitmapUnit(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCellsOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XChangeActivePointerGrab( + arg1: *mut Display, + arg2: ::std::os::raw::c_uint, + arg3: Cursor, + arg4: Time, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XChangeGC( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_ulong, + arg4: *mut XGCValues, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XChangeKeyboardControl( + arg1: *mut Display, + arg2: ::std::os::raw::c_ulong, + arg3: *mut XKeyboardControl, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XChangeKeyboardMapping( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + arg3: ::std::os::raw::c_int, + arg4: *mut KeySym, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XChangePointerControl( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XChangeProperty( + arg1: *mut Display, + arg2: Window, + arg3: Atom, + arg4: Atom, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: *const ::std::os::raw::c_uchar, + arg8: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XChangeSaveSet( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XChangeWindowAttributes( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_ulong, + arg4: *mut XSetWindowAttributes, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCheckIfEvent( + arg1: *mut Display, + arg2: *mut XEvent, + arg3: ::std::option::Option< + unsafe extern "C" fn(arg1: *mut Display, arg2: *mut XEvent, arg3: XPointer) + -> ::std::os::raw::c_int, + >, + arg4: XPointer, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCheckMaskEvent( + arg1: *mut Display, + arg2: ::std::os::raw::c_long, + arg3: *mut XEvent, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCheckTypedEvent( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + arg3: *mut XEvent, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCheckTypedWindowEvent( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + arg4: *mut XEvent, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCheckWindowEvent( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_long, + arg4: *mut XEvent, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCirculateSubwindows( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCirculateSubwindowsDown(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCirculateSubwindowsUp(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XClearArea( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_uint, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XClearWindow(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCloseDisplay(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XConfigureWindow( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_uint, + arg4: *mut XWindowChanges, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XConnectionNumber(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XConvertSelection( + arg1: *mut Display, + arg2: Atom, + arg3: Atom, + arg4: Atom, + arg5: Window, + arg6: Time, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCopyArea( + arg1: *mut Display, + arg2: Drawable, + arg3: Drawable, + arg4: GC, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: ::std::os::raw::c_uint, + arg8: ::std::os::raw::c_uint, + arg9: ::std::os::raw::c_int, + arg10: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCopyGC( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_ulong, + arg4: GC, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XCopyPlane( + arg1: *mut Display, + arg2: Drawable, + arg3: Drawable, + arg4: GC, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: ::std::os::raw::c_uint, + arg8: ::std::os::raw::c_uint, + arg9: ::std::os::raw::c_int, + arg10: ::std::os::raw::c_int, + arg11: ::std::os::raw::c_ulong, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDefaultDepth(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDefaultDepthOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDefaultScreen(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDefineCursor(arg1: *mut Display, arg2: Window, arg3: Cursor) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDeleteProperty(arg1: *mut Display, arg2: Window, arg3: Atom) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDestroyWindow(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDestroySubwindows(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDoesBackingStore(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDoesSaveUnders(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDisableAccessControl(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDisplayCells(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDisplayHeight(arg1: *mut Display, arg2: ::std::os::raw::c_int) + -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDisplayHeightMM( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDisplayKeycodes( + arg1: *mut Display, + arg2: *mut ::std::os::raw::c_int, + arg3: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDisplayPlanes(arg1: *mut Display, arg2: ::std::os::raw::c_int) + -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDisplayWidth(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDisplayWidthMM( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawArc( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_uint, + arg8: ::std::os::raw::c_int, + arg9: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawArcs( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: *mut XArc, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawImageString( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *const ::std::os::raw::c_char, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawImageString16( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *const XChar2b, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawLine( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawLines( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: *mut XPoint, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawPoint( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawPoints( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: *mut XPoint, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawRectangle( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawRectangles( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: *mut XRectangle, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawSegments( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: *mut XSegment, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawString( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *const ::std::os::raw::c_char, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawString16( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *const XChar2b, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawText( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *mut XTextItem, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDrawText16( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *mut XTextItem16, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XEnableAccessControl(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XEventsQueued(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFetchName( + arg1: *mut Display, + arg2: Window, + arg3: *mut *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFillArc( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_uint, + arg8: ::std::os::raw::c_int, + arg9: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFillArcs( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: *mut XArc, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFillPolygon( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: *mut XPoint, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFillRectangle( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFillRectangles( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: *mut XRectangle, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFlush(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XForceScreenSaver( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFree(arg1: *mut ::std::os::raw::c_void) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeColormap(arg1: *mut Display, arg2: Colormap) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeColors( + arg1: *mut Display, + arg2: Colormap, + arg3: *mut ::std::os::raw::c_ulong, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_ulong, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeCursor(arg1: *mut Display, arg2: Cursor) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeExtensionList(arg1: *mut *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeFont(arg1: *mut Display, arg2: *mut XFontStruct) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeFontInfo( + arg1: *mut *mut ::std::os::raw::c_char, + arg2: *mut XFontStruct, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeFontNames(arg1: *mut *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeFontPath(arg1: *mut *mut ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeGC(arg1: *mut Display, arg2: GC) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeModifiermap(arg1: *mut XModifierKeymap) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreePixmap(arg1: *mut Display, arg2: Pixmap) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGeometry( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + arg3: *const ::std::os::raw::c_char, + arg4: *const ::std::os::raw::c_char, + arg5: ::std::os::raw::c_uint, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_uint, + arg8: ::std::os::raw::c_int, + arg9: ::std::os::raw::c_int, + arg10: *mut ::std::os::raw::c_int, + arg11: *mut ::std::os::raw::c_int, + arg12: *mut ::std::os::raw::c_int, + arg13: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetErrorDatabaseText( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + arg3: *const ::std::os::raw::c_char, + arg4: *const ::std::os::raw::c_char, + arg5: *mut ::std::os::raw::c_char, + arg6: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetErrorText( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + arg3: *mut ::std::os::raw::c_char, + arg4: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetFontProperty( + arg1: *mut XFontStruct, + arg2: Atom, + arg3: *mut ::std::os::raw::c_ulong, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetGCValues( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_ulong, + arg4: *mut XGCValues, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetGeometry( + arg1: *mut Display, + arg2: Drawable, + arg3: *mut Window, + arg4: *mut ::std::os::raw::c_int, + arg5: *mut ::std::os::raw::c_int, + arg6: *mut ::std::os::raw::c_uint, + arg7: *mut ::std::os::raw::c_uint, + arg8: *mut ::std::os::raw::c_uint, + arg9: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetIconName( + arg1: *mut Display, + arg2: Window, + arg3: *mut *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetInputFocus( + arg1: *mut Display, + arg2: *mut Window, + arg3: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetKeyboardControl( + arg1: *mut Display, + arg2: *mut XKeyboardState, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetPointerControl( + arg1: *mut Display, + arg2: *mut ::std::os::raw::c_int, + arg3: *mut ::std::os::raw::c_int, + arg4: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetPointerMapping( + arg1: *mut Display, + arg2: *mut ::std::os::raw::c_uchar, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetScreenSaver( + arg1: *mut Display, + arg2: *mut ::std::os::raw::c_int, + arg3: *mut ::std::os::raw::c_int, + arg4: *mut ::std::os::raw::c_int, + arg5: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetTransientForHint( + arg1: *mut Display, + arg2: Window, + arg3: *mut Window, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetWindowProperty( + arg1: *mut Display, + arg2: Window, + arg3: Atom, + arg4: ::std::os::raw::c_long, + arg5: ::std::os::raw::c_long, + arg6: ::std::os::raw::c_int, + arg7: Atom, + arg8: *mut Atom, + arg9: *mut ::std::os::raw::c_int, + arg10: *mut ::std::os::raw::c_ulong, + arg11: *mut ::std::os::raw::c_ulong, + arg12: *mut *mut ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetWindowAttributes( + arg1: *mut Display, + arg2: Window, + arg3: *mut XWindowAttributes, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGrabButton( + arg1: *mut Display, + arg2: ::std::os::raw::c_uint, + arg3: ::std::os::raw::c_uint, + arg4: Window, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_int, + arg8: ::std::os::raw::c_int, + arg9: Window, + arg10: Cursor, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGrabKey( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + arg3: ::std::os::raw::c_uint, + arg4: Window, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGrabKeyboard( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: Time, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGrabPointer( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_uint, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: Window, + arg8: Cursor, + arg9: Time, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGrabServer(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XHeightMMOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XHeightOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XIfEvent( + arg1: *mut Display, + arg2: *mut XEvent, + arg3: ::std::option::Option< + unsafe extern "C" fn(arg1: *mut Display, arg2: *mut XEvent, arg3: XPointer) + -> ::std::os::raw::c_int, + >, + arg4: XPointer, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XImageByteOrder(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XInstallColormap(arg1: *mut Display, arg2: Colormap) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XKeysymToKeycode(arg1: *mut Display, arg2: KeySym) -> KeyCode; +} +extern "C" { + pub fn XKillClient(arg1: *mut Display, arg2: XID) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XLookupColor( + arg1: *mut Display, + arg2: Colormap, + arg3: *const ::std::os::raw::c_char, + arg4: *mut XColor, + arg5: *mut XColor, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XLowerWindow(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XMapRaised(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XMapSubwindows(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XMapWindow(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XMaskEvent( + arg1: *mut Display, + arg2: ::std::os::raw::c_long, + arg3: *mut XEvent, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XMaxCmapsOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XMinCmapsOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XMoveResizeWindow( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_uint, + arg6: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XMoveWindow( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XNextEvent(arg1: *mut Display, arg2: *mut XEvent) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XNoOp(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XParseColor( + arg1: *mut Display, + arg2: Colormap, + arg3: *const ::std::os::raw::c_char, + arg4: *mut XColor, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XParseGeometry( + arg1: *const ::std::os::raw::c_char, + arg2: *mut ::std::os::raw::c_int, + arg3: *mut ::std::os::raw::c_int, + arg4: *mut ::std::os::raw::c_uint, + arg5: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XPeekEvent(arg1: *mut Display, arg2: *mut XEvent) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XPeekIfEvent( + arg1: *mut Display, + arg2: *mut XEvent, + arg3: ::std::option::Option< + unsafe extern "C" fn(arg1: *mut Display, arg2: *mut XEvent, arg3: XPointer) + -> ::std::os::raw::c_int, + >, + arg4: XPointer, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XPending(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XPlanesOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XProtocolRevision(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XProtocolVersion(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XPutBackEvent(arg1: *mut Display, arg2: *mut XEvent) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XPutImage( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: *mut XImage, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: ::std::os::raw::c_int, + arg8: ::std::os::raw::c_int, + arg9: ::std::os::raw::c_uint, + arg10: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQLength(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryBestCursor( + arg1: *mut Display, + arg2: Drawable, + arg3: ::std::os::raw::c_uint, + arg4: ::std::os::raw::c_uint, + arg5: *mut ::std::os::raw::c_uint, + arg6: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryBestSize( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + arg3: Drawable, + arg4: ::std::os::raw::c_uint, + arg5: ::std::os::raw::c_uint, + arg6: *mut ::std::os::raw::c_uint, + arg7: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryBestStipple( + arg1: *mut Display, + arg2: Drawable, + arg3: ::std::os::raw::c_uint, + arg4: ::std::os::raw::c_uint, + arg5: *mut ::std::os::raw::c_uint, + arg6: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryBestTile( + arg1: *mut Display, + arg2: Drawable, + arg3: ::std::os::raw::c_uint, + arg4: ::std::os::raw::c_uint, + arg5: *mut ::std::os::raw::c_uint, + arg6: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryColor( + arg1: *mut Display, + arg2: Colormap, + arg3: *mut XColor, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryColors( + arg1: *mut Display, + arg2: Colormap, + arg3: *mut XColor, + arg4: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryExtension( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + arg3: *mut ::std::os::raw::c_int, + arg4: *mut ::std::os::raw::c_int, + arg5: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryKeymap( + arg1: *mut Display, + arg2: *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryPointer( + arg1: *mut Display, + arg2: Window, + arg3: *mut Window, + arg4: *mut Window, + arg5: *mut ::std::os::raw::c_int, + arg6: *mut ::std::os::raw::c_int, + arg7: *mut ::std::os::raw::c_int, + arg8: *mut ::std::os::raw::c_int, + arg9: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryTextExtents( + arg1: *mut Display, + arg2: XID, + arg3: *const ::std::os::raw::c_char, + arg4: ::std::os::raw::c_int, + arg5: *mut ::std::os::raw::c_int, + arg6: *mut ::std::os::raw::c_int, + arg7: *mut ::std::os::raw::c_int, + arg8: *mut XCharStruct, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryTextExtents16( + arg1: *mut Display, + arg2: XID, + arg3: *const XChar2b, + arg4: ::std::os::raw::c_int, + arg5: *mut ::std::os::raw::c_int, + arg6: *mut ::std::os::raw::c_int, + arg7: *mut ::std::os::raw::c_int, + arg8: *mut XCharStruct, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XQueryTree( + arg1: *mut Display, + arg2: Window, + arg3: *mut Window, + arg4: *mut Window, + arg5: *mut *mut Window, + arg6: *mut ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XRaiseWindow(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XReadBitmapFile( + arg1: *mut Display, + arg2: Drawable, + arg3: *const ::std::os::raw::c_char, + arg4: *mut ::std::os::raw::c_uint, + arg5: *mut ::std::os::raw::c_uint, + arg6: *mut Pixmap, + arg7: *mut ::std::os::raw::c_int, + arg8: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XReadBitmapFileData( + arg1: *const ::std::os::raw::c_char, + arg2: *mut ::std::os::raw::c_uint, + arg3: *mut ::std::os::raw::c_uint, + arg4: *mut *mut ::std::os::raw::c_uchar, + arg5: *mut ::std::os::raw::c_int, + arg6: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XRebindKeysym( + arg1: *mut Display, + arg2: KeySym, + arg3: *mut KeySym, + arg4: ::std::os::raw::c_int, + arg5: *const ::std::os::raw::c_uchar, + arg6: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XRecolorCursor( + arg1: *mut Display, + arg2: Cursor, + arg3: *mut XColor, + arg4: *mut XColor, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XRefreshKeyboardMapping(arg1: *mut XMappingEvent) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XRemoveFromSaveSet(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XRemoveHost(arg1: *mut Display, arg2: *mut XHostAddress) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XRemoveHosts( + arg1: *mut Display, + arg2: *mut XHostAddress, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XReparentWindow( + arg1: *mut Display, + arg2: Window, + arg3: Window, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XResetScreenSaver(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XResizeWindow( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_uint, + arg4: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XRestackWindows( + arg1: *mut Display, + arg2: *mut Window, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XRotateBuffers(arg1: *mut Display, arg2: ::std::os::raw::c_int) + -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XRotateWindowProperties( + arg1: *mut Display, + arg2: Window, + arg3: *mut Atom, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XScreenCount(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSelectInput( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_long, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSendEvent( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_long, + arg5: *mut XEvent, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetAccessControl( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetArcMode( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetBackground( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_ulong, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetClipMask(arg1: *mut Display, arg2: GC, arg3: Pixmap) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetClipOrigin( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetClipRectangles( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: *mut XRectangle, + arg6: ::std::os::raw::c_int, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetCloseDownMode( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetCommand( + arg1: *mut Display, + arg2: Window, + arg3: *mut *mut ::std::os::raw::c_char, + arg4: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetDashes( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_int, + arg4: *const ::std::os::raw::c_char, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetFillRule( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetFillStyle( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetFont(arg1: *mut Display, arg2: GC, arg3: Font) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetFontPath( + arg1: *mut Display, + arg2: *mut *mut ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetForeground( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_ulong, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetFunction( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetGraphicsExposures( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetIconName( + arg1: *mut Display, + arg2: Window, + arg3: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetInputFocus( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_int, + arg4: Time, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetLineAttributes( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_uint, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetModifierMapping( + arg1: *mut Display, + arg2: *mut XModifierKeymap, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetPlaneMask( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_ulong, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetPointerMapping( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_uchar, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetScreenSaver( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetSelectionOwner( + arg1: *mut Display, + arg2: Atom, + arg3: Window, + arg4: Time, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetState( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_ulong, + arg4: ::std::os::raw::c_ulong, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_ulong, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetStipple(arg1: *mut Display, arg2: GC, arg3: Pixmap) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetSubwindowMode( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetTSOrigin( + arg1: *mut Display, + arg2: GC, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetTile(arg1: *mut Display, arg2: GC, arg3: Pixmap) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetWindowBackground( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_ulong, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetWindowBackgroundPixmap( + arg1: *mut Display, + arg2: Window, + arg3: Pixmap, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetWindowBorder( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_ulong, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetWindowBorderPixmap( + arg1: *mut Display, + arg2: Window, + arg3: Pixmap, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetWindowBorderWidth( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetWindowColormap( + arg1: *mut Display, + arg2: Window, + arg3: Colormap, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XStoreBuffer( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XStoreBytes( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XStoreColor( + arg1: *mut Display, + arg2: Colormap, + arg3: *mut XColor, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XStoreColors( + arg1: *mut Display, + arg2: Colormap, + arg3: *mut XColor, + arg4: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XStoreName( + arg1: *mut Display, + arg2: Window, + arg3: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XStoreNamedColor( + arg1: *mut Display, + arg2: Colormap, + arg3: *const ::std::os::raw::c_char, + arg4: ::std::os::raw::c_ulong, + arg5: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSync(arg1: *mut Display, arg2: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XTextExtents( + arg1: *mut XFontStruct, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + arg4: *mut ::std::os::raw::c_int, + arg5: *mut ::std::os::raw::c_int, + arg6: *mut ::std::os::raw::c_int, + arg7: *mut XCharStruct, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XTextExtents16( + arg1: *mut XFontStruct, + arg2: *const XChar2b, + arg3: ::std::os::raw::c_int, + arg4: *mut ::std::os::raw::c_int, + arg5: *mut ::std::os::raw::c_int, + arg6: *mut ::std::os::raw::c_int, + arg7: *mut XCharStruct, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XTextWidth( + arg1: *mut XFontStruct, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XTextWidth16( + arg1: *mut XFontStruct, + arg2: *const XChar2b, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XTranslateCoordinates( + arg1: *mut Display, + arg2: Window, + arg3: Window, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *mut ::std::os::raw::c_int, + arg7: *mut ::std::os::raw::c_int, + arg8: *mut Window, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XUndefineCursor(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XUngrabButton( + arg1: *mut Display, + arg2: ::std::os::raw::c_uint, + arg3: ::std::os::raw::c_uint, + arg4: Window, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XUngrabKey( + arg1: *mut Display, + arg2: ::std::os::raw::c_int, + arg3: ::std::os::raw::c_uint, + arg4: Window, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XUngrabKeyboard(arg1: *mut Display, arg2: Time) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XUngrabPointer(arg1: *mut Display, arg2: Time) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XUngrabServer(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XUninstallColormap(arg1: *mut Display, arg2: Colormap) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XUnloadFont(arg1: *mut Display, arg2: Font) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XUnmapSubwindows(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XUnmapWindow(arg1: *mut Display, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XVendorRelease(arg1: *mut Display) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XWarpPointer( + arg1: *mut Display, + arg2: Window, + arg3: Window, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_uint, + arg7: ::std::os::raw::c_uint, + arg8: ::std::os::raw::c_int, + arg9: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XWidthMMOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XWidthOfScreen(arg1: *mut Screen) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XWindowEvent( + arg1: *mut Display, + arg2: Window, + arg3: ::std::os::raw::c_long, + arg4: *mut XEvent, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XWriteBitmapFile( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + arg3: Pixmap, + arg4: ::std::os::raw::c_uint, + arg5: ::std::os::raw::c_uint, + arg6: ::std::os::raw::c_int, + arg7: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSupportsLocale() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetLocaleModifiers(arg1: *const ::std::os::raw::c_char) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XOpenOM( + arg1: *mut Display, + arg2: *mut _XrmHashBucketRec, + arg3: *const ::std::os::raw::c_char, + arg4: *const ::std::os::raw::c_char, + ) -> XOM; +} +extern "C" { + pub fn XCloseOM(arg1: XOM) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XSetOMValues(arg1: XOM, ...) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XGetOMValues(arg1: XOM, ...) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XDisplayOfOM(arg1: XOM) -> *mut Display; +} +extern "C" { + pub fn XLocaleOfOM(arg1: XOM) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XCreateOC(arg1: XOM, ...) -> XOC; +} +extern "C" { + pub fn XDestroyOC(arg1: XOC); +} +extern "C" { + pub fn XOMOfOC(arg1: XOC) -> XOM; +} +extern "C" { + pub fn XSetOCValues(arg1: XOC, ...) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XGetOCValues(arg1: XOC, ...) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XCreateFontSet( + arg1: *mut Display, + arg2: *const ::std::os::raw::c_char, + arg3: *mut *mut *mut ::std::os::raw::c_char, + arg4: *mut ::std::os::raw::c_int, + arg5: *mut *mut ::std::os::raw::c_char, + ) -> XFontSet; +} +extern "C" { + pub fn XFreeFontSet(arg1: *mut Display, arg2: XFontSet); +} +extern "C" { + pub fn XFontsOfFontSet( + arg1: XFontSet, + arg2: *mut *mut *mut XFontStruct, + arg3: *mut *mut *mut ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XBaseFontNameListOfFontSet(arg1: XFontSet) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XLocaleOfFontSet(arg1: XFontSet) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XContextDependentDrawing(arg1: XFontSet) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XDirectionalDependentDrawing(arg1: XFontSet) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XContextualDrawing(arg1: XFontSet) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XExtentsOfFontSet(arg1: XFontSet) -> *mut XFontSetExtents; +} +extern "C" { + pub fn XmbTextEscapement( + arg1: XFontSet, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XwcTextEscapement( + arg1: XFontSet, + arg2: *const wchar_t, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Xutf8TextEscapement( + arg1: XFontSet, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XmbTextExtents( + arg1: XFontSet, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + arg4: *mut XRectangle, + arg5: *mut XRectangle, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XwcTextExtents( + arg1: XFontSet, + arg2: *const wchar_t, + arg3: ::std::os::raw::c_int, + arg4: *mut XRectangle, + arg5: *mut XRectangle, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Xutf8TextExtents( + arg1: XFontSet, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + arg4: *mut XRectangle, + arg5: *mut XRectangle, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XmbTextPerCharExtents( + arg1: XFontSet, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + arg4: *mut XRectangle, + arg5: *mut XRectangle, + arg6: ::std::os::raw::c_int, + arg7: *mut ::std::os::raw::c_int, + arg8: *mut XRectangle, + arg9: *mut XRectangle, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XwcTextPerCharExtents( + arg1: XFontSet, + arg2: *const wchar_t, + arg3: ::std::os::raw::c_int, + arg4: *mut XRectangle, + arg5: *mut XRectangle, + arg6: ::std::os::raw::c_int, + arg7: *mut ::std::os::raw::c_int, + arg8: *mut XRectangle, + arg9: *mut XRectangle, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Xutf8TextPerCharExtents( + arg1: XFontSet, + arg2: *const ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + arg4: *mut XRectangle, + arg5: *mut XRectangle, + arg6: ::std::os::raw::c_int, + arg7: *mut ::std::os::raw::c_int, + arg8: *mut XRectangle, + arg9: *mut XRectangle, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XmbDrawText( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *mut XmbTextItem, + arg7: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn XwcDrawText( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *mut XwcTextItem, + arg7: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn Xutf8DrawText( + arg1: *mut Display, + arg2: Drawable, + arg3: GC, + arg4: ::std::os::raw::c_int, + arg5: ::std::os::raw::c_int, + arg6: *mut XmbTextItem, + arg7: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn XmbDrawString( + arg1: *mut Display, + arg2: Drawable, + arg3: XFontSet, + arg4: GC, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: *const ::std::os::raw::c_char, + arg8: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn XwcDrawString( + arg1: *mut Display, + arg2: Drawable, + arg3: XFontSet, + arg4: GC, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: *const wchar_t, + arg8: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn Xutf8DrawString( + arg1: *mut Display, + arg2: Drawable, + arg3: XFontSet, + arg4: GC, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: *const ::std::os::raw::c_char, + arg8: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn XmbDrawImageString( + arg1: *mut Display, + arg2: Drawable, + arg3: XFontSet, + arg4: GC, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: *const ::std::os::raw::c_char, + arg8: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn XwcDrawImageString( + arg1: *mut Display, + arg2: Drawable, + arg3: XFontSet, + arg4: GC, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: *const wchar_t, + arg8: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn Xutf8DrawImageString( + arg1: *mut Display, + arg2: Drawable, + arg3: XFontSet, + arg4: GC, + arg5: ::std::os::raw::c_int, + arg6: ::std::os::raw::c_int, + arg7: *const ::std::os::raw::c_char, + arg8: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn XOpenIM( + arg1: *mut Display, + arg2: *mut _XrmHashBucketRec, + arg3: *mut ::std::os::raw::c_char, + arg4: *mut ::std::os::raw::c_char, + ) -> XIM; +} +extern "C" { + pub fn XCloseIM(arg1: XIM) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetIMValues(arg1: XIM, ...) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XSetIMValues(arg1: XIM, ...) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XDisplayOfIM(arg1: XIM) -> *mut Display; +} +extern "C" { + pub fn XLocaleOfIM(arg1: XIM) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XCreateIC(arg1: XIM, ...) -> XIC; +} +extern "C" { + pub fn XDestroyIC(arg1: XIC); +} +extern "C" { + pub fn XSetICFocus(arg1: XIC); +} +extern "C" { + pub fn XUnsetICFocus(arg1: XIC); +} +extern "C" { + pub fn XwcResetIC(arg1: XIC) -> *mut wchar_t; +} +extern "C" { + pub fn XmbResetIC(arg1: XIC) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn Xutf8ResetIC(arg1: XIC) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XSetICValues(arg1: XIC, ...) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XGetICValues(arg1: XIC, ...) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn XIMOfIC(arg1: XIC) -> XIM; +} +extern "C" { + pub fn XFilterEvent(arg1: *mut XEvent, arg2: Window) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XmbLookupString( + arg1: XIC, + arg2: *mut XKeyPressedEvent, + arg3: *mut ::std::os::raw::c_char, + arg4: ::std::os::raw::c_int, + arg5: *mut KeySym, + arg6: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XwcLookupString( + arg1: XIC, + arg2: *mut XKeyPressedEvent, + arg3: *mut wchar_t, + arg4: ::std::os::raw::c_int, + arg5: *mut KeySym, + arg6: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Xutf8LookupString( + arg1: XIC, + arg2: *mut XKeyPressedEvent, + arg3: *mut ::std::os::raw::c_char, + arg4: ::std::os::raw::c_int, + arg5: *mut KeySym, + arg6: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XVaCreateNestedList(arg1: ::std::os::raw::c_int, ...) -> XVaNestedList; +} +extern "C" { + pub fn XRegisterIMInstantiateCallback( + arg1: *mut Display, + arg2: *mut _XrmHashBucketRec, + arg3: *mut ::std::os::raw::c_char, + arg4: *mut ::std::os::raw::c_char, + arg5: XIDProc, + arg6: XPointer, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XUnregisterIMInstantiateCallback( + arg1: *mut Display, + arg2: *mut _XrmHashBucketRec, + arg3: *mut ::std::os::raw::c_char, + arg4: *mut ::std::os::raw::c_char, + arg5: XIDProc, + arg6: XPointer, + ) -> ::std::os::raw::c_int; +} +pub type XConnectionWatchProc = ::std::option::Option< + unsafe extern "C" fn( + arg1: *mut Display, + arg2: XPointer, + arg3: ::std::os::raw::c_int, + arg4: ::std::os::raw::c_int, + arg5: *mut XPointer, + ), +>; +extern "C" { + pub fn XInternalConnectionNumbers( + arg1: *mut Display, + arg2: *mut *mut ::std::os::raw::c_int, + arg3: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XProcessInternalConnection(arg1: *mut Display, arg2: ::std::os::raw::c_int); +} +extern "C" { + pub fn XAddConnectionWatch( + arg1: *mut Display, + arg2: XConnectionWatchProc, + arg3: XPointer, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XRemoveConnectionWatch(arg1: *mut Display, arg2: XConnectionWatchProc, arg3: XPointer); +} +extern "C" { + pub fn XSetAuthorization( + arg1: *mut ::std::os::raw::c_char, + arg2: ::std::os::raw::c_int, + arg3: *mut ::std::os::raw::c_char, + arg4: ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn _Xmbtowc( + arg1: *mut wchar_t, + arg2: *mut ::std::os::raw::c_char, + arg3: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn _Xwctomb(arg1: *mut ::std::os::raw::c_char, arg2: wchar_t) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XGetEventData( + arg1: *mut Display, + arg2: *mut XGenericEventCookie, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn XFreeEventData(arg1: *mut Display, arg2: *mut XGenericEventCookie); +} +#[repr(u32)] +/// These are the various supported windowing subsystems +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +pub enum SDL_SYSWM_TYPE { + SDL_SYSWM_UNKNOWN = 0, + SDL_SYSWM_WINDOWS = 1, + SDL_SYSWM_X11 = 2, + SDL_SYSWM_DIRECTFB = 3, + SDL_SYSWM_COCOA = 4, + SDL_SYSWM_UIKIT = 5, + SDL_SYSWM_WAYLAND = 6, + SDL_SYSWM_MIR = 7, + SDL_SYSWM_WINRT = 8, + SDL_SYSWM_ANDROID = 9, + SDL_SYSWM_VIVANTE = 10, + SDL_SYSWM_OS2 = 11, +} +/// The custom event structure. +#[repr(C)] +#[derive(Copy, Clone)] +pub struct SDL_SysWMmsg { + pub version: SDL_version, + pub subsystem: SDL_SYSWM_TYPE, + pub msg: SDL_SysWMmsg__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union SDL_SysWMmsg__bindgen_ty_1 { + pub x11: SDL_SysWMmsg__bindgen_ty_1__bindgen_ty_1, + pub dummy: ::std::os::raw::c_int, + _bindgen_union_align: [u64; 24usize], +} +#[repr(C)] +#[derive(Copy, Clone)] +pub struct SDL_SysWMmsg__bindgen_ty_1__bindgen_ty_1 { + pub event: XEvent, +} +#[test] +fn bindgen_test_layout_SDL_SysWMmsg__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 192usize, + concat!( + "Size of: ", + stringify!(SDL_SysWMmsg__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(SDL_SysWMmsg__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).event as *const _ + as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMmsg__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(event) + ) + ); +} +#[test] +fn bindgen_test_layout_SDL_SysWMmsg__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 192usize, + concat!("Size of: ", stringify!(SDL_SysWMmsg__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_SysWMmsg__bindgen_ty_1)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x11 as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMmsg__bindgen_ty_1), + "::", + stringify!(x11) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).dummy as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMmsg__bindgen_ty_1), + "::", + stringify!(dummy) + ) + ); +} +#[test] +fn bindgen_test_layout_SDL_SysWMmsg() { + assert_eq!( + ::std::mem::size_of::(), + 200usize, + concat!("Size of: ", stringify!(SDL_SysWMmsg)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_SysWMmsg)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMmsg), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).subsystem as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMmsg), + "::", + stringify!(subsystem) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).msg as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMmsg), + "::", + stringify!(msg) + ) + ); +} +/// The custom window manager information structure. +/// +/// When this structure is returned, it holds information about which +/// low level system it is using, and will be one of SDL_SYSWM_TYPE. +#[repr(C)] +#[derive(Copy, Clone)] +pub struct SDL_SysWMinfo { + pub version: SDL_version, + pub subsystem: SDL_SYSWM_TYPE, + pub info: SDL_SysWMinfo__bindgen_ty_1, +} +#[repr(C)] +#[derive(Copy, Clone)] +pub union SDL_SysWMinfo__bindgen_ty_1 { + pub x11: SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_1, + pub wl: SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_2, + pub dummy: [Uint8; 64usize], + _bindgen_union_align: [u64; 8usize], +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_1 { + /// < The X11 display + pub display: *mut Display, + /// < The X11 window + pub window: Window, +} +#[test] +fn bindgen_test_layout_SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 16usize, + concat!( + "Size of: ", + stringify!(SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_1) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).display + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).window as *const _ + as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_1), + "::", + stringify!(window) + ) + ); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_2 { + /// < Wayland display + pub display: *mut wl_display, + /// < Wayland surface + pub surface: *mut wl_surface, + /// < Wayland shell_surface (window manager handle) + pub shell_surface: *mut wl_shell_surface, +} +#[test] +fn bindgen_test_layout_SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_2() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!( + "Size of: ", + stringify!(SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!( + "Alignment of ", + stringify!(SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_2) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).display + as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(display) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).surface + as *const _ as usize + }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(surface) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).shell_surface + as *const _ as usize + }, + 16usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMinfo__bindgen_ty_1__bindgen_ty_2), + "::", + stringify!(shell_surface) + ) + ); +} +#[test] +fn bindgen_test_layout_SDL_SysWMinfo__bindgen_ty_1() { + assert_eq!( + ::std::mem::size_of::(), + 64usize, + concat!("Size of: ", stringify!(SDL_SysWMinfo__bindgen_ty_1)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_SysWMinfo__bindgen_ty_1)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).x11 as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMinfo__bindgen_ty_1), + "::", + stringify!(x11) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).wl as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMinfo__bindgen_ty_1), + "::", + stringify!(wl) + ) + ); + assert_eq!( + unsafe { + &(*(::std::ptr::null::())).dummy as *const _ as usize + }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMinfo__bindgen_ty_1), + "::", + stringify!(dummy) + ) + ); +} +#[test] +fn bindgen_test_layout_SDL_SysWMinfo() { + assert_eq!( + ::std::mem::size_of::(), + 72usize, + concat!("Size of: ", stringify!(SDL_SysWMinfo)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(SDL_SysWMinfo)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).version as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMinfo), + "::", + stringify!(version) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).subsystem as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMinfo), + "::", + stringify!(subsystem) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).info as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(SDL_SysWMinfo), + "::", + stringify!(info) + ) + ); +} +extern "C" { + /// \brief This function allows access to driver-dependent window information. + /// + /// \param window The window about which information is being requested + /// \param info This structure must be initialized with the SDL version, and is + /// then filled in with information about the given window. + /// + /// \return SDL_TRUE if the function is implemented and the version member of + /// the \c info struct is valid, SDL_FALSE otherwise. + /// + /// You typically use this function like this: + /// \code + /// SDL_SysWMinfo info; + /// SDL_VERSION(&info.version); + /// if ( SDL_GetWindowWMInfo(window, &info) ) { ... } + /// \endcode + pub fn SDL_GetWindowWMInfo(window: *mut SDL_Window, info: *mut SDL_SysWMinfo) -> SDL_bool; +} +pub type __builtin_va_list = [__va_list_tag; 1usize]; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct __va_list_tag { + pub gp_offset: ::std::os::raw::c_uint, + pub fp_offset: ::std::os::raw::c_uint, + pub overflow_arg_area: *mut ::std::os::raw::c_void, + pub reg_save_area: *mut ::std::os::raw::c_void, +} +#[test] +fn bindgen_test_layout___va_list_tag() { + assert_eq!( + ::std::mem::size_of::<__va_list_tag>(), + 24usize, + concat!("Size of: ", stringify!(__va_list_tag)) + ); + assert_eq!( + ::std::mem::align_of::<__va_list_tag>(), + 8usize, + concat!("Alignment of ", stringify!(__va_list_tag)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).gp_offset as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(gp_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).fp_offset as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(fp_offset) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).overflow_arg_area as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(overflow_arg_area) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::<__va_list_tag>())).reg_save_area as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(__va_list_tag), + "::", + stringify!(reg_save_area) + ) + ); +} +/// < Private +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct SDL_BlitMap { + pub _address: u8, +} +/// < Wayland display +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct wl_display { + pub _address: u8, +} +/// < Wayland surface +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct wl_surface { + pub _address: u8, +} +/// < Wayland shell_surface (window manager handle) +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct wl_shell_surface { + pub _address: u8, } From d706ee9085be5a7da3762a8a3f08d22eba4de0e6 Mon Sep 17 00:00:00 2001 From: Jon Emil Jahren Date: Mon, 2 Apr 2018 00:11:29 +0200 Subject: [PATCH 02/19] Move mixer module to the sdl2-sys crate The 'mixer' feature is re-exported so compiling without it will leave out the mixer function definitions in sdl2-sys crate as well. Progresses on #647 --- Cargo.toml | 2 +- sdl2-sys/Cargo.toml | 1 + sdl2-sys/src/lib.rs | 3 + .../mixer/ffi.rs => sdl2-sys/src/mixer.rs | 9 +- src/sdl2/mixer/mod.rs | 221 +++++++++--------- 5 files changed, 118 insertions(+), 118 deletions(-) rename src/sdl2/mixer/ffi.rs => sdl2-sys/src/mixer.rs (96%) diff --git a/Cargo.toml b/Cargo.toml index 28920589839..dc8f3e147c0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -40,7 +40,7 @@ default = [] ttf = [] image = [] gfx = ["c_vec"] -mixer = [] +mixer = ["sdl2-sys/mixer"] use-bindgen = ["sdl2-sys/use-bindgen"] use-pkgconfig = ["sdl2-sys/use-pkgconfig"] diff --git a/sdl2-sys/Cargo.toml b/sdl2-sys/Cargo.toml index 8c399288733..67ef42d745e 100644 --- a/sdl2-sys/Cargo.toml +++ b/sdl2-sys/Cargo.toml @@ -50,3 +50,4 @@ use-bindgen = ["bindgen"] static-link = [] use_mac_framework = [] bundled = ["cmake", "reqwest", "tar", "flate2"] +mixer = [] diff --git a/sdl2-sys/src/lib.rs b/sdl2-sys/src/lib.rs index 053f24c8dbd..a5e4e9d9bb4 100644 --- a/sdl2-sys/src/lib.rs +++ b/sdl2-sys/src/lib.rs @@ -9,3 +9,6 @@ #![allow(non_snake_case)] include!(concat!(env!("OUT_DIR"), "/bindings.rs")); + +#[cfg(feature = "mixer")] +pub mod mixer; diff --git a/src/sdl2/mixer/ffi.rs b/sdl2-sys/src/mixer.rs similarity index 96% rename from src/sdl2/mixer/ffi.rs rename to sdl2-sys/src/mixer.rs index be666f14112..e95087a7d43 100644 --- a/src/sdl2/mixer/ffi.rs +++ b/sdl2-sys/src/mixer.rs @@ -1,5 +1,4 @@ use std::os::raw::{c_uint, c_int, c_char, c_double, c_void}; -use sys; pub type MIX_InitFlags = c_uint; pub const MIX_INIT_FLAC: c_uint = 1; @@ -42,7 +41,7 @@ pub type Mix_EffectDone_t = ::std::option::Option; extern "C" { - pub fn Mix_Linked_Version() -> *const sys::SDL_version; + pub fn Mix_Linked_Version() -> *const ::SDL_version; pub fn Mix_Init(flags: c_int) -> c_int; pub fn Mix_Quit(); pub fn Mix_OpenAudio(frequency: c_int, @@ -55,10 +54,10 @@ extern "C" { format: *mut u16, channels: *mut c_int) -> c_int; - pub fn Mix_LoadWAV_RW(src: *mut sys::SDL_RWops, freesrc: c_int) -> *mut Mix_Chunk; + pub fn Mix_LoadWAV_RW(src: *mut ::SDL_RWops, freesrc: c_int) -> *mut Mix_Chunk; pub fn Mix_LoadMUS(file: *const c_char) -> *mut Mix_Music; - pub fn Mix_LoadMUS_RW(src: *mut sys::SDL_RWops, freesrc: c_int) -> *mut Mix_Music; - pub fn Mix_LoadMUSType_RW(src: *mut sys::SDL_RWops, + pub fn Mix_LoadMUS_RW(src: *mut ::SDL_RWops, freesrc: c_int) -> *mut Mix_Music; + pub fn Mix_LoadMUSType_RW(src: *mut ::SDL_RWops, type_: Mix_MusicType, freesrc: c_int) -> *mut Mix_Music; diff --git a/src/sdl2/mixer/mod.rs b/src/sdl2/mixer/mod.rs index e7364da7e20..df38293f2b4 100644 --- a/src/sdl2/mixer/mod.rs +++ b/src/sdl2/mixer/mod.rs @@ -55,9 +55,6 @@ mod others { } } -#[allow(non_camel_case_types, dead_code)] -mod ffi; - // This comes from SDL_audio.h #[allow(non_camel_case_types)] mod ll { @@ -116,16 +113,16 @@ pub const MAX_VOLUME: i32 = 128; /// Returns the version of the dynamically linked `SDL_mixer` library pub fn get_linked_version() -> Version { - unsafe { Version::from_ll(*ffi::Mix_Linked_Version()) } + unsafe { Version::from_ll(*sys::mixer::Mix_Linked_Version()) } } bitflags!(pub flags InitFlag : u32 { - const INIT_FLAC = ffi::MIX_INIT_FLAC as u32, - const INIT_MOD = ffi::MIX_INIT_MOD as u32, - const INIT_MODPLUG = ffi::MIX_INIT_MODPLUG as u32, - const INIT_MP3 = ffi::MIX_INIT_MP3 as u32, - const INIT_OGG = ffi::MIX_INIT_OGG as u32, - const INIT_FLUIDSYNTH = ffi::MIX_INIT_FLUIDSYNTH as u32 + const INIT_FLAC = sys::mixer::MIX_INIT_FLAC as u32, + const INIT_MOD = sys::mixer::MIX_INIT_MOD as u32, + const INIT_MODPLUG = sys::mixer::MIX_INIT_MODPLUG as u32, + const INIT_MP3 = sys::mixer::MIX_INIT_MP3 as u32, + const INIT_OGG = sys::mixer::MIX_INIT_OGG as u32, + const INIT_FLUIDSYNTH = sys::mixer::MIX_INIT_FLUIDSYNTH as u32 }); impl ToString for InitFlag { @@ -160,7 +157,7 @@ pub struct Sdl2MixerContext; impl Drop for Sdl2MixerContext { fn drop(&mut self) { unsafe { - ffi::Mix_Quit(); + sys::mixer::Mix_Quit(); } } } @@ -169,7 +166,7 @@ impl Drop for Sdl2MixerContext { /// one or more flags from `InitFlag`. pub fn init(flags: InitFlag) -> Result { let return_flags = unsafe { - let ret = ffi::Mix_Init(flags.bits() as c_int); + let ret = sys::mixer::Mix_Init(flags.bits() as c_int); InitFlag::from_bits_truncate(ret as u32) }; // Check if all init flags were set @@ -201,7 +198,7 @@ pub fn open_audio(frequency: i32, chunksize: i32) -> Result<(), String> { let ret = unsafe { - ffi::Mix_OpenAudio(frequency as c_int, + sys::mixer::Mix_OpenAudio(frequency as c_int, format, channels as c_int, chunksize as c_int) @@ -215,7 +212,7 @@ pub fn open_audio(frequency: i32, /// Shutdown and cleanup the mixer API. pub fn close_audio() { - unsafe { ffi::Mix_CloseAudio() } + unsafe { sys::mixer::Mix_CloseAudio() } } /// Get the actual audio format in use by the opened audio device. @@ -223,7 +220,7 @@ pub fn query_spec() -> Result<(i32, AudioFormat, i32), String> { let mut frequency: c_int = 0; let mut format: uint16_t = 0; let mut channels: c_int = 0; - let ret = unsafe { ffi::Mix_QuerySpec(&mut frequency, &mut format, &mut channels) }; + let ret = unsafe { sys::mixer::Mix_QuerySpec(&mut frequency, &mut format, &mut channels) }; if ret == 0 { Err(get_error()) } else { @@ -235,13 +232,13 @@ pub fn query_spec() -> Result<(i32, AudioFormat, i32), String> { /// Get the number of sample chunk decoders available from the `Mix_GetChunkDecoder` function. pub fn get_chunk_decoders_number() -> i32 { - unsafe { ffi::Mix_GetNumChunkDecoders() as i32 } + unsafe { sys::mixer::Mix_GetNumChunkDecoders() as i32 } } /// Get the name of the indexed sample chunk decoder. pub fn get_chunk_decoder(index: i32) -> String { unsafe { - let name = ffi::Mix_GetChunkDecoder(index as c_int); + let name = sys::mixer::Mix_GetChunkDecoder(index as c_int); from_utf8(CStr::from_ptr(name).to_bytes()).unwrap().to_owned() } } @@ -249,14 +246,14 @@ pub fn get_chunk_decoder(index: i32) -> String { /// The internal format for an audio chunk. #[derive(PartialEq)] pub struct Chunk { - pub raw: *mut ffi::Mix_Chunk, + pub raw: *mut sys::mixer::Mix_Chunk, pub owned: bool, } impl Drop for Chunk { fn drop(&mut self) { if self.owned { - unsafe { ffi::Mix_FreeChunk(self.raw) } + unsafe { sys::mixer::Mix_FreeChunk(self.raw) } } } } @@ -264,7 +261,7 @@ impl Drop for Chunk { impl Chunk { /// Load file for use as a sample. pub fn from_file>(path: P) -> Result { - let raw = unsafe { ffi::Mix_LoadWAV_RW(try!(RWops::from_file(path, "rb")).raw(), 0) }; + let raw = unsafe { sys::mixer::Mix_LoadWAV_RW(try!(RWops::from_file(path, "rb")).raw(), 0) }; if raw.is_null() { Err(get_error()) } else { @@ -277,12 +274,12 @@ impl Chunk { /// Set chunk->volume to volume. pub fn set_volume(&mut self, volume: i32) -> i32 { - unsafe { ffi::Mix_VolumeChunk(self.raw, volume as c_int) as i32 } + unsafe { sys::mixer::Mix_VolumeChunk(self.raw, volume as c_int) as i32 } } /// current volume for the chunk. pub fn get_volume(&self) -> i32 { - unsafe { ffi::Mix_VolumeChunk(self.raw, -1) as i32 } + unsafe { sys::mixer::Mix_VolumeChunk(self.raw, -1) as i32 } } } @@ -297,7 +294,7 @@ pub trait LoaderRWops<'a> { impl<'a> LoaderRWops<'a> for RWops<'a> { /// Load src for use as a sample. fn load_wav(&self) -> Result { - let raw = unsafe { ffi::Mix_LoadWAV_RW(self.raw(), 0) }; + let raw = unsafe { sys::mixer::Mix_LoadWAV_RW(self.raw(), 0) }; if raw.is_null() { Err(get_error()) } else { @@ -310,7 +307,7 @@ impl<'a> LoaderRWops<'a> for RWops<'a> { /// Load src for use as music. fn load_music(&self) -> Result, String> { - let raw = unsafe { ffi::Mix_LoadMUS_RW(self.raw(), 0) }; + let raw = unsafe { sys::mixer::Mix_LoadMUS_RW(self.raw(), 0) }; if raw.is_null() { Err(get_error()) } else { @@ -331,9 +328,9 @@ impl<'a> LoaderRWops<'a> for RWops<'a> { #[repr(i32)] #[derive(Debug, Copy, Clone, PartialEq, Hash)] pub enum Fading { - NoFading = ffi::MIX_NO_FADING as i32, - FadingOut = ffi::MIX_FADING_OUT as i32, - FadingIn = ffi::MIX_FADING_IN as i32, + NoFading = sys::mixer::MIX_NO_FADING as i32, + FadingOut = sys::mixer::MIX_FADING_OUT as i32, + FadingIn = sys::mixer::MIX_FADING_IN as i32, } /// Sound effect channel. @@ -348,7 +345,7 @@ pub fn channel(chan: i32) -> Channel { /// Set the number of channels being mixed. pub fn allocate_channels(numchans: i32) -> i32 { - unsafe { ffi::Mix_AllocateChannels(numchans as c_int) as i32 } + unsafe { sys::mixer::Mix_AllocateChannels(numchans as c_int) as i32 } } static mut CHANNEL_FINISHED_CALLBACK: Option = None; @@ -366,7 +363,7 @@ extern "C" fn c_channel_finished_callback(ch: c_int) { pub fn set_channel_finished(f: fn(Channel)) { unsafe { CHANNEL_FINISHED_CALLBACK = Some(f); - ffi::Mix_ChannelFinished(Some(c_channel_finished_callback as extern "C" fn(ch: c_int))); + sys::mixer::Mix_ChannelFinished(Some(c_channel_finished_callback as extern "C" fn(ch: c_int))); } } @@ -374,7 +371,7 @@ pub fn set_channel_finished(f: fn(Channel)) { /// halted. pub fn unset_channel_finished() { unsafe { - ffi::Mix_ChannelFinished(None); + sys::mixer::Mix_ChannelFinished(None); CHANNEL_FINISHED_CALLBACK = None; } } @@ -393,13 +390,13 @@ impl Channel { /// Set the volume for any allocated channel. pub fn set_volume(self, volume: i32) -> i32 { let Channel(ch) = self; - unsafe { ffi::Mix_Volume(ch as c_int, volume as c_int) as i32 } + unsafe { sys::mixer::Mix_Volume(ch as c_int, volume as c_int) as i32 } } /// Returns the channels volume on scale of 0 to 128. pub fn get_volume(self) -> i32 { let Channel(ch) = self; - unsafe { ffi::Mix_Volume(ch as c_int, -1) as i32 } + unsafe { sys::mixer::Mix_Volume(ch as c_int, -1) as i32 } } /// Play chunk on channel, or if channel is -1, pick the first free unreserved channel. @@ -410,7 +407,7 @@ impl Channel { pub fn play_timed(self, chunk: &Chunk, loops: i32, ticks: i32) -> Result { let Channel(ch) = self; let ret = unsafe { - ffi::Mix_PlayChannelTimed(ch as c_int, chunk.raw, loops as c_int, ticks as c_int) + sys::mixer::Mix_PlayChannelTimed(ch as c_int, chunk.raw, loops as c_int, ticks as c_int) }; if ret == -1 { Err(get_error()) @@ -432,7 +429,7 @@ impl Channel { -> Result { let Channel(ch) = self; let ret = unsafe { - ffi::Mix_FadeInChannelTimed(ch as c_int, + sys::mixer::Mix_FadeInChannelTimed(ch as c_int, chunk.raw, loops as c_int, ms as c_int, @@ -449,7 +446,7 @@ impl Channel { pub fn pause(self) { let Channel(ch) = self; unsafe { - ffi::Mix_Pause(ch as c_int); + sys::mixer::Mix_Pause(ch as c_int); } } @@ -457,7 +454,7 @@ impl Channel { pub fn resume(self) { let Channel(ch) = self; unsafe { - ffi::Mix_Resume(ch as c_int); + sys::mixer::Mix_Resume(ch as c_int); } } @@ -465,49 +462,49 @@ impl Channel { pub fn halt(self) { let Channel(ch) = self; unsafe { - ffi::Mix_HaltChannel(ch as c_int); + sys::mixer::Mix_HaltChannel(ch as c_int); } } /// Halt channel playback, after ticks milliseconds. pub fn expire(self, ticks: i32) -> i32 { let Channel(ch) = self; - unsafe { ffi::Mix_ExpireChannel(ch as c_int, ticks as c_int) as i32 } + unsafe { sys::mixer::Mix_ExpireChannel(ch as c_int, ticks as c_int) as i32 } } /// Gradually fade out which channel over ms milliseconds starting from now. pub fn fade_out(self, ms: i32) -> i32 { let Channel(ch) = self; - unsafe { ffi::Mix_FadeOutChannel(ch as c_int, ms as c_int) as i32 } + unsafe { sys::mixer::Mix_FadeOutChannel(ch as c_int, ms as c_int) as i32 } } /// if channel is playing, or not. pub fn is_playing(self) -> bool { let Channel(ch) = self; - unsafe { ffi::Mix_Playing(ch as c_int) != 0 } + unsafe { sys::mixer::Mix_Playing(ch as c_int) != 0 } } /// if channel is paused, or not. pub fn is_paused(self) -> bool { let Channel(ch) = self; - unsafe { ffi::Mix_Paused(ch as c_int) != 0 } + unsafe { sys::mixer::Mix_Paused(ch as c_int) != 0 } } /// if channel is fading in, out, or not pub fn get_fading(self) -> Fading { let Channel(ch) = self; - let ret = unsafe { ffi::Mix_FadingChannel(ch as c_int) as c_uint }; + let ret = unsafe { sys::mixer::Mix_FadingChannel(ch as c_int) as c_uint }; match ret { - ffi::MIX_FADING_OUT => Fading::FadingOut, - ffi::MIX_FADING_IN => Fading::FadingIn, - ffi::MIX_NO_FADING | _ => Fading::NoFading + sys::mixer::MIX_FADING_OUT => Fading::FadingOut, + sys::mixer::MIX_FADING_IN => Fading::FadingIn, + sys::mixer::MIX_NO_FADING | _ => Fading::NoFading } } /// Get the most recent sample chunk pointer played on channel. pub fn get_chunk(self) -> Option { let Channel(ch) = self; - let raw = unsafe { ffi::Mix_GetChunk(ch as c_int) }; + let raw = unsafe { sys::mixer::Mix_GetChunk(ch as c_int) }; if raw.is_null() { None } else { @@ -521,7 +518,7 @@ impl Channel { /// This removes all effects registered to channel. pub fn unregister_all_effects(self) -> Result<(), String> { let Channel(ch) = self; - let ret = unsafe { ffi::Mix_UnregisterAllEffects(ch as c_int) }; + let ret = unsafe { sys::mixer::Mix_UnregisterAllEffects(ch as c_int) }; if ret == 0 { Err(get_error()) } else { @@ -533,7 +530,7 @@ impl Channel { /// They range from 0 (silence) to 255 (loud). pub fn set_panning(self, left: u8, right: u8) -> Result<(), String> { let Channel(ch) = self; - let ret = unsafe { ffi::Mix_SetPanning(ch as c_int, left, right) }; + let ret = unsafe { sys::mixer::Mix_SetPanning(ch as c_int, left, right) }; if ret == 0 { Err(get_error()) } else { @@ -544,7 +541,7 @@ impl Channel { /// Unregisters panning effect. pub fn unset_panning(self) -> Result<(), String> { let Channel(ch) = self; - let ret = unsafe { ffi::Mix_SetPanning(ch as c_int, 255, 255) }; + let ret = unsafe { sys::mixer::Mix_SetPanning(ch as c_int, 255, 255) }; if ret == 0 { Err(get_error()) } else { @@ -556,7 +553,7 @@ impl Channel { /// distance ranges from 0 (close/loud) to 255 (far/quiet). pub fn set_distance(self, distance: u8) -> Result<(), String> { let Channel(ch) = self; - let ret = unsafe { ffi::Mix_SetDistance(ch as c_int, distance) }; + let ret = unsafe { sys::mixer::Mix_SetDistance(ch as c_int, distance) }; if ret == 0 { Err(get_error()) } else { @@ -567,7 +564,7 @@ impl Channel { /// Unregisters distance effect. pub fn unset_distance(self) -> Result<(), String> { let Channel(ch) = self; - let ret = unsafe { ffi::Mix_SetDistance(ch as c_int, 0) }; + let ret = unsafe { sys::mixer::Mix_SetDistance(ch as c_int, 0) }; if ret == 0 { Err(get_error()) } else { @@ -580,7 +577,7 @@ impl Channel { /// distance ranges from 0 (close/loud) to 255 (far/quiet). pub fn set_position(self, angle: i16, distance: u8) -> Result<(), String> { let Channel(ch) = self; - let ret = unsafe { ffi::Mix_SetPosition(ch as c_int, angle, distance) }; + let ret = unsafe { sys::mixer::Mix_SetPosition(ch as c_int, angle, distance) }; if ret == 0 { Err(get_error()) } else { @@ -591,7 +588,7 @@ impl Channel { /// Unregisters position effect. pub fn unset_position(self) -> Result<(), String> { let Channel(ch) = self; - let ret = unsafe { ffi::Mix_SetPosition(ch as c_int, 0, 0) }; + let ret = unsafe { sys::mixer::Mix_SetPosition(ch as c_int, 0, 0) }; if ret == 0 { Err(get_error()) } else { @@ -603,7 +600,7 @@ impl Channel { /// true for reverse, false to unregister effect. pub fn set_reverse_stereo(self, flip: bool) -> Result<(), String> { let Channel(ch) = self; - let ret = unsafe { ffi::Mix_SetReverseStereo(ch as c_int, flip as c_int) }; + let ret = unsafe { sys::mixer::Mix_SetReverseStereo(ch as c_int, flip as c_int) }; if ret == 0 { Err(get_error()) } else { @@ -614,12 +611,12 @@ impl Channel { /// Returns how many channels are currently playing. pub fn get_playing_channels_number() -> i32 { - unsafe { ffi::Mix_Playing(-1) as i32 } + unsafe { sys::mixer::Mix_Playing(-1) as i32 } } /// Returns how many channels are currently paused. pub fn get_paused_channels_number() -> i32 { - unsafe { ffi::Mix_Paused(-1) as i32 } + unsafe { sys::mixer::Mix_Paused(-1) as i32 } } // 4.4 Groups @@ -627,7 +624,7 @@ pub fn get_paused_channels_number() -> i32 { /// Reserve num channels from being used when playing samples when /// passing in -1 as a channel number to playback functions. pub fn reserve_channels(num: i32) -> i32 { - unsafe { ffi::Mix_ReserveChannels(num as c_int) as i32 } + unsafe { sys::mixer::Mix_ReserveChannels(num as c_int) as i32 } } /// Sound effect channel grouping. @@ -645,25 +642,25 @@ impl Group { /// or reset it's group to the default group tag (-1). pub fn add_channels_range(self, from: i32, to: i32) -> i32 { let Group(g) = self; - unsafe { ffi::Mix_GroupChannels(from as c_int, to as c_int, g as c_int) as i32 } + unsafe { sys::mixer::Mix_GroupChannels(from as c_int, to as c_int, g as c_int) as i32 } } /// Add which channel to group tag, or reset it's group to the default group tag pub fn add_channel(self, Channel(ch): Channel) -> bool { let Group(g) = self; - unsafe { ffi::Mix_GroupChannel(ch as c_int, g as c_int) == 1 } + unsafe { sys::mixer::Mix_GroupChannel(ch as c_int, g as c_int) == 1 } } /// Count the number of channels in group pub fn count(self) -> i32 { let Group(g) = self; - unsafe { ffi::Mix_GroupCount(g as c_int) as i32 } + unsafe { sys::mixer::Mix_GroupCount(g as c_int) as i32 } } /// Find the first available (not playing) channel in group pub fn find_available(self) -> Option { let Group(g) = self; - let ret = unsafe { ffi::Mix_GroupAvailable(g as c_int) as i32 }; + let ret = unsafe { sys::mixer::Mix_GroupAvailable(g as c_int) as i32 }; if ret == -1 { None } else { @@ -674,7 +671,7 @@ impl Group { /// Find the oldest actively playing channel in group pub fn find_oldest(self) -> Option { let Group(g) = self; - let ret = unsafe { ffi::Mix_GroupOldest(g as c_int) as i32 }; + let ret = unsafe { sys::mixer::Mix_GroupOldest(g as c_int) as i32 }; if ret == -1 { None } else { @@ -685,7 +682,7 @@ impl Group { /// Find the newest, most recently started, actively playing channel in group. pub fn find_newest(self) -> Option { let Group(g) = self; - let ret = unsafe { ffi::Mix_GroupNewer(g as c_int) as i32 }; + let ret = unsafe { sys::mixer::Mix_GroupNewer(g as c_int) as i32 }; if ret == -1 { None } else { @@ -697,14 +694,14 @@ impl Group { /// Returns the number of channels set to fade out. pub fn fade_out(self, ms: i32) -> i32 { let Group(g) = self; - unsafe { ffi::Mix_FadeOutGroup(g as c_int, ms as c_int) as i32 } + unsafe { sys::mixer::Mix_FadeOutGroup(g as c_int, ms as c_int) as i32 } } /// Halt playback on all channels in group. pub fn halt(self) { let Group(g) = self; unsafe { - ffi::Mix_HaltGroup(g as c_int); + sys::mixer::Mix_HaltGroup(g as c_int); } } } @@ -713,13 +710,13 @@ impl Group { /// Get the number of music decoders available. pub fn get_music_decoders_number() -> i32 { - unsafe { ffi::Mix_GetNumMusicDecoders() as i32 } + unsafe { sys::mixer::Mix_GetNumMusicDecoders() as i32 } } /// Get the name of the indexed music decoder. pub fn get_music_decoder(index: i32) -> String { unsafe { - let name = ffi::Mix_GetMusicDecoder(index as c_int); + let name = sys::mixer::Mix_GetMusicDecoder(index as c_int); from_utf8(CStr::from_ptr(name).to_bytes()).unwrap().to_owned() } } @@ -728,16 +725,16 @@ pub fn get_music_decoder(index: i32) -> String { #[repr(i32)] #[derive(Copy, Clone, PartialEq, Hash, Debug)] pub enum MusicType { - MusicNone = ffi::MUS_NONE as i32, - MusicCmd = ffi::MUS_CMD as i32, - MusicWav = ffi::MUS_WAV as i32, - MusicMod = ffi::MUS_MOD as i32, - MusicMid = ffi::MUS_MID as i32, - MusicOgg = ffi::MUS_OGG as i32, - MusicMp3 = ffi::MUS_MP3 as i32, - MusicMp3Mad = ffi::MUS_MP3_MAD as i32, - MusicFlac = ffi::MUS_FLAC as i32, - MusicModPlug = ffi::MUS_MODPLUG as i32, + MusicNone = sys::mixer::MUS_NONE as i32, + MusicCmd = sys::mixer::MUS_CMD as i32, + MusicWav = sys::mixer::MUS_WAV as i32, + MusicMod = sys::mixer::MUS_MOD as i32, + MusicMid = sys::mixer::MUS_MID as i32, + MusicOgg = sys::mixer::MUS_OGG as i32, + MusicMp3 = sys::mixer::MUS_MP3 as i32, + MusicMp3Mad = sys::mixer::MUS_MP3_MAD as i32, + MusicFlac = sys::mixer::MUS_FLAC as i32, + MusicModPlug = sys::mixer::MUS_MODPLUG as i32, } // hooks @@ -755,7 +752,7 @@ extern "C" fn c_music_finished_hook() { /// This is an opaque data type used for Music data. #[derive(PartialEq)] pub struct Music<'a> { - pub raw: *mut ffi::Mix_Music, + pub raw: *mut sys::mixer::Mix_Music, pub owned: bool, _marker: PhantomData<&'a ()> } @@ -763,7 +760,7 @@ pub struct Music<'a> { impl<'a> Drop for Music<'a> { fn drop(&mut self) { if self.owned { - unsafe { ffi::Mix_FreeMusic(self.raw) }; + unsafe { sys::mixer::Mix_FreeMusic(self.raw) }; } } } @@ -780,7 +777,7 @@ impl<'a> Music<'a> { pub fn from_file>(path: P) -> Result, String> { let raw = unsafe { let c_path = CString::new(path.as_ref().to_str().unwrap()).unwrap(); - ffi::Mix_LoadMUS(c_path.as_ptr()) + sys::mixer::Mix_LoadMUS(c_path.as_ptr()) }; if raw.is_null() { Err(get_error()) @@ -803,7 +800,7 @@ impl<'a> Music<'a> { return Err(get_error()); } - let raw = unsafe { ffi::Mix_LoadMUS_RW(rw, 0) }; + let raw = unsafe { sys::mixer::Mix_LoadMUS_RW(rw, 0) }; if raw.is_null() { Err(get_error()) } else { @@ -817,24 +814,24 @@ impl<'a> Music<'a> { /// The file format encoding of the music. pub fn get_type(&self) -> MusicType { - let ret = unsafe { ffi::Mix_GetMusicType(self.raw) as i32 } as c_uint; + let ret = unsafe { sys::mixer::Mix_GetMusicType(self.raw) as i32 } as c_uint; match ret { - ffi::MUS_CMD => MusicType::MusicCmd, - ffi::MUS_WAV => MusicType::MusicWav, - ffi::MUS_MOD => MusicType::MusicMod, - ffi::MUS_MID => MusicType::MusicMid, - ffi::MUS_OGG => MusicType::MusicOgg, - ffi::MUS_MP3 => MusicType::MusicMp3, - ffi::MUS_MP3_MAD => MusicType::MusicMp3Mad, - ffi::MUS_FLAC => MusicType::MusicFlac, - ffi::MUS_MODPLUG => MusicType::MusicModPlug, - ffi::MUS_NONE | _ => MusicType::MusicNone + sys::mixer::MUS_CMD => MusicType::MusicCmd, + sys::mixer::MUS_WAV => MusicType::MusicWav, + sys::mixer::MUS_MOD => MusicType::MusicMod, + sys::mixer::MUS_MID => MusicType::MusicMid, + sys::mixer::MUS_OGG => MusicType::MusicOgg, + sys::mixer::MUS_MP3 => MusicType::MusicMp3, + sys::mixer::MUS_MP3_MAD => MusicType::MusicMp3Mad, + sys::mixer::MUS_FLAC => MusicType::MusicFlac, + sys::mixer::MUS_MODPLUG => MusicType::MusicModPlug, + sys::mixer::MUS_NONE | _ => MusicType::MusicNone } } /// Play the loaded music loop times through from start to finish. pub fn play(&self, loops: i32) -> Result<(), String> { - let ret = unsafe { ffi::Mix_PlayMusic(self.raw, loops as c_int) }; + let ret = unsafe { sys::mixer::Mix_PlayMusic(self.raw, loops as c_int) }; if ret == -1 { Err(get_error()) } else { @@ -845,7 +842,7 @@ impl<'a> Music<'a> { /// Fade in over ms milliseconds of time, the loaded music, /// playing it loop times through from start to finish. pub fn fade_in(&self, loops: i32, ms: i32) -> Result<(), String> { - let ret = unsafe { ffi::Mix_FadeInMusic(self.raw, loops as c_int, ms as c_int) }; + let ret = unsafe { sys::mixer::Mix_FadeInMusic(self.raw, loops as c_int, ms as c_int) }; if ret == -1 { Err(get_error()) } else { @@ -856,7 +853,7 @@ impl<'a> Music<'a> { /// Fade in over ms milliseconds of time, from position. pub fn fade_in_from_pos(&self, loops: i32, ms: i32, position: f64) -> Result<(), String> { let ret = unsafe { - ffi::Mix_FadeInMusicPos(self.raw, loops as c_int, ms as c_int, position as c_double) + sys::mixer::Mix_FadeInMusicPos(self.raw, loops as c_int, ms as c_int, position as c_double) }; if ret == -1 { Err(get_error()) @@ -868,40 +865,40 @@ impl<'a> Music<'a> { // FIXME: make these class method? /// Returns current volume pub fn get_volume() -> i32 { - unsafe { ffi::Mix_VolumeMusic(-1) as i32 } + unsafe { sys::mixer::Mix_VolumeMusic(-1) as i32 } } /// Set the volume on a scale of 0 to 128. /// Values greater than 128 will use 128. pub fn set_volume(volume: i32) { // This shouldn't return anything. Use get_volume instead - let _ = unsafe { ffi::Mix_VolumeMusic(volume as c_int) as i32 }; + let _ = unsafe { sys::mixer::Mix_VolumeMusic(volume as c_int) as i32 }; } /// Pause the music playback. pub fn pause() { unsafe { - ffi::Mix_PauseMusic(); + sys::mixer::Mix_PauseMusic(); } } /// Unpause the music. pub fn resume() { unsafe { - ffi::Mix_ResumeMusic(); + sys::mixer::Mix_ResumeMusic(); } } /// Rewind the music to the start. pub fn rewind() { unsafe { - ffi::Mix_RewindMusic(); + sys::mixer::Mix_RewindMusic(); } } /// Set the position of the currently playing music. pub fn set_pos(position: f64) -> Result<(), String> { - let ret = unsafe { ffi::Mix_SetMusicPosition(position as c_double) }; + let ret = unsafe { sys::mixer::Mix_SetMusicPosition(position as c_double) }; if ret == -1 { Err(get_error()) } else { @@ -913,7 +910,7 @@ impl<'a> Music<'a> { pub fn set_command(command: &str) -> Result<(), String> { let ret = unsafe { let c_command = CString::new(command).unwrap(); - ffi::Mix_SetMusicCMD(c_command.as_ptr()) + sys::mixer::Mix_SetMusicCMD(c_command.as_ptr()) }; if ret == -1 { Err(get_error()) @@ -925,13 +922,13 @@ impl<'a> Music<'a> { /// Halt playback of music. pub fn halt() { unsafe { - ffi::Mix_HaltMusic(); + sys::mixer::Mix_HaltMusic(); } } /// Gradually fade out the music over ms milliseconds starting from now. pub fn fade_out(ms: i32) -> Result<(), String> { - let ret = unsafe { ffi::Mix_FadeOutMusic(ms as c_int) }; + let ret = unsafe { sys::mixer::Mix_FadeOutMusic(ms as c_int) }; if ret == -1 { Err(get_error()) } else { @@ -956,14 +953,14 @@ impl<'a> Music<'a> { pub fn hook_finished(f: fn()) { unsafe { MUSIC_FINISHED_HOOK = Some(f); - ffi::Mix_HookMusicFinished(Some(c_music_finished_hook as extern "C" fn())); + sys::mixer::Mix_HookMusicFinished(Some(c_music_finished_hook as extern "C" fn())); } } /// A previously set up function would no longer be called when music playback is halted. pub fn unhook_finished() { unsafe { - ffi::Mix_HookMusicFinished(None); + sys::mixer::Mix_HookMusicFinished(None); // unset from c, then rust, to avoid race condition MUSIC_FINISHED_HOOK = None; } @@ -971,21 +968,21 @@ impl<'a> Music<'a> { /// If music is actively playing, or not. pub fn is_playing() -> bool { - unsafe { ffi::Mix_PlayingMusic() == 1 } + unsafe { sys::mixer::Mix_PlayingMusic() == 1 } } /// If music is paused, or not. pub fn is_paused() -> bool { - unsafe { ffi::Mix_PausedMusic() == 1 } + unsafe { sys::mixer::Mix_PausedMusic() == 1 } } /// If music is fading, or not. pub fn get_fading() -> Fading { - let ret = unsafe { ffi::Mix_FadingMusic() as i32 } as c_uint; + let ret = unsafe { sys::mixer::Mix_FadingMusic() as i32 } as c_uint; match ret { - ffi::MIX_FADING_OUT => Fading::FadingOut, - ffi::MIX_FADING_IN => Fading::FadingIn, - ffi::MIX_NO_FADING | _ => Fading::NoFading + sys::mixer::MIX_FADING_OUT => Fading::FadingOut, + sys::mixer::MIX_FADING_IN => Fading::FadingIn, + sys::mixer::MIX_NO_FADING | _ => Fading::NoFading } } } From 0fb0dc54f3b87d6899764313f652887be3fd0596 Mon Sep 17 00:00:00 2001 From: Jon Emil Jahren Date: Mon, 2 Apr 2018 05:00:55 +0200 Subject: [PATCH 03/19] Move linker flags of the mixer module into build script Progresses on #647 --- sdl2-sys/build.rs | 16 ++++++++++++++++ src/sdl2/mixer/mod.rs | 21 --------------------- 2 files changed, 16 insertions(+), 21 deletions(-) diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 3403cd5e4cc..8096d76dca3 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -196,6 +196,22 @@ fn link_sdl2(target_os: &str) { // TODO: Add other platform linker options here. } } + // SDL libraries seem to not be packed with pkgconfig file on all distros, + // and in the same distros (fedora at least) a symlink is also missing. + // + // Linking directly with file is not possible with cargo since the + // ':filename' syntax is used for renaming of libraries, which basically + // leaves it up to the user to make a symlink to the shared object so + // -lSDL2_mixer can find it. + #[cfg(all(not(feature = "use-pkgconfig"), not(feature = "static-link")))] { + if cfg!(all(any(target_os="linux", target_os="freebsd"), feature = "mixer")) { + println!("cargo:rustc-flags=-l SDL2_mixer"); + } else if cfg!(all(target_os="windows", feature = "mixer")) { + println!("cargo:rustc-flags=-l SDL2_mixer"); + } else if cfg!(all(any(target_os="macos", feature="use_mac_framework"), feature = "mixer")) { + println!("cargo:rustc-flags=-l framework=SDL2_mixer"); + } + } } fn main() { diff --git a/src/sdl2/mixer/mod.rs b/src/sdl2/mixer/mod.rs index df38293f2b4..5b1c61bebe8 100644 --- a/src/sdl2/mixer/mod.rs +++ b/src/sdl2/mixer/mod.rs @@ -34,27 +34,6 @@ use ::rwops::RWops; use ::version::Version; use sys; -// Setup linking for all targets. -#[cfg(target_os="macos")] -mod mac { - #[cfg(any(mac_framework, feature="use_mac_framework"))] - #[link(kind="framework", name="SDL2_mixer")] - extern "C" { - } - - #[cfg(not(any(mac_framework, feature="use_mac_framework")))] - #[link(name="SDL2_mixer")] - extern "C" { - } -} - -#[cfg(any(target_os="windows", target_os="linux", target_os="freebsd"))] -mod others { - #[link(name="SDL2_mixer")] - extern "C" { - } -} - // This comes from SDL_audio.h #[allow(non_camel_case_types)] mod ll { From d2a72338277e0407a0340292ebf6088055b19aa8 Mon Sep 17 00:00:00 2001 From: Jon Emil Jahren Date: Mon, 2 Apr 2018 05:18:05 +0200 Subject: [PATCH 04/19] Move SDL_image to sdl2-sys crate Progresses on #647 --- Cargo.toml | 2 +- sdl2-sys/Cargo.toml | 1 + sdl2-sys/build.rs | 23 +++- .../image/ffi.rs => sdl2-sys/src/image.rs | 5 +- sdl2-sys/src/lib.rs | 3 + src/sdl2/image/mod.rs | 107 +++++++----------- 6 files changed, 67 insertions(+), 74 deletions(-) rename src/sdl2/image/ffi.rs => sdl2-sys/src/image.rs (96%) mode change 100755 => 100644 src/sdl2/image/mod.rs diff --git a/Cargo.toml b/Cargo.toml index dc8f3e147c0..2f37af1695d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -38,9 +38,9 @@ optional = true unsafe_textures = [] default = [] ttf = [] -image = [] gfx = ["c_vec"] mixer = ["sdl2-sys/mixer"] +image = ["sdl2-sys/image"] use-bindgen = ["sdl2-sys/use-bindgen"] use-pkgconfig = ["sdl2-sys/use-pkgconfig"] diff --git a/sdl2-sys/Cargo.toml b/sdl2-sys/Cargo.toml index 67ef42d745e..3d3b6fae123 100644 --- a/sdl2-sys/Cargo.toml +++ b/sdl2-sys/Cargo.toml @@ -51,3 +51,4 @@ static-link = [] use_mac_framework = [] bundled = ["cmake", "reqwest", "tar", "flate2"] mixer = [] +image = [] diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 8096d76dca3..2c68553596e 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -204,12 +204,23 @@ fn link_sdl2(target_os: &str) { // leaves it up to the user to make a symlink to the shared object so // -lSDL2_mixer can find it. #[cfg(all(not(feature = "use-pkgconfig"), not(feature = "static-link")))] { - if cfg!(all(any(target_os="linux", target_os="freebsd"), feature = "mixer")) { - println!("cargo:rustc-flags=-l SDL2_mixer"); - } else if cfg!(all(target_os="windows", feature = "mixer")) { - println!("cargo:rustc-flags=-l SDL2_mixer"); - } else if cfg!(all(any(target_os="macos", feature="use_mac_framework"), feature = "mixer")) { - println!("cargo:rustc-flags=-l framework=SDL2_mixer"); + if cfg!(feature = "mixer") { + if cfg!(any(target_os="linux", target_os="freebsd")) { + println!("cargo:rustc-flags=-l SDL2_mixer"); + } else if cfg!(target_os="windows") { + println!("cargo:rustc-flags=-l SDL2_mixer"); + } else if cfg!(any(target_os="macos", feature="use_mac_framework")) { + println!("cargo:rustc-flags=-l framework=SDL2_mixer"); + } + } + if cfg!(feature = "image") { + if cfg!(any(target_os="linux", target_os="freebsd")) { + println!("cargo:rustc-flags=-l SDL2_image"); + } else if cfg!(target_os="windows") { + println!("cargo:rustc-flags=-l SDL2_image"); + } else if cfg!(any(target_os="macos", feature="use_mac_framework")) { + println!("cargo:rustc-flags=-l framework=SDL2_image"); + } } } } diff --git a/src/sdl2/image/ffi.rs b/sdl2-sys/src/image.rs similarity index 96% rename from src/sdl2/image/ffi.rs rename to sdl2-sys/src/image.rs index a934b2bb0ca..d8ac87403dc 100644 --- a/src/sdl2/image/ffi.rs +++ b/sdl2-sys/src/image.rs @@ -1,6 +1,5 @@ use std::os::raw::{c_int, c_char}; -use sys; -use sys::{SDL_RWops, SDL_Surface, SDL_Renderer, SDL_Texture}; +use ::{SDL_RWops, SDL_Surface, SDL_Renderer, SDL_Texture}; pub type IMG_InitFlags = c_int; pub const IMG_INIT_JPG: IMG_InitFlags = 0x00_00_00_01; @@ -11,7 +10,7 @@ pub const IMG_INIT_WEBP: IMG_InitFlags = 0x00_00_00_08; extern "C" { // This function gets the version of the dynamically linked SDL_image library. -pub fn IMG_Linked_Version() -> *const sys::SDL_version; +pub fn IMG_Linked_Version() -> *const ::SDL_version; // Loads dynamic libraries and prepares them for use. Flags should be // one or more flags from IMG_InitFlags OR'd together. diff --git a/sdl2-sys/src/lib.rs b/sdl2-sys/src/lib.rs index a5e4e9d9bb4..b27f19d6209 100644 --- a/sdl2-sys/src/lib.rs +++ b/sdl2-sys/src/lib.rs @@ -12,3 +12,6 @@ include!(concat!(env!("OUT_DIR"), "/bindings.rs")); #[cfg(feature = "mixer")] pub mod mixer; + +#[cfg(feature = "image")] +pub mod image; diff --git a/src/sdl2/image/mod.rs b/src/sdl2/image/mod.rs old mode 100755 new mode 100644 index aa778146710..b79c6963260 --- a/src/sdl2/image/mod.rs +++ b/src/sdl2/image/mod.rs @@ -30,35 +30,14 @@ use version::Version; use get_error; use sys; -// Setup linking for all targets. -#[cfg(target_os="macos")] -mod mac { - #[cfg(any(mac_framework, feature="use_mac_framework"))] - #[link(kind="framework", name="SDL2_image")] - extern "C" {} - - #[cfg(not(any(mac_framework, feature="use_mac_framework")))] - #[link(name="SDL2_image")] - extern "C" {} -} - -#[cfg(any(target_os="windows", target_os="linux", target_os="freebsd"))] -mod others { - #[link(name="SDL2_image")] - extern "C" {} -} - -#[allow(non_camel_case_types, dead_code)] -mod ffi; - /// InitFlags are passed to init() to control which subsystem /// functionality to load. bitflags! { pub flags InitFlag : u32 { - const INIT_JPG = ffi::IMG_INIT_JPG as u32, - const INIT_PNG = ffi::IMG_INIT_PNG as u32, - const INIT_TIF = ffi::IMG_INIT_TIF as u32, - const INIT_WEBP = ffi::IMG_INIT_WEBP as u32 + const INIT_JPG = sys::image::IMG_INIT_JPG as u32, + const INIT_PNG = sys::image::IMG_INIT_PNG as u32, + const INIT_TIF = sys::image::IMG_INIT_TIF as u32, + const INIT_WEBP = sys::image::IMG_INIT_WEBP as u32 } } @@ -102,7 +81,7 @@ impl<'a> LoadSurface for Surface<'a> { //! Loads an SDL Surface from a file unsafe { let c_filename = CString::new(filename.as_ref().to_str().unwrap()).unwrap(); - let raw = ffi::IMG_Load(c_filename.as_ptr() as *const _); + let raw = sys::image::IMG_Load(c_filename.as_ptr() as *const _); if (raw as *mut ()).is_null() { Err(get_error()) } else { @@ -114,7 +93,7 @@ impl<'a> LoadSurface for Surface<'a> { fn from_xpm_array(xpm: *const *const i8) -> Result, String> { //! Loads an SDL Surface from XPM data unsafe { - let raw = ffi::IMG_ReadXPMFromArray(xpm as *const *const c_char); + let raw = sys::image::IMG_ReadXPMFromArray(xpm as *const *const c_char); if (raw as *mut ()).is_null() { Err(get_error()) } else { @@ -129,7 +108,7 @@ impl<'a> SaveSurface for Surface<'a> { //! Saves an SDL Surface to a file unsafe { let c_filename = CString::new(filename.as_ref().to_str().unwrap()).unwrap(); - let status = ffi::IMG_SavePNG(self.raw(), c_filename.as_ptr() as *const _); + let status = sys::image::IMG_SavePNG(self.raw(), c_filename.as_ptr() as *const _); if status != 0 { Err(get_error()) } else { @@ -141,7 +120,7 @@ impl<'a> SaveSurface for Surface<'a> { fn save_rw(&self, dst: &mut RWops) -> Result<(), String> { //! Saves an SDL Surface to an RWops unsafe { - let status = ffi::IMG_SavePNG_RW(self.raw(), dst.raw(), 0); + let status = sys::image::IMG_SavePNG_RW(self.raw(), dst.raw(), 0); if status != 0 { Err(get_error()) @@ -162,7 +141,7 @@ impl LoadTexture for TextureCreator { //! Loads an SDL Texture from a file unsafe { let c_filename = CString::new(filename.as_ref().to_str().unwrap()).unwrap(); - let raw = ffi::IMG_LoadTexture(self.raw(), c_filename.as_ptr() as *const _); + let raw = sys::image::IMG_LoadTexture(self.raw(), c_filename.as_ptr() as *const _); if (raw as *mut ()).is_null() { Err(get_error()) } else { @@ -179,7 +158,7 @@ pub struct Sdl2ImageContext; impl Drop for Sdl2ImageContext { fn drop(&mut self) { unsafe { - ffi::IMG_Quit(); + sys::image::IMG_Quit(); } } } @@ -188,7 +167,7 @@ impl Drop for Sdl2ImageContext { /// If not every flag is set it returns an error pub fn init(flags: InitFlag) -> Result { let return_flags = unsafe { - let used = ffi::IMG_Init(flags.bits() as c_int); + let used = sys::image::IMG_Init(flags.bits() as c_int); InitFlag::from_bits_truncate(used as u32) }; if !flags.intersects(return_flags) { @@ -207,7 +186,7 @@ pub fn init(flags: InitFlag) -> Result { /// Returns the version of the dynamically linked `SDL_image` library pub fn get_linked_version() -> Version { - unsafe { Version::from_ll(*ffi::IMG_Linked_Version()) } + unsafe { Version::from_ll(*sys::image::IMG_Linked_Version()) } } #[inline] @@ -259,118 +238,118 @@ pub trait ImageRWops { impl<'a> ImageRWops for RWops<'a> { fn load(&self) -> Result { - let raw = unsafe { ffi::IMG_Load_RW(self.raw(), 0) }; + let raw = unsafe { sys::image::IMG_Load_RW(self.raw(), 0) }; to_surface_result(raw) } fn load_typed(&self, _type: &str) -> Result { let raw = unsafe { let c_type = CString::new(_type.as_bytes()).unwrap(); - ffi::IMG_LoadTyped_RW(self.raw(), 0, c_type.as_ptr() as *const _) + sys::image::IMG_LoadTyped_RW(self.raw(), 0, c_type.as_ptr() as *const _) }; to_surface_result(raw) } fn load_cur(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadCUR_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadCUR_RW(self.raw()) }; to_surface_result(raw) } fn load_ico(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadICO_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadICO_RW(self.raw()) }; to_surface_result(raw) } fn load_bmp(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadBMP_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadBMP_RW(self.raw()) }; to_surface_result(raw) } fn load_pnm(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadPNM_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadPNM_RW(self.raw()) }; to_surface_result(raw) } fn load_xpm(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadXPM_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadXPM_RW(self.raw()) }; to_surface_result(raw) } fn load_xcf(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadXCF_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadXCF_RW(self.raw()) }; to_surface_result(raw) } fn load_pcx(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadPCX_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadPCX_RW(self.raw()) }; to_surface_result(raw) } fn load_gif(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadGIF_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadGIF_RW(self.raw()) }; to_surface_result(raw) } fn load_jpg(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadJPG_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadJPG_RW(self.raw()) }; to_surface_result(raw) } fn load_tif(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadTIF_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadTIF_RW(self.raw()) }; to_surface_result(raw) } fn load_png(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadPNG_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadPNG_RW(self.raw()) }; to_surface_result(raw) } fn load_tga(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadTGA_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadTGA_RW(self.raw()) }; to_surface_result(raw) } fn load_lbm(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadLBM_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadLBM_RW(self.raw()) }; to_surface_result(raw) } fn load_xv(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadXV_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadXV_RW(self.raw()) }; to_surface_result(raw) } fn load_webp(&self) -> Result { - let raw = unsafe { ffi::IMG_LoadWEBP_RW(self.raw()) }; + let raw = unsafe { sys::image::IMG_LoadWEBP_RW(self.raw()) }; to_surface_result(raw) } fn is_cur(&self) -> bool { - unsafe { ffi::IMG_isCUR(self.raw()) == 1 } + unsafe { sys::image::IMG_isCUR(self.raw()) == 1 } } fn is_ico(&self) -> bool { - unsafe { ffi::IMG_isICO(self.raw()) == 1 } + unsafe { sys::image::IMG_isICO(self.raw()) == 1 } } fn is_bmp(&self) -> bool { - unsafe { ffi::IMG_isBMP(self.raw()) == 1 } + unsafe { sys::image::IMG_isBMP(self.raw()) == 1 } } fn is_pnm(&self) -> bool { - unsafe { ffi::IMG_isPNM(self.raw()) == 1 } + unsafe { sys::image::IMG_isPNM(self.raw()) == 1 } } fn is_xpm(&self) -> bool { - unsafe { ffi::IMG_isXPM(self.raw()) == 1 } + unsafe { sys::image::IMG_isXPM(self.raw()) == 1 } } fn is_xcf(&self) -> bool { - unsafe { ffi::IMG_isXCF(self.raw()) == 1 } + unsafe { sys::image::IMG_isXCF(self.raw()) == 1 } } fn is_pcx(&self) -> bool { - unsafe { ffi::IMG_isPCX(self.raw()) == 1 } + unsafe { sys::image::IMG_isPCX(self.raw()) == 1 } } fn is_gif(&self) -> bool { - unsafe { ffi::IMG_isGIF(self.raw()) == 1 } + unsafe { sys::image::IMG_isGIF(self.raw()) == 1 } } fn is_jpg(&self) -> bool { - unsafe { ffi::IMG_isJPG(self.raw()) == 1 } + unsafe { sys::image::IMG_isJPG(self.raw()) == 1 } } fn is_tif(&self) -> bool { - unsafe { ffi::IMG_isTIF(self.raw()) == 1 } + unsafe { sys::image::IMG_isTIF(self.raw()) == 1 } } fn is_png(&self) -> bool { - unsafe { ffi::IMG_isPNG(self.raw()) == 1 } + unsafe { sys::image::IMG_isPNG(self.raw()) == 1 } } fn is_lbm(&self) -> bool { - unsafe { ffi::IMG_isLBM(self.raw()) == 1 } + unsafe { sys::image::IMG_isLBM(self.raw()) == 1 } } fn is_xv(&self) -> bool { - unsafe { ffi::IMG_isXV(self.raw()) == 1 } + unsafe { sys::image::IMG_isXV(self.raw()) == 1 } } fn is_webp(&self) -> bool { - unsafe { ffi::IMG_isWEBP(self.raw()) == 1 } + unsafe { sys::image::IMG_isWEBP(self.raw()) == 1 } } } From 75137049cd77331778bec28c8337f9239bf05af3 Mon Sep 17 00:00:00 2001 From: Jon Emil Jahren Date: Mon, 2 Apr 2018 05:28:08 +0200 Subject: [PATCH 05/19] Move SDL_ttf to sdl2-sys crate Progresses on #647 --- Cargo.toml | 2 +- sdl2-sys/Cargo.toml | 1 + sdl2-sys/build.rs | 9 ++ sdl2-sys/src/lib.rs | 3 + src/sdl2/ttf/ffi.rs => sdl2-sys/src/ttf.rs | 5 +- src/sdl2/ttf/context.rs | 17 ++-- src/sdl2/ttf/font.rs | 98 +++++++++++----------- src/sdl2/ttf/mod.rs | 20 ----- 8 files changed, 73 insertions(+), 82 deletions(-) rename src/sdl2/ttf/ffi.rs => sdl2-sys/src/ttf.rs (97%) diff --git a/Cargo.toml b/Cargo.toml index 2f37af1695d..507d23d6fb3 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,10 +37,10 @@ optional = true unsafe_textures = [] default = [] -ttf = [] gfx = ["c_vec"] mixer = ["sdl2-sys/mixer"] image = ["sdl2-sys/image"] +ttf = ["sdl2-sys/ttf"] use-bindgen = ["sdl2-sys/use-bindgen"] use-pkgconfig = ["sdl2-sys/use-pkgconfig"] diff --git a/sdl2-sys/Cargo.toml b/sdl2-sys/Cargo.toml index 3d3b6fae123..bd41cd60cbd 100644 --- a/sdl2-sys/Cargo.toml +++ b/sdl2-sys/Cargo.toml @@ -52,3 +52,4 @@ use_mac_framework = [] bundled = ["cmake", "reqwest", "tar", "flate2"] mixer = [] image = [] +ttf = [] diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 2c68553596e..4cd4dde15ea 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -222,6 +222,15 @@ fn link_sdl2(target_os: &str) { println!("cargo:rustc-flags=-l framework=SDL2_image"); } } + if cfg!(feature = "ttf") { + if cfg!(any(target_os="linux", target_os="freebsd")) { + println!("cargo:rustc-flags=-l SDL2_ttf"); + } else if cfg!(target_os="windows") { + println!("cargo:rustc-flags=-l SDL2_ttf"); + } else if cfg!(any(target_os="macos", feature="use_mac_framework")) { + println!("cargo:rustc-flags=-l framework=SDL2_ttf"); + } + } } } diff --git a/sdl2-sys/src/lib.rs b/sdl2-sys/src/lib.rs index b27f19d6209..9dcccb8a341 100644 --- a/sdl2-sys/src/lib.rs +++ b/sdl2-sys/src/lib.rs @@ -15,3 +15,6 @@ pub mod mixer; #[cfg(feature = "image")] pub mod image; + +#[cfg(feature = "ttf")] +pub mod ttf; diff --git a/src/sdl2/ttf/ffi.rs b/sdl2-sys/src/ttf.rs similarity index 97% rename from src/sdl2/ttf/ffi.rs rename to sdl2-sys/src/ttf.rs index f85ea488af2..7e08f871055 100644 --- a/src/sdl2/ttf/ffi.rs +++ b/sdl2-sys/src/ttf.rs @@ -1,6 +1,5 @@ use std::os::raw::{c_int, c_char, c_long, c_void}; -use sys; -use sys::{SDL_Surface, SDL_Color, SDL_RWops}; +use ::{SDL_Surface, SDL_Color, SDL_RWops}; pub const TTF_STYLE_NORMAL : c_int = 0x00; @@ -16,7 +15,7 @@ pub const TTF_HINTING_NONE : c_int = 3; pub type TTF_Font = c_void; extern "C" { - pub fn TTF_Linked_Version() -> *const sys::SDL_version; + pub fn TTF_Linked_Version() -> *const ::SDL_version; pub fn TTF_ByteSwappedUNICODE(swapped: c_int); pub fn TTF_Init() -> c_int; pub fn TTF_OpenFont(file: *const c_char, ptsize: c_int) -> *const TTF_Font; diff --git a/src/sdl2/ttf/context.rs b/src/sdl2/ttf/context.rs index db5377dfecf..5988f0d141a 100644 --- a/src/sdl2/ttf/context.rs +++ b/src/sdl2/ttf/context.rs @@ -6,6 +6,7 @@ use std::path::Path; use ::get_error; use ::rwops::RWops; use ::version::Version; +use sys; use super::font::{ internal_load_font, @@ -14,8 +15,6 @@ use super::font::{ Font, }; -use super::ffi; - /// A context manager for `SDL2_TTF` to manage C code initialization and clean-up. #[must_use] pub struct Sdl2TtfContext; @@ -23,7 +22,7 @@ pub struct Sdl2TtfContext; // Clean up the context once it goes out of scope impl Drop for Sdl2TtfContext { fn drop(&mut self) { - unsafe { ffi::TTF_Quit(); } + unsafe { sys::ttf::TTF_Quit(); } } } @@ -45,7 +44,7 @@ impl Sdl2TtfContext { pub fn load_font_from_rwops<'ttf,'r>(&'ttf self, rwops: RWops<'r>, point_size: u16) -> Result, String> { let raw = unsafe { - ffi::TTF_OpenFontRW(rwops.raw(), 0, point_size as c_int) + sys::ttf::TTF_OpenFontRW(rwops.raw(), 0, point_size as c_int) }; if (raw as *mut ()).is_null() { Err(get_error()) @@ -59,7 +58,7 @@ impl Sdl2TtfContext { pub fn load_font_at_index_from_rwops<'ttf,'r>(&'ttf self, rwops: RWops<'r>, index: u32, point_size: u16) -> Result, String> { let raw = unsafe { - ffi::TTF_OpenFontIndexRW(rwops.raw(), 0, point_size as c_int, + sys::ttf::TTF_OpenFontIndexRW(rwops.raw(), 0, point_size as c_int, index as c_long) }; if (raw as *mut ()).is_null() { @@ -73,7 +72,7 @@ impl Sdl2TtfContext { /// Returns the version of the dynamically linked `SDL_TTF` library pub fn get_linked_version() -> Version { unsafe { - Version::from_ll(*ffi::TTF_Linked_Version()) + Version::from_ll(*sys::ttf::TTF_Linked_Version()) } } @@ -119,9 +118,9 @@ impl fmt::Display for InitError { /// clean up the library once it goes out of scope. pub fn init() -> Result { unsafe { - if ffi::TTF_WasInit() == 1 { + if sys::ttf::TTF_WasInit() == 1 { Err(InitError::AlreadyInitializedError) - } else if ffi::TTF_Init() == 0 { + } else if sys::ttf::TTF_Init() == 0 { Ok(Sdl2TtfContext) } else { Err(InitError::InitializationError( @@ -134,6 +133,6 @@ pub fn init() -> Result { /// Returns whether library has been initialized already. pub fn has_been_initialized() -> bool { unsafe { - ffi::TTF_WasInit() == 1 + sys::ttf::TTF_WasInit() == 1 } } diff --git a/src/sdl2/ttf/font.rs b/src/sdl2/ttf/font.rs index 3c52c1a347f..8f0742225ce 100644 --- a/src/sdl2/ttf/font.rs +++ b/src/sdl2/ttf/font.rs @@ -7,21 +7,21 @@ use std::ffi::NulError; use std::fmt; use std::marker::PhantomData; use ::surface::Surface; +use sys; use sys::SDL_Surface; use ::get_error; use ::pixels::Color; use ::rwops::RWops; -use super::ffi; // Absolute paths are a workaround for https://github.com/rust-lang-nursery/bitflags/issues/39 . bitflags! { /// The styling of a font. pub flags FontStyle: i32 { - const STYLE_NORMAL = ffi::TTF_STYLE_NORMAL as i32, - const STYLE_BOLD = ffi::TTF_STYLE_BOLD as i32, - const STYLE_ITALIC = ffi::TTF_STYLE_ITALIC as i32, - const STYLE_UNDERLINE = ffi::TTF_STYLE_UNDERLINE as i32, - const STYLE_STRIKETHROUGH = ffi::TTF_STYLE_STRIKETHROUGH as i32, + const STYLE_NORMAL = sys::ttf::TTF_STYLE_NORMAL as i32, + const STYLE_BOLD = sys::ttf::TTF_STYLE_BOLD as i32, + const STYLE_ITALIC = sys::ttf::TTF_STYLE_ITALIC as i32, + const STYLE_UNDERLINE = sys::ttf::TTF_STYLE_UNDERLINE as i32, + const STYLE_STRIKETHROUGH = sys::ttf::TTF_STYLE_STRIKETHROUGH as i32, } } @@ -30,10 +30,10 @@ bitflags! { #[repr(i32)] #[derive(Debug, PartialEq, Clone)] pub enum Hinting { - Normal = ffi::TTF_HINTING_NORMAL as i32, - Light = ffi::TTF_HINTING_LIGHT as i32, - Mono = ffi::TTF_HINTING_MONO as i32, - None = ffi::TTF_HINTING_NONE as i32, + Normal = sys::ttf::TTF_HINTING_NORMAL as i32, + Light = sys::ttf::TTF_HINTING_LIGHT as i32, + Mono = sys::ttf::TTF_HINTING_MONO as i32, + None = sys::ttf::TTF_HINTING_NONE as i32, } /// Information about a specific glyph (character) in a font face. @@ -155,11 +155,11 @@ impl<'f,'text> PartialRendering<'f,'text> { let raw = unsafe { match self.text { RenderableText::Utf8(_) | RenderableText::Char(_) => { - ffi::TTF_RenderUTF8_Solid(self.font.raw(), + sys::ttf::TTF_RenderUTF8_Solid(self.font.raw(), source.as_ptr(), color) }, RenderableText::Latin1(_) => { - ffi::TTF_RenderText_Solid(self.font.raw(), + sys::ttf::TTF_RenderText_Solid(self.font.raw(), source.as_ptr(), color) }, } @@ -178,11 +178,11 @@ impl<'f,'text> PartialRendering<'f,'text> { let raw = unsafe { match self.text { RenderableText::Utf8(_) | RenderableText::Char(_) => { - ffi::TTF_RenderUTF8_Shaded(self.font.raw(), + sys::ttf::TTF_RenderUTF8_Shaded(self.font.raw(), source.as_ptr(), foreground, background) }, RenderableText::Latin1(_) => { - ffi::TTF_RenderText_Shaded(self.font.raw(), + sys::ttf::TTF_RenderText_Shaded(self.font.raw(), source.as_ptr(), foreground, background) }, } @@ -200,11 +200,11 @@ impl<'f,'text> PartialRendering<'f,'text> { let raw = unsafe { match self.text { RenderableText::Utf8(_) | RenderableText::Char(_) => { - ffi::TTF_RenderUTF8_Blended(self.font.raw(), + sys::ttf::TTF_RenderUTF8_Blended(self.font.raw(), source.as_ptr(), color) }, RenderableText::Latin1(_) => { - ffi::TTF_RenderText_Blended(self.font.raw(), + sys::ttf::TTF_RenderText_Blended(self.font.raw(), source.as_ptr(), color) }, } @@ -223,11 +223,11 @@ impl<'f,'text> PartialRendering<'f,'text> { let raw = unsafe { match self.text { RenderableText::Utf8(_) | RenderableText::Char(_) => { - ffi::TTF_RenderUTF8_Blended_Wrapped(self.font.raw(), + sys::ttf::TTF_RenderUTF8_Blended_Wrapped(self.font.raw(), source.as_ptr(), color, wrap_max_width) }, RenderableText::Latin1(_) => { - ffi::TTF_RenderText_Blended_Wrapped(self.font.raw(), + sys::ttf::TTF_RenderText_Blended_Wrapped(self.font.raw(), source.as_ptr(), color, wrap_max_width) }, } @@ -238,7 +238,7 @@ impl<'f,'text> PartialRendering<'f,'text> { /// A loaded TTF font. pub struct Font<'ttf_module,'rwops> { - raw: *const ffi::TTF_Font, + raw: *const sys::ttf::TTF_Font, // RWops is only stored here because it must not outlive // the Font struct, and this RWops should not be used by // anything else @@ -257,8 +257,8 @@ impl<'ttf,'r> Drop for Font<'ttf,'r> { fn drop(&mut self) { unsafe { // avoid close font after quit() - if ffi::TTF_WasInit() == 1 { - ffi::TTF_CloseFont(self.raw); + if sys::ttf::TTF_WasInit() == 1 { + sys::ttf::TTF_CloseFont(self.raw); } } } @@ -268,7 +268,7 @@ impl<'ttf,'r> Drop for Font<'ttf,'r> { pub fn internal_load_font<'ttf,P:AsRef>(path: P, ptsize: u16) -> Result, String> { unsafe { let cstring = CString::new(path.as_ref().to_str().unwrap()).unwrap(); - let raw = ffi::TTF_OpenFont(cstring.as_ptr(), ptsize as c_int); + let raw = sys::ttf::TTF_OpenFont(cstring.as_ptr(), ptsize as c_int); if raw.is_null() { Err(get_error()) } else { @@ -278,7 +278,7 @@ pub fn internal_load_font<'ttf,P:AsRef>(path: P, ptsize: u16) -> Result(raw: *const ffi::TTF_Font, rwops: R) +pub fn internal_load_font_from_ll<'ttf,'r, R>(raw: *const sys::ttf::TTF_Font, rwops: R) -> Font<'ttf,'r> where R: Into>> { Font { raw: raw, rwops: rwops.into(), _marker: PhantomData } @@ -290,7 +290,7 @@ pub fn internal_load_font_at_index<'ttf,P: AsRef>(path: P, index: u32, pts unsafe { let cstring = CString::new(path.as_ref().to_str().unwrap().as_bytes()) .unwrap(); - let raw = ffi::TTF_OpenFontIndex(cstring.as_ptr(), + let raw = sys::ttf::TTF_OpenFontIndex(cstring.as_ptr(), ptsize as c_int, index as c_long); if raw.is_null() { Err(get_error()) @@ -302,7 +302,7 @@ pub fn internal_load_font_at_index<'ttf,P: AsRef>(path: P, index: u32, pts impl<'ttf,'r> Font<'ttf,'r> { /// Returns the underlying C font object. - unsafe fn raw(&self) -> *const ffi::TTF_Font { + unsafe fn raw(&self) -> *const sys::ttf::TTF_Font { self.raw } @@ -339,7 +339,7 @@ impl<'ttf,'r> Font<'ttf,'r> { let (res, size) = unsafe { let mut w = 0; // mutated by C code let mut h = 0; // mutated by C code - let ret = ffi::TTF_SizeUTF8(self.raw, c_string.as_ptr(), &mut w, &mut h); + let ret = sys::ttf::TTF_SizeUTF8(self.raw, c_string.as_ptr(), &mut w, &mut h); (ret, (w as u32, h as u32)) }; if res == 0 { @@ -358,7 +358,7 @@ impl<'ttf,'r> Font<'ttf,'r> { let (res, size) = unsafe { let mut w = 0; // mutated by C code let mut h = 0; // mutated by C code - let ret = ffi::TTF_SizeText(self.raw, c_string.as_ptr(), &w, &h); + let ret = sys::ttf::TTF_SizeText(self.raw, c_string.as_ptr(), &w, &h); (ret, (w as u32, h as u32)) }; if res == 0 { @@ -379,7 +379,7 @@ impl<'ttf,'r> Font<'ttf,'r> { /// Returns the font's style flags. pub fn get_style(&self) -> FontStyle { unsafe { - let raw = ffi::TTF_GetFontStyle(self.raw); + let raw = sys::ttf::TTF_GetFontStyle(self.raw); FontStyle::from_bits_truncate(raw as i32) } } @@ -387,32 +387,32 @@ impl<'ttf,'r> Font<'ttf,'r> { /// Sets the font's style flags. pub fn set_style(&mut self, styles: FontStyle) { unsafe { - ffi::TTF_SetFontStyle(self.raw, styles.bits() as c_int) + sys::ttf::TTF_SetFontStyle(self.raw, styles.bits() as c_int) } } /// Returns the width of the font's outline. pub fn get_outline_width(&self) -> u16 { unsafe { - ffi::TTF_GetFontOutline(self.raw) as u16 + sys::ttf::TTF_GetFontOutline(self.raw) as u16 } } /// Sets the width of the font's outline. pub fn set_outline_width(&mut self, width: u16) { unsafe { - ffi::TTF_SetFontOutline(self.raw, width as c_int) + sys::ttf::TTF_SetFontOutline(self.raw, width as c_int) } } /// Returns the font's freetype hints. pub fn get_hinting(&self) -> Hinting { unsafe { - match ffi::TTF_GetFontHinting(self.raw) as c_int { - ffi::TTF_HINTING_NORMAL => Hinting::Normal, - ffi::TTF_HINTING_LIGHT => Hinting::Light, - ffi::TTF_HINTING_MONO => Hinting::Mono, - ffi::TTF_HINTING_NONE | _ => Hinting::None + match sys::ttf::TTF_GetFontHinting(self.raw) as c_int { + sys::ttf::TTF_HINTING_NORMAL => Hinting::Normal, + sys::ttf::TTF_HINTING_LIGHT => Hinting::Light, + sys::ttf::TTF_HINTING_MONO => Hinting::Mono, + sys::ttf::TTF_HINTING_NONE | _ => Hinting::None } } } @@ -420,35 +420,35 @@ impl<'ttf,'r> Font<'ttf,'r> { /// Sets the font's freetype hints. pub fn set_hinting(&mut self, hinting: Hinting) { unsafe { - ffi::TTF_SetFontHinting(self.raw, hinting as c_int) + sys::ttf::TTF_SetFontHinting(self.raw, hinting as c_int) } } /// Returns whether the font is kerning. pub fn get_kerning(&self) -> bool { unsafe { - ffi::TTF_GetFontKerning(self.raw) != 0 + sys::ttf::TTF_GetFontKerning(self.raw) != 0 } } /// Sets whether the font should use kerning. pub fn set_kerning(&mut self, kerning: bool) { unsafe { - ffi::TTF_SetFontKerning(self.raw, kerning as c_int) + sys::ttf::TTF_SetFontKerning(self.raw, kerning as c_int) } } pub fn height(&self) -> i32 { //! Get font maximum total height. unsafe { - ffi::TTF_FontHeight(self.raw) as i32 + sys::ttf::TTF_FontHeight(self.raw) as i32 } } /// Returns the font's highest ascent (height above base). pub fn ascent(&self) -> i32 { unsafe { - ffi::TTF_FontAscent(self.raw) as i32 + sys::ttf::TTF_FontAscent(self.raw) as i32 } } @@ -456,28 +456,28 @@ impl<'ttf,'r> Font<'ttf,'r> { /// This is a negative number. pub fn descent(&self) -> i32 { unsafe { - ffi::TTF_FontDescent(self.raw) as i32 + sys::ttf::TTF_FontDescent(self.raw) as i32 } } /// Returns the recommended line spacing for text rendered with this font. pub fn recommended_line_spacing(&self) -> i32 { unsafe { - ffi::TTF_FontLineSkip(self.raw) as i32 + sys::ttf::TTF_FontLineSkip(self.raw) as i32 } } /// Returns the number of faces in this font. pub fn face_count(&self) -> u16 { unsafe { - ffi::TTF_FontFaces(self.raw) as u16 + sys::ttf::TTF_FontFaces(self.raw) as u16 } } /// Returns whether the font is monospaced. pub fn face_is_fixed_width(&self) -> bool { unsafe { - ffi::TTF_FontFaceIsFixedWidth(self.raw) != 0 + sys::ttf::TTF_FontFaceIsFixedWidth(self.raw) != 0 } } @@ -485,7 +485,7 @@ impl<'ttf,'r> Font<'ttf,'r> { pub fn face_family_name(&self) -> Option { unsafe { // not owns buffer - let cname = ffi::TTF_FontFaceFamilyName(self.raw); + let cname = sys::ttf::TTF_FontFaceFamilyName(self.raw); if cname.is_null() { None } else { @@ -497,7 +497,7 @@ impl<'ttf,'r> Font<'ttf,'r> { /// Returns the name of the current font face. pub fn face_style_name(&self) -> Option { unsafe { - let cname = ffi::TTF_FontFaceStyleName(self.raw); + let cname = sys::ttf::TTF_FontFaceStyleName(self.raw); if cname.is_null() { None } else { @@ -509,7 +509,7 @@ impl<'ttf,'r> Font<'ttf,'r> { /// Returns the index of the given character in this font face. pub fn find_glyph(&self, ch: char) -> Option { unsafe { - let ret = ffi::TTF_GlyphIsProvided(self.raw, ch as u16); + let ret = sys::ttf::TTF_GlyphIsProvided(self.raw, ch as u16); if ret == 0 { None } else { @@ -526,7 +526,7 @@ impl<'ttf,'r> Font<'ttf,'r> { let maxy = 0; let advance = 0; let ret = unsafe { - ffi::TTF_GlyphMetrics( + sys::ttf::TTF_GlyphMetrics( self.raw, ch as u16, &minx, &maxx, &miny, &maxy, &advance ) }; diff --git a/src/sdl2/ttf/mod.rs b/src/sdl2/ttf/mod.rs index f5463f3d862..7426b582f46 100644 --- a/src/sdl2/ttf/mod.rs +++ b/src/sdl2/ttf/mod.rs @@ -20,29 +20,9 @@ //! features = ["ttf"] //! ``` -#[allow(non_camel_case_types, dead_code)] -mod ffi; mod font; mod context; -// Setup linking for all targets. -#[cfg(target_os="macos")] -mod mac { - #[cfg(any(mac_framework, feature="use_mac_framework"))] - #[link(kind="framework", name="SDL2_ttf")] - extern {} - - #[cfg(not(any(mac_framework, feature="use_mac_framework")))] - #[link(name="SDL2_ttf")] - extern {} -} - -#[cfg(any(target_os="windows", target_os="linux", target_os="freebsd"))] -mod others { - #[link(name="SDL2_ttf")] - extern {} -} - pub use self::context::{ init, has_been_initialized, get_linked_version, Sdl2TtfContext, InitError, }; From c6b78a1c671732d49db534c138e7b6e6304f35f6 Mon Sep 17 00:00:00 2001 From: Jon Emil Jahren Date: Mon, 2 Apr 2018 06:12:16 +0200 Subject: [PATCH 06/19] Moved gfx low level interface into sdl2_sys crate Progresses on #647 --- Cargo.toml | 2 +- sdl2-sys/Cargo.toml | 1 + sdl2-sys/build.rs | 9 + sdl2-sys/src/gfx/framerate.rs | 18 + sdl2-sys/src/gfx/imagefilter.rs | 75 +++++ sdl2-sys/src/gfx/mod.rs | 4 + sdl2-sys/src/gfx/primitives.rs | 494 ++++++++++++++++++++++++++++ sdl2-sys/src/gfx/rotozoom.rs | 28 ++ sdl2-sys/src/lib.rs | 3 + src/sdl2/gfx/framerate.rs | 39 +-- src/sdl2/gfx/imagefilter.rs | 141 ++------ src/sdl2/gfx/mod.rs | 4 - src/sdl2/gfx/primitives.rs | 561 ++------------------------------ src/sdl2/gfx/rotozoom.rs | 47 +-- 14 files changed, 715 insertions(+), 711 deletions(-) create mode 100644 sdl2-sys/src/gfx/framerate.rs create mode 100644 sdl2-sys/src/gfx/imagefilter.rs create mode 100644 sdl2-sys/src/gfx/mod.rs create mode 100644 sdl2-sys/src/gfx/primitives.rs create mode 100644 sdl2-sys/src/gfx/rotozoom.rs diff --git a/Cargo.toml b/Cargo.toml index 507d23d6fb3..0418964aea1 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -37,7 +37,7 @@ optional = true unsafe_textures = [] default = [] -gfx = ["c_vec"] +gfx = ["c_vec", "sdl2-sys/gfx"] mixer = ["sdl2-sys/mixer"] image = ["sdl2-sys/image"] ttf = ["sdl2-sys/ttf"] diff --git a/sdl2-sys/Cargo.toml b/sdl2-sys/Cargo.toml index bd41cd60cbd..31eeeeb0d5b 100644 --- a/sdl2-sys/Cargo.toml +++ b/sdl2-sys/Cargo.toml @@ -53,3 +53,4 @@ bundled = ["cmake", "reqwest", "tar", "flate2"] mixer = [] image = [] ttf = [] +gfx = [] diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 4cd4dde15ea..8af05a298a5 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -231,6 +231,15 @@ fn link_sdl2(target_os: &str) { println!("cargo:rustc-flags=-l framework=SDL2_ttf"); } } + if cfg!(feature = "gfx") { + if cfg!(any(target_os="linux", target_os="freebsd")) { + println!("cargo:rustc-flags=-l SDL2_gfx"); + } else if cfg!(target_os="windows") { + println!("cargo:rustc-flags=-l SDL2_gfx"); + } else if cfg!(any(target_os="macos", feature="use_mac_framework")) { + println!("cargo:rustc-flags=-l framework=SDL2_gfx"); + } + } } } diff --git a/sdl2-sys/src/gfx/framerate.rs b/sdl2-sys/src/gfx/framerate.rs new file mode 100644 index 00000000000..41c857894ba --- /dev/null +++ b/sdl2-sys/src/gfx/framerate.rs @@ -0,0 +1,18 @@ +/* automatically generated by rust-bindgen */ + +use ::std::os::raw::*; +#[repr(C)] +pub struct FPSmanager { + pub framecount: c_uint, + pub rateticks: c_float, + pub baseticks: c_uint, + pub lastticks: c_uint, + pub rate: c_uint, +} +extern "C" { + pub fn SDL_initFramerate(manager: *mut FPSmanager); + pub fn SDL_setFramerate(manager: *mut FPSmanager, rate: c_uint) -> c_int; + pub fn SDL_getFramerate(manager: *mut FPSmanager) -> c_int; + pub fn SDL_getFramecount(manager: *mut FPSmanager) -> c_int; + pub fn SDL_framerateDelay(manager: *mut FPSmanager) -> c_uint; +} diff --git a/sdl2-sys/src/gfx/imagefilter.rs b/sdl2-sys/src/gfx/imagefilter.rs new file mode 100644 index 00000000000..3c35357509c --- /dev/null +++ b/sdl2-sys/src/gfx/imagefilter.rs @@ -0,0 +1,75 @@ +use ::std::os::raw::*; +extern "C" { + pub fn SDL_imageFilterMMXdetect() -> c_int; + pub fn SDL_imageFilterMMXoff(); + pub fn SDL_imageFilterMMXon(); + pub fn SDL_imageFilterAdd(Src1: *mut u8, Src2: *mut u8, + Dest: *mut u8, length: c_uint) -> c_int; + pub fn SDL_imageFilterMean(Src1: *mut u8, Src2: *mut u8, + Dest: *mut u8, length: c_uint) -> c_int; + pub fn SDL_imageFilterSub(Src1: *mut u8, Src2: *mut u8, + Dest: *mut u8, length: c_uint) -> c_int; + pub fn SDL_imageFilterAbsDiff(Src1: *mut u8, Src2: *mut u8, + Dest: *mut u8, length: c_uint) -> + c_int; + pub fn SDL_imageFilterMult(Src1: *mut u8, Src2: *mut u8, + Dest: *mut u8, length: c_uint) -> c_int; + pub fn SDL_imageFilterMultNor(Src1: *mut u8, Src2: *mut u8, + Dest: *mut u8, length: c_uint) -> + c_int; + pub fn SDL_imageFilterMultDivby2(Src1: *mut u8, Src2: *mut u8, + Dest: *mut u8, length: c_uint) -> + c_int; + pub fn SDL_imageFilterMultDivby4(Src1: *mut u8, Src2: *mut u8, + Dest: *mut u8, length: c_uint) -> + c_int; + pub fn SDL_imageFilterBitAnd(Src1: *mut u8, Src2: *mut u8, + Dest: *mut u8, length: c_uint) -> c_int; + pub fn SDL_imageFilterBitOr(Src1: *mut u8, Src2: *mut u8, + Dest: *mut u8, length: c_uint) -> c_int; + pub fn SDL_imageFilterDiv(Src1: *mut u8, Src2: *mut u8, + Dest: *mut u8, length: c_uint) -> c_int; + pub fn SDL_imageFilterBitNegation(Src1: *mut u8, Dest: *mut u8, + length: c_uint) -> c_int; + pub fn SDL_imageFilterAddByte(Src1: *mut u8, Dest: *mut u8, + length: c_uint, C: u8) -> c_int; + pub fn SDL_imageFilterAddUint(Src1: *mut u8, Dest: *mut u8, + length: c_uint, C: c_uint) -> c_int; + pub fn SDL_imageFilterAddByteToHalf(Src1: *mut u8, + Dest: *mut u8, length: c_uint, + C: u8) -> c_int; + pub fn SDL_imageFilterSubByte(Src1: *mut u8, Dest: *mut u8, + length: c_uint, C: u8) -> c_int; + pub fn SDL_imageFilterSubUint(Src1: *mut u8, Dest: *mut u8, + length: c_uint, C: c_uint) -> c_int; + pub fn SDL_imageFilterShiftRight(Src1: *mut u8, Dest: *mut u8, + length: c_uint, N: u8) -> c_int; + pub fn SDL_imageFilterShiftRightUint(Src1: *mut u8, + Dest: *mut u8, length: c_uint, + N: u8) -> c_int; + pub fn SDL_imageFilterMultByByte(Src1: *mut u8, Dest: *mut u8, + length: c_uint, C: u8) -> c_int; + pub fn SDL_imageFilterShiftRightAndMultByByte(Src1: *mut u8, + Dest: *mut u8, + length: c_uint, N: u8, + C: u8) -> c_int; + pub fn SDL_imageFilterShiftLeftByte(Src1: *mut u8, + Dest: *mut u8, length: c_uint, + N: u8) -> c_int; + pub fn SDL_imageFilterShiftLeftUint(Src1: *mut u8, + Dest: *mut u8, length: c_uint, + N: u8) -> c_int; + pub fn SDL_imageFilterShiftLeft(Src1: *mut u8, Dest: *mut u8, + length: c_uint, N: u8) -> c_int; + pub fn SDL_imageFilterBinarizeUsingThreshold(Src1: *mut u8, + Dest: *mut u8, + length: c_uint, T: u8) + -> c_int; + pub fn SDL_imageFilterClipToRange(Src1: *mut u8, Dest: *mut u8, + length: c_uint, Tmin: u8, + Tmax: u8) -> c_int; + pub fn SDL_imageFilterNormalizeLinear(Src: *mut u8, + Dest: *mut u8, length: c_uint, + Cmin: c_int, Cmax: c_int, + Nmin: c_int, Nmax: c_int) -> c_int; +} diff --git a/sdl2-sys/src/gfx/mod.rs b/sdl2-sys/src/gfx/mod.rs new file mode 100644 index 00000000000..53f9b73bfa4 --- /dev/null +++ b/sdl2-sys/src/gfx/mod.rs @@ -0,0 +1,4 @@ +pub mod primitives; +pub mod framerate; +pub mod imagefilter; +pub mod rotozoom; diff --git a/sdl2-sys/src/gfx/primitives.rs b/sdl2-sys/src/gfx/primitives.rs new file mode 100644 index 00000000000..1015b1b4569 --- /dev/null +++ b/sdl2-sys/src/gfx/primitives.rs @@ -0,0 +1,494 @@ +/* automatically generated by rust-bindgen */ + +use ::SDL_Renderer; +use ::SDL_Surface; +use ::std::os::raw::*; + +extern "C" { + pub fn pixelColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + color: c_uint) + -> c_int; + pub fn pixelRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn hlineColor(renderer: *const SDL_Renderer, + x1: c_short, + x2: c_short, + y: c_short, + color: c_uint) + -> c_int; + pub fn hlineRGBA(renderer: *const SDL_Renderer, + x1: c_short, + x2: c_short, + y: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn vlineColor(renderer: *const SDL_Renderer, + x: c_short, + y1: c_short, + y2: c_short, + color: c_uint) + -> c_int; + pub fn vlineRGBA(renderer: *const SDL_Renderer, + x: c_short, + y1: c_short, + y2: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn rectangleColor(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + color: c_uint) + -> c_int; + pub fn rectangleRGBA(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn roundedRectangleColor(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + rad: c_short, + color: c_uint) + -> c_int; + pub fn roundedRectangleRGBA(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + rad: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn boxColor(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + color: c_uint) + -> c_int; + pub fn boxRGBA(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn roundedBoxColor(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + rad: c_short, + color: c_uint) + -> c_int; + pub fn roundedBoxRGBA(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + rad: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn lineColor(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + color: c_uint) + -> c_int; + pub fn lineRGBA(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn aalineColor(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + color: c_uint) + -> c_int; + pub fn aalineRGBA(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn thickLineColor(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + width: c_uchar, + color: c_uint) + -> c_int; + pub fn thickLineRGBA(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + width: c_uchar, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn circleColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rad: c_short, + color: c_uint) + -> c_int; + pub fn circleRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rad: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn arcColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rad: c_short, + start: c_short, + end: c_short, + color: c_uint) + -> c_int; + pub fn arcRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rad: c_short, + start: c_short, + end: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn aacircleColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rad: c_short, + color: c_uint) + -> c_int; + pub fn aacircleRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rad: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn filledCircleColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + r: c_short, + color: c_uint) + -> c_int; + pub fn filledCircleRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rad: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn ellipseColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rx: c_short, + ry: c_short, + color: c_uint) + -> c_int; + pub fn ellipseRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rx: c_short, + ry: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn aaellipseColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rx: c_short, + ry: c_short, + color: c_uint) + -> c_int; + pub fn aaellipseRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rx: c_short, + ry: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn filledEllipseColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rx: c_short, + ry: c_short, + color: c_uint) + -> c_int; + pub fn filledEllipseRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rx: c_short, + ry: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn pieColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rad: c_short, + start: c_short, + end: c_short, + color: c_uint) + -> c_int; + pub fn pieRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rad: c_short, + start: c_short, + end: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn filledPieColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rad: c_short, + start: c_short, + end: c_short, + color: c_uint) + -> c_int; + pub fn filledPieRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + rad: c_short, + start: c_short, + end: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn trigonColor(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + x3: c_short, + y3: c_short, + color: c_uint) + -> c_int; + pub fn trigonRGBA(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + x3: c_short, + y3: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn aatrigonColor(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + x3: c_short, + y3: c_short, + color: c_uint) + -> c_int; + pub fn aatrigonRGBA(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + x3: c_short, + y3: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn filledTrigonColor(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + x3: c_short, + y3: c_short, + color: c_uint) + -> c_int; + pub fn filledTrigonRGBA(renderer: *const SDL_Renderer, + x1: c_short, + y1: c_short, + x2: c_short, + y2: c_short, + x3: c_short, + y3: c_short, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn polygonColor(renderer: *const SDL_Renderer, + vx: *const c_short, + vy: *const c_short, + n: c_int, + color: c_uint) + -> c_int; + pub fn polygonRGBA(renderer: *const SDL_Renderer, + vx: *const c_short, + vy: *const c_short, + n: c_int, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn aapolygonColor(renderer: *const SDL_Renderer, + vx: *const c_short, + vy: *const c_short, + n: c_int, + color: c_uint) + -> c_int; + pub fn aapolygonRGBA(renderer: *const SDL_Renderer, + vx: *const c_short, + vy: *const c_short, + n: c_int, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn filledPolygonColor(renderer: *const SDL_Renderer, + vx: *const c_short, + vy: *const c_short, + n: c_int, + color: c_uint) + -> c_int; + pub fn filledPolygonRGBA(renderer: *const SDL_Renderer, + vx: *const c_short, + vy: *const c_short, + n: c_int, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn texturedPolygon(renderer: *const SDL_Renderer, + vx: *const c_short, + vy: *const c_short, + n: c_int, + texture: *mut SDL_Surface, + texture_dx: c_int, + texture_dy: c_int) + -> c_int; + pub fn bezierColor(renderer: *const SDL_Renderer, + vx: *const c_short, + vy: *const c_short, + n: c_int, + s: c_int, + color: c_uint) + -> c_int; + pub fn bezierRGBA(renderer: *const SDL_Renderer, + vx: *const c_short, + vy: *const c_short, + n: c_int, + s: c_int, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn gfxPrimitivesSetFont(fontdata: *const c_void, cw: c_uint, ch: c_uint); + pub fn gfxPrimitivesSetFontRotation(rotation: c_uint); + pub fn characterColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + c: c_char, + color: c_uint) + -> c_int; + pub fn characterRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + c: c_char, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; + pub fn stringColor(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + s: *mut c_char, + color: c_uint) + -> c_int; + pub fn stringRGBA(renderer: *const SDL_Renderer, + x: c_short, + y: c_short, + s: *mut c_char, + r: c_uchar, + g: c_uchar, + b: c_uchar, + a: c_uchar) + -> c_int; +} diff --git a/sdl2-sys/src/gfx/rotozoom.rs b/sdl2-sys/src/gfx/rotozoom.rs new file mode 100644 index 00000000000..9ed3ed1871c --- /dev/null +++ b/sdl2-sys/src/gfx/rotozoom.rs @@ -0,0 +1,28 @@ +/* automatically generated by rust-bindgen */ + +use ::SDL_Surface; +use ::std::os::raw::*; +extern "C" { + pub fn rotozoomSurface(src: *mut SDL_Surface, angle: c_double, + zoom: c_double, smooth: c_int) -> *mut SDL_Surface; + pub fn rotozoomSurfaceXY(src: *mut SDL_Surface, angle: c_double, + zoomx: c_double, zoomy: c_double, smooth: c_int) + -> *mut SDL_Surface; + pub fn rotozoomSurfaceSize(width: c_int, height: c_int, angle: c_double, + zoom: c_double, dstwidth: *mut c_int, + dstheight: *mut c_int); + pub fn rotozoomSurfaceSizeXY(width: c_int, height: c_int, angle: c_double, + zoomx: c_double, zoomy: c_double, + dstwidth: *mut c_int, dstheight: *mut c_int); + pub fn zoomSurface(src: *mut SDL_Surface, zoomx: c_double, + zoomy: c_double, smooth: c_int) -> *mut SDL_Surface; + pub fn zoomSurfaceSize(width: c_int, height: c_int, zoomx: c_double, + zoomy: c_double, dstwidth: *mut c_int, + dstheight: *mut c_int); + pub fn shrinkSurface(src: *mut SDL_Surface, factorx: c_int, + factory: c_int) -> *mut SDL_Surface; + pub fn rotateSurface90Degrees(src: *mut SDL_Surface, + numClockwiseTurns: c_int) -> + *mut SDL_Surface; +} + diff --git a/sdl2-sys/src/lib.rs b/sdl2-sys/src/lib.rs index 9dcccb8a341..7f76d3e20f7 100644 --- a/sdl2-sys/src/lib.rs +++ b/sdl2-sys/src/lib.rs @@ -18,3 +18,6 @@ pub mod image; #[cfg(feature = "ttf")] pub mod ttf; + +#[cfg(feature = "gfx")] +pub mod gfx; diff --git a/src/sdl2/gfx/framerate.rs b/src/sdl2/gfx/framerate.rs index 9fb620fb04b..383a5c8a4b0 100644 --- a/src/sdl2/gfx/framerate.rs +++ b/src/sdl2/gfx/framerate.rs @@ -4,48 +4,27 @@ use libc; use libc::{c_void, uint32_t, size_t}; use std::mem; use ::get_error; - - -mod ll { - /* automatically generated by rust-bindgen */ - - use libc::*; - #[repr(C)] - pub struct FPSmanager { - pub framecount: uint32_t, - pub rateticks: c_float, - pub baseticks: uint32_t, - pub lastticks: uint32_t, - pub rate: uint32_t, - } - extern "C" { - pub fn SDL_initFramerate(manager: *mut FPSmanager); - pub fn SDL_setFramerate(manager: *mut FPSmanager, rate: uint32_t) -> c_int; - pub fn SDL_getFramerate(manager: *mut FPSmanager) -> c_int; - pub fn SDL_getFramecount(manager: *mut FPSmanager) -> c_int; - pub fn SDL_framerateDelay(manager: *mut FPSmanager) -> uint32_t; - } -} +use sys; /// Structure holding the state and timing information of the framerate controller. pub struct FPSManager { - raw: *mut ll::FPSmanager, + raw: *mut sys::gfx::framerate::FPSmanager, } impl FPSManager { /// Create the framerate manager. pub fn new() -> FPSManager { unsafe { - let size = mem::size_of::() as size_t; - let raw = libc::malloc(size) as *mut ll::FPSmanager; - ll::SDL_initFramerate(raw); + let size = mem::size_of::() as size_t; + let raw = libc::malloc(size) as *mut sys::gfx::framerate::FPSmanager; + sys::gfx::framerate::SDL_initFramerate(raw); FPSManager { raw: raw } } } /// Set the framerate in Hz. pub fn set_framerate(&mut self, rate: u32) -> Result<(), String> { - let ret = unsafe { ll::SDL_setFramerate(self.raw, rate as uint32_t) }; + let ret = unsafe { sys::gfx::framerate::SDL_setFramerate(self.raw, rate as uint32_t) }; match ret { 0 => Ok(()), _ => Err(get_error()) @@ -55,18 +34,18 @@ impl FPSManager { /// Return the current target framerate in Hz. pub fn get_framerate(&self) -> i32 { // will not get an error - unsafe { ll::SDL_getFramerate(self.raw) as i32 } + unsafe { sys::gfx::framerate::SDL_getFramerate(self.raw) as i32 } } /// Return the current framecount. pub fn get_frame_count(&self) -> i32 { // will not get an error - unsafe { ll::SDL_getFramecount(self.raw) as i32 } + unsafe { sys::gfx::framerate::SDL_getFramecount(self.raw) as i32 } } /// Delay execution to maintain a constant framerate and calculate fps. pub fn delay(&mut self) -> u32 { - unsafe { ll::SDL_framerateDelay(self.raw) as u32 } + unsafe { sys::gfx::framerate::SDL_framerateDelay(self.raw) as u32 } } } diff --git a/src/sdl2/gfx/imagefilter.rs b/src/sdl2/gfx/imagefilter.rs index cdad1a930a7..a8c7588f761 100644 --- a/src/sdl2/gfx/imagefilter.rs +++ b/src/sdl2/gfx/imagefilter.rs @@ -4,100 +4,21 @@ use std::mem; use libc::{self,size_t, c_void, c_uint, c_int}; use ::get_error; use c_vec::CVec; - -mod ll { - /* automatically generated by rust-bindgen */ - - use libc::*; - extern "C" { - pub fn SDL_imageFilterMMXdetect() -> c_int; - pub fn SDL_imageFilterMMXoff(); - pub fn SDL_imageFilterMMXon(); - pub fn SDL_imageFilterAdd(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterMean(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterSub(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterAbsDiff(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> - c_int; - pub fn SDL_imageFilterMult(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterMultNor(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> - c_int; - pub fn SDL_imageFilterMultDivby2(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> - c_int; - pub fn SDL_imageFilterMultDivby4(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> - c_int; - pub fn SDL_imageFilterBitAnd(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterBitOr(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterDiv(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterBitNegation(Src1: *mut u8, Dest: *mut u8, - length: c_uint) -> c_int; - pub fn SDL_imageFilterAddByte(Src1: *mut u8, Dest: *mut u8, - length: c_uint, C: u8) -> c_int; - pub fn SDL_imageFilterAddUint(Src1: *mut u8, Dest: *mut u8, - length: c_uint, C: c_uint) -> c_int; - pub fn SDL_imageFilterAddByteToHalf(Src1: *mut u8, - Dest: *mut u8, length: c_uint, - C: u8) -> c_int; - pub fn SDL_imageFilterSubByte(Src1: *mut u8, Dest: *mut u8, - length: c_uint, C: u8) -> c_int; - pub fn SDL_imageFilterSubUint(Src1: *mut u8, Dest: *mut u8, - length: c_uint, C: c_uint) -> c_int; - pub fn SDL_imageFilterShiftRight(Src1: *mut u8, Dest: *mut u8, - length: c_uint, N: u8) -> c_int; - pub fn SDL_imageFilterShiftRightUint(Src1: *mut u8, - Dest: *mut u8, length: c_uint, - N: u8) -> c_int; - pub fn SDL_imageFilterMultByByte(Src1: *mut u8, Dest: *mut u8, - length: c_uint, C: u8) -> c_int; - pub fn SDL_imageFilterShiftRightAndMultByByte(Src1: *mut u8, - Dest: *mut u8, - length: c_uint, N: u8, - C: u8) -> c_int; - pub fn SDL_imageFilterShiftLeftByte(Src1: *mut u8, - Dest: *mut u8, length: c_uint, - N: u8) -> c_int; - pub fn SDL_imageFilterShiftLeftUint(Src1: *mut u8, - Dest: *mut u8, length: c_uint, - N: u8) -> c_int; - pub fn SDL_imageFilterShiftLeft(Src1: *mut u8, Dest: *mut u8, - length: c_uint, N: u8) -> c_int; - pub fn SDL_imageFilterBinarizeUsingThreshold(Src1: *mut u8, - Dest: *mut u8, - length: c_uint, T: u8) - -> c_int; - pub fn SDL_imageFilterClipToRange(Src1: *mut u8, Dest: *mut u8, - length: c_uint, Tmin: u8, - Tmax: u8) -> c_int; - pub fn SDL_imageFilterNormalizeLinear(Src: *mut u8, - Dest: *mut u8, length: c_uint, - Cmin: c_int, Cmax: c_int, - Nmin: c_int, Nmax: c_int) -> c_int; - } -} +use sys::gfx::imagefilter; /// MMX detection routine (with override flag). pub fn mmx_detect() -> bool { - unsafe { ll::SDL_imageFilterMMXdetect() == 1 } + unsafe { imagefilter::SDL_imageFilterMMXdetect() == 1 } } /// Disable MMX check for filter functions and and force to use non-MMX C based code. pub fn mmx_off() { - unsafe { ll::SDL_imageFilterMMXoff() } + unsafe { imagefilter::SDL_imageFilterMMXoff() } } /// Enable MMX check for filter functions and use MMX code if available. pub fn mmx_on() { - unsafe { ll::SDL_imageFilterMMXon() } + unsafe { imagefilter::SDL_imageFilterMMXon() } } #[inline] @@ -115,7 +36,7 @@ pub fn add(src1: CVec, src2: CVec) -> Result, String> { assert_eq!(src1.len(), src2.len()); let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterAdd(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterAdd(mem::transmute(src1.get(0)), mem::transmute(src2.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; @@ -128,7 +49,7 @@ pub fn mean(src1: CVec, src2: CVec) -> Result, String> { assert_eq!(src1.len(), src2.len()); let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterMean(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterMean(mem::transmute(src1.get(0)), mem::transmute(src2.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; @@ -141,7 +62,7 @@ pub fn sub(src1: CVec, src2: CVec) -> Result, String> { assert_eq!(src1.len(), src2.len()); let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterSub(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterSub(mem::transmute(src1.get(0)), mem::transmute(src2.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; @@ -154,7 +75,7 @@ pub fn abs_diff(src1: CVec, src2: CVec) -> Result, String> { assert_eq!(src1.len(), src2.len()); let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterAbsDiff(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterAbsDiff(mem::transmute(src1.get(0)), mem::transmute(src2.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; @@ -167,7 +88,7 @@ pub fn mult(src1: CVec, src2: CVec) -> Result, String> { assert_eq!(src1.len(), src2.len()); let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterMult(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterMult(mem::transmute(src1.get(0)), mem::transmute(src2.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; @@ -180,7 +101,7 @@ pub fn mult_nor(src1: CVec, src2: CVec) -> Result, String> { assert_eq!(src1.len(), src2.len()); let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterMultNor(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterMultNor(mem::transmute(src1.get(0)), mem::transmute(src2.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; @@ -193,7 +114,7 @@ pub fn mult_div_by2(src1: CVec, src2: CVec) -> Result, String> assert_eq!(src1.len(), src2.len()); let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterMultDivby2(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterMultDivby2(mem::transmute(src1.get(0)), mem::transmute(src2.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; @@ -206,7 +127,7 @@ pub fn mult_div_by4(src1: CVec, src2: CVec) -> Result, String> assert_eq!(src1.len(), src2.len()); let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterMultDivby4(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterMultDivby4(mem::transmute(src1.get(0)), mem::transmute(src2.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; @@ -219,7 +140,7 @@ pub fn bit_and(src1: CVec, src2: CVec) -> Result, String> { assert_eq!(src1.len(), src2.len()); let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterBitAnd(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterBitAnd(mem::transmute(src1.get(0)), mem::transmute(src2.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; @@ -232,7 +153,7 @@ pub fn bit_or(src1: CVec, src2: CVec) -> Result, String> { assert_eq!(src1.len(), src2.len()); let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterBitOr(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterBitOr(mem::transmute(src1.get(0)), mem::transmute(src2.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; @@ -245,7 +166,7 @@ pub fn div(src1: CVec, src2: CVec) -> Result, String> { assert_eq!(src1.len(), src2.len()); let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterDiv(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterDiv(mem::transmute(src1.get(0)), mem::transmute(src2.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; @@ -257,7 +178,7 @@ pub fn div(src1: CVec, src2: CVec) -> Result, String> { pub fn bit_negation(src1: CVec) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterBitNegation(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterBitNegation(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint) }; if ret == 0 { Ok(dest) } @@ -268,7 +189,7 @@ pub fn bit_negation(src1: CVec) -> Result, String> { pub fn add_byte(src1: CVec, c: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterAddByte(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterAddByte(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, c) }; if ret == 0 { Ok(dest) } @@ -279,7 +200,7 @@ pub fn add_byte(src1: CVec, c: u8) -> Result, String> { pub fn add_uint(src1: CVec, c: u32) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterAddUint(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterAddUint(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, c) }; if ret == 0 { Ok(dest) } @@ -290,7 +211,7 @@ pub fn add_uint(src1: CVec, c: u32) -> Result, String> { pub fn add_byte_to_half(src1: CVec, c: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterAddByteToHalf(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterAddByteToHalf(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, c) }; if ret == 0 { Ok(dest) } @@ -301,7 +222,7 @@ pub fn add_byte_to_half(src1: CVec, c: u8) -> Result, String> { pub fn sub_byte(src1: CVec, c: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterSubByte(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterSubByte(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, c) }; if ret == 0 { Ok(dest) } @@ -312,7 +233,7 @@ pub fn sub_byte(src1: CVec, c: u8) -> Result, String> { pub fn sub_uint(src1: CVec, c: u32) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterSubUint(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterSubUint(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, c) }; if ret == 0 { Ok(dest) } @@ -323,7 +244,7 @@ pub fn sub_uint(src1: CVec, c: u32) -> Result, String> { pub fn shift_right(src1: CVec, n: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterShiftRight(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterShiftRight(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, n) }; if ret == 0 { Ok(dest) } @@ -334,7 +255,7 @@ pub fn shift_right(src1: CVec, n: u8) -> Result, String> { pub fn shift_right_uint(src1: CVec, n: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterShiftRightUint(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterShiftRightUint(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, n) }; if ret == 0 { Ok(dest) } @@ -345,7 +266,7 @@ pub fn shift_right_uint(src1: CVec, n: u8) -> Result, String> { pub fn mult_by_byte(src1: CVec, c: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterMultByByte(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterMultByByte(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, c) }; if ret == 0 { Ok(dest) } @@ -356,7 +277,7 @@ pub fn mult_by_byte(src1: CVec, c: u8) -> Result, String> { pub fn shift_right_and_mult_by_byte(src1: CVec, n: u8, c: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterShiftRightAndMultByByte(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterShiftRightAndMultByByte(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, n, c) }; if ret == 0 { Ok(dest) } @@ -367,7 +288,7 @@ pub fn shift_right_and_mult_by_byte(src1: CVec, n: u8, c: u8) -> Result, n: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterShiftLeftByte(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterShiftLeftByte(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, n) }; if ret == 0 { Ok(dest) } @@ -378,7 +299,7 @@ pub fn shift_left_byte(src1: CVec, n: u8) -> Result, String> { pub fn shift_left_uint(src1: CVec, n: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterShiftLeftUint(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterShiftLeftUint(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, n) }; if ret == 0 { Ok(dest) } @@ -389,7 +310,7 @@ pub fn shift_left_uint(src1: CVec, n: u8) -> Result, String> { pub fn shift_left(src1: CVec, n: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterShiftLeft(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterShiftLeft(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, n) }; if ret == 0 { Ok(dest) } @@ -400,7 +321,7 @@ pub fn shift_left(src1: CVec, n: u8) -> Result, String> { pub fn binarize_using_threshold(src1: CVec, t: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterBinarizeUsingThreshold(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterBinarizeUsingThreshold(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, t) }; if ret == 0 { Ok(dest) } @@ -411,7 +332,7 @@ pub fn binarize_using_threshold(src1: CVec, t: u8) -> Result, Strin pub fn clip_to_range(src1: CVec, tmin: u8, tmax: u8) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterClipToRange(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterClipToRange(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, tmin, tmax) }; if ret == 0 { Ok(dest) } @@ -422,7 +343,7 @@ pub fn clip_to_range(src1: CVec, tmin: u8, tmax: u8) -> Result, Str pub fn normalize_linear(src1: CVec, cmin: i32, cmax: i32, nmin: i32, nmax: i32) -> Result, String> { let size = src1.len(); let dest = cvec_with_size(size); - let ret = unsafe { ll::SDL_imageFilterNormalizeLinear(mem::transmute(src1.get(0)), + let ret = unsafe { imagefilter::SDL_imageFilterNormalizeLinear(mem::transmute(src1.get(0)), mem::transmute(dest.get(0)), size as c_uint, cmin as c_int, cmax as c_int, diff --git a/src/sdl2/gfx/mod.rs b/src/sdl2/gfx/mod.rs index 728634d82ef..09f665f17f0 100644 --- a/src/sdl2/gfx/mod.rs +++ b/src/sdl2/gfx/mod.rs @@ -20,10 +20,6 @@ //! features = ["gfx"] //! ``` -// Setup linking for all targets. -#[link(name="SDL2_gfx")] -extern {} - pub mod primitives; pub mod rotozoom; pub mod framerate; diff --git a/src/sdl2/gfx/primitives.rs b/src/sdl2/gfx/primitives.rs index 72bd8bc6df8..05cad96833b 100644 --- a/src/sdl2/gfx/primitives.rs +++ b/src/sdl2/gfx/primitives.rs @@ -4,508 +4,13 @@ use std::mem; use std::ptr; use std::ffi::CString; use num::traits::ToPrimitive; -use libc::{c_void, c_int, c_char}; +use libc::{c_int, c_char}; +use std::os::raw::c_void; use render::Canvas; use surface::Surface; use pixels; use get_error; - -#[allow(dead_code)] -mod ll { - /* automatically generated by rust-bindgen */ - - use libc::*; - use sys::SDL_Renderer; - use sys::SDL_Surface; - extern "C" { - pub fn pixelColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - color: uint32_t) - -> c_int; - pub fn pixelRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn hlineColor(renderer: *const SDL_Renderer, - x1: int16_t, - x2: int16_t, - y: int16_t, - color: uint32_t) - -> c_int; - pub fn hlineRGBA(renderer: *const SDL_Renderer, - x1: int16_t, - x2: int16_t, - y: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn vlineColor(renderer: *const SDL_Renderer, - x: int16_t, - y1: int16_t, - y2: int16_t, - color: uint32_t) - -> c_int; - pub fn vlineRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y1: int16_t, - y2: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn rectangleColor(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - color: uint32_t) - -> c_int; - pub fn rectangleRGBA(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn roundedRectangleColor(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - rad: int16_t, - color: uint32_t) - -> c_int; - pub fn roundedRectangleRGBA(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - rad: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn boxColor(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - color: uint32_t) - -> c_int; - pub fn boxRGBA(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn roundedBoxColor(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - rad: int16_t, - color: uint32_t) - -> c_int; - pub fn roundedBoxRGBA(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - rad: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn lineColor(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - color: uint32_t) - -> c_int; - pub fn lineRGBA(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn aalineColor(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - color: uint32_t) - -> c_int; - pub fn aalineRGBA(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn thickLineColor(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - width: uint8_t, - color: uint32_t) - -> c_int; - pub fn thickLineRGBA(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - width: uint8_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn circleColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rad: int16_t, - color: uint32_t) - -> c_int; - pub fn circleRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rad: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn arcColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rad: int16_t, - start: int16_t, - end: int16_t, - color: uint32_t) - -> c_int; - pub fn arcRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rad: int16_t, - start: int16_t, - end: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn aacircleColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rad: int16_t, - color: uint32_t) - -> c_int; - pub fn aacircleRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rad: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn filledCircleColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - r: int16_t, - color: uint32_t) - -> c_int; - pub fn filledCircleRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rad: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn ellipseColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rx: int16_t, - ry: int16_t, - color: uint32_t) - -> c_int; - pub fn ellipseRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rx: int16_t, - ry: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn aaellipseColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rx: int16_t, - ry: int16_t, - color: uint32_t) - -> c_int; - pub fn aaellipseRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rx: int16_t, - ry: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn filledEllipseColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rx: int16_t, - ry: int16_t, - color: uint32_t) - -> c_int; - pub fn filledEllipseRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rx: int16_t, - ry: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn pieColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rad: int16_t, - start: int16_t, - end: int16_t, - color: uint32_t) - -> c_int; - pub fn pieRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rad: int16_t, - start: int16_t, - end: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn filledPieColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rad: int16_t, - start: int16_t, - end: int16_t, - color: uint32_t) - -> c_int; - pub fn filledPieRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - rad: int16_t, - start: int16_t, - end: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn trigonColor(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - x3: int16_t, - y3: int16_t, - color: uint32_t) - -> c_int; - pub fn trigonRGBA(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - x3: int16_t, - y3: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn aatrigonColor(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - x3: int16_t, - y3: int16_t, - color: uint32_t) - -> c_int; - pub fn aatrigonRGBA(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - x3: int16_t, - y3: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn filledTrigonColor(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - x3: int16_t, - y3: int16_t, - color: uint32_t) - -> c_int; - pub fn filledTrigonRGBA(renderer: *const SDL_Renderer, - x1: int16_t, - y1: int16_t, - x2: int16_t, - y2: int16_t, - x3: int16_t, - y3: int16_t, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn polygonColor(renderer: *const SDL_Renderer, - vx: *const int16_t, - vy: *const int16_t, - n: c_int, - color: uint32_t) - -> c_int; - pub fn polygonRGBA(renderer: *const SDL_Renderer, - vx: *const int16_t, - vy: *const int16_t, - n: c_int, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn aapolygonColor(renderer: *const SDL_Renderer, - vx: *const int16_t, - vy: *const int16_t, - n: c_int, - color: uint32_t) - -> c_int; - pub fn aapolygonRGBA(renderer: *const SDL_Renderer, - vx: *const int16_t, - vy: *const int16_t, - n: c_int, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn filledPolygonColor(renderer: *const SDL_Renderer, - vx: *const int16_t, - vy: *const int16_t, - n: c_int, - color: uint32_t) - -> c_int; - pub fn filledPolygonRGBA(renderer: *const SDL_Renderer, - vx: *const int16_t, - vy: *const int16_t, - n: c_int, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn texturedPolygon(renderer: *const SDL_Renderer, - vx: *const int16_t, - vy: *const int16_t, - n: c_int, - texture: *mut SDL_Surface, - texture_dx: c_int, - texture_dy: c_int) - -> c_int; - pub fn bezierColor(renderer: *const SDL_Renderer, - vx: *const int16_t, - vy: *const int16_t, - n: c_int, - s: c_int, - color: uint32_t) - -> c_int; - pub fn bezierRGBA(renderer: *const SDL_Renderer, - vx: *const int16_t, - vy: *const int16_t, - n: c_int, - s: c_int, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn gfxPrimitivesSetFont(fontdata: *const c_void, cw: uint32_t, ch: uint32_t); - pub fn gfxPrimitivesSetFontRotation(rotation: uint32_t); - pub fn characterColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - c: c_char, - color: uint32_t) - -> c_int; - pub fn characterRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - c: c_char, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - pub fn stringColor(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - s: *mut c_char, - color: uint32_t) - -> c_int; - pub fn stringRGBA(renderer: *const SDL_Renderer, - x: int16_t, - y: int16_t, - s: *mut c_char, - r: uint8_t, - g: uint8_t, - b: uint8_t, - a: uint8_t) - -> c_int; - } -} +use sys::gfx::primitives; /// generic Color type pub trait ToColor { @@ -699,15 +204,15 @@ pub trait DrawRenderer { impl DrawRenderer for Canvas where T: ::render::RenderTarget { fn pixel(&self, x: i16, y: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::pixelColor(self.raw(), x, y, color.as_u32()) }; + let ret = unsafe { primitives::pixelColor(self.raw(), x, y, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn hline(&self, x1: i16, x2: i16, y: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::hlineColor(self.raw(), x1, x2, y, color.as_u32()) }; + let ret = unsafe { primitives::hlineColor(self.raw(), x1, x2, y, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn vline(&self, x: i16, y1: i16, y2: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::vlineColor(self.raw(), x, y1, y2, color.as_u32()) }; + let ret = unsafe { primitives::vlineColor(self.raw(), x, y1, y2, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn rectangle(&self, @@ -717,7 +222,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { y2: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::rectangleColor(self.raw(), x1, y1, x2, y2, color.as_u32()) }; + let ret = unsafe { primitives::rectangleColor(self.raw(), x1, y1, x2, y2, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn rounded_rectangle(&self, @@ -729,11 +234,11 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { color: C) -> Result<(), String> { let ret = - unsafe { ll::roundedRectangleColor(self.raw(), x1, y1, x2, y2, rad, color.as_u32()) }; + unsafe { primitives::roundedRectangleColor(self.raw(), x1, y1, x2, y2, rad, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn box_(&self, x1: i16, y1: i16, x2: i16, y2: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::boxColor(self.raw(), x1, y1, x2, y2, color.as_u32()) }; + let ret = unsafe { primitives::boxColor(self.raw(), x1, y1, x2, y2, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn rounded_box(&self, @@ -744,11 +249,11 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { rad: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::roundedBoxColor(self.raw(), x1, y1, x2, y2, rad, color.as_u32()) }; + let ret = unsafe { primitives::roundedBoxColor(self.raw(), x1, y1, x2, y2, rad, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn line(&self, x1: i16, y1: i16, x2: i16, y2: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::lineColor(self.raw(), x1, y1, x2, y2, color.as_u32()) }; + let ret = unsafe { primitives::lineColor(self.raw(), x1, y1, x2, y2, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn aa_line(&self, @@ -758,7 +263,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { y2: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::aalineColor(self.raw(), x1, y1, x2, y2, color.as_u32()) }; + let ret = unsafe { primitives::aalineColor(self.raw(), x1, y1, x2, y2, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn thick_line(&self, @@ -769,19 +274,19 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { width: u8, color: C) -> Result<(), String> { - let ret = unsafe { ll::thickLineColor(self.raw(), x1, y1, x2, y2, width, color.as_u32()) }; + let ret = unsafe { primitives::thickLineColor(self.raw(), x1, y1, x2, y2, width, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn circle(&self, x: i16, y: i16, rad: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::circleColor(self.raw(), x, y, rad, color.as_u32()) }; + let ret = unsafe { primitives::circleColor(self.raw(), x, y, rad, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn aa_circle(&self, x: i16, y: i16, rad: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::aacircleColor(self.raw(), x, y, rad, color.as_u32()) }; + let ret = unsafe { primitives::aacircleColor(self.raw(), x, y, rad, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn filled_circle(&self, x: i16, y: i16, rad: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::filledCircleColor(self.raw(), x, y, rad, color.as_u32()) }; + let ret = unsafe { primitives::filledCircleColor(self.raw(), x, y, rad, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn arc(&self, @@ -792,7 +297,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { end: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::arcColor(self.raw(), x, y, rad, start, end, color.as_u32()) }; + let ret = unsafe { primitives::arcColor(self.raw(), x, y, rad, start, end, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn ellipse(&self, @@ -802,7 +307,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { ry: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::ellipseColor(self.raw(), x, y, rx, ry, color.as_u32()) }; + let ret = unsafe { primitives::ellipseColor(self.raw(), x, y, rx, ry, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn aa_ellipse(&self, @@ -812,7 +317,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { ry: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::aaellipseColor(self.raw(), x, y, rx, ry, color.as_u32()) }; + let ret = unsafe { primitives::aaellipseColor(self.raw(), x, y, rx, ry, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn filled_ellipse(&self, @@ -822,7 +327,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { ry: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::filledEllipseColor(self.raw(), x, y, rx, ry, color.as_u32()) }; + let ret = unsafe { primitives::filledEllipseColor(self.raw(), x, y, rx, ry, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn pie(&self, @@ -833,7 +338,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { end: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::pieColor(self.raw(), x, y, rad, start, end, color.as_u32()) }; + let ret = unsafe { primitives::pieColor(self.raw(), x, y, rad, start, end, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn filled_pie(&self, @@ -844,7 +349,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { end: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::filledPieColor(self.raw(), x, y, rad, start, end, color.as_u32()) }; + let ret = unsafe { primitives::filledPieColor(self.raw(), x, y, rad, start, end, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn trigon(&self, @@ -856,7 +361,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { y3: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::trigonColor(self.raw(), x1, y1, x2, y2, x3, y3, color.as_u32()) }; + let ret = unsafe { primitives::trigonColor(self.raw(), x1, y1, x2, y2, x3, y3, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn aa_trigon(&self, @@ -868,7 +373,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { y3: i16, color: C) -> Result<(), String> { - let ret = unsafe { ll::aatrigonColor(self.raw(), x1, y1, x2, y2, x3, y3, color.as_u32()) }; + let ret = unsafe { primitives::aatrigonColor(self.raw(), x1, y1, x2, y2, x3, y3, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } fn filled_trigon(&self, @@ -881,7 +386,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { color: C) -> Result<(), String> { let ret = - unsafe { ll::filledTrigonColor(self.raw(), x1, y1, x2, y2, x3, y3, color.as_u32()) }; + unsafe { primitives::filledTrigonColor(self.raw(), x1, y1, x2, y2, x3, y3, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } // FIXME: may we use pointer tuple? @@ -889,7 +394,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { assert_eq!(vx.len(), vy.len()); let n = vx.len() as c_int; let ret = - unsafe { ll::polygonColor(self.raw(), vx.as_ptr(), vy.as_ptr(), n, color.as_u32()) }; + unsafe { primitives::polygonColor(self.raw(), vx.as_ptr(), vy.as_ptr(), n, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } @@ -897,7 +402,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { assert_eq!(vx.len(), vy.len()); let n = vx.len() as c_int; let ret = - unsafe { ll::aapolygonColor(self.raw(), vx.as_ptr(), vy.as_ptr(), n, color.as_u32()) }; + unsafe { primitives::aapolygonColor(self.raw(), vx.as_ptr(), vy.as_ptr(), n, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } @@ -905,7 +410,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { assert_eq!(vx.len(), vy.len()); let n = vx.len() as c_int; let ret = unsafe { - ll::filledPolygonColor(self.raw(), vx.as_ptr(), vy.as_ptr(), n, color.as_u32()) + primitives::filledPolygonColor(self.raw(), vx.as_ptr(), vy.as_ptr(), n, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } @@ -925,7 +430,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { assert_eq!(vx.len(), vy.len()); let n = vx.len() as c_int; let ret = unsafe { - ll::bezierColor(self.raw(), + primitives::bezierColor(self.raw(), vx.as_ptr(), vy.as_ptr(), n, @@ -936,7 +441,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { } fn character(&self, x: i16, y: i16, c: char, color: C) -> Result<(), String> { - let ret = unsafe { ll::characterColor(self.raw(), x, y, c as c_char, color.as_u32()) }; + let ret = unsafe { primitives::characterColor(self.raw(), x, y, c as c_char, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } @@ -944,7 +449,7 @@ impl DrawRenderer for Canvas where T: ::render::RenderTarget { let ret = unsafe { let cstring = CString::new(s).unwrap(); let buf = cstring.as_bytes().as_ptr(); - ll::stringColor(self.raw(), x, y, buf as *mut c_char, color.as_u32()) + primitives::stringColor(self.raw(), x, y, buf as *mut c_char, color.as_u32()) }; if ret == 0 { Ok(()) } else { Err(get_error()) } } @@ -958,10 +463,10 @@ pub fn set_font<'b, F>(fontdata: F, cw: u32, ch: u32) None => ptr::null(), Some(v) => v.as_ptr(), }; - unsafe { ll::gfxPrimitivesSetFont(actual_fontdata as *const c_void, cw, ch) } + unsafe { primitives::gfxPrimitivesSetFont(actual_fontdata as *const c_void, cw, ch) } } /// Sets current global font character rotation steps. pub fn set_font_rotation(rotation: u32) { - unsafe { ll::gfxPrimitivesSetFontRotation(rotation as u32) } + unsafe { primitives::gfxPrimitivesSetFontRotation(rotation as u32) } } diff --git a/src/sdl2/gfx/rotozoom.rs b/src/sdl2/gfx/rotozoom.rs index 8ffe8d05444..347ce324fa4 100644 --- a/src/sdl2/gfx/rotozoom.rs +++ b/src/sdl2/gfx/rotozoom.rs @@ -4,38 +4,9 @@ use libc::c_int; use ::surface::Surface; use ::get_error; pub use std::f64::consts::PI; +use sys::gfx::rotozoom; -mod ll { - /* automatically generated by rust-bindgen */ - - use libc::*; - use sys::SDL_Surface; - extern "C" { - pub fn rotozoomSurface(src: *mut SDL_Surface, angle: c_double, - zoom: c_double, smooth: c_int) -> *mut SDL_Surface; - pub fn rotozoomSurfaceXY(src: *mut SDL_Surface, angle: c_double, - zoomx: c_double, zoomy: c_double, smooth: c_int) - -> *mut SDL_Surface; - pub fn rotozoomSurfaceSize(width: c_int, height: c_int, angle: c_double, - zoom: c_double, dstwidth: *mut c_int, - dstheight: *mut c_int); - pub fn rotozoomSurfaceSizeXY(width: c_int, height: c_int, angle: c_double, - zoomx: c_double, zoomy: c_double, - dstwidth: *mut c_int, dstheight: *mut c_int); - pub fn zoomSurface(src: *mut SDL_Surface, zoomx: c_double, - zoomy: c_double, smooth: c_int) -> *mut SDL_Surface; - pub fn zoomSurfaceSize(width: c_int, height: c_int, zoomx: c_double, - zoomy: c_double, dstwidth: *mut c_int, - dstheight: *mut c_int); - pub fn shrinkSurface(src: *mut SDL_Surface, factorx: c_int, - factory: c_int) -> *mut SDL_Surface; - pub fn rotateSurface90Degrees(src: *mut SDL_Surface, - numClockwiseTurns: c_int) -> - *mut SDL_Surface; - } -} - /// `RotozoomSurface` for work with rust-sdl2 Surface type pub trait RotozoomSurface { /// Rotates and zooms a surface and optional anti-aliasing. @@ -53,7 +24,7 @@ pub trait RotozoomSurface { impl<'a> RotozoomSurface for Surface<'a> { fn rotozoom(&self, angle: f64, zoom: f64, smooth: bool) -> Result { let raw = unsafe { - ll::rotozoomSurface(self.raw(), angle, zoom, smooth as c_int) + rotozoom::rotozoomSurface(self.raw(), angle, zoom, smooth as c_int) }; if (raw as *mut ()).is_null() { Err(get_error()) @@ -63,7 +34,7 @@ impl<'a> RotozoomSurface for Surface<'a> { } fn rotozoom_xy(&self, angle: f64, zoomx: f64, zoomy: f64, smooth: bool) -> Result { let raw = unsafe { - ll::rotozoomSurfaceXY(self.raw(), angle, zoomx, zoomy, smooth as c_int) + rotozoom::rotozoomSurfaceXY(self.raw(), angle, zoomx, zoomy, smooth as c_int) }; if (raw as *mut ()).is_null() { Err(get_error()) @@ -73,7 +44,7 @@ impl<'a> RotozoomSurface for Surface<'a> { } fn zoom(&self, zoomx: f64, zoomy: f64, smooth: bool) -> Result { let raw = unsafe { - ll::zoomSurface(self.raw(), zoomx, zoomy, smooth as c_int) + rotozoom::zoomSurface(self.raw(), zoomx, zoomy, smooth as c_int) }; if (raw as *mut ()).is_null() { Err(get_error()) @@ -83,7 +54,7 @@ impl<'a> RotozoomSurface for Surface<'a> { } fn shrink(&self, factorx: i32, factory: i32) -> Result { let raw = unsafe { - ll::shrinkSurface(self.raw(), factorx as c_int, factory as c_int) + rotozoom::shrinkSurface(self.raw(), factorx as c_int, factory as c_int) }; if (raw as *mut ()).is_null() { Err(get_error()) @@ -93,7 +64,7 @@ impl<'a> RotozoomSurface for Surface<'a> { } fn rotate_90deg(&self, turns: i32) -> Result { let raw = unsafe { - ll::rotateSurface90Degrees(self.raw(), turns as c_int) + rotozoom::rotateSurface90Degrees(self.raw(), turns as c_int) }; if (raw as *mut ()).is_null() { Err(get_error()) @@ -106,20 +77,20 @@ impl<'a> RotozoomSurface for Surface<'a> { pub fn get_zoom_size(width: i32, height: i32, zoomx: f64, zoomy: f64) -> (i32, i32) { let mut w: c_int = 0; let mut h: c_int = 0; - unsafe { ll::zoomSurfaceSize(width as c_int, height as c_int, zoomx, zoomy, &mut w, &mut h) } + unsafe { rotozoom::zoomSurfaceSize(width as c_int, height as c_int, zoomx, zoomy, &mut w, &mut h) } (w as i32, h as i32) } pub fn get_rotozoom_size(width: i32, height: i32, angle: f64, zoom: f64) -> (i32, i32) { let mut w: c_int = 0; let mut h: c_int = 0; - unsafe { ll::rotozoomSurfaceSize(width as c_int, height as c_int, angle, zoom, &mut w, &mut h) } + unsafe { rotozoom::rotozoomSurfaceSize(width as c_int, height as c_int, angle, zoom, &mut w, &mut h) } (w as i32, h as i32) } pub fn get_rotozoom_xy_size(width: i32, height: i32, angle: f64, zoomx: f64, zoomy: f64) -> (i32, i32) { let mut w: c_int = 0; let mut h: c_int = 0; - unsafe { ll::rotozoomSurfaceSizeXY(width as c_int, height as c_int, angle, zoomx, zoomy, &mut w, &mut h) } + unsafe { rotozoom::rotozoomSurfaceSizeXY(width as c_int, height as c_int, angle, zoomx, zoomy, &mut w, &mut h) } (w as i32, h as i32) } From d0967697867c8b9cd7aa0ff8f1f6d5676c351dcc Mon Sep 17 00:00:00 2001 From: Jon Emil Jahren Date: Mon, 2 Apr 2018 07:29:31 +0200 Subject: [PATCH 07/19] Convert SDL_image bindings into autogenerated ones I'm not sure if this is the intended way of using bindgen, but the SDL_image bindings now piggy-back on the core SDL bindings by blacklisting some types that gets dragged into the image module. The solution probably does not scale, but it might be preferable to have autoupdateable bindings rather than having to do it manually. Progresses on #647 --- sdl2-sys/build.rs | 37 ++++++- sdl2-sys/sdl_image_bindings.rs | 182 +++++++++++++++++++++++++++++++++ sdl2-sys/src/image.rs | 86 +--------------- sdl2-sys/wrapper_image.h | 1 + src/sdl2/image/mod.rs | 10 +- 5 files changed, 226 insertions(+), 90 deletions(-) create mode 100644 sdl2-sys/sdl_image_bindings.rs create mode 100644 sdl2-sys/wrapper_image.h diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 8af05a298a5..83567a3f4ee 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -281,6 +281,9 @@ fn copy_pregenerated_bindings() { let crate_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()); fs::copy(crate_path.join("pregenerated_bindings.rs"), out_path.join("bindings.rs")) .expect("Couldn't find pregenerated bindings!"); + + fs::copy(crate_path.join("sdl_image_bindings.rs"), out_path.join("image_bindings.rs")) + .expect("Couldn't find pregenerated SDL_image bindings!"); } #[cfg(feature = "bindgen")] @@ -289,11 +292,15 @@ fn copy_pregenerated_bindings() { fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str, headers_paths: &[S]) { let target_os = get_os_from_triple(target).unwrap(); let mut bindings = bindgen::Builder::default(); + let mut image_bindings = bindgen::Builder::default(); // Set correct target triple for bindgen when cross-compiling if target != host { bindings = bindings.clang_arg("-target"); bindings = bindings.clang_arg(target.clone()); + + image_bindings = image_bindings.clang_arg("-target"); + image_bindings = image_bindings.clang_arg(target.clone()); } if headers_paths.len() == 0 { @@ -302,10 +309,12 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str include_path.push(format!("SDL2-{}", SDL2_HEADERS_BUNDLED_VERSION)); include_path.push("include"); bindings = bindings.clang_arg(format!("-I{}", include_path.display())); + image_bindings = image_bindings.clang_arg(format!("-I{}", include_path.display())); } else { // if paths are included, use them for bindgen. Bindgen should use the first one. for headers_path in headers_paths { - bindings = bindings.clang_arg(format!("-I{}", headers_path.as_ref())) + bindings = bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + image_bindings = image_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); } } @@ -315,12 +324,20 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str bindings = bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); bindings = bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); bindings = bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); + + image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); + image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); + image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); + image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); + image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); }; // SDL2 hasn't a default configuration for Linux if target_os == "linux-gnu" { bindings = bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); bindings = bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + image_bindings = image_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + image_bindings = image_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); } let bindings = bindings @@ -335,6 +352,24 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str bindings .write_to_file(out_path.join("bindings.rs")) .expect("Couldn't write bindings!"); + + let image_bindings = image_bindings + .header("wrapper_image.h") + .blacklist_type("max_align_t") // Until https://github.com/rust-lang-nursery/rust-bindgen/issues/550 gets fixed + .whitelist_type("IMG.*") + .whitelist_function("IMG.*") + .whitelist_var("IMG.*") + .blacklist_type("SDL_.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate image_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + image_bindings + .write_to_file(out_path.join("image_bindings.rs")) + .expect("Couldn't write image_bindings!"); + } fn get_os_from_triple(triple: &str) -> Option<&str> diff --git a/sdl2-sys/sdl_image_bindings.rs b/sdl2-sys/sdl_image_bindings.rs new file mode 100644 index 00000000000..0b482607cb9 --- /dev/null +++ b/sdl2-sys/sdl_image_bindings.rs @@ -0,0 +1,182 @@ +/* automatically generated by rust-bindgen */ + +pub type __uint8_t = ::std::os::raw::c_uchar; +pub type __uint32_t = ::std::os::raw::c_uint; +pub type __int64_t = ::std::os::raw::c_long; +pub type __off_t = ::std::os::raw::c_long; +pub type __off64_t = ::std::os::raw::c_long; +pub type Uint8 = u8; +pub type Uint32 = u32; +pub type Sint64 = i64; +extern "C" { + pub fn IMG_Linked_Version() -> *const SDL_version; +} +pub const IMG_InitFlags_IMG_INIT_JPG: IMG_InitFlags = 1; +pub const IMG_InitFlags_IMG_INIT_PNG: IMG_InitFlags = 2; +pub const IMG_InitFlags_IMG_INIT_TIF: IMG_InitFlags = 4; +pub const IMG_InitFlags_IMG_INIT_WEBP: IMG_InitFlags = 8; +pub type IMG_InitFlags = u32; +extern "C" { + pub fn IMG_Init(flags: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_Quit(); +} +extern "C" { + pub fn IMG_LoadTyped_RW( + src: *mut SDL_RWops, + freesrc: ::std::os::raw::c_int, + type_: *const ::std::os::raw::c_char, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_Load(file: *const ::std::os::raw::c_char) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_Load_RW(src: *mut SDL_RWops, freesrc: ::std::os::raw::c_int) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadTexture( + renderer: *mut SDL_Renderer, + file: *const ::std::os::raw::c_char, + ) -> *mut SDL_Texture; +} +extern "C" { + pub fn IMG_LoadTexture_RW( + renderer: *mut SDL_Renderer, + src: *mut SDL_RWops, + freesrc: ::std::os::raw::c_int, + ) -> *mut SDL_Texture; +} +extern "C" { + pub fn IMG_LoadTextureTyped_RW( + renderer: *mut SDL_Renderer, + src: *mut SDL_RWops, + freesrc: ::std::os::raw::c_int, + type_: *const ::std::os::raw::c_char, + ) -> *mut SDL_Texture; +} +extern "C" { + pub fn IMG_isICO(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isCUR(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isBMP(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isGIF(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isJPG(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isLBM(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isPCX(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isPNG(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isPNM(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isSVG(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isTIF(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isXCF(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isXPM(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isXV(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_isWEBP(src: *mut SDL_RWops) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_LoadICO_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadCUR_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadBMP_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadGIF_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadJPG_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadLBM_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadPCX_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadPNG_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadPNM_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadSVG_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadTGA_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadTIF_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadXCF_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadXPM_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadXV_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_LoadWEBP_RW(src: *mut SDL_RWops) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_ReadXPMFromArray(xpm: *mut *mut ::std::os::raw::c_char) -> *mut SDL_Surface; +} +extern "C" { + pub fn IMG_SavePNG( + surface: *mut SDL_Surface, + file: *const ::std::os::raw::c_char, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_SavePNG_RW( + surface: *mut SDL_Surface, + dst: *mut SDL_RWops, + freedst: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_SaveJPG( + surface: *mut SDL_Surface, + file: *const ::std::os::raw::c_char, + quality: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn IMG_SaveJPG_RW( + surface: *mut SDL_Surface, + dst: *mut SDL_RWops, + freedst: ::std::os::raw::c_int, + quality: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} diff --git a/sdl2-sys/src/image.rs b/sdl2-sys/src/image.rs index d8ac87403dc..52d9199e9ad 100644 --- a/sdl2-sys/src/image.rs +++ b/sdl2-sys/src/image.rs @@ -1,84 +1,2 @@ -use std::os::raw::{c_int, c_char}; -use ::{SDL_RWops, SDL_Surface, SDL_Renderer, SDL_Texture}; - -pub type IMG_InitFlags = c_int; -pub const IMG_INIT_JPG: IMG_InitFlags = 0x00_00_00_01; -pub const IMG_INIT_PNG: IMG_InitFlags = 0x00_00_00_02; -pub const IMG_INIT_TIF: IMG_InitFlags = 0x00_00_00_04; -pub const IMG_INIT_WEBP: IMG_InitFlags = 0x00_00_00_08; - -extern "C" { - -// This function gets the version of the dynamically linked SDL_image library. -pub fn IMG_Linked_Version() -> *const ::SDL_version; - -// Loads dynamic libraries and prepares them for use. Flags should be -// one or more flags from IMG_InitFlags OR'd together. -// It returns the flags successfully initialized, or 0 on failure. -pub fn IMG_Init(flags: c_int) -> c_int; - -// Unloads libraries loaded with IMG_Init -pub fn IMG_Quit(); - -// Load an image from an SDL data source. -// The 'type' may be one of: "BMP", "GIF", "PNG", etc. -// If the image format supports a transparent pixel, SDL will set the -// colorkey for the surface. You can enable RLE acceleration on the -// surface afterwards by calling: -// SDL_SetColorKey(image, SDL_RLEACCEL, image->format->colorkey); -pub fn IMG_LoadTyped_RW(src: *const SDL_RWops, freesrc: c_int, - fmt: *const c_char) -> *mut SDL_Surface; - -// Convenience functions -pub fn IMG_Load(file: *const c_char) -> *mut SDL_Surface; -pub fn IMG_Load_RW(src: *const SDL_RWops, freesrc: c_int) -> *mut SDL_Surface; - -// Load an image directly into a render texture. -// Requires SDL2 -pub fn IMG_LoadTexture(renderer: *const SDL_Renderer, - file: *const c_char) -> *mut SDL_Texture; -pub fn IMG_LoadTexture_RW(renderer: *const SDL_Renderer, src: *const SDL_RWops, - freesrc: c_int) -> *const SDL_Texture; -pub fn IMG_LoadTextureTyped_RW(renderer: *const SDL_Renderer, src: *const SDL_RWops, - freesrc: c_int, fmt: *const c_char) -> *const SDL_Texture; - -// Functions to detect a file type, given a seekable source -pub fn IMG_isICO(src: *const SDL_RWops) -> c_int; -pub fn IMG_isCUR(src: *const SDL_RWops) -> c_int; -pub fn IMG_isBMP(src: *const SDL_RWops) -> c_int; -pub fn IMG_isGIF(src: *const SDL_RWops) -> c_int; -pub fn IMG_isJPG(src: *const SDL_RWops) -> c_int; -pub fn IMG_isLBM(src: *const SDL_RWops) -> c_int; -pub fn IMG_isPCX(src: *const SDL_RWops) -> c_int; -pub fn IMG_isPNG(src: *const SDL_RWops) -> c_int; -pub fn IMG_isPNM(src: *const SDL_RWops) -> c_int; -pub fn IMG_isTIF(src: *const SDL_RWops) -> c_int; -pub fn IMG_isXCF(src: *const SDL_RWops) -> c_int; -pub fn IMG_isXPM(src: *const SDL_RWops) -> c_int; -pub fn IMG_isXV(src: *const SDL_RWops) -> c_int; -pub fn IMG_isWEBP(src: *const SDL_RWops) -> c_int; - -// Individual loading functions -pub fn IMG_LoadICO_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadCUR_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadBMP_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadGIF_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadJPG_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadLBM_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadPCX_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadPNG_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadPNM_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadTGA_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadTIF_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadXCF_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadXPM_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadXV_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_LoadWEBP_RW(src: *const SDL_RWops) -> *mut SDL_Surface; -pub fn IMG_ReadXPMFromArray(xpm: *const *const c_char) -> *mut SDL_Surface; - -// Individual saving functions -pub fn IMG_SavePNG(surface: *mut SDL_Surface, file: *const c_char) -> c_int; -pub fn IMG_SavePNG_RW(surface: *mut SDL_Surface, dst: *const SDL_RWops, - freedst: c_int) -> c_int; - -} // extern "C" +use ::*; +include!(concat!(env!("OUT_DIR"), "/image_bindings.rs")); diff --git a/sdl2-sys/wrapper_image.h b/sdl2-sys/wrapper_image.h new file mode 100644 index 00000000000..db2bbf601ec --- /dev/null +++ b/sdl2-sys/wrapper_image.h @@ -0,0 +1 @@ +#include diff --git a/src/sdl2/image/mod.rs b/src/sdl2/image/mod.rs index b79c6963260..da30e6d5f0b 100644 --- a/src/sdl2/image/mod.rs +++ b/src/sdl2/image/mod.rs @@ -34,10 +34,10 @@ use sys; /// functionality to load. bitflags! { pub flags InitFlag : u32 { - const INIT_JPG = sys::image::IMG_INIT_JPG as u32, - const INIT_PNG = sys::image::IMG_INIT_PNG as u32, - const INIT_TIF = sys::image::IMG_INIT_TIF as u32, - const INIT_WEBP = sys::image::IMG_INIT_WEBP as u32 + const INIT_JPG = sys::image::IMG_InitFlags_IMG_INIT_JPG as u32, + const INIT_PNG = sys::image::IMG_InitFlags_IMG_INIT_PNG as u32, + const INIT_TIF = sys::image::IMG_InitFlags_IMG_INIT_TIF as u32, + const INIT_WEBP = sys::image::IMG_InitFlags_IMG_INIT_WEBP as u32 } } @@ -93,7 +93,7 @@ impl<'a> LoadSurface for Surface<'a> { fn from_xpm_array(xpm: *const *const i8) -> Result, String> { //! Loads an SDL Surface from XPM data unsafe { - let raw = sys::image::IMG_ReadXPMFromArray(xpm as *const *const c_char); + let raw = sys::image::IMG_ReadXPMFromArray(xpm as *mut *mut c_char); if (raw as *mut ()).is_null() { Err(get_error()) } else { From f2a7b7fd0ab85ff19fbaf1c6d97a530843cf3558 Mon Sep 17 00:00:00 2001 From: Jon Emil Jahren Date: Mon, 2 Apr 2018 08:13:55 +0200 Subject: [PATCH 08/19] Convert SDL_ttf bindings into autogenerated bindings Had to change some mutability of some raw pointers used, but the ttf demo seem to work. Progresses on #647 --- sdl2-sys/build.rs | 33 ++++ sdl2-sys/sdl_ttf_bindings.rs | 288 +++++++++++++++++++++++++++++++++++ sdl2-sys/src/ttf.rs | 99 +----------- sdl2-sys/wrapper_ttf.h | 1 + src/sdl2/ttf/font.rs | 24 +-- 5 files changed, 339 insertions(+), 106 deletions(-) create mode 100644 sdl2-sys/sdl_ttf_bindings.rs create mode 100644 sdl2-sys/wrapper_ttf.h diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 83567a3f4ee..894f0c545e6 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -284,6 +284,9 @@ fn copy_pregenerated_bindings() { fs::copy(crate_path.join("sdl_image_bindings.rs"), out_path.join("image_bindings.rs")) .expect("Couldn't find pregenerated SDL_image bindings!"); + + fs::copy(crate_path.join("sdl_ttf_bindings.rs"), out_path.join("ttf_bindings.rs")) + .expect("Couldn't find pregenerated SDL_ttf bindings!"); } #[cfg(feature = "bindgen")] @@ -293,6 +296,7 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str let target_os = get_os_from_triple(target).unwrap(); let mut bindings = bindgen::Builder::default(); let mut image_bindings = bindgen::Builder::default(); + let mut ttf_bindings = bindgen::Builder::default(); // Set correct target triple for bindgen when cross-compiling if target != host { @@ -301,6 +305,9 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str image_bindings = image_bindings.clang_arg("-target"); image_bindings = image_bindings.clang_arg(target.clone()); + + ttf_bindings = ttf_bindings.clang_arg("-target"); + ttf_bindings = ttf_bindings.clang_arg(target.clone()); } if headers_paths.len() == 0 { @@ -310,11 +317,13 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str include_path.push("include"); bindings = bindings.clang_arg(format!("-I{}", include_path.display())); image_bindings = image_bindings.clang_arg(format!("-I{}", include_path.display())); + ttf_bindings = ttf_bindings.clang_arg(format!("-I{}", include_path.display())); } else { // if paths are included, use them for bindgen. Bindgen should use the first one. for headers_path in headers_paths { bindings = bindings.clang_arg(format!("-I{}", headers_path.as_ref())); image_bindings = image_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + ttf_bindings = ttf_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); } } @@ -330,6 +339,12 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); + + ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); + ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); + ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); + ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); + ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); }; // SDL2 hasn't a default configuration for Linux @@ -338,6 +353,8 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str bindings = bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); image_bindings = image_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); image_bindings = image_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + ttf_bindings = ttf_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + ttf_bindings = ttf_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); } let bindings = bindings @@ -370,6 +387,22 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str .write_to_file(out_path.join("image_bindings.rs")) .expect("Couldn't write image_bindings!"); + let ttf_bindings = ttf_bindings + .header("wrapper_ttf.h") + .whitelist_type("TTF.*") + .whitelist_function("TTF.*") + .whitelist_var("TTF.*") + .blacklist_type("SDL_.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate ttf_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + ttf_bindings + .write_to_file(out_path.join("ttf_bindings.rs")) + .expect("Couldn't write ttf_bindings!"); + } fn get_os_from_triple(triple: &str) -> Option<&str> diff --git a/sdl2-sys/sdl_ttf_bindings.rs b/sdl2-sys/sdl_ttf_bindings.rs new file mode 100644 index 00000000000..2c43e41fb3c --- /dev/null +++ b/sdl2-sys/sdl_ttf_bindings.rs @@ -0,0 +1,288 @@ +/* automatically generated by rust-bindgen */ + +pub const TTF_MAJOR_VERSION: u32 = 2; +pub const TTF_MINOR_VERSION: u32 = 0; +pub const TTF_PATCHLEVEL: u32 = 14; +pub const TTF_STYLE_NORMAL: u32 = 0; +pub const TTF_STYLE_BOLD: u32 = 1; +pub const TTF_STYLE_ITALIC: u32 = 2; +pub const TTF_STYLE_UNDERLINE: u32 = 4; +pub const TTF_STYLE_STRIKETHROUGH: u32 = 8; +pub const TTF_HINTING_NORMAL: u32 = 0; +pub const TTF_HINTING_LIGHT: u32 = 1; +pub const TTF_HINTING_MONO: u32 = 2; +pub const TTF_HINTING_NONE: u32 = 3; +pub type __uint8_t = ::std::os::raw::c_uchar; +pub type __uint16_t = ::std::os::raw::c_ushort; +pub type __uint32_t = ::std::os::raw::c_uint; +pub type __int64_t = ::std::os::raw::c_long; +pub type __off_t = ::std::os::raw::c_long; +pub type __off64_t = ::std::os::raw::c_long; +pub type Uint8 = u8; +pub type Uint16 = u16; +pub type Uint32 = u32; +pub type Sint64 = i64; +extern "C" { + pub fn TTF_Linked_Version() -> *const SDL_version; +} +extern "C" { + pub fn TTF_ByteSwappedUNICODE(swapped: ::std::os::raw::c_int); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _TTF_Font { + _unused: [u8; 0], +} +pub type TTF_Font = _TTF_Font; +extern "C" { + pub fn TTF_Init() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_OpenFont( + file: *const ::std::os::raw::c_char, + ptsize: ::std::os::raw::c_int, + ) -> *mut TTF_Font; +} +extern "C" { + pub fn TTF_OpenFontIndex( + file: *const ::std::os::raw::c_char, + ptsize: ::std::os::raw::c_int, + index: ::std::os::raw::c_long, + ) -> *mut TTF_Font; +} +extern "C" { + pub fn TTF_OpenFontRW( + src: *mut SDL_RWops, + freesrc: ::std::os::raw::c_int, + ptsize: ::std::os::raw::c_int, + ) -> *mut TTF_Font; +} +extern "C" { + pub fn TTF_OpenFontIndexRW( + src: *mut SDL_RWops, + freesrc: ::std::os::raw::c_int, + ptsize: ::std::os::raw::c_int, + index: ::std::os::raw::c_long, + ) -> *mut TTF_Font; +} +extern "C" { + pub fn TTF_GetFontStyle(font: *const TTF_Font) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_SetFontStyle(font: *mut TTF_Font, style: ::std::os::raw::c_int); +} +extern "C" { + pub fn TTF_GetFontOutline(font: *const TTF_Font) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_SetFontOutline(font: *mut TTF_Font, outline: ::std::os::raw::c_int); +} +extern "C" { + pub fn TTF_GetFontHinting(font: *const TTF_Font) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_SetFontHinting(font: *mut TTF_Font, hinting: ::std::os::raw::c_int); +} +extern "C" { + pub fn TTF_FontHeight(font: *const TTF_Font) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_FontAscent(font: *const TTF_Font) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_FontDescent(font: *const TTF_Font) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_FontLineSkip(font: *const TTF_Font) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_GetFontKerning(font: *const TTF_Font) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_SetFontKerning(font: *mut TTF_Font, allowed: ::std::os::raw::c_int); +} +extern "C" { + pub fn TTF_FontFaces(font: *const TTF_Font) -> ::std::os::raw::c_long; +} +extern "C" { + pub fn TTF_FontFaceIsFixedWidth(font: *const TTF_Font) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_FontFaceFamilyName(font: *const TTF_Font) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn TTF_FontFaceStyleName(font: *const TTF_Font) -> *mut ::std::os::raw::c_char; +} +extern "C" { + pub fn TTF_GlyphIsProvided(font: *const TTF_Font, ch: Uint16) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_GlyphMetrics( + font: *mut TTF_Font, + ch: Uint16, + minx: *mut ::std::os::raw::c_int, + maxx: *mut ::std::os::raw::c_int, + miny: *mut ::std::os::raw::c_int, + maxy: *mut ::std::os::raw::c_int, + advance: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_SizeText( + font: *mut TTF_Font, + text: *const ::std::os::raw::c_char, + w: *mut ::std::os::raw::c_int, + h: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_SizeUTF8( + font: *mut TTF_Font, + text: *const ::std::os::raw::c_char, + w: *mut ::std::os::raw::c_int, + h: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_SizeUNICODE( + font: *mut TTF_Font, + text: *const Uint16, + w: *mut ::std::os::raw::c_int, + h: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_RenderText_Solid( + font: *mut TTF_Font, + text: *const ::std::os::raw::c_char, + fg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderUTF8_Solid( + font: *mut TTF_Font, + text: *const ::std::os::raw::c_char, + fg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderUNICODE_Solid( + font: *mut TTF_Font, + text: *const Uint16, + fg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderGlyph_Solid( + font: *mut TTF_Font, + ch: Uint16, + fg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderText_Shaded( + font: *mut TTF_Font, + text: *const ::std::os::raw::c_char, + fg: SDL_Color, + bg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderUTF8_Shaded( + font: *mut TTF_Font, + text: *const ::std::os::raw::c_char, + fg: SDL_Color, + bg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderUNICODE_Shaded( + font: *mut TTF_Font, + text: *const Uint16, + fg: SDL_Color, + bg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderGlyph_Shaded( + font: *mut TTF_Font, + ch: Uint16, + fg: SDL_Color, + bg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderText_Blended( + font: *mut TTF_Font, + text: *const ::std::os::raw::c_char, + fg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderUTF8_Blended( + font: *mut TTF_Font, + text: *const ::std::os::raw::c_char, + fg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderUNICODE_Blended( + font: *mut TTF_Font, + text: *const Uint16, + fg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderText_Blended_Wrapped( + font: *mut TTF_Font, + text: *const ::std::os::raw::c_char, + fg: SDL_Color, + wrapLength: Uint32, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderUTF8_Blended_Wrapped( + font: *mut TTF_Font, + text: *const ::std::os::raw::c_char, + fg: SDL_Color, + wrapLength: Uint32, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderUNICODE_Blended_Wrapped( + font: *mut TTF_Font, + text: *const Uint16, + fg: SDL_Color, + wrapLength: Uint32, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_RenderGlyph_Blended( + font: *mut TTF_Font, + ch: Uint16, + fg: SDL_Color, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn TTF_CloseFont(font: *mut TTF_Font); +} +extern "C" { + pub fn TTF_Quit(); +} +extern "C" { + pub fn TTF_WasInit() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_GetFontKerningSize( + font: *mut TTF_Font, + prev_index: ::std::os::raw::c_int, + index: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn TTF_GetFontKerningSizeGlyphs( + font: *mut TTF_Font, + previous_ch: Uint16, + ch: Uint16, + ) -> ::std::os::raw::c_int; +} diff --git a/sdl2-sys/src/ttf.rs b/sdl2-sys/src/ttf.rs index 7e08f871055..b612eb470a9 100644 --- a/sdl2-sys/src/ttf.rs +++ b/sdl2-sys/src/ttf.rs @@ -1,97 +1,2 @@ -use std::os::raw::{c_int, c_char, c_long, c_void}; -use ::{SDL_Surface, SDL_Color, SDL_RWops}; - - -pub const TTF_STYLE_NORMAL : c_int = 0x00; -pub const TTF_STYLE_BOLD : c_int = 0x01; -pub const TTF_STYLE_ITALIC : c_int = 0x02; -pub const TTF_STYLE_UNDERLINE : c_int = 0x04; -pub const TTF_STYLE_STRIKETHROUGH : c_int = 0x08; - -pub const TTF_HINTING_NORMAL : c_int = 0; -pub const TTF_HINTING_LIGHT : c_int = 1; -pub const TTF_HINTING_MONO : c_int = 2; -pub const TTF_HINTING_NONE : c_int = 3; - -pub type TTF_Font = c_void; -extern "C" { - pub fn TTF_Linked_Version() -> *const ::SDL_version; - pub fn TTF_ByteSwappedUNICODE(swapped: c_int); - pub fn TTF_Init() -> c_int; - pub fn TTF_OpenFont(file: *const c_char, ptsize: c_int) -> *const TTF_Font; - pub fn TTF_OpenFontIndex(file: *const c_char, ptsize: c_int, index: c_long) -> - *const TTF_Font; - pub fn TTF_OpenFontRW(src: *const SDL_RWops, freesrc: c_int, ptsize: c_int) - -> *const TTF_Font; - pub fn TTF_OpenFontIndexRW(src: *const SDL_RWops, freesrc: c_int, - ptsize: c_int, index: c_long) -> *const TTF_Font; - pub fn TTF_GetFontStyle(font: *const TTF_Font) -> c_int; - pub fn TTF_SetFontStyle(font: *const TTF_Font, style: c_int); - pub fn TTF_GetFontOutline(font: *const TTF_Font) -> c_int; - pub fn TTF_SetFontOutline(font: *const TTF_Font, outline: c_int); - pub fn TTF_GetFontHinting(font: *const TTF_Font) -> c_int; - pub fn TTF_SetFontHinting(font: *const TTF_Font, hinting: c_int); - pub fn TTF_FontHeight(font: *const TTF_Font) -> c_int; - pub fn TTF_FontAscent(font: *const TTF_Font) -> c_int; - pub fn TTF_FontDescent(font: *const TTF_Font) -> c_int; - pub fn TTF_FontLineSkip(font: *const TTF_Font) -> c_int; - pub fn TTF_GetFontKerning(font: *const TTF_Font) -> c_int; - pub fn TTF_SetFontKerning(font: *const TTF_Font, allowed: c_int); - pub fn TTF_FontFaces(font: *const TTF_Font) -> c_long; - pub fn TTF_FontFaceIsFixedWidth(font: *const TTF_Font) -> c_int; - pub fn TTF_FontFaceFamilyName(font: *const TTF_Font) -> *const c_char; - pub fn TTF_FontFaceStyleName(font: *const TTF_Font) -> *const c_char; - pub fn TTF_GlyphIsProvided(font: *const TTF_Font, ch: u16) -> c_int; - pub fn TTF_GlyphMetrics(font: *const TTF_Font, ch: u16, minx: *const c_int, - maxx: *const c_int, miny: *const c_int, - maxy: *const c_int, advance: *const c_int) -> c_int; - pub fn TTF_SizeText(font: *const TTF_Font, text: *const c_char, w: *const c_int, - h: *const c_int) -> c_int; - pub fn TTF_SizeUTF8(font: *const TTF_Font, text: *const c_char, w: *mut c_int, - h: *mut c_int) -> c_int; - pub fn TTF_SizeUNICODE(font: *const TTF_Font, text: *const u16, w: *mut c_int, - h: *mut c_int) -> c_int; - pub fn TTF_RenderText_Solid(font: *const TTF_Font, text: *const c_char, - fg: SDL_Color) -> *mut SDL_Surface; - pub fn TTF_RenderUTF8_Solid(font: *const TTF_Font, text: *const c_char, - fg: SDL_Color) -> *mut SDL_Surface; - pub fn TTF_RenderUNICODE_Solid(font: *const TTF_Font, text: *const u16, - fg: SDL_Color) -> *mut SDL_Surface; - pub fn TTF_RenderGlyph_Solid(font: *const TTF_Font, ch: u16, - fg: SDL_Color) -> *mut SDL_Surface; - pub fn TTF_RenderText_Shaded(font: *const TTF_Font, text: *const c_char, - fg: SDL_Color, bg: SDL_Color) -> - *mut SDL_Surface; - pub fn TTF_RenderUTF8_Shaded(font: *const TTF_Font, text: *const c_char, - fg: SDL_Color, bg: SDL_Color) -> - *mut SDL_Surface; - pub fn TTF_RenderUNICODE_Shaded(font: *const TTF_Font, text: *const u16, - fg: SDL_Color, bg: SDL_Color) -> - *mut SDL_Surface; - pub fn TTF_RenderGlyph_Shaded(font: *const TTF_Font, ch: u16, - fg: SDL_Color, bg: SDL_Color) -> - *mut SDL_Surface; - pub fn TTF_RenderText_Blended(font: *const TTF_Font, text: *const c_char, - fg: SDL_Color) -> *mut SDL_Surface; - pub fn TTF_RenderUTF8_Blended(font: *const TTF_Font, text: *const c_char, - fg: SDL_Color) -> *mut SDL_Surface; - pub fn TTF_RenderUNICODE_Blended(font: *const TTF_Font, text: *const u16, - fg: SDL_Color) -> *mut SDL_Surface; - pub fn TTF_RenderText_Blended_Wrapped(font: *const TTF_Font, text: *const c_char, - fg: SDL_Color, wrapLength: u32) - -> *mut SDL_Surface; - pub fn TTF_RenderUTF8_Blended_Wrapped(font: *const TTF_Font, text: *const c_char, - fg: SDL_Color, wrapLength: u32) - -> *mut SDL_Surface; - pub fn TTF_RenderUNICODE_Blended_Wrapped(font: *const TTF_Font, - text: *const u16, fg: SDL_Color, - wrapLength: u32) -> - *const SDL_Surface; - pub fn TTF_RenderGlyph_Blended(font: *const TTF_Font, ch: u16, - fg: SDL_Color) -> *mut SDL_Surface; - pub fn TTF_CloseFont(font: *const TTF_Font); - pub fn TTF_Quit(); - pub fn TTF_WasInit() -> c_int; - pub fn TTF_GetFontKerningSize(font: *const TTF_Font, prev_index: c_int, - index: c_int) -> c_int; -} +use ::*; +include!(concat!(env!("OUT_DIR"), "/ttf_bindings.rs")); diff --git a/sdl2-sys/wrapper_ttf.h b/sdl2-sys/wrapper_ttf.h new file mode 100644 index 00000000000..c30e28ed773 --- /dev/null +++ b/sdl2-sys/wrapper_ttf.h @@ -0,0 +1 @@ +#include diff --git a/src/sdl2/ttf/font.rs b/src/sdl2/ttf/font.rs index 8f0742225ce..37468e19d86 100644 --- a/src/sdl2/ttf/font.rs +++ b/src/sdl2/ttf/font.rs @@ -1,5 +1,5 @@ use std::ffi::{CString, CStr}; -use std::os::raw::{c_int, c_long}; +use std::os::raw::{c_uint, c_int, c_long}; use std::path::Path; use std::error; use std::error::Error; @@ -238,7 +238,7 @@ impl<'f,'text> PartialRendering<'f,'text> { /// A loaded TTF font. pub struct Font<'ttf_module,'rwops> { - raw: *const sys::ttf::TTF_Font, + raw: *mut sys::ttf::TTF_Font, // RWops is only stored here because it must not outlive // the Font struct, and this RWops should not be used by // anything else @@ -278,7 +278,7 @@ pub fn internal_load_font<'ttf,P:AsRef>(path: P, ptsize: u16) -> Result(raw: *const sys::ttf::TTF_Font, rwops: R) +pub fn internal_load_font_from_ll<'ttf,'r, R>(raw: *mut sys::ttf::TTF_Font, rwops: R) -> Font<'ttf,'r> where R: Into>> { Font { raw: raw, rwops: rwops.into(), _marker: PhantomData } @@ -302,7 +302,7 @@ pub fn internal_load_font_at_index<'ttf,P: AsRef>(path: P, index: u32, pts impl<'ttf,'r> Font<'ttf,'r> { /// Returns the underlying C font object. - unsafe fn raw(&self) -> *const sys::ttf::TTF_Font { + unsafe fn raw(&self) -> *mut sys::ttf::TTF_Font { self.raw } @@ -356,9 +356,9 @@ impl<'ttf,'r> Font<'ttf,'r> { -> FontResult<(u32, u32)> { let c_string = try!(RenderableText::Latin1(text).convert()); let (res, size) = unsafe { - let mut w = 0; // mutated by C code - let mut h = 0; // mutated by C code - let ret = sys::ttf::TTF_SizeText(self.raw, c_string.as_ptr(), &w, &h); + let mut w : i32 = 0; // mutated by C code + let mut h : i32 = 0; // mutated by C code + let ret = sys::ttf::TTF_SizeText(self.raw, c_string.as_ptr(), &w as *const _ as *mut i32, &h as *const _ as *mut i32); (ret, (w as u32, h as u32)) }; if res == 0 { @@ -408,7 +408,7 @@ impl<'ttf,'r> Font<'ttf,'r> { /// Returns the font's freetype hints. pub fn get_hinting(&self) -> Hinting { unsafe { - match sys::ttf::TTF_GetFontHinting(self.raw) as c_int { + match sys::ttf::TTF_GetFontHinting(self.raw) as c_uint { sys::ttf::TTF_HINTING_NORMAL => Hinting::Normal, sys::ttf::TTF_HINTING_LIGHT => Hinting::Light, sys::ttf::TTF_HINTING_MONO => Hinting::Mono, @@ -527,7 +527,13 @@ impl<'ttf,'r> Font<'ttf,'r> { let advance = 0; let ret = unsafe { sys::ttf::TTF_GlyphMetrics( - self.raw, ch as u16, &minx, &maxx, &miny, &maxy, &advance + self.raw, + ch as u16, + &minx as *const _ as *mut _, + &maxx as *const _ as *mut _, + &miny as *const _ as *mut _, + &maxy as *const _ as *mut _, + &advance as *const _ as *mut _ ) }; if ret == 0 { From a27c3c62a516b974d4e50dbf329dff73f5a39360 Mon Sep 17 00:00:00 2001 From: Jon Emil Jahren Date: Mon, 2 Apr 2018 09:07:34 +0200 Subject: [PATCH 09/19] Convert SDL_mixer bindings into autogenerated bindings Progresses on #647 --- examples/mixer-demo.rs | 4 +- sdl2-sys/build.rs | 35 +++ sdl2-sys/sdl_mixer_bindings.rs | 468 +++++++++++++++++++++++++++++++++ sdl2-sys/src/mixer.rs | 154 +---------- sdl2-sys/wrapper_mixer.h | 1 + src/sdl2/mixer/mod.rs | 76 +++--- 6 files changed, 544 insertions(+), 194 deletions(-) create mode 100644 sdl2-sys/sdl_mixer_bindings.rs create mode 100644 sdl2-sys/wrapper_mixer.h diff --git a/examples/mixer-demo.rs b/examples/mixer-demo.rs index 95918650463..4f455ae479b 100644 --- a/examples/mixer-demo.rs +++ b/examples/mixer-demo.rs @@ -4,7 +4,7 @@ extern crate sdl2; use std::env; use std::path::Path; -use sdl2::mixer::{DEFAULT_CHANNELS, INIT_MP3, INIT_FLAC, INIT_MOD, INIT_FLUIDSYNTH, INIT_MODPLUG, +use sdl2::mixer::{DEFAULT_CHANNELS, INIT_MP3, INIT_FLAC, INIT_MOD, INIT_OGG, AUDIO_S16LSB}; fn main() { @@ -33,7 +33,7 @@ fn demo(music_file: &Path, sound_file: Option<&Path>) { let chunk_size = 1_024; sdl2::mixer::open_audio(frequency, format, channels, chunk_size).unwrap(); let _mixer_context = sdl2::mixer::init( - INIT_MP3 | INIT_FLAC | INIT_MOD | INIT_FLUIDSYNTH | INIT_MODPLUG | INIT_OGG + INIT_MP3 | INIT_FLAC | INIT_MOD | INIT_OGG ).unwrap(); // Number of mixing channels available for sound effect `Chunk`s to play diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 894f0c545e6..ec00b86d036 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -287,6 +287,9 @@ fn copy_pregenerated_bindings() { fs::copy(crate_path.join("sdl_ttf_bindings.rs"), out_path.join("ttf_bindings.rs")) .expect("Couldn't find pregenerated SDL_ttf bindings!"); + + fs::copy(crate_path.join("sdl_mixer_bindings.rs"), out_path.join("mixer_bindings.rs")) + .expect("Couldn't find pregenerated SDL_mixer bindings!"); } #[cfg(feature = "bindgen")] @@ -297,6 +300,7 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str let mut bindings = bindgen::Builder::default(); let mut image_bindings = bindgen::Builder::default(); let mut ttf_bindings = bindgen::Builder::default(); + let mut mixer_bindings = bindgen::Builder::default(); // Set correct target triple for bindgen when cross-compiling if target != host { @@ -308,6 +312,9 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str ttf_bindings = ttf_bindings.clang_arg("-target"); ttf_bindings = ttf_bindings.clang_arg(target.clone()); + + mixer_bindings = mixer_bindings.clang_arg("-target"); + mixer_bindings = mixer_bindings.clang_arg(target.clone()); } if headers_paths.len() == 0 { @@ -318,12 +325,14 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str bindings = bindings.clang_arg(format!("-I{}", include_path.display())); image_bindings = image_bindings.clang_arg(format!("-I{}", include_path.display())); ttf_bindings = ttf_bindings.clang_arg(format!("-I{}", include_path.display())); + mixer_bindings = mixer_bindings.clang_arg(format!("-I{}", include_path.display())); } else { // if paths are included, use them for bindgen. Bindgen should use the first one. for headers_path in headers_paths { bindings = bindings.clang_arg(format!("-I{}", headers_path.as_ref())); image_bindings = image_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); ttf_bindings = ttf_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + mixer_bindings = mixer_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); } } @@ -345,6 +354,12 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); + + mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); + mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); + mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); + mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); + mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); }; // SDL2 hasn't a default configuration for Linux @@ -355,6 +370,8 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str image_bindings = image_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); ttf_bindings = ttf_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); ttf_bindings = ttf_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + mixer_bindings = mixer_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + mixer_bindings = mixer_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); } let bindings = bindings @@ -403,6 +420,24 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str .write_to_file(out_path.join("ttf_bindings.rs")) .expect("Couldn't write ttf_bindings!"); + let mixer_bindings = mixer_bindings + .header("wrapper_mixer.h") + .whitelist_type("MIX.*") + .whitelist_type("Mix.*") + .whitelist_type("MUS.*") + .whitelist_function("Mix.*") + .whitelist_var("MIX.*") + .whitelist_var("MUS.*") + .blacklist_type("SDL_.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate mixer_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + mixer_bindings + .write_to_file(out_path.join("mixer_bindings.rs")) + .expect("Couldn't write mixer_bindings!"); } fn get_os_from_triple(triple: &str) -> Option<&str> diff --git a/sdl2-sys/sdl_mixer_bindings.rs b/sdl2-sys/sdl_mixer_bindings.rs new file mode 100644 index 00000000000..1fc9f6a6f19 --- /dev/null +++ b/sdl2-sys/sdl_mixer_bindings.rs @@ -0,0 +1,468 @@ +/* automatically generated by rust-bindgen */ + +pub const MIX_MAJOR_VERSION: u32 = 2; +pub const MIX_MINOR_VERSION: u32 = 0; +pub const MIX_PATCHLEVEL: u32 = 2; +pub const MIX_CHANNELS: u32 = 8; +pub const MIX_DEFAULT_FREQUENCY: u32 = 22050; +pub const MIX_DEFAULT_FORMAT: u32 = 32784; +pub const MIX_DEFAULT_CHANNELS: u32 = 2; +pub const MIX_MAX_VOLUME: u32 = 128; +pub const MIX_CHANNEL_POST: i32 = -2; +pub const MIX_EFFECTSMAXSPEED: &'static [u8; 20usize] = b"MIX_EFFECTSMAXSPEED\0"; +pub type __uint8_t = ::std::os::raw::c_uchar; +pub type __int16_t = ::std::os::raw::c_short; +pub type __uint16_t = ::std::os::raw::c_ushort; +pub type __uint32_t = ::std::os::raw::c_uint; +pub type __int64_t = ::std::os::raw::c_long; +pub type __off_t = ::std::os::raw::c_long; +pub type __off64_t = ::std::os::raw::c_long; +pub type Uint8 = u8; +pub type Sint16 = i16; +pub type Uint16 = u16; +pub type Uint32 = u32; +pub type Sint64 = i64; +extern "C" { + pub fn Mix_Linked_Version() -> *const SDL_version; +} +pub const MIX_InitFlags_MIX_INIT_FLAC: MIX_InitFlags = 1; +pub const MIX_InitFlags_MIX_INIT_MOD: MIX_InitFlags = 2; +pub const MIX_InitFlags_MIX_INIT_MP3: MIX_InitFlags = 8; +pub const MIX_InitFlags_MIX_INIT_OGG: MIX_InitFlags = 16; +pub const MIX_InitFlags_MIX_INIT_MID: MIX_InitFlags = 32; +pub type MIX_InitFlags = u32; +extern "C" { + pub fn Mix_Init(flags: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_Quit(); +} +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct Mix_Chunk { + pub allocated: ::std::os::raw::c_int, + pub abuf: *mut Uint8, + pub alen: Uint32, + pub volume: Uint8, +} +#[test] +fn bindgen_test_layout_Mix_Chunk() { + assert_eq!( + ::std::mem::size_of::(), + 24usize, + concat!("Size of: ", stringify!(Mix_Chunk)) + ); + assert_eq!( + ::std::mem::align_of::(), + 8usize, + concat!("Alignment of ", stringify!(Mix_Chunk)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).allocated as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(Mix_Chunk), + "::", + stringify!(allocated) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).abuf as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(Mix_Chunk), + "::", + stringify!(abuf) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).alen as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(Mix_Chunk), + "::", + stringify!(alen) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).volume as *const _ as usize }, + 20usize, + concat!( + "Offset of field: ", + stringify!(Mix_Chunk), + "::", + stringify!(volume) + ) + ); +} +pub const Mix_Fading_MIX_NO_FADING: Mix_Fading = 0; +pub const Mix_Fading_MIX_FADING_OUT: Mix_Fading = 1; +pub const Mix_Fading_MIX_FADING_IN: Mix_Fading = 2; +pub type Mix_Fading = u32; +pub const Mix_MusicType_MUS_NONE: Mix_MusicType = 0; +pub const Mix_MusicType_MUS_CMD: Mix_MusicType = 1; +pub const Mix_MusicType_MUS_WAV: Mix_MusicType = 2; +pub const Mix_MusicType_MUS_MOD: Mix_MusicType = 3; +pub const Mix_MusicType_MUS_MID: Mix_MusicType = 4; +pub const Mix_MusicType_MUS_OGG: Mix_MusicType = 5; +pub const Mix_MusicType_MUS_MP3: Mix_MusicType = 6; +pub const Mix_MusicType_MUS_MP3_MAD_UNUSED: Mix_MusicType = 7; +pub const Mix_MusicType_MUS_FLAC: Mix_MusicType = 8; +pub const Mix_MusicType_MUS_MODPLUG_UNUSED: Mix_MusicType = 9; +pub type Mix_MusicType = u32; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct _Mix_Music { + _unused: [u8; 0], +} +pub type Mix_Music = _Mix_Music; +extern "C" { + pub fn Mix_OpenAudio( + frequency: ::std::os::raw::c_int, + format: Uint16, + channels: ::std::os::raw::c_int, + chunksize: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_OpenAudioDevice( + frequency: ::std::os::raw::c_int, + format: Uint16, + channels: ::std::os::raw::c_int, + chunksize: ::std::os::raw::c_int, + device: *const ::std::os::raw::c_char, + allowed_changes: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_AllocateChannels(numchans: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_QuerySpec( + frequency: *mut ::std::os::raw::c_int, + format: *mut Uint16, + channels: *mut ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_LoadWAV_RW(src: *mut SDL_RWops, freesrc: ::std::os::raw::c_int) -> *mut Mix_Chunk; +} +extern "C" { + pub fn Mix_LoadMUS(file: *const ::std::os::raw::c_char) -> *mut Mix_Music; +} +extern "C" { + pub fn Mix_LoadMUS_RW(src: *mut SDL_RWops, freesrc: ::std::os::raw::c_int) -> *mut Mix_Music; +} +extern "C" { + pub fn Mix_LoadMUSType_RW( + src: *mut SDL_RWops, + type_: Mix_MusicType, + freesrc: ::std::os::raw::c_int, + ) -> *mut Mix_Music; +} +extern "C" { + pub fn Mix_QuickLoad_WAV(mem: *mut Uint8) -> *mut Mix_Chunk; +} +extern "C" { + pub fn Mix_QuickLoad_RAW(mem: *mut Uint8, len: Uint32) -> *mut Mix_Chunk; +} +extern "C" { + pub fn Mix_FreeChunk(chunk: *mut Mix_Chunk); +} +extern "C" { + pub fn Mix_FreeMusic(music: *mut Mix_Music); +} +extern "C" { + pub fn Mix_GetNumChunkDecoders() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_GetChunkDecoder(index: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn Mix_HasChunkDecoder(name: *const ::std::os::raw::c_char) -> SDL_bool; +} +extern "C" { + pub fn Mix_GetNumMusicDecoders() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_GetMusicDecoder(index: ::std::os::raw::c_int) -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn Mix_HasMusicDecoder(name: *const ::std::os::raw::c_char) -> SDL_bool; +} +extern "C" { + pub fn Mix_GetMusicType(music: *const Mix_Music) -> Mix_MusicType; +} +extern "C" { + pub fn Mix_SetPostMix( + mix_func: ::std::option::Option< + unsafe extern "C" fn( + udata: *mut ::std::os::raw::c_void, + stream: *mut Uint8, + len: ::std::os::raw::c_int, + ), + >, + arg: *mut ::std::os::raw::c_void, + ); +} +extern "C" { + pub fn Mix_HookMusic( + mix_func: ::std::option::Option< + unsafe extern "C" fn( + udata: *mut ::std::os::raw::c_void, + stream: *mut Uint8, + len: ::std::os::raw::c_int, + ), + >, + arg: *mut ::std::os::raw::c_void, + ); +} +extern "C" { + pub fn Mix_HookMusicFinished(music_finished: ::std::option::Option); +} +extern "C" { + pub fn Mix_GetMusicHookData() -> *mut ::std::os::raw::c_void; +} +extern "C" { + pub fn Mix_ChannelFinished( + channel_finished: ::std::option::Option< + unsafe extern "C" fn(channel: ::std::os::raw::c_int), + >, + ); +} +pub type Mix_EffectFunc_t = ::std::option::Option< + unsafe extern "C" fn( + chan: ::std::os::raw::c_int, + stream: *mut ::std::os::raw::c_void, + len: ::std::os::raw::c_int, + udata: *mut ::std::os::raw::c_void, + ), +>; +pub type Mix_EffectDone_t = ::std::option::Option< + unsafe extern "C" fn(chan: ::std::os::raw::c_int, udata: *mut ::std::os::raw::c_void), +>; +extern "C" { + pub fn Mix_RegisterEffect( + chan: ::std::os::raw::c_int, + f: Mix_EffectFunc_t, + d: Mix_EffectDone_t, + arg: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_UnregisterEffect( + channel: ::std::os::raw::c_int, + f: Mix_EffectFunc_t, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_UnregisterAllEffects(channel: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_SetPanning( + channel: ::std::os::raw::c_int, + left: Uint8, + right: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_SetPosition( + channel: ::std::os::raw::c_int, + angle: Sint16, + distance: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_SetDistance( + channel: ::std::os::raw::c_int, + distance: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_SetReverseStereo( + channel: ::std::os::raw::c_int, + flip: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_ReserveChannels(num: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_GroupChannel( + which: ::std::os::raw::c_int, + tag: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_GroupChannels( + from: ::std::os::raw::c_int, + to: ::std::os::raw::c_int, + tag: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_GroupAvailable(tag: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_GroupCount(tag: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_GroupOldest(tag: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_GroupNewer(tag: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_PlayChannelTimed( + channel: ::std::os::raw::c_int, + chunk: *mut Mix_Chunk, + loops: ::std::os::raw::c_int, + ticks: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_PlayMusic( + music: *mut Mix_Music, + loops: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_FadeInMusic( + music: *mut Mix_Music, + loops: ::std::os::raw::c_int, + ms: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_FadeInMusicPos( + music: *mut Mix_Music, + loops: ::std::os::raw::c_int, + ms: ::std::os::raw::c_int, + position: f64, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_FadeInChannelTimed( + channel: ::std::os::raw::c_int, + chunk: *mut Mix_Chunk, + loops: ::std::os::raw::c_int, + ms: ::std::os::raw::c_int, + ticks: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_Volume( + channel: ::std::os::raw::c_int, + volume: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_VolumeChunk( + chunk: *mut Mix_Chunk, + volume: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_VolumeMusic(volume: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_HaltChannel(channel: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_HaltGroup(tag: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_HaltMusic() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_ExpireChannel( + channel: ::std::os::raw::c_int, + ticks: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_FadeOutChannel( + which: ::std::os::raw::c_int, + ms: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_FadeOutGroup( + tag: ::std::os::raw::c_int, + ms: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_FadeOutMusic(ms: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_FadingMusic() -> Mix_Fading; +} +extern "C" { + pub fn Mix_FadingChannel(which: ::std::os::raw::c_int) -> Mix_Fading; +} +extern "C" { + pub fn Mix_Pause(channel: ::std::os::raw::c_int); +} +extern "C" { + pub fn Mix_Resume(channel: ::std::os::raw::c_int); +} +extern "C" { + pub fn Mix_Paused(channel: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_PauseMusic(); +} +extern "C" { + pub fn Mix_ResumeMusic(); +} +extern "C" { + pub fn Mix_RewindMusic(); +} +extern "C" { + pub fn Mix_PausedMusic() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_SetMusicPosition(position: f64) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_Playing(channel: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_PlayingMusic() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_SetMusicCMD(command: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_SetSynchroValue(value: ::std::os::raw::c_int) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_GetSynchroValue() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_SetSoundFonts(paths: *const ::std::os::raw::c_char) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_GetSoundFonts() -> *const ::std::os::raw::c_char; +} +extern "C" { + pub fn Mix_EachSoundFont( + function: ::std::option::Option< + unsafe extern "C" fn( + arg1: *const ::std::os::raw::c_char, + arg2: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int, + >, + data: *mut ::std::os::raw::c_void, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn Mix_GetChunk(channel: ::std::os::raw::c_int) -> *mut Mix_Chunk; +} +extern "C" { + pub fn Mix_CloseAudio(); +} diff --git a/sdl2-sys/src/mixer.rs b/sdl2-sys/src/mixer.rs index e95087a7d43..3e9b1f381ce 100644 --- a/sdl2-sys/src/mixer.rs +++ b/sdl2-sys/src/mixer.rs @@ -1,152 +1,2 @@ -use std::os::raw::{c_uint, c_int, c_char, c_double, c_void}; - -pub type MIX_InitFlags = c_uint; -pub const MIX_INIT_FLAC: c_uint = 1; -pub const MIX_INIT_MOD: c_uint = 2; -pub const MIX_INIT_MODPLUG: c_uint = 4; -pub const MIX_INIT_MP3: c_uint = 8; -pub const MIX_INIT_OGG: c_uint = 16; -pub const MIX_INIT_FLUIDSYNTH: c_uint = 32; -#[repr(C)] -pub struct Struct_Mix_Chunk { - pub allocated: c_int, - pub abuf: *const u8, - pub alen: u32, - pub volume: u8, -} -pub type Mix_Chunk = Struct_Mix_Chunk; -pub type Mix_Fading = c_uint; -pub const MIX_NO_FADING: c_uint = 0; -pub const MIX_FADING_OUT: c_uint = 1; -pub const MIX_FADING_IN: c_uint = 2; -pub type Mix_MusicType = c_uint; -pub const MUS_NONE: c_uint = 0; -pub const MUS_CMD: c_uint = 1; -pub const MUS_WAV: c_uint = 2; -pub const MUS_MOD: c_uint = 3; -pub const MUS_MID: c_uint = 4; -pub const MUS_OGG: c_uint = 5; -pub const MUS_MP3: c_uint = 6; -pub const MUS_MP3_MAD: c_uint = 7; -pub const MUS_FLAC: c_uint = 8; -pub const MUS_MODPLUG: c_uint = 9; -pub type Struct__Mix_Music = c_void; -pub type Mix_Music = Struct__Mix_Music; -pub type Mix_EffectFunc_t = ::std::option::Option; -pub type Mix_EffectDone_t = ::std::option::Option; -extern "C" { - pub fn Mix_Linked_Version() -> *const ::SDL_version; - pub fn Mix_Init(flags: c_int) -> c_int; - pub fn Mix_Quit(); - pub fn Mix_OpenAudio(frequency: c_int, - format: u16, - channels: c_int, - chunksize: c_int) - -> c_int; - pub fn Mix_AllocateChannels(numchans: c_int) -> c_int; - pub fn Mix_QuerySpec(frequency: *mut c_int, - format: *mut u16, - channels: *mut c_int) - -> c_int; - pub fn Mix_LoadWAV_RW(src: *mut ::SDL_RWops, freesrc: c_int) -> *mut Mix_Chunk; - pub fn Mix_LoadMUS(file: *const c_char) -> *mut Mix_Music; - pub fn Mix_LoadMUS_RW(src: *mut ::SDL_RWops, freesrc: c_int) -> *mut Mix_Music; - pub fn Mix_LoadMUSType_RW(src: *mut ::SDL_RWops, - type_: Mix_MusicType, - freesrc: c_int) - -> *mut Mix_Music; - pub fn Mix_QuickLoad_WAV(mem: *mut u8) -> *mut Mix_Chunk; - pub fn Mix_QuickLoad_RAW(mem: *mut u8, len: u32) -> *mut Mix_Chunk; - pub fn Mix_FreeChunk(chunk: *mut Mix_Chunk); - pub fn Mix_FreeMusic(music: *mut Mix_Music); - pub fn Mix_GetNumChunkDecoders() -> c_int; - pub fn Mix_GetChunkDecoder(index: c_int) -> *const c_char; - pub fn Mix_GetNumMusicDecoders() -> c_int; - pub fn Mix_GetMusicDecoder(index: c_int) -> *const c_char; - pub fn Mix_GetMusicType(music: *const Mix_Music) -> Mix_MusicType; - pub fn Mix_SetPostMix(mix_func: Option, - arg: *mut c_void); - pub fn Mix_HookMusic(mix_func: Option, - arg: *mut c_void); - pub fn Mix_HookMusicFinished(music_finished: Option); - pub fn Mix_GetMusicHookData() -> *mut c_void; - pub fn Mix_ChannelFinished(channel_finished: Option); - pub fn Mix_RegisterEffect(chan: c_int, - f: Mix_EffectFunc_t, - d: Mix_EffectDone_t, - arg: *mut c_void) - -> c_int; - pub fn Mix_UnregisterEffect(channel: c_int, f: Mix_EffectFunc_t) -> c_int; - pub fn Mix_UnregisterAllEffects(channel: c_int) -> c_int; - pub fn Mix_SetPanning(channel: c_int, left: u8, right: u8) -> c_int; - pub fn Mix_SetPosition(channel: c_int, angle: i16, distance: u8) -> c_int; - pub fn Mix_SetDistance(channel: c_int, distance: u8) -> c_int; - pub fn Mix_SetReverseStereo(channel: c_int, flip: c_int) -> c_int; - pub fn Mix_ReserveChannels(num: c_int) -> c_int; - pub fn Mix_GroupChannel(which: c_int, tag: c_int) -> c_int; - pub fn Mix_GroupChannels(from: c_int, to: c_int, tag: c_int) -> c_int; - pub fn Mix_GroupAvailable(tag: c_int) -> c_int; - pub fn Mix_GroupCount(tag: c_int) -> c_int; - pub fn Mix_GroupOldest(tag: c_int) -> c_int; - pub fn Mix_GroupNewer(tag: c_int) -> c_int; - pub fn Mix_PlayChannelTimed(channel: c_int, - chunk: *mut Mix_Chunk, - loops: c_int, - ticks: c_int) - -> c_int; - pub fn Mix_PlayMusic(music: *mut Mix_Music, loops: c_int) -> c_int; - pub fn Mix_FadeInMusic(music: *mut Mix_Music, loops: c_int, ms: c_int) -> c_int; - pub fn Mix_FadeInMusicPos(music: *mut Mix_Music, - loops: c_int, - ms: c_int, - position: c_double) - -> c_int; - pub fn Mix_FadeInChannelTimed(channel: c_int, - chunk: *mut Mix_Chunk, - loops: c_int, - ms: c_int, - ticks: c_int) - -> c_int; - pub fn Mix_Volume(channel: c_int, volume: c_int) -> c_int; - pub fn Mix_VolumeChunk(chunk: *mut Mix_Chunk, volume: c_int) -> c_int; - pub fn Mix_VolumeMusic(volume: c_int) -> c_int; - pub fn Mix_HaltChannel(channel: c_int) -> c_int; - pub fn Mix_HaltGroup(tag: c_int) -> c_int; - pub fn Mix_HaltMusic() -> c_int; - pub fn Mix_ExpireChannel(channel: c_int, ticks: c_int) -> c_int; - pub fn Mix_FadeOutChannel(which: c_int, ms: c_int) -> c_int; - pub fn Mix_FadeOutGroup(tag: c_int, ms: c_int) -> c_int; - pub fn Mix_FadeOutMusic(ms: c_int) -> c_int; - pub fn Mix_FadingMusic() -> Mix_Fading; - pub fn Mix_FadingChannel(which: c_int) -> Mix_Fading; - pub fn Mix_Pause(channel: c_int); - pub fn Mix_Resume(channel: c_int); - pub fn Mix_Paused(channel: c_int) -> c_int; - pub fn Mix_PauseMusic(); - pub fn Mix_ResumeMusic(); - pub fn Mix_RewindMusic(); - pub fn Mix_PausedMusic() -> c_int; - pub fn Mix_SetMusicPosition(position: c_double) -> c_int; - pub fn Mix_Playing(channel: c_int) -> c_int; - pub fn Mix_PlayingMusic() -> c_int; - pub fn Mix_SetMusicCMD(command: *const c_char) -> c_int; - pub fn Mix_SetSynchroValue(value: c_int) -> c_int; - pub fn Mix_GetSynchroValue() -> c_int; - pub fn Mix_SetSoundFonts(paths: *const c_char) -> c_int; - pub fn Mix_GetSoundFonts() -> *const c_char; - pub fn Mix_EachSoundFont(function: Option c_int>, - data: *mut c_void) -> c_int; - pub fn Mix_GetChunk(channel: c_int) -> *mut Mix_Chunk; - pub fn Mix_CloseAudio(); -} +use ::*; +include!(concat!(env!("OUT_DIR"), "/mixer_bindings.rs")); diff --git a/sdl2-sys/wrapper_mixer.h b/sdl2-sys/wrapper_mixer.h new file mode 100644 index 00000000000..b873cefa5aa --- /dev/null +++ b/sdl2-sys/wrapper_mixer.h @@ -0,0 +1 @@ +#include diff --git a/src/sdl2/mixer/mod.rs b/src/sdl2/mixer/mod.rs index 5b1c61bebe8..5dd3ddaaba9 100644 --- a/src/sdl2/mixer/mod.rs +++ b/src/sdl2/mixer/mod.rs @@ -96,12 +96,11 @@ pub fn get_linked_version() -> Version { } bitflags!(pub flags InitFlag : u32 { - const INIT_FLAC = sys::mixer::MIX_INIT_FLAC as u32, - const INIT_MOD = sys::mixer::MIX_INIT_MOD as u32, - const INIT_MODPLUG = sys::mixer::MIX_INIT_MODPLUG as u32, - const INIT_MP3 = sys::mixer::MIX_INIT_MP3 as u32, - const INIT_OGG = sys::mixer::MIX_INIT_OGG as u32, - const INIT_FLUIDSYNTH = sys::mixer::MIX_INIT_FLUIDSYNTH as u32 + const INIT_FLAC = sys::mixer::MIX_InitFlags_MIX_INIT_FLAC as u32, + const INIT_MOD = sys::mixer::MIX_InitFlags_MIX_INIT_MOD as u32, + const INIT_MP3 = sys::mixer::MIX_InitFlags_MIX_INIT_MP3 as u32, + const INIT_OGG = sys::mixer::MIX_InitFlags_MIX_INIT_OGG as u32, + const INIT_MID = sys::mixer::MIX_InitFlags_MIX_INIT_MID as u32 }); impl ToString for InitFlag { @@ -113,17 +112,14 @@ impl ToString for InitFlag { if self.contains(INIT_MOD) { string = string + &"INIT_MOD ".to_string(); } - if self.contains(INIT_MODPLUG) { - string = string + &"INIT_MODPLUG ".to_string(); - } if self.contains(INIT_MP3) { string = string + &"INIT_MP3 ".to_string(); } if self.contains(INIT_OGG) { string = string + &"INIT_OGG ".to_string(); } - if self.contains(INIT_FLUIDSYNTH) { - string = string + &"INIT_FLUIDSYNTH ".to_string(); + if self.contains(INIT_MID) { + string = string + &"INIT_MID ".to_string(); } string } @@ -307,9 +303,9 @@ impl<'a> LoaderRWops<'a> for RWops<'a> { #[repr(i32)] #[derive(Debug, Copy, Clone, PartialEq, Hash)] pub enum Fading { - NoFading = sys::mixer::MIX_NO_FADING as i32, - FadingOut = sys::mixer::MIX_FADING_OUT as i32, - FadingIn = sys::mixer::MIX_FADING_IN as i32, + NoFading = sys::mixer::Mix_Fading_MIX_NO_FADING as i32, + FadingOut = sys::mixer::Mix_Fading_MIX_FADING_OUT as i32, + FadingIn = sys::mixer::Mix_Fading_MIX_FADING_IN as i32, } /// Sound effect channel. @@ -474,9 +470,9 @@ impl Channel { let Channel(ch) = self; let ret = unsafe { sys::mixer::Mix_FadingChannel(ch as c_int) as c_uint }; match ret { - sys::mixer::MIX_FADING_OUT => Fading::FadingOut, - sys::mixer::MIX_FADING_IN => Fading::FadingIn, - sys::mixer::MIX_NO_FADING | _ => Fading::NoFading + sys::mixer::Mix_Fading_MIX_FADING_OUT => Fading::FadingOut, + sys::mixer::Mix_Fading_MIX_FADING_IN => Fading::FadingIn, + sys::mixer::Mix_Fading_MIX_NO_FADING | _ => Fading::NoFading } } @@ -704,16 +700,16 @@ pub fn get_music_decoder(index: i32) -> String { #[repr(i32)] #[derive(Copy, Clone, PartialEq, Hash, Debug)] pub enum MusicType { - MusicNone = sys::mixer::MUS_NONE as i32, - MusicCmd = sys::mixer::MUS_CMD as i32, - MusicWav = sys::mixer::MUS_WAV as i32, - MusicMod = sys::mixer::MUS_MOD as i32, - MusicMid = sys::mixer::MUS_MID as i32, - MusicOgg = sys::mixer::MUS_OGG as i32, - MusicMp3 = sys::mixer::MUS_MP3 as i32, - MusicMp3Mad = sys::mixer::MUS_MP3_MAD as i32, - MusicFlac = sys::mixer::MUS_FLAC as i32, - MusicModPlug = sys::mixer::MUS_MODPLUG as i32, + MusicNone = sys::mixer::Mix_MusicType_MUS_NONE as i32, + MusicCmd = sys::mixer::Mix_MusicType_MUS_CMD as i32, + MusicWav = sys::mixer::Mix_MusicType_MUS_WAV as i32, + MusicMod = sys::mixer::Mix_MusicType_MUS_MOD as i32, + MusicMid = sys::mixer::Mix_MusicType_MUS_MID as i32, + MusicOgg = sys::mixer::Mix_MusicType_MUS_OGG as i32, + MusicMp3 = sys::mixer::Mix_MusicType_MUS_MP3 as i32, + MusicMp3Mad = sys::mixer::Mix_MusicType_MUS_MP3_MAD_UNUSED as i32, + MusicFlac = sys::mixer::Mix_MusicType_MUS_FLAC as i32, + MusicModPlug = sys::mixer::Mix_MusicType_MUS_MODPLUG_UNUSED as i32, } // hooks @@ -795,16 +791,16 @@ impl<'a> Music<'a> { pub fn get_type(&self) -> MusicType { let ret = unsafe { sys::mixer::Mix_GetMusicType(self.raw) as i32 } as c_uint; match ret { - sys::mixer::MUS_CMD => MusicType::MusicCmd, - sys::mixer::MUS_WAV => MusicType::MusicWav, - sys::mixer::MUS_MOD => MusicType::MusicMod, - sys::mixer::MUS_MID => MusicType::MusicMid, - sys::mixer::MUS_OGG => MusicType::MusicOgg, - sys::mixer::MUS_MP3 => MusicType::MusicMp3, - sys::mixer::MUS_MP3_MAD => MusicType::MusicMp3Mad, - sys::mixer::MUS_FLAC => MusicType::MusicFlac, - sys::mixer::MUS_MODPLUG => MusicType::MusicModPlug, - sys::mixer::MUS_NONE | _ => MusicType::MusicNone + sys::mixer::Mix_MusicType_MUS_CMD => MusicType::MusicCmd, + sys::mixer::Mix_MusicType_MUS_WAV => MusicType::MusicWav, + sys::mixer::Mix_MusicType_MUS_MOD => MusicType::MusicMod, + sys::mixer::Mix_MusicType_MUS_MID => MusicType::MusicMid, + sys::mixer::Mix_MusicType_MUS_OGG => MusicType::MusicOgg, + sys::mixer::Mix_MusicType_MUS_MP3 => MusicType::MusicMp3, + sys::mixer::Mix_MusicType_MUS_MP3_MAD_UNUSED => MusicType::MusicMp3Mad, + sys::mixer::Mix_MusicType_MUS_FLAC => MusicType::MusicFlac, + sys::mixer::Mix_MusicType_MUS_MODPLUG_UNUSED => MusicType::MusicModPlug, + sys::mixer::Mix_MusicType_MUS_NONE | _ => MusicType::MusicNone } } @@ -959,9 +955,9 @@ impl<'a> Music<'a> { pub fn get_fading() -> Fading { let ret = unsafe { sys::mixer::Mix_FadingMusic() as i32 } as c_uint; match ret { - sys::mixer::MIX_FADING_OUT => Fading::FadingOut, - sys::mixer::MIX_FADING_IN => Fading::FadingIn, - sys::mixer::MIX_NO_FADING | _ => Fading::NoFading + sys::mixer::Mix_Fading_MIX_FADING_OUT => Fading::FadingOut, + sys::mixer::Mix_Fading_MIX_FADING_IN => Fading::FadingIn, + sys::mixer::Mix_Fading_MIX_NO_FADING | _ => Fading::NoFading } } } From 0aab5ef28a3f00986713b7dc5ef08ee58c3fafc6 Mon Sep 17 00:00:00 2001 From: Jon Emil Jahren Date: Mon, 2 Apr 2018 10:41:23 +0200 Subject: [PATCH 10/19] Converted SDL_gfx to autogenerated bindings Renamed the binding files to be consistent. The build script could probably benefit from a good cleanup. Closes #647 --- sdl2-sys/build.rs | 160 ++++- ...egenerated_bindings.rs => sdl_bindings.rs} | 0 sdl2-sys/sdl_gfx_framerate_bindings.rs | 94 +++ sdl2-sys/sdl_gfx_imagefilter_bindings.rs | 231 ++++++ sdl2-sys/sdl_gfx_primitives_bindings.rs | 669 ++++++++++++++++++ sdl2-sys/sdl_gfx_rotozoom_bindings.rs | 75 ++ sdl2-sys/src/gfx/framerate.rs | 19 +- sdl2-sys/src/gfx/imagefilter.rs | 76 +- sdl2-sys/src/gfx/primitives.rs | 496 +------------ sdl2-sys/src/gfx/rotozoom.rs | 30 +- sdl2-sys/src/image.rs | 2 +- sdl2-sys/src/lib.rs | 2 +- sdl2-sys/src/mixer.rs | 2 +- sdl2-sys/src/ttf.rs | 2 +- sdl2-sys/wrapper_gfx_framerate.h | 1 + sdl2-sys/wrapper_gfx_imagefilter.h | 1 + sdl2-sys/wrapper_gfx_primitives.h | 2 + sdl2-sys/wrapper_gfx_rotozoom.h | 1 + 18 files changed, 1236 insertions(+), 627 deletions(-) rename sdl2-sys/{pregenerated_bindings.rs => sdl_bindings.rs} (100%) create mode 100644 sdl2-sys/sdl_gfx_framerate_bindings.rs create mode 100644 sdl2-sys/sdl_gfx_imagefilter_bindings.rs create mode 100644 sdl2-sys/sdl_gfx_primitives_bindings.rs create mode 100644 sdl2-sys/sdl_gfx_rotozoom_bindings.rs create mode 100644 sdl2-sys/wrapper_gfx_framerate.h create mode 100644 sdl2-sys/wrapper_gfx_imagefilter.h create mode 100644 sdl2-sys/wrapper_gfx_primitives.h create mode 100644 sdl2-sys/wrapper_gfx_rotozoom.h diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index ec00b86d036..175431123bb 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -279,17 +279,29 @@ fn main() { fn copy_pregenerated_bindings() { let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); let crate_path = PathBuf::from(env::var("CARGO_MANIFEST_DIR").unwrap()); - fs::copy(crate_path.join("pregenerated_bindings.rs"), out_path.join("bindings.rs")) + fs::copy(crate_path.join("sdl_bindings.rs"), out_path.join("sdl_bindings.rs")) .expect("Couldn't find pregenerated bindings!"); - fs::copy(crate_path.join("sdl_image_bindings.rs"), out_path.join("image_bindings.rs")) + fs::copy(crate_path.join("sdl_image_bindings.rs"), out_path.join("sdl_image_bindings.rs")) .expect("Couldn't find pregenerated SDL_image bindings!"); - fs::copy(crate_path.join("sdl_ttf_bindings.rs"), out_path.join("ttf_bindings.rs")) + fs::copy(crate_path.join("sdl_ttf_bindings.rs"), out_path.join("sdl_ttf_bindings.rs")) .expect("Couldn't find pregenerated SDL_ttf bindings!"); - fs::copy(crate_path.join("sdl_mixer_bindings.rs"), out_path.join("mixer_bindings.rs")) + fs::copy(crate_path.join("sdl_mixer_bindings.rs"), out_path.join("sdl_mixer_bindings.rs")) .expect("Couldn't find pregenerated SDL_mixer bindings!"); + + fs::copy(crate_path.join("sdl_gfx_framerate_bindings.rs"), out_path.join("sdl_gfx_framerate_bindings.rs")) + .expect("Couldn't find pregenerated SDL_gfx framerate bindings!"); + + fs::copy(crate_path.join("sdl_gfx_primitives_bindings.rs"), out_path.join("sdl_gfx_primitives_bindings.rs")) + .expect("Couldn't find pregenerated SDL_gfx primitives bindings!"); + + fs::copy(crate_path.join("sdl_gfx_imagefilter_bindings.rs"), out_path.join("sdl_gfx_imagefilter_bindings.rs")) + .expect("Couldn't find pregenerated SDL_gfx imagefilter bindings!"); + + fs::copy(crate_path.join("sdl_gfx_rotozoom_bindings.rs"), out_path.join("sdl_gfx_rotozoom_bindings.rs")) + .expect("Couldn't find pregenerated SDL_gfx rotozoom bindings!"); } #[cfg(feature = "bindgen")] @@ -301,6 +313,10 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str let mut image_bindings = bindgen::Builder::default(); let mut ttf_bindings = bindgen::Builder::default(); let mut mixer_bindings = bindgen::Builder::default(); + let mut gfx_framerate_bindings = bindgen::Builder::default(); + let mut gfx_primitives_bindings = bindgen::Builder::default(); + let mut gfx_imagefilter_bindings = bindgen::Builder::default(); + let mut gfx_rotozoom_bindings = bindgen::Builder::default(); // Set correct target triple for bindgen when cross-compiling if target != host { @@ -315,6 +331,18 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str mixer_bindings = mixer_bindings.clang_arg("-target"); mixer_bindings = mixer_bindings.clang_arg(target.clone()); + + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg("-target"); + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(target.clone()); + + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg("-target"); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(target.clone()); + + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg("-target"); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(target.clone()); + + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg("-target"); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(target.clone()); } if headers_paths.len() == 0 { @@ -326,6 +354,10 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str image_bindings = image_bindings.clang_arg(format!("-I{}", include_path.display())); ttf_bindings = ttf_bindings.clang_arg(format!("-I{}", include_path.display())); mixer_bindings = mixer_bindings.clang_arg(format!("-I{}", include_path.display())); + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-I{}", include_path.display())); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-I{}", include_path.display())); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-I{}", include_path.display())); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-I{}", include_path.display())); } else { // if paths are included, use them for bindgen. Bindgen should use the first one. for headers_path in headers_paths { @@ -333,6 +365,10 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str image_bindings = image_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); ttf_bindings = ttf_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); mixer_bindings = mixer_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); } } @@ -360,6 +396,30 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); + + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); + + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); + + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); + + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); }; // SDL2 hasn't a default configuration for Linux @@ -372,6 +432,14 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str ttf_bindings = ttf_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); mixer_bindings = mixer_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); mixer_bindings = mixer_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); } let bindings = bindings @@ -384,7 +452,7 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); bindings - .write_to_file(out_path.join("bindings.rs")) + .write_to_file(out_path.join("sdl_bindings.rs")) .expect("Couldn't write bindings!"); let image_bindings = image_bindings @@ -401,7 +469,7 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); image_bindings - .write_to_file(out_path.join("image_bindings.rs")) + .write_to_file(out_path.join("sdl_image_bindings.rs")) .expect("Couldn't write image_bindings!"); let ttf_bindings = ttf_bindings @@ -417,7 +485,7 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); ttf_bindings - .write_to_file(out_path.join("ttf_bindings.rs")) + .write_to_file(out_path.join("sdl_ttf_bindings.rs")) .expect("Couldn't write ttf_bindings!"); let mixer_bindings = mixer_bindings @@ -436,8 +504,84 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); mixer_bindings - .write_to_file(out_path.join("mixer_bindings.rs")) + .write_to_file(out_path.join("sdl_mixer_bindings.rs")) .expect("Couldn't write mixer_bindings!"); + + let gfx_framerate_bindings = gfx_framerate_bindings + .header("wrapper_gfx_framerate.h") + .whitelist_type("FPS.*") + .whitelist_function("SDL_.*rame.*") + .whitelist_var("FPS.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate gfx_framerate_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + gfx_framerate_bindings + .write_to_file(out_path.join("sdl_gfx_framerate_bindings.rs")) + .expect("Couldn't write gfx_framerate_bindings!"); + + let gfx_primitives_bindings = gfx_primitives_bindings + .header("wrapper_gfx_primitives.h") + .blacklist_type("SDL_.*") + .whitelist_function("pixel.*") + .whitelist_function("rectangle.*") + .whitelist_function("rounded.*") + .whitelist_function("box.*") + .whitelist_function(".*line(Color|RGBA).*") + .whitelist_function("thick.*") + .whitelist_function(".*circle.*") + .whitelist_function("arc.*") + .whitelist_function("filled.*") + .whitelist_function(".*ellipse.*") + .whitelist_function("pie.*") + .whitelist_function(".*trigon.*") + .whitelist_function(".*polygon.*") + .whitelist_function("textured.*") + .whitelist_function("bezier.*") + .whitelist_function("character.*") + .whitelist_function("string.*") + .whitelist_function("gfx.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate gfx_primitives_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + gfx_primitives_bindings + .write_to_file(out_path.join("sdl_gfx_primitives_bindings.rs")) + .expect("Couldn't write gfx_primitives_bindings!"); + + let gfx_imagefilter_bindings = gfx_imagefilter_bindings + .header("wrapper_gfx_imagefilter.h") + .whitelist_function("SDL_image.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate gfx_imagefilter_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + gfx_imagefilter_bindings + .write_to_file(out_path.join("sdl_gfx_imagefilter_bindings.rs")) + .expect("Couldn't write gfx_imagefilter_bindings!"); + + let gfx_rotozoom_bindings = gfx_rotozoom_bindings + .header("wrapper_gfx_rotozoom.h") + .blacklist_type("SDL_.*") + .whitelist_function("rotozoom.*") + .whitelist_function("zoom.*") + .whitelist_function("shrink.*") + .whitelist_function("rotate.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate gfx_rotozoom_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + gfx_rotozoom_bindings + .write_to_file(out_path.join("sdl_gfx_rotozoom_bindings.rs")) + .expect("Couldn't write gfx_rotozoom_bindings!"); } fn get_os_from_triple(triple: &str) -> Option<&str> diff --git a/sdl2-sys/pregenerated_bindings.rs b/sdl2-sys/sdl_bindings.rs similarity index 100% rename from sdl2-sys/pregenerated_bindings.rs rename to sdl2-sys/sdl_bindings.rs diff --git a/sdl2-sys/sdl_gfx_framerate_bindings.rs b/sdl2-sys/sdl_gfx_framerate_bindings.rs new file mode 100644 index 00000000000..4f836f7cc46 --- /dev/null +++ b/sdl2-sys/sdl_gfx_framerate_bindings.rs @@ -0,0 +1,94 @@ +/* automatically generated by rust-bindgen */ + +pub const FPS_UPPER_LIMIT: u32 = 200; +pub const FPS_LOWER_LIMIT: u32 = 1; +pub const FPS_DEFAULT: u32 = 30; +pub type __uint32_t = ::std::os::raw::c_uint; +pub type Uint32 = u32; +#[repr(C)] +#[derive(Debug, Copy, Clone)] +pub struct FPSmanager { + pub framecount: Uint32, + pub rateticks: f32, + pub baseticks: Uint32, + pub lastticks: Uint32, + pub rate: Uint32, +} +#[test] +fn bindgen_test_layout_FPSmanager() { + assert_eq!( + ::std::mem::size_of::(), + 20usize, + concat!("Size of: ", stringify!(FPSmanager)) + ); + assert_eq!( + ::std::mem::align_of::(), + 4usize, + concat!("Alignment of ", stringify!(FPSmanager)) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).framecount as *const _ as usize }, + 0usize, + concat!( + "Offset of field: ", + stringify!(FPSmanager), + "::", + stringify!(framecount) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rateticks as *const _ as usize }, + 4usize, + concat!( + "Offset of field: ", + stringify!(FPSmanager), + "::", + stringify!(rateticks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).baseticks as *const _ as usize }, + 8usize, + concat!( + "Offset of field: ", + stringify!(FPSmanager), + "::", + stringify!(baseticks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).lastticks as *const _ as usize }, + 12usize, + concat!( + "Offset of field: ", + stringify!(FPSmanager), + "::", + stringify!(lastticks) + ) + ); + assert_eq!( + unsafe { &(*(::std::ptr::null::())).rate as *const _ as usize }, + 16usize, + concat!( + "Offset of field: ", + stringify!(FPSmanager), + "::", + stringify!(rate) + ) + ); +} +extern "C" { + pub fn SDL_initFramerate(manager: *mut FPSmanager); +} +extern "C" { + pub fn SDL_setFramerate(manager: *mut FPSmanager, rate: Uint32) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_getFramerate(manager: *mut FPSmanager) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_getFramecount(manager: *mut FPSmanager) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_framerateDelay(manager: *mut FPSmanager) -> Uint32; +} diff --git a/sdl2-sys/sdl_gfx_imagefilter_bindings.rs b/sdl2-sys/sdl_gfx_imagefilter_bindings.rs new file mode 100644 index 00000000000..4ba0182fdd1 --- /dev/null +++ b/sdl2-sys/sdl_gfx_imagefilter_bindings.rs @@ -0,0 +1,231 @@ +/* automatically generated by rust-bindgen */ + +extern "C" { + pub fn SDL_imageFilterMMXdetect() -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterMMXoff(); +} +extern "C" { + pub fn SDL_imageFilterMMXon(); +} +extern "C" { + pub fn SDL_imageFilterAdd( + Src1: *mut ::std::os::raw::c_uchar, + Src2: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterMean( + Src1: *mut ::std::os::raw::c_uchar, + Src2: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterSub( + Src1: *mut ::std::os::raw::c_uchar, + Src2: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterAbsDiff( + Src1: *mut ::std::os::raw::c_uchar, + Src2: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterMult( + Src1: *mut ::std::os::raw::c_uchar, + Src2: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterMultNor( + Src1: *mut ::std::os::raw::c_uchar, + Src2: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterMultDivby2( + Src1: *mut ::std::os::raw::c_uchar, + Src2: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterMultDivby4( + Src1: *mut ::std::os::raw::c_uchar, + Src2: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterBitAnd( + Src1: *mut ::std::os::raw::c_uchar, + Src2: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterBitOr( + Src1: *mut ::std::os::raw::c_uchar, + Src2: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterDiv( + Src1: *mut ::std::os::raw::c_uchar, + Src2: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterBitNegation( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterAddByte( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + C: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterAddUint( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + C: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterAddByteToHalf( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + C: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterSubByte( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + C: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterSubUint( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + C: ::std::os::raw::c_uint, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterShiftRight( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + N: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterShiftRightUint( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + N: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterMultByByte( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + C: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterShiftRightAndMultByByte( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + N: ::std::os::raw::c_uchar, + C: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterShiftLeftByte( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + N: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterShiftLeftUint( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + N: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterShiftLeft( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + N: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterBinarizeUsingThreshold( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + T: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterClipToRange( + Src1: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + Tmin: ::std::os::raw::c_uchar, + Tmax: ::std::os::raw::c_uchar, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn SDL_imageFilterNormalizeLinear( + Src: *mut ::std::os::raw::c_uchar, + Dest: *mut ::std::os::raw::c_uchar, + length: ::std::os::raw::c_uint, + Cmin: ::std::os::raw::c_int, + Cmax: ::std::os::raw::c_int, + Nmin: ::std::os::raw::c_int, + Nmax: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} diff --git a/sdl2-sys/sdl_gfx_primitives_bindings.rs b/sdl2-sys/sdl_gfx_primitives_bindings.rs new file mode 100644 index 00000000000..975331b6e06 --- /dev/null +++ b/sdl2-sys/sdl_gfx_primitives_bindings.rs @@ -0,0 +1,669 @@ +/* automatically generated by rust-bindgen */ + +pub type __uint8_t = ::std::os::raw::c_uchar; +pub type __int16_t = ::std::os::raw::c_short; +pub type __uint32_t = ::std::os::raw::c_uint; +pub type Uint8 = u8; +pub type Sint16 = i16; +pub type Uint32 = u32; +extern "C" { + pub fn pixelColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn pixelRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn hlineColor( + renderer: *mut SDL_Renderer, + x1: Sint16, + x2: Sint16, + y: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn hlineRGBA( + renderer: *mut SDL_Renderer, + x1: Sint16, + x2: Sint16, + y: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vlineColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y1: Sint16, + y2: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn vlineRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y1: Sint16, + y2: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn rectangleColor( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn rectangleRGBA( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn roundedRectangleColor( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + rad: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn roundedRectangleRGBA( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + rad: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn boxColor( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn boxRGBA( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn roundedBoxColor( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + rad: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn roundedBoxRGBA( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + rad: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lineColor( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn lineRGBA( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aalineColor( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aalineRGBA( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn thickLineColor( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + width: Uint8, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn thickLineRGBA( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + width: Uint8, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn circleColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rad: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn circleRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rad: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn arcColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rad: Sint16, + start: Sint16, + end: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn arcRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rad: Sint16, + start: Sint16, + end: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aacircleColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rad: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aacircleRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rad: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn filledCircleColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + r: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn filledCircleRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rad: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ellipseColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rx: Sint16, + ry: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn ellipseRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rx: Sint16, + ry: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aaellipseColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rx: Sint16, + ry: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aaellipseRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rx: Sint16, + ry: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn filledEllipseColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rx: Sint16, + ry: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn filledEllipseRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rx: Sint16, + ry: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn pieColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rad: Sint16, + start: Sint16, + end: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn pieRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rad: Sint16, + start: Sint16, + end: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn filledPieColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rad: Sint16, + start: Sint16, + end: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn filledPieRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + rad: Sint16, + start: Sint16, + end: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn trigonColor( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + x3: Sint16, + y3: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn trigonRGBA( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + x3: Sint16, + y3: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aatrigonColor( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + x3: Sint16, + y3: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aatrigonRGBA( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + x3: Sint16, + y3: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn filledTrigonColor( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + x3: Sint16, + y3: Sint16, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn filledTrigonRGBA( + renderer: *mut SDL_Renderer, + x1: Sint16, + y1: Sint16, + x2: Sint16, + y2: Sint16, + x3: Sint16, + y3: Sint16, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn polygonColor( + renderer: *mut SDL_Renderer, + vx: *const Sint16, + vy: *const Sint16, + n: ::std::os::raw::c_int, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn polygonRGBA( + renderer: *mut SDL_Renderer, + vx: *const Sint16, + vy: *const Sint16, + n: ::std::os::raw::c_int, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aapolygonColor( + renderer: *mut SDL_Renderer, + vx: *const Sint16, + vy: *const Sint16, + n: ::std::os::raw::c_int, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn aapolygonRGBA( + renderer: *mut SDL_Renderer, + vx: *const Sint16, + vy: *const Sint16, + n: ::std::os::raw::c_int, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn filledPolygonColor( + renderer: *mut SDL_Renderer, + vx: *const Sint16, + vy: *const Sint16, + n: ::std::os::raw::c_int, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn filledPolygonRGBA( + renderer: *mut SDL_Renderer, + vx: *const Sint16, + vy: *const Sint16, + n: ::std::os::raw::c_int, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn texturedPolygon( + renderer: *mut SDL_Renderer, + vx: *const Sint16, + vy: *const Sint16, + n: ::std::os::raw::c_int, + texture: *mut SDL_Surface, + texture_dx: ::std::os::raw::c_int, + texture_dy: ::std::os::raw::c_int, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn bezierColor( + renderer: *mut SDL_Renderer, + vx: *const Sint16, + vy: *const Sint16, + n: ::std::os::raw::c_int, + s: ::std::os::raw::c_int, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn bezierRGBA( + renderer: *mut SDL_Renderer, + vx: *const Sint16, + vy: *const Sint16, + n: ::std::os::raw::c_int, + s: ::std::os::raw::c_int, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn gfxPrimitivesSetFont(fontdata: *const ::std::os::raw::c_void, cw: Uint32, ch: Uint32); +} +extern "C" { + pub fn gfxPrimitivesSetFontRotation(rotation: Uint32); +} +extern "C" { + pub fn characterColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + c: ::std::os::raw::c_char, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn characterRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + c: ::std::os::raw::c_char, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn stringColor( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + s: *const ::std::os::raw::c_char, + color: Uint32, + ) -> ::std::os::raw::c_int; +} +extern "C" { + pub fn stringRGBA( + renderer: *mut SDL_Renderer, + x: Sint16, + y: Sint16, + s: *const ::std::os::raw::c_char, + r: Uint8, + g: Uint8, + b: Uint8, + a: Uint8, + ) -> ::std::os::raw::c_int; +} diff --git a/sdl2-sys/sdl_gfx_rotozoom_bindings.rs b/sdl2-sys/sdl_gfx_rotozoom_bindings.rs new file mode 100644 index 00000000000..76d40d949ab --- /dev/null +++ b/sdl2-sys/sdl_gfx_rotozoom_bindings.rs @@ -0,0 +1,75 @@ +/* automatically generated by rust-bindgen */ + +pub type __uint8_t = ::std::os::raw::c_uchar; +pub type __uint32_t = ::std::os::raw::c_uint; +pub type Uint8 = u8; +pub type Uint32 = u32; +extern "C" { + pub fn rotozoomSurface( + src: *mut SDL_Surface, + angle: f64, + zoom: f64, + smooth: ::std::os::raw::c_int, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn rotozoomSurfaceXY( + src: *mut SDL_Surface, + angle: f64, + zoomx: f64, + zoomy: f64, + smooth: ::std::os::raw::c_int, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn rotozoomSurfaceSize( + width: ::std::os::raw::c_int, + height: ::std::os::raw::c_int, + angle: f64, + zoom: f64, + dstwidth: *mut ::std::os::raw::c_int, + dstheight: *mut ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn rotozoomSurfaceSizeXY( + width: ::std::os::raw::c_int, + height: ::std::os::raw::c_int, + angle: f64, + zoomx: f64, + zoomy: f64, + dstwidth: *mut ::std::os::raw::c_int, + dstheight: *mut ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn zoomSurface( + src: *mut SDL_Surface, + zoomx: f64, + zoomy: f64, + smooth: ::std::os::raw::c_int, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn zoomSurfaceSize( + width: ::std::os::raw::c_int, + height: ::std::os::raw::c_int, + zoomx: f64, + zoomy: f64, + dstwidth: *mut ::std::os::raw::c_int, + dstheight: *mut ::std::os::raw::c_int, + ); +} +extern "C" { + pub fn shrinkSurface( + src: *mut SDL_Surface, + factorx: ::std::os::raw::c_int, + factory: ::std::os::raw::c_int, + ) -> *mut SDL_Surface; +} +extern "C" { + pub fn rotateSurface90Degrees( + src: *mut SDL_Surface, + numClockwiseTurns: ::std::os::raw::c_int, + ) -> *mut SDL_Surface; +} diff --git a/sdl2-sys/src/gfx/framerate.rs b/sdl2-sys/src/gfx/framerate.rs index 41c857894ba..0529874be95 100644 --- a/sdl2-sys/src/gfx/framerate.rs +++ b/sdl2-sys/src/gfx/framerate.rs @@ -1,18 +1 @@ -/* automatically generated by rust-bindgen */ - -use ::std::os::raw::*; -#[repr(C)] -pub struct FPSmanager { - pub framecount: c_uint, - pub rateticks: c_float, - pub baseticks: c_uint, - pub lastticks: c_uint, - pub rate: c_uint, -} -extern "C" { - pub fn SDL_initFramerate(manager: *mut FPSmanager); - pub fn SDL_setFramerate(manager: *mut FPSmanager, rate: c_uint) -> c_int; - pub fn SDL_getFramerate(manager: *mut FPSmanager) -> c_int; - pub fn SDL_getFramecount(manager: *mut FPSmanager) -> c_int; - pub fn SDL_framerateDelay(manager: *mut FPSmanager) -> c_uint; -} +include!(concat!(env!("OUT_DIR"), "/sdl_gfx_framerate_bindings.rs")); diff --git a/sdl2-sys/src/gfx/imagefilter.rs b/sdl2-sys/src/gfx/imagefilter.rs index 3c35357509c..94c8942af74 100644 --- a/sdl2-sys/src/gfx/imagefilter.rs +++ b/sdl2-sys/src/gfx/imagefilter.rs @@ -1,75 +1 @@ -use ::std::os::raw::*; -extern "C" { - pub fn SDL_imageFilterMMXdetect() -> c_int; - pub fn SDL_imageFilterMMXoff(); - pub fn SDL_imageFilterMMXon(); - pub fn SDL_imageFilterAdd(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterMean(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterSub(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterAbsDiff(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> - c_int; - pub fn SDL_imageFilterMult(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterMultNor(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> - c_int; - pub fn SDL_imageFilterMultDivby2(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> - c_int; - pub fn SDL_imageFilterMultDivby4(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> - c_int; - pub fn SDL_imageFilterBitAnd(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterBitOr(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterDiv(Src1: *mut u8, Src2: *mut u8, - Dest: *mut u8, length: c_uint) -> c_int; - pub fn SDL_imageFilterBitNegation(Src1: *mut u8, Dest: *mut u8, - length: c_uint) -> c_int; - pub fn SDL_imageFilterAddByte(Src1: *mut u8, Dest: *mut u8, - length: c_uint, C: u8) -> c_int; - pub fn SDL_imageFilterAddUint(Src1: *mut u8, Dest: *mut u8, - length: c_uint, C: c_uint) -> c_int; - pub fn SDL_imageFilterAddByteToHalf(Src1: *mut u8, - Dest: *mut u8, length: c_uint, - C: u8) -> c_int; - pub fn SDL_imageFilterSubByte(Src1: *mut u8, Dest: *mut u8, - length: c_uint, C: u8) -> c_int; - pub fn SDL_imageFilterSubUint(Src1: *mut u8, Dest: *mut u8, - length: c_uint, C: c_uint) -> c_int; - pub fn SDL_imageFilterShiftRight(Src1: *mut u8, Dest: *mut u8, - length: c_uint, N: u8) -> c_int; - pub fn SDL_imageFilterShiftRightUint(Src1: *mut u8, - Dest: *mut u8, length: c_uint, - N: u8) -> c_int; - pub fn SDL_imageFilterMultByByte(Src1: *mut u8, Dest: *mut u8, - length: c_uint, C: u8) -> c_int; - pub fn SDL_imageFilterShiftRightAndMultByByte(Src1: *mut u8, - Dest: *mut u8, - length: c_uint, N: u8, - C: u8) -> c_int; - pub fn SDL_imageFilterShiftLeftByte(Src1: *mut u8, - Dest: *mut u8, length: c_uint, - N: u8) -> c_int; - pub fn SDL_imageFilterShiftLeftUint(Src1: *mut u8, - Dest: *mut u8, length: c_uint, - N: u8) -> c_int; - pub fn SDL_imageFilterShiftLeft(Src1: *mut u8, Dest: *mut u8, - length: c_uint, N: u8) -> c_int; - pub fn SDL_imageFilterBinarizeUsingThreshold(Src1: *mut u8, - Dest: *mut u8, - length: c_uint, T: u8) - -> c_int; - pub fn SDL_imageFilterClipToRange(Src1: *mut u8, Dest: *mut u8, - length: c_uint, Tmin: u8, - Tmax: u8) -> c_int; - pub fn SDL_imageFilterNormalizeLinear(Src: *mut u8, - Dest: *mut u8, length: c_uint, - Cmin: c_int, Cmax: c_int, - Nmin: c_int, Nmax: c_int) -> c_int; -} +include!(concat!(env!("OUT_DIR"), "/sdl_gfx_imagefilter_bindings.rs")); diff --git a/sdl2-sys/src/gfx/primitives.rs b/sdl2-sys/src/gfx/primitives.rs index 1015b1b4569..b3273abcaeb 100644 --- a/sdl2-sys/src/gfx/primitives.rs +++ b/sdl2-sys/src/gfx/primitives.rs @@ -1,494 +1,2 @@ -/* automatically generated by rust-bindgen */ - -use ::SDL_Renderer; -use ::SDL_Surface; -use ::std::os::raw::*; - -extern "C" { - pub fn pixelColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - color: c_uint) - -> c_int; - pub fn pixelRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn hlineColor(renderer: *const SDL_Renderer, - x1: c_short, - x2: c_short, - y: c_short, - color: c_uint) - -> c_int; - pub fn hlineRGBA(renderer: *const SDL_Renderer, - x1: c_short, - x2: c_short, - y: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn vlineColor(renderer: *const SDL_Renderer, - x: c_short, - y1: c_short, - y2: c_short, - color: c_uint) - -> c_int; - pub fn vlineRGBA(renderer: *const SDL_Renderer, - x: c_short, - y1: c_short, - y2: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn rectangleColor(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - color: c_uint) - -> c_int; - pub fn rectangleRGBA(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn roundedRectangleColor(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - rad: c_short, - color: c_uint) - -> c_int; - pub fn roundedRectangleRGBA(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - rad: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn boxColor(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - color: c_uint) - -> c_int; - pub fn boxRGBA(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn roundedBoxColor(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - rad: c_short, - color: c_uint) - -> c_int; - pub fn roundedBoxRGBA(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - rad: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn lineColor(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - color: c_uint) - -> c_int; - pub fn lineRGBA(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn aalineColor(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - color: c_uint) - -> c_int; - pub fn aalineRGBA(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn thickLineColor(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - width: c_uchar, - color: c_uint) - -> c_int; - pub fn thickLineRGBA(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - width: c_uchar, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn circleColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rad: c_short, - color: c_uint) - -> c_int; - pub fn circleRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rad: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn arcColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rad: c_short, - start: c_short, - end: c_short, - color: c_uint) - -> c_int; - pub fn arcRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rad: c_short, - start: c_short, - end: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn aacircleColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rad: c_short, - color: c_uint) - -> c_int; - pub fn aacircleRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rad: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn filledCircleColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - r: c_short, - color: c_uint) - -> c_int; - pub fn filledCircleRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rad: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn ellipseColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rx: c_short, - ry: c_short, - color: c_uint) - -> c_int; - pub fn ellipseRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rx: c_short, - ry: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn aaellipseColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rx: c_short, - ry: c_short, - color: c_uint) - -> c_int; - pub fn aaellipseRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rx: c_short, - ry: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn filledEllipseColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rx: c_short, - ry: c_short, - color: c_uint) - -> c_int; - pub fn filledEllipseRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rx: c_short, - ry: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn pieColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rad: c_short, - start: c_short, - end: c_short, - color: c_uint) - -> c_int; - pub fn pieRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rad: c_short, - start: c_short, - end: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn filledPieColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rad: c_short, - start: c_short, - end: c_short, - color: c_uint) - -> c_int; - pub fn filledPieRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - rad: c_short, - start: c_short, - end: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn trigonColor(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - x3: c_short, - y3: c_short, - color: c_uint) - -> c_int; - pub fn trigonRGBA(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - x3: c_short, - y3: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn aatrigonColor(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - x3: c_short, - y3: c_short, - color: c_uint) - -> c_int; - pub fn aatrigonRGBA(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - x3: c_short, - y3: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn filledTrigonColor(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - x3: c_short, - y3: c_short, - color: c_uint) - -> c_int; - pub fn filledTrigonRGBA(renderer: *const SDL_Renderer, - x1: c_short, - y1: c_short, - x2: c_short, - y2: c_short, - x3: c_short, - y3: c_short, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn polygonColor(renderer: *const SDL_Renderer, - vx: *const c_short, - vy: *const c_short, - n: c_int, - color: c_uint) - -> c_int; - pub fn polygonRGBA(renderer: *const SDL_Renderer, - vx: *const c_short, - vy: *const c_short, - n: c_int, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn aapolygonColor(renderer: *const SDL_Renderer, - vx: *const c_short, - vy: *const c_short, - n: c_int, - color: c_uint) - -> c_int; - pub fn aapolygonRGBA(renderer: *const SDL_Renderer, - vx: *const c_short, - vy: *const c_short, - n: c_int, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn filledPolygonColor(renderer: *const SDL_Renderer, - vx: *const c_short, - vy: *const c_short, - n: c_int, - color: c_uint) - -> c_int; - pub fn filledPolygonRGBA(renderer: *const SDL_Renderer, - vx: *const c_short, - vy: *const c_short, - n: c_int, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn texturedPolygon(renderer: *const SDL_Renderer, - vx: *const c_short, - vy: *const c_short, - n: c_int, - texture: *mut SDL_Surface, - texture_dx: c_int, - texture_dy: c_int) - -> c_int; - pub fn bezierColor(renderer: *const SDL_Renderer, - vx: *const c_short, - vy: *const c_short, - n: c_int, - s: c_int, - color: c_uint) - -> c_int; - pub fn bezierRGBA(renderer: *const SDL_Renderer, - vx: *const c_short, - vy: *const c_short, - n: c_int, - s: c_int, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn gfxPrimitivesSetFont(fontdata: *const c_void, cw: c_uint, ch: c_uint); - pub fn gfxPrimitivesSetFontRotation(rotation: c_uint); - pub fn characterColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - c: c_char, - color: c_uint) - -> c_int; - pub fn characterRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - c: c_char, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; - pub fn stringColor(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - s: *mut c_char, - color: c_uint) - -> c_int; - pub fn stringRGBA(renderer: *const SDL_Renderer, - x: c_short, - y: c_short, - s: *mut c_char, - r: c_uchar, - g: c_uchar, - b: c_uchar, - a: c_uchar) - -> c_int; -} +use ::*; +include!(concat!(env!("OUT_DIR"), "/sdl_gfx_primitives_bindings.rs")); diff --git a/sdl2-sys/src/gfx/rotozoom.rs b/sdl2-sys/src/gfx/rotozoom.rs index 9ed3ed1871c..a43bc422266 100644 --- a/sdl2-sys/src/gfx/rotozoom.rs +++ b/sdl2-sys/src/gfx/rotozoom.rs @@ -1,28 +1,2 @@ -/* automatically generated by rust-bindgen */ - -use ::SDL_Surface; -use ::std::os::raw::*; -extern "C" { - pub fn rotozoomSurface(src: *mut SDL_Surface, angle: c_double, - zoom: c_double, smooth: c_int) -> *mut SDL_Surface; - pub fn rotozoomSurfaceXY(src: *mut SDL_Surface, angle: c_double, - zoomx: c_double, zoomy: c_double, smooth: c_int) - -> *mut SDL_Surface; - pub fn rotozoomSurfaceSize(width: c_int, height: c_int, angle: c_double, - zoom: c_double, dstwidth: *mut c_int, - dstheight: *mut c_int); - pub fn rotozoomSurfaceSizeXY(width: c_int, height: c_int, angle: c_double, - zoomx: c_double, zoomy: c_double, - dstwidth: *mut c_int, dstheight: *mut c_int); - pub fn zoomSurface(src: *mut SDL_Surface, zoomx: c_double, - zoomy: c_double, smooth: c_int) -> *mut SDL_Surface; - pub fn zoomSurfaceSize(width: c_int, height: c_int, zoomx: c_double, - zoomy: c_double, dstwidth: *mut c_int, - dstheight: *mut c_int); - pub fn shrinkSurface(src: *mut SDL_Surface, factorx: c_int, - factory: c_int) -> *mut SDL_Surface; - pub fn rotateSurface90Degrees(src: *mut SDL_Surface, - numClockwiseTurns: c_int) -> - *mut SDL_Surface; -} - +use ::*; +include!(concat!(env!("OUT_DIR"), "/sdl_gfx_rotozoom_bindings.rs")); diff --git a/sdl2-sys/src/image.rs b/sdl2-sys/src/image.rs index 52d9199e9ad..dbce9e86a40 100644 --- a/sdl2-sys/src/image.rs +++ b/sdl2-sys/src/image.rs @@ -1,2 +1,2 @@ use ::*; -include!(concat!(env!("OUT_DIR"), "/image_bindings.rs")); +include!(concat!(env!("OUT_DIR"), "/sdl_image_bindings.rs")); diff --git a/sdl2-sys/src/lib.rs b/sdl2-sys/src/lib.rs index 7f76d3e20f7..388f929852c 100644 --- a/sdl2-sys/src/lib.rs +++ b/sdl2-sys/src/lib.rs @@ -8,7 +8,7 @@ #![allow(non_camel_case_types)] #![allow(non_snake_case)] -include!(concat!(env!("OUT_DIR"), "/bindings.rs")); +include!(concat!(env!("OUT_DIR"), "/sdl_bindings.rs")); #[cfg(feature = "mixer")] pub mod mixer; diff --git a/sdl2-sys/src/mixer.rs b/sdl2-sys/src/mixer.rs index 3e9b1f381ce..9334bfdbf69 100644 --- a/sdl2-sys/src/mixer.rs +++ b/sdl2-sys/src/mixer.rs @@ -1,2 +1,2 @@ use ::*; -include!(concat!(env!("OUT_DIR"), "/mixer_bindings.rs")); +include!(concat!(env!("OUT_DIR"), "/sdl_mixer_bindings.rs")); diff --git a/sdl2-sys/src/ttf.rs b/sdl2-sys/src/ttf.rs index b612eb470a9..889bda1e5e6 100644 --- a/sdl2-sys/src/ttf.rs +++ b/sdl2-sys/src/ttf.rs @@ -1,2 +1,2 @@ use ::*; -include!(concat!(env!("OUT_DIR"), "/ttf_bindings.rs")); +include!(concat!(env!("OUT_DIR"), "/sdl_ttf_bindings.rs")); diff --git a/sdl2-sys/wrapper_gfx_framerate.h b/sdl2-sys/wrapper_gfx_framerate.h new file mode 100644 index 00000000000..eeba38fc688 --- /dev/null +++ b/sdl2-sys/wrapper_gfx_framerate.h @@ -0,0 +1 @@ +#include diff --git a/sdl2-sys/wrapper_gfx_imagefilter.h b/sdl2-sys/wrapper_gfx_imagefilter.h new file mode 100644 index 00000000000..d55812c54a7 --- /dev/null +++ b/sdl2-sys/wrapper_gfx_imagefilter.h @@ -0,0 +1 @@ +#include diff --git a/sdl2-sys/wrapper_gfx_primitives.h b/sdl2-sys/wrapper_gfx_primitives.h new file mode 100644 index 00000000000..4a51648eb8c --- /dev/null +++ b/sdl2-sys/wrapper_gfx_primitives.h @@ -0,0 +1,2 @@ +#include +#include diff --git a/sdl2-sys/wrapper_gfx_rotozoom.h b/sdl2-sys/wrapper_gfx_rotozoom.h new file mode 100644 index 00000000000..e100067560c --- /dev/null +++ b/sdl2-sys/wrapper_gfx_rotozoom.h @@ -0,0 +1 @@ +#include From 8d126f085423e667862be10bc2ba1de9190a504b Mon Sep 17 00:00:00 2001 From: Jon Emil Jahren Date: Mon, 2 Apr 2018 14:01:03 +0200 Subject: [PATCH 11/19] Fix mac target link arguments It should now be what the old behaviour was. If either mac_framework or use_mac_framework feature is set then it will use kind=framework, if not then it will use normal library name link argument. --- sdl2-sys/build.rs | 34 +++++++++++++++++++++++++--------- 1 file changed, 25 insertions(+), 9 deletions(-) diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 175431123bb..f3ce5c212ed 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -198,7 +198,7 @@ fn link_sdl2(target_os: &str) { } // SDL libraries seem to not be packed with pkgconfig file on all distros, // and in the same distros (fedora at least) a symlink is also missing. - // + // // Linking directly with file is not possible with cargo since the // ':filename' syntax is used for renaming of libraries, which basically // leaves it up to the user to make a symlink to the shared object so @@ -209,8 +209,12 @@ fn link_sdl2(target_os: &str) { println!("cargo:rustc-flags=-l SDL2_mixer"); } else if cfg!(target_os="windows") { println!("cargo:rustc-flags=-l SDL2_mixer"); - } else if cfg!(any(target_os="macos", feature="use_mac_framework")) { - println!("cargo:rustc-flags=-l framework=SDL2_mixer"); + } else if cfg!(target_os="macos") { + if cfg!(any(mac_framework, feature="use_mac_framework")) { + println!("cargo:rustc-flags=-l framework=SDL2_mixer"); + } else { + println!("cargo:rustc-flags=-l SDL2_mixer"); + } } } if cfg!(feature = "image") { @@ -218,8 +222,12 @@ fn link_sdl2(target_os: &str) { println!("cargo:rustc-flags=-l SDL2_image"); } else if cfg!(target_os="windows") { println!("cargo:rustc-flags=-l SDL2_image"); - } else if cfg!(any(target_os="macos", feature="use_mac_framework")) { - println!("cargo:rustc-flags=-l framework=SDL2_image"); + } else if cfg!(target_os="macos") { + if cfg!(any(mac_framework, feature="use_mac_framework")) { + println!("cargo:rustc-flags=-l framework=SDL2_image"); + } else { + println!("cargo:rustc-flags=-l SDL2_image"); + } } } if cfg!(feature = "ttf") { @@ -227,8 +235,12 @@ fn link_sdl2(target_os: &str) { println!("cargo:rustc-flags=-l SDL2_ttf"); } else if cfg!(target_os="windows") { println!("cargo:rustc-flags=-l SDL2_ttf"); - } else if cfg!(any(target_os="macos", feature="use_mac_framework")) { - println!("cargo:rustc-flags=-l framework=SDL2_ttf"); + } else if cfg!(target_os="macos") { + if cfg!(any(mac_framework, feature="use_mac_framework")) { + println!("cargo:rustc-flags=-l framework=SDL2_ttf"); + } else { + println!("cargo:rustc-flags=-l SDL2_ttf"); + } } } if cfg!(feature = "gfx") { @@ -236,8 +248,12 @@ fn link_sdl2(target_os: &str) { println!("cargo:rustc-flags=-l SDL2_gfx"); } else if cfg!(target_os="windows") { println!("cargo:rustc-flags=-l SDL2_gfx"); - } else if cfg!(any(target_os="macos", feature="use_mac_framework")) { - println!("cargo:rustc-flags=-l framework=SDL2_gfx"); + } else if cfg!(target_os="macos") { + if cfg!(any(mac_framework, feature="use_mac_framework")) { + println!("cargo:rustc-flags=-l framework=SDL2_gfx"); + } else { + println!("cargo:rustc-flags=-l SDL2_gfx"); + } } } } From e998692601e9c46df8579d8e407c5353b1e4950a Mon Sep 17 00:00:00 2001 From: "W. Brian Gourlie" Date: Sat, 9 Jun 2018 12:38:54 -0500 Subject: [PATCH 12/19] Upgrade to SDL 2.0.8 --- .travis.yml | 2 +- README.md | 12 +- sdl2-sys/SDL2-2.0.6/include/SDL_revision.h | 2 - .../{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL.h | 2 +- .../include/SDL_assert.h | 2 +- .../include/SDL_atomic.h | 5 +- .../include/SDL_audio.h | 139 +++++++++++++++++- .../include/SDL_bits.h | 2 +- .../include/SDL_blendmode.h | 2 +- .../include/SDL_clipboard.h | 2 +- .../include/SDL_config.h | 2 +- .../include/SDL_config.h.cmake | 31 +++- .../include/SDL_config.h.in | 31 +++- .../include/SDL_config_android.h | 25 +++- .../include/SDL_config_iphoneos.h | 42 ++++-- .../include/SDL_config_macosx.h | 49 +++++- .../include/SDL_config_minimal.h | 2 +- .../include/SDL_config_pandora.h | 4 +- .../include/SDL_config_psp.h | 22 ++- .../include/SDL_config_windows.h | 64 ++++---- .../include/SDL_config_winrt.h | 74 ++++++---- .../include/SDL_config_wiz.h | 49 ++++-- .../include/SDL_copying.h | 2 +- .../include/SDL_cpuinfo.h | 25 ++-- .../include/SDL_egl.h | 4 +- .../include/SDL_endian.h | 2 +- .../include/SDL_error.h | 2 +- .../include/SDL_events.h | 2 +- .../include/SDL_filesystem.h | 2 +- .../include/SDL_gamecontroller.h | 2 +- .../include/SDL_gesture.h | 2 +- .../include/SDL_haptic.h | 2 +- .../include/SDL_hints.h | 75 +++++++++- .../include/SDL_joystick.h | 16 +- .../include/SDL_keyboard.h | 2 +- .../include/SDL_keycode.h | 2 +- .../include/SDL_loadso.h | 2 +- .../include/SDL_log.h | 2 +- .../include/SDL_main.h | 13 +- .../include/SDL_messagebox.h | 2 +- .../include/SDL_mouse.h | 2 +- .../include/SDL_mutex.h | 2 +- .../include/SDL_name.h | 2 +- .../include/SDL_opengl.h | 2 +- .../include/SDL_opengl_glext.h | 0 .../include/SDL_opengles.h | 2 +- .../include/SDL_opengles2.h | 2 +- .../include/SDL_opengles2_gl2.h | 0 .../include/SDL_opengles2_gl2ext.h | 0 .../include/SDL_opengles2_gl2platform.h | 0 .../include/SDL_opengles2_khrplatform.h | 0 .../include/SDL_pixels.h | 6 +- .../include/SDL_platform.h | 9 +- .../include/SDL_power.h | 2 +- .../include/SDL_quit.h | 2 +- .../include/SDL_rect.h | 2 +- .../include/SDL_render.h | 23 ++- sdl2-sys/SDL2-2.0.8/include/SDL_revision.h | 2 + .../include/SDL_rwops.h | 2 +- .../include/SDL_scancode.h | 2 +- .../include/SDL_shape.h | 2 +- .../include/SDL_stdinc.h | 64 +++++++- .../include/SDL_surface.h | 27 +++- .../include/SDL_system.h | 33 ++++- .../include/SDL_syswm.h | 2 +- .../include/SDL_test.h | 15 +- .../include/SDL_test_assert.h | 2 +- .../include/SDL_test_common.h | 2 +- .../include/SDL_test_compare.h | 2 +- .../include/SDL_test_crc32.h | 4 +- .../include/SDL_test_font.h | 2 +- .../include/SDL_test_fuzzer.h | 2 +- .../include/SDL_test_harness.h | 2 +- .../include/SDL_test_images.h | 2 +- .../include/SDL_test_log.h | 2 +- .../include/SDL_test_md5.h | 2 +- sdl2-sys/SDL2-2.0.8/include/SDL_test_memory.h | 63 ++++++++ .../include/SDL_test_random.h | 2 +- .../include/SDL_thread.h | 19 +-- .../include/SDL_timer.h | 2 +- .../include/SDL_touch.h | 2 +- .../include/SDL_types.h | 2 +- .../include/SDL_version.h | 4 +- .../include/SDL_video.h | 8 +- .../include/SDL_vulkan.h | 44 ++++-- .../include/begin_code.h | 2 +- .../include/close_code.h | 2 +- sdl2-sys/build.rs | 4 +- 88 files changed, 863 insertions(+), 242 deletions(-) delete mode 100644 sdl2-sys/SDL2-2.0.6/include/SDL_revision.h rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_assert.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_atomic.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_audio.h (85%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_bits.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_blendmode.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_clipboard.h (96%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config.h (96%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config.h.cmake (96%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config.h.in (95%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config_android.h (89%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config_iphoneos.h (81%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config_macosx.h (84%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config_minimal.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config_pandora.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config_psp.h (89%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config_windows.h (84%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config_winrt.h (79%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_config_wiz.h (77%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_copying.h (93%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_cpuinfo.h (87%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_egl.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_endian.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_error.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_events.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_filesystem.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_gamecontroller.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_gesture.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_haptic.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_hints.h (92%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_joystick.h (95%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_keyboard.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_keycode.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_loadso.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_log.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_main.h (92%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_messagebox.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_mouse.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_mutex.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_name.h (94%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_opengl.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_opengl_glext.h (100%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_opengles.h (95%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_opengles2.h (96%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_opengles2_gl2.h (100%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_opengles2_gl2ext.h (100%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_opengles2_gl2platform.h (100%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_opengles2_khrplatform.h (100%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_pixels.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_platform.h (96%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_power.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_quit.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_rect.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_render.h (97%) create mode 100644 sdl2-sys/SDL2-2.0.8/include/SDL_revision.h rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_rwops.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_scancode.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_shape.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_stdinc.h (84%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_surface.h (95%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_system.h (90%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_syswm.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test.h (95%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test_assert.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test_common.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test_compare.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test_crc32.h (96%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test_font.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test_fuzzer.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test_harness.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test_images.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test_log.h (96%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test_md5.h (98%) create mode 100644 sdl2-sys/SDL2-2.0.8/include/SDL_test_memory.h rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_test_random.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_thread.h (94%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_timer.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_touch.h (97%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_types.h (94%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_version.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_video.h (99%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/SDL_vulkan.h (83%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/begin_code.h (98%) rename sdl2-sys/{SDL2-2.0.6 => SDL2-2.0.8}/include/close_code.h (95%) diff --git a/.travis.yml b/.travis.yml index 7c1aa864bc3..9d12f0a27d4 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ os: - linux - osx install: -- wget https://www.libsdl.org/release/SDL2-2.0.5.tar.gz -O sdl2.tar.gz +- wget https://www.libsdl.org/release/SDL2-2.0.8.tar.gz -O sdl2.tar.gz - tar xzf sdl2.tar.gz - pushd SDL2-* && ./configure && make && sudo make install && popd - wget -q https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.14.tar.gz diff --git a/README.md b/README.md index 4a03308c6fa..4e7c8126636 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ We currently target the latest stable release of Rust. ## *SDL2.0 development libraries* -SDL2 >= 2.0.5 is recommended to use these bindings, but note that SDL2 >= 2.0.4 is also supported. Below 2.0.4, you may experience link-time errors as some functions are used here but are not defined in SDL2. If you experience this issue because you are on a LTS machine (for instance, Ubuntu 12.04 or Ubuntu 14.04), we definitely recommend you to use the feature "bundled" which will compile the lastest stable version of SDL2 for your project. +SDL2 >= 2.0.8 is recommended to use these bindings, but note that SDL2 >= 2.0.4 is also supported. Below 2.0.4, you may experience link-time errors as some functions are used here but are not defined in SDL2. If you experience this issue because you are on a LTS machine (for instance, Ubuntu 12.04 or Ubuntu 14.04), we definitely recommend you to use the feature "bundled" which will compile the lastest stable version of SDL2 for your project. ### "Bundled" Feature @@ -129,10 +129,10 @@ SDL2-devel-2.0.x-mingw.tar.gz\SDL2-2.0.x\i686-w64-mingw32\bin -> gnu-mingw\dl SDL2-devel-2.0.x-mingw.tar.gz\SDL2-2.0.x\x86_64-w64-mingw32\bin -> gnu-mingw\dll\64 SDL2-devel-2.0.x-mingw.tar.gz\SDL2-2.0.x\i686-w64-mingw32\lib -> gnu-mingw\lib\32 SDL2-devel-2.0.x-mingw.tar.gz\SDL2-2.0.x\x86_64-w64-mingw32\lib -> gnu-mingw\lib\64 -SDL2-devel-2.0.5-VC.zip\SDL2-2.0.x\lib\x86\*.dll -> msvc\dll\32 -SDL2-devel-2.0.5-VC.zip\SDL2-2.0.x\lib\x64\*.dll -> msvc\dll\64 -SDL2-devel-2.0.5-VC.zip\SDL2-2.0.x\lib\x86\*.lib -> msvc\lib\32 -SDL2-devel-2.0.5-VC.zip\SDL2-2.0.x\lib\x64\*.lib -> msvc\lib\64 +SDL2-devel-2.0.8-VC.zip\SDL2-2.0.x\lib\x86\*.dll -> msvc\dll\32 +SDL2-devel-2.0.8-VC.zip\SDL2-2.0.x\lib\x64\*.dll -> msvc\dll\64 +SDL2-devel-2.0.8-VC.zip\SDL2-2.0.x\lib\x86\*.lib -> msvc\lib\32 +SDL2-devel-2.0.8-VC.zip\SDL2-2.0.x\lib\x64\*.lib -> msvc\lib\64 ``` 5. Create a build script, if you don't already have one put this in your Cargo.toml under `[package]`: @@ -334,7 +334,7 @@ you may sometimes face trouble when using platform-specific features of SDL2, fo The feature "use-bindgen" allows you to avoid this limitation by generating the proper bindings depending on your target. It will take the headers based on what `pkg-config` outputs (if you enabled the feature "use-pkg-config") and generate bindings based on them. -If you don't have pkg-config or disabled the feature, it will try to get the headers in `SDL-2.0.6/include` of this crate instead. +If you don't have pkg-config or disabled the feature, it will try to get the headers in `SDL-2.0.8/include` of this crate instead. If somehow you have your own headers that you want to use (use a beta version, an older version, ...), you can set the environment variable "SDL2_INCLUDE_PATH" and those headers will be used by bindgen instead. diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_revision.h b/sdl2-sys/SDL2-2.0.6/include/SDL_revision.h deleted file mode 100644 index 98fd5afc726..00000000000 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_revision.h +++ /dev/null @@ -1,2 +0,0 @@ -#define SDL_REVISION "hg-11524:8df7a59b5528" -#define SDL_REVISION_NUMBER 11524 diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL.h b/sdl2-sys/SDL2-2.0.8/include/SDL.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL.h rename to sdl2-sys/SDL2-2.0.8/include/SDL.h index 366d50fa390..d48d9d4a0e2 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_assert.h b/sdl2-sys/SDL2-2.0.8/include/SDL_assert.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_assert.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_assert.h index 90abbe39b6f..b38f928ae14 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_assert.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_assert.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_atomic.h b/sdl2-sys/SDL2-2.0.8/include/SDL_atomic.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_atomic.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_atomic.h index 36e37f3b786..b2287748c8f 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_atomic.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_atomic.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -158,6 +158,9 @@ extern DECLSPEC void SDLCALL SDL_MemoryBarrierAcquireFunction(void); #if defined(__GNUC__) && (defined(__powerpc__) || defined(__ppc__)) #define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("lwsync" : : : "memory") #define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("lwsync" : : : "memory") +#elif defined(__GNUC__) && defined(__aarch64__) +#define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") +#define SDL_MemoryBarrierAcquire() __asm__ __volatile__ ("dmb ish" : : : "memory") #elif defined(__GNUC__) && defined(__arm__) #if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7EM__) || defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || defined(__ARM_ARCH_7S__) #define SDL_MemoryBarrierRelease() __asm__ __volatile__ ("dmb ish" : : : "memory") diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_audio.h b/sdl2-sys/SDL2-2.0.8/include/SDL_audio.h similarity index 85% rename from sdl2-sys/SDL2-2.0.6/include/SDL_audio.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_audio.h index 53277cb7e9b..d6ea689543c 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_audio.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_audio.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -164,6 +164,15 @@ typedef void (SDLCALL * SDL_AudioCallback) (void *userdata, Uint8 * stream, /** * The calculated values in this structure are calculated by SDL_OpenAudio(). + * + * For multi-channel audio, the default SDL channel mapping is: + * 2: FL FR (stereo) + * 3: FL FR LFE (2.1 surround) + * 4: FL FR BL BR (quad) + * 5: FL FR FC BL BR (quad + center) + * 6: FL FR FC LFE SL SR (5.1 surround - last two can also be BL BR) + * 7: FL FR FC LFE BC SL SR (6.1 surround) + * 8: FL FR FC LFE BL BR SL SR (7.1 surround) */ typedef struct SDL_AudioSpec { @@ -477,6 +486,132 @@ extern DECLSPEC int SDLCALL SDL_BuildAudioCVT(SDL_AudioCVT * cvt, */ extern DECLSPEC int SDLCALL SDL_ConvertAudio(SDL_AudioCVT * cvt); +/* SDL_AudioStream is a new audio conversion interface. + The benefits vs SDL_AudioCVT: + - it can handle resampling data in chunks without generating + artifacts, when it doesn't have the complete buffer available. + - it can handle incoming data in any variable size. + - You push data as you have it, and pull it when you need it + */ +/* this is opaque to the outside world. */ +struct _SDL_AudioStream; +typedef struct _SDL_AudioStream SDL_AudioStream; + +/** + * Create a new audio stream + * + * \param src_format The format of the source audio + * \param src_channels The number of channels of the source audio + * \param src_rate The sampling rate of the source audio + * \param dst_format The format of the desired audio output + * \param dst_channels The number of channels of the desired audio output + * \param dst_rate The sampling rate of the desired audio output + * \return 0 on success, or -1 on error. + * + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC SDL_AudioStream * SDLCALL SDL_NewAudioStream(const SDL_AudioFormat src_format, + const Uint8 src_channels, + const int src_rate, + const SDL_AudioFormat dst_format, + const Uint8 dst_channels, + const int dst_rate); + +/** + * Add data to be converted/resampled to the stream + * + * \param stream The stream the audio data is being added to + * \param buf A pointer to the audio data to add + * \param len The number of bytes to write to the stream + * \return 0 on success, or -1 on error. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamPut(SDL_AudioStream *stream, const void *buf, int len); + +/** + * Get converted/resampled data from the stream + * + * \param stream The stream the audio is being requested from + * \param buf A buffer to fill with audio data + * \param len The maximum number of bytes to fill + * \return The number of bytes read from the stream, or -1 on error + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamGet(SDL_AudioStream *stream, void *buf, int len); + +/** + * Get the number of converted/resampled bytes available. The stream may be + * buffering data behind the scenes until it has enough to resample + * correctly, so this number might be lower than what you expect, or even + * be zero. Add more data or flush the stream if you need the data now. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamAvailable(SDL_AudioStream *stream); + +/** + * Tell the stream that you're done sending data, and anything being buffered + * should be converted/resampled and made available immediately. + * + * It is legal to add more data to a stream after flushing, but there will + * be audio gaps in the output. Generally this is intended to signal the + * end of input, so the complete output becomes available. + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamClear + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC int SDLCALL SDL_AudioStreamFlush(SDL_AudioStream *stream); + +/** + * Clear any pending data in the stream without converting it + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_FreeAudioStream + */ +extern DECLSPEC void SDLCALL SDL_AudioStreamClear(SDL_AudioStream *stream); + +/** + * Free an audio stream + * + * \sa SDL_NewAudioStream + * \sa SDL_AudioStreamPut + * \sa SDL_AudioStreamGet + * \sa SDL_AudioStreamAvailable + * \sa SDL_AudioStreamFlush + * \sa SDL_AudioStreamClear + */ +extern DECLSPEC void SDLCALL SDL_FreeAudioStream(SDL_AudioStream *stream); + #define SDL_MIX_MAXVOLUME 128 /** * This takes two audio buffers of the playing audio format and mixes @@ -532,7 +667,7 @@ extern DECLSPEC void SDLCALL SDL_MixAudioFormat(Uint8 * dst, * \param dev The device ID to which we will queue audio. * \param data The data to queue to the device for later playback. * \param len The number of bytes (not samples!) to which (data) points. - * \return zero on success, -1 on error. + * \return 0 on success, or -1 on error. * * \sa SDL_GetQueuedAudioSize * \sa SDL_ClearQueuedAudio diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_bits.h b/sdl2-sys/SDL2-2.0.8/include/SDL_bits.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_bits.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_bits.h index bc285729021..eb8322f0d0a 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_bits.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_bits.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_blendmode.h b/sdl2-sys/SDL2-2.0.8/include/SDL_blendmode.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_blendmode.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_blendmode.h index 9abd0bd4cf1..36a5ea76f0c 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_blendmode.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_blendmode.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_clipboard.h b/sdl2-sys/SDL2-2.0.8/include/SDL_clipboard.h similarity index 96% rename from sdl2-sys/SDL2-2.0.6/include/SDL_clipboard.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_clipboard.h index 341f4ba42b1..f28751ebb8f 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_clipboard.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_clipboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config.h b/sdl2-sys/SDL2-2.0.8/include/SDL_config.h similarity index 96% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_config.h index 41f5baabe57..7e0340cdffb 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config.h.cmake b/sdl2-sys/SDL2-2.0.8/include/SDL_config.h.cmake similarity index 96% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config.h.cmake rename to sdl2-sys/SDL2-2.0.8/include/SDL_config.h.cmake index 9befa422f10..a8d230c4657 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config.h.cmake +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config.h.cmake @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -72,6 +72,7 @@ #cmakedefine HAVE_SYS_TYPES_H 1 #cmakedefine HAVE_WCHAR_H 1 #cmakedefine HAVE_PTHREAD_NP_H 1 +#cmakedefine HAVE_LIBUNWIND_H 1 /* C library functions */ #cmakedefine HAVE_MALLOC 1 @@ -99,7 +100,6 @@ #cmakedefine HAVE_STRLEN 1 #cmakedefine HAVE_STRLCPY 1 #cmakedefine HAVE_STRLCAT 1 -#cmakedefine HAVE_STRDUP 1 #cmakedefine HAVE__STRREV 1 #cmakedefine HAVE__STRUPR 1 #cmakedefine HAVE__STRLWR 1 @@ -130,19 +130,34 @@ #cmakedefine HAVE_VSSCANF 1 #cmakedefine HAVE_VSNPRINTF 1 #cmakedefine HAVE_M_PI 1 -#cmakedefine HAVE_ATAN 1 -#cmakedefine HAVE_ATAN2 1 #cmakedefine HAVE_ACOS 1 +#cmakedefine HAVE_ACOSF 1 #cmakedefine HAVE_ASIN 1 +#cmakedefine HAVE_ASINF 1 +#cmakedefine HAVE_ATAN 1 +#cmakedefine HAVE_ATANF 1 +#cmakedefine HAVE_ATAN2 1 +#cmakedefine HAVE_ATAN2F 1 #cmakedefine HAVE_CEIL 1 +#cmakedefine HAVE_CEILF 1 #cmakedefine HAVE_COPYSIGN 1 +#cmakedefine HAVE_COPYSIGNF 1 #cmakedefine HAVE_COS 1 #cmakedefine HAVE_COSF 1 #cmakedefine HAVE_FABS 1 +#cmakedefine HAVE_FABSF 1 #cmakedefine HAVE_FLOOR 1 +#cmakedefine HAVE_FLOORF 1 +#cmakedefine HAVE_FMOD 1 +#cmakedefine HAVE_FMODF 1 #cmakedefine HAVE_LOG 1 +#cmakedefine HAVE_LOGF 1 +#cmakedefine HAVE_LOG10 1 +#cmakedefine HAVE_LOG10F 1 #cmakedefine HAVE_POW 1 +#cmakedefine HAVE_POWF 1 #cmakedefine HAVE_SCALBN 1 +#cmakedefine HAVE_SCALBNF 1 #cmakedefine HAVE_SIN 1 #cmakedefine HAVE_SINF 1 #cmakedefine HAVE_SQRT 1 @@ -178,18 +193,18 @@ #endif /* HAVE_LIBC */ #cmakedefine HAVE_ALTIVEC_H 1 -#cmakedefine HAVE_LIBUDEV_H 1 #cmakedefine HAVE_DBUS_DBUS_H 1 -#cmakedefine HAVE_IBUS_IBUS_H 1 #cmakedefine HAVE_FCITX_FRONTEND_H 1 +#cmakedefine HAVE_IBUS_IBUS_H 1 +#cmakedefine HAVE_IMMINTRIN_H 1 #cmakedefine HAVE_LIBSAMPLERATE_H 1 +#cmakedefine HAVE_LIBUDEV_H 1 #cmakedefine HAVE_D3D_H @HAVE_D3D_H@ #cmakedefine HAVE_D3D11_H @HAVE_D3D11_H@ #cmakedefine HAVE_DDRAW_H @HAVE_DDRAW_H@ #cmakedefine HAVE_DSOUND_H @HAVE_DSOUND_H@ #cmakedefine HAVE_DINPUT_H @HAVE_DINPUT_H@ -#cmakedefine HAVE_XAUDIO2_H @HAVE_XAUDIO2_H@ #cmakedefine HAVE_XINPUT_H @HAVE_XINPUT_H@ #cmakedefine HAVE_DXGI_H @HAVE_DXGI_H@ #cmakedefine HAVE_XINPUT_GAMEPAD_EX @HAVE_XINPUT_GAMEPAD_EX@ @@ -246,7 +261,6 @@ #cmakedefine SDL_AUDIO_DRIVER_SUNAUDIO @SDL_AUDIO_DRIVER_SUNAUDIO@ #cmakedefine SDL_AUDIO_DRIVER_WASAPI @SDL_AUDIO_DRIVER_WASAPI@ #cmakedefine SDL_AUDIO_DRIVER_WINMM @SDL_AUDIO_DRIVER_WINMM@ -#cmakedefine SDL_AUDIO_DRIVER_XAUDIO2 @SDL_AUDIO_DRIVER_XAUDIO2@ /* Enable various input drivers */ #cmakedefine SDL_INPUT_LINUXEV @SDL_INPUT_LINUXEV@ @@ -345,6 +359,7 @@ #cmakedefine SDL_VIDEO_RENDER_OGL_ES @SDL_VIDEO_RENDER_OGL_ES@ #cmakedefine SDL_VIDEO_RENDER_OGL_ES2 @SDL_VIDEO_RENDER_OGL_ES2@ #cmakedefine SDL_VIDEO_RENDER_DIRECTFB @SDL_VIDEO_RENDER_DIRECTFB@ +#cmakedefine SDL_VIDEO_RENDER_METAL @SDL_VIDEO_RENDER_METAL@ /* Enable OpenGL support */ #cmakedefine SDL_VIDEO_OPENGL @SDL_VIDEO_OPENGL@ diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config.h.in b/sdl2-sys/SDL2-2.0.8/include/SDL_config.h.in similarity index 95% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config.h.in rename to sdl2-sys/SDL2-2.0.8/include/SDL_config.h.in index 988d3d93d09..422f47f7810 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config.h.in +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config.h.in @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -75,6 +75,7 @@ #undef HAVE_SYS_TYPES_H #undef HAVE_WCHAR_H #undef HAVE_PTHREAD_NP_H +#undef HAVE_LIBUNWIND_H /* C library functions */ #undef HAVE_MALLOC @@ -102,7 +103,6 @@ #undef HAVE_STRLEN #undef HAVE_STRLCPY #undef HAVE_STRLCAT -#undef HAVE_STRDUP #undef HAVE__STRREV #undef HAVE__STRUPR #undef HAVE__STRLWR @@ -135,19 +135,34 @@ #undef HAVE_SNPRINTF #undef HAVE_VSNPRINTF #undef HAVE_M_PI -#undef HAVE_ATAN -#undef HAVE_ATAN2 #undef HAVE_ACOS +#undef HAVE_ACOSF #undef HAVE_ASIN +#undef HAVE_ASINF +#undef HAVE_ATAN +#undef HAVE_ATANF +#undef HAVE_ATAN2 +#undef HAVE_ATAN2F #undef HAVE_CEIL +#undef HAVE_CEILF #undef HAVE_COPYSIGN +#undef HAVE_COPYSIGNF #undef HAVE_COS #undef HAVE_COSF #undef HAVE_FABS +#undef HAVE_FABSF #undef HAVE_FLOOR +#undef HAVE_FLOORF +#undef HAVE_FMOD +#undef HAVE_FMODF #undef HAVE_LOG +#undef HAVE_LOGF +#undef HAVE_LOG10 +#undef HAVE_LOG10F #undef HAVE_POW +#undef HAVE_POWF #undef HAVE_SCALBN +#undef HAVE_SCALBNF #undef HAVE_SIN #undef HAVE_SINF #undef HAVE_SQRT @@ -180,11 +195,12 @@ #endif /* HAVE_LIBC */ #undef HAVE_ALTIVEC_H -#undef HAVE_LIBUDEV_H #undef HAVE_DBUS_DBUS_H -#undef HAVE_IBUS_IBUS_H #undef HAVE_FCITX_FRONTEND_H +#undef HAVE_IBUS_IBUS_H +#undef HAVE_IMMINTRIN_H #undef HAVE_LIBSAMPLERATE_H +#undef HAVE_LIBUDEV_H #undef HAVE_DDRAW_H #undef HAVE_DINPUT_H @@ -246,7 +262,6 @@ #undef SDL_AUDIO_DRIVER_SUNAUDIO #undef SDL_AUDIO_DRIVER_WASAPI #undef SDL_AUDIO_DRIVER_WINMM -#undef SDL_AUDIO_DRIVER_XAUDIO2 /* Enable various input drivers */ #undef SDL_INPUT_LINUXEV @@ -264,6 +279,7 @@ #undef SDL_JOYSTICK_USBHID_MACHINE_JOYSTICK_H #undef SDL_JOYSTICK_EMSCRIPTEN #undef SDL_HAPTIC_DUMMY +#undef SDL_HAPTIC_ANDROID #undef SDL_HAPTIC_LINUX #undef SDL_HAPTIC_IOKIT #undef SDL_HAPTIC_DINPUT @@ -341,6 +357,7 @@ #undef SDL_VIDEO_RENDER_OGL_ES #undef SDL_VIDEO_RENDER_OGL_ES2 #undef SDL_VIDEO_RENDER_DIRECTFB +#undef SDL_VIDEO_RENDER_METAL /* Enable OpenGL support */ #undef SDL_VIDEO_OPENGL diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config_android.h b/sdl2-sys/SDL2-2.0.8/include/SDL_config_android.h similarity index 89% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config_android.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_config_android.h index c3169e557c4..4c4da37ec6a 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config_android.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config_android.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -68,7 +68,6 @@ #define HAVE_STRLEN 1 #define HAVE_STRLCPY 1 #define HAVE_STRLCAT 1 -#define HAVE_STRDUP 1 #define HAVE_STRCHR 1 #define HAVE_STRRCHR 1 #define HAVE_STRSTR 1 @@ -85,20 +84,34 @@ #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 #define HAVE_VSNPRINTF 1 -#define HAVE_M_PI 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 #define HAVE_ATAN 1 +#define HAVE_ATANF 1 #define HAVE_ATAN2 1 -#define HAVE_ACOS 1 -#define HAVE_ASIN 1 +#define HAVE_ATAN2F 1 #define HAVE_CEIL 1 +#define HAVE_CEILF 1 #define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 #define HAVE_COS 1 #define HAVE_COSF 1 #define HAVE_FABS 1 +#define HAVE_FABSF 1 #define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 #define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 #define HAVE_POW 1 +#define HAVE_POWF 1 #define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 #define HAVE_SIN 1 #define HAVE_SINF 1 #define HAVE_SQRT 1 @@ -109,7 +122,7 @@ #define HAVE_SETJMP 1 #define HAVE_NANOSLEEP 1 #define HAVE_SYSCONF 1 -#define HAVE_CLOCK_GETTIME 1 +#define HAVE_CLOCK_GETTIME 1 #define SIZEOF_VOIDP 4 diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config_iphoneos.h b/sdl2-sys/SDL2-2.0.8/include/SDL_config_iphoneos.h similarity index 81% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config_iphoneos.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_config_iphoneos.h index 94ab6933c49..7b0a6ca2df2 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config_iphoneos.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config_iphoneos.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -44,6 +44,8 @@ #define HAVE_STDIO_H 1 #define HAVE_STRING_H 1 #define HAVE_SYS_TYPES_H 1 +/* The libunwind functions are only available on x86 */ +/* #undef HAVE_LIBUNWIND_H */ /* C library functions */ #define HAVE_MALLOC 1 @@ -66,7 +68,6 @@ #define HAVE_STRLEN 1 #define HAVE_STRLCPY 1 #define HAVE_STRLCAT 1 -#define HAVE_STRDUP 1 #define HAVE_STRCHR 1 #define HAVE_STRRCHR 1 #define HAVE_STRSTR 1 @@ -84,19 +85,34 @@ #define HAVE_VSSCANF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 #define HAVE_ATAN 1 +#define HAVE_ATANF 1 #define HAVE_ATAN2 1 -#define HAVE_ACOS 1 -#define HAVE_ASIN 1 +#define HAVE_ATAN2F 1 #define HAVE_CEIL 1 +#define HAVE_CEILF 1 #define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 #define HAVE_COS 1 #define HAVE_COSF 1 #define HAVE_FABS 1 +#define HAVE_FABSF 1 #define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 #define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 #define HAVE_POW 1 +#define HAVE_POWF 1 #define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 #define HAVE_SIN 1 #define HAVE_SINF 1 #define HAVE_SQRT 1 @@ -134,17 +150,25 @@ #define SDL_VIDEO_DRIVER_UIKIT 1 #define SDL_VIDEO_DRIVER_DUMMY 1 -/* enable OpenGL ES */ +/* Enable OpenGL ES */ #define SDL_VIDEO_OPENGL_ES2 1 #define SDL_VIDEO_OPENGL_ES 1 #define SDL_VIDEO_RENDER_OGL_ES 1 #define SDL_VIDEO_RENDER_OGL_ES2 1 -/* Enable Vulkan support on 64-bit devices when an iOS 8+ SDK is used. */ -#if !TARGET_OS_SIMULATOR && !TARGET_CPU_ARM && defined(__IPHONE_8_0) -#define SDL_VIDEO_VULKAN 1 +/* Metal supported on 64-bit devices running iOS 8.0 and tvOS 9.0 and newer */ +#if !TARGET_OS_SIMULATOR && !TARGET_CPU_ARM && ((__IPHONE_OS_VERSION_MIN_REQUIRED >= 80000) || (__TV_OS_VERSION_MIN_REQUIRED >= 90000)) +#define SDL_PLATFORM_SUPPORTS_METAL 1 #else -#define SDL_VIDEO_VULKAN 0 +#define SDL_PLATFORM_SUPPORTS_METAL 0 +#endif + +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_RENDER_METAL 1 +#endif + +#if SDL_PLATFORM_SUPPORTS_METAL +#define SDL_VIDEO_VULKAN 1 #endif /* Enable system power support */ diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config_macosx.h b/sdl2-sys/SDL2-2.0.8/include/SDL_config_macosx.h similarity index 84% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config_macosx.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_config_macosx.h index 67f879a492a..29f583e1014 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config_macosx.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config_macosx.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -49,6 +49,7 @@ #define HAVE_STDIO_H 1 #define HAVE_STRING_H 1 #define HAVE_SYS_TYPES_H 1 +#define HAVE_LIBUNWIND_H 1 /* C library functions */ #define HAVE_MALLOC 1 @@ -70,7 +71,6 @@ #define HAVE_STRLEN 1 #define HAVE_STRLCPY 1 #define HAVE_STRLCAT 1 -#define HAVE_STRDUP 1 #define HAVE_STRCHR 1 #define HAVE_STRRCHR 1 #define HAVE_STRSTR 1 @@ -87,15 +87,35 @@ #define HAVE_STRNCASECMP 1 #define HAVE_VSSCANF 1 #define HAVE_VSNPRINTF 1 +#define HAVE_M_PI 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 +#define HAVE_ATAN 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2 1 +#define HAVE_ATAN2F 1 #define HAVE_CEIL 1 +#define HAVE_CEILF 1 #define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 #define HAVE_COS 1 #define HAVE_COSF 1 #define HAVE_FABS 1 +#define HAVE_FABSF 1 #define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 #define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 #define HAVE_POW 1 +#define HAVE_POWF 1 #define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 #define HAVE_SIN 1 #define HAVE_SINF 1 #define HAVE_SQRT 1 @@ -107,10 +127,6 @@ #define HAVE_NANOSLEEP 1 #define HAVE_SYSCONF 1 #define HAVE_SYSCTLBYNAME 1 -#define HAVE_ATAN 1 -#define HAVE_ATAN2 1 -#define HAVE_ACOS 1 -#define HAVE_ASIN 1 /* Enable various audio drivers */ #define SDL_AUDIO_DRIVER_COREAUDIO 1 @@ -165,10 +181,29 @@ #define SDL_VIDEO_RENDER_OGL 1 #endif +#ifndef SDL_VIDEO_RENDER_OGL_ES2 +#define SDL_VIDEO_RENDER_OGL_ES2 1 +#endif + +#ifndef SDL_VIDEO_RENDER_METAL +/* Metal only supported on 64-bit architectures with 10.11+ */ +#if TARGET_CPU_X86_64 && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) +#define SDL_VIDEO_RENDER_METAL 1 +#else +#define SDL_VIDEO_RENDER_METAL 0 +#endif +#endif + /* Enable OpenGL support */ #ifndef SDL_VIDEO_OPENGL #define SDL_VIDEO_OPENGL 1 #endif +#ifndef SDL_VIDEO_OPENGL_ES2 +#define SDL_VIDEO_OPENGL_ES2 1 +#endif +#ifndef SDL_VIDEO_OPENGL_EGL +#define SDL_VIDEO_OPENGL_EGL 1 +#endif #ifndef SDL_VIDEO_OPENGL_CGL #define SDL_VIDEO_OPENGL_CGL 1 #endif @@ -181,7 +216,7 @@ #if TARGET_CPU_X86_64 && (MAC_OS_X_VERSION_MAX_ALLOWED >= 101100) #define SDL_VIDEO_VULKAN 1 #else -#define SDL_VIDEO_VULKAN 0 +#define SDL_VIDEO_VULKAN 0 #endif /* Enable system power support */ diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config_minimal.h b/sdl2-sys/SDL2-2.0.8/include/SDL_config_minimal.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config_minimal.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_config_minimal.h index 31127006c50..5b03d8b69cb 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config_minimal.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config_minimal.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config_pandora.h b/sdl2-sys/SDL2-2.0.8/include/SDL_config_pandora.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config_pandora.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_config_pandora.h index f6f52fc11ee..be5a85c19aa 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config_pandora.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config_pandora.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -70,7 +70,6 @@ #define HAVE_MEMCPY 1 #define HAVE_MEMMOVE 1 #define HAVE_STRLEN 1 -#define HAVE_STRDUP 1 #define HAVE_STRCHR 1 #define HAVE_STRRCHR 1 #define HAVE_STRSTR 1 @@ -94,6 +93,7 @@ #define HAVE_FABS 1 #define HAVE_FLOOR 1 #define HAVE_LOG 1 +#define HAVE_LOG10 1 #define HAVE_SCALBN 1 #define HAVE_SIN 1 #define HAVE_SINF 1 diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config_psp.h b/sdl2-sys/SDL2-2.0.8/include/SDL_config_psp.h similarity index 89% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config_psp.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_config_psp.h index 0e61979066a..61c334978b4 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config_psp.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config_psp.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -66,7 +66,6 @@ #define HAVE_STRLEN 1 #define HAVE_STRLCPY 1 #define HAVE_STRLCAT 1 -#define HAVE_STRDUP 1 #define HAVE_STRCHR 1 #define HAVE_STRRCHR 1 #define HAVE_STRSTR 1 @@ -84,19 +83,34 @@ #define HAVE_VSSCANF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 #define HAVE_ATAN 1 +#define HAVE_ATANF 1 #define HAVE_ATAN2 1 -#define HAVE_ACOS 1 -#define HAVE_ASIN 1 +#define HAVE_ATAN2F 1 #define HAVE_CEIL 1 +#define HAVE_CEILF 1 #define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 #define HAVE_COS 1 #define HAVE_COSF 1 #define HAVE_FABS 1 +#define HAVE_FABSF 1 #define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 #define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 #define HAVE_POW 1 +#define HAVE_POWF 1 #define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 #define HAVE_SIN 1 #define HAVE_SINF 1 #define HAVE_SQRT 1 diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config_windows.h b/sdl2-sys/SDL2-2.0.8/include/SDL_config_windows.h similarity index 84% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config_windows.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_config_windows.h index 1bbb8384814..52a9ece161c 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config_windows.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config_windows.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -109,13 +109,15 @@ typedef unsigned int uintptr_t; #define HAVE_MEMCMP 1 #define HAVE_STRLEN 1 #define HAVE__STRREV 1 -#define HAVE__STRUPR 1 -#define HAVE__STRLWR 1 +/* These functions have security warnings, so we won't use them */ +/* #undef HAVE__STRUPR */ +/* #undef HAVE__STRLWR */ #define HAVE_STRCHR 1 #define HAVE_STRRCHR 1 #define HAVE_STRSTR 1 -#define HAVE__LTOA 1 -#define HAVE__ULTOA 1 +/* These functions have security warnings, so we won't use them */ +/* #undef HAVE__LTOA */ +/* #undef HAVE__ULTOA */ #define HAVE_STRTOL 1 #define HAVE_STRTOUL 1 #define HAVE_STRTOD 1 @@ -125,30 +127,43 @@ typedef unsigned int uintptr_t; #define HAVE_STRNCMP 1 #define HAVE__STRICMP 1 #define HAVE__STRNICMP 1 -#define HAVE_ATAN 1 -#define HAVE_ATAN2 1 -#define HAVE_ACOS 1 -#define HAVE_ASIN 1 -#define HAVE_CEIL 1 -#define HAVE_COS 1 -#define HAVE_COSF 1 -#define HAVE_FABS 1 -#define HAVE_FLOOR 1 -#define HAVE_LOG 1 -#define HAVE_POW 1 -#define HAVE_SIN 1 -#define HAVE_SINF 1 -#define HAVE_SQRT 1 -#define HAVE_SQRTF 1 -#define HAVE_TAN 1 -#define HAVE_TANF 1 -#define HAVE__COPYSIGN 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 +#define HAVE_ATAN 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2 1 +#define HAVE_ATAN2F 1 +#define HAVE_CEILF 1 +#define HAVE__COPYSIGN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FABSF 1 +#define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 +#define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 +#define HAVE_POW 1 +#define HAVE_POWF 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SQRTF 1 +#define HAVE_TAN 1 +#define HAVE_TANF 1 #if defined(_MSC_VER) /* These functions were added with the VC++ 2013 C runtime library */ #if _MSC_VER >= 1800 #define HAVE_STRTOLL 1 #define HAVE_VSSCANF 1 #define HAVE_SCALBN 1 +#define HAVE_SCALBNF 1 #endif /* This function is available with at least the VC++ 2008 C runtime library */ #if _MSC_VER >= 1400 @@ -166,7 +181,6 @@ typedef unsigned int uintptr_t; /* Enable various audio drivers */ #define SDL_AUDIO_DRIVER_WASAPI 1 #define SDL_AUDIO_DRIVER_DSOUND 1 -#define SDL_AUDIO_DRIVER_XAUDIO2 0 #define SDL_AUDIO_DRIVER_WINMM 1 #define SDL_AUDIO_DRIVER_DISK 1 #define SDL_AUDIO_DRIVER_DUMMY 1 @@ -194,7 +208,7 @@ typedef unsigned int uintptr_t; #define SDL_VIDEO_RENDER_D3D 1 #endif #ifndef SDL_VIDEO_RENDER_D3D11 -#define SDL_VIDEO_RENDER_D3D11 0 +#define SDL_VIDEO_RENDER_D3D11 0 #endif /* Enable OpenGL support */ diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config_winrt.h b/sdl2-sys/SDL2-2.0.8/include/SDL_config_winrt.h similarity index 79% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config_winrt.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_config_winrt.h index 93d7ae1b4a1..aac0e6014b7 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config_winrt.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config_winrt.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -44,7 +44,7 @@ #if !defined(_STDINT_H_) && (!defined(HAVE_STDINT_H) || !_HAVE_STDINT_H) #if defined(__GNUC__) || defined(__DMC__) || defined(__WATCOMC__) -#define HAVE_STDINT_H 1 +#define HAVE_STDINT_H 1 #elif defined(_MSC_VER) typedef signed __int8 int8_t; typedef unsigned __int8 uint8_t; @@ -122,13 +122,13 @@ typedef unsigned int uintptr_t; #define HAVE_STRLEN 1 #define HAVE__STRREV 1 #define HAVE__STRUPR 1 -//#define HAVE__STRLWR 1 // TODO, WinRT: consider using _strlwr_s instead +//#define HAVE__STRLWR 1 // TODO, WinRT: consider using _strlwr_s instead #define HAVE_STRCHR 1 #define HAVE_STRRCHR 1 #define HAVE_STRSTR 1 //#define HAVE_ITOA 1 // TODO, WinRT: consider using _itoa_s instead -//#define HAVE__LTOA 1 // TODO, WinRT: consider using _ltoa_s instead -//#define HAVE__ULTOA 1 // TODO, WinRT: consider using _ultoa_s instead +//#define HAVE__LTOA 1 // TODO, WinRT: consider using _ltoa_s instead +//#define HAVE__ULTOA 1 // TODO, WinRT: consider using _ultoa_s instead #define HAVE_STRTOL 1 #define HAVE_STRTOUL 1 //#define HAVE_STRTOLL 1 @@ -140,44 +140,58 @@ typedef unsigned int uintptr_t; #define HAVE__STRICMP 1 #define HAVE__STRNICMP 1 #define HAVE_VSNPRINTF 1 -//#define HAVE_SSCANF 1 // TODO, WinRT: consider using sscanf_s instead +//#define HAVE_SSCANF 1 // TODO, WinRT: consider using sscanf_s instead #define HAVE_M_PI 1 -#define HAVE_ATAN 1 -#define HAVE_ATAN2 1 -#define HAVE_CEIL 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 +#define HAVE_ATAN 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2 1 +#define HAVE_ATAN2F 1 +#define HAVE_CEIL 1 +#define HAVE_CEILF 1 #define HAVE__COPYSIGN 1 -#define HAVE_COS 1 -#define HAVE_COSF 1 -#define HAVE_FABS 1 -#define HAVE_FLOOR 1 -#define HAVE_LOG 1 -#define HAVE_POW 1 -//#define HAVE_SCALBN 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FABSF 1 +#define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 +#define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 +#define HAVE_POW 1 +#define HAVE_POWF 1 #define HAVE__SCALB 1 -#define HAVE_SIN 1 -#define HAVE_SINF 1 -#define HAVE_SQRT 1 -#define HAVE_SQRTF 1 -#define HAVE_TAN 1 -#define HAVE_TANF 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SQRTF 1 +#define HAVE_TAN 1 +#define HAVE_TANF 1 #define HAVE__FSEEKI64 1 /* Enable various audio drivers */ -#define SDL_AUDIO_DRIVER_XAUDIO2 1 -#define SDL_AUDIO_DRIVER_DISK 1 -#define SDL_AUDIO_DRIVER_DUMMY 1 +#define SDL_AUDIO_DRIVER_WASAPI 1 +#define SDL_AUDIO_DRIVER_DISK 1 +#define SDL_AUDIO_DRIVER_DUMMY 1 /* Enable various input drivers */ #if WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP #define SDL_JOYSTICK_DISABLED 1 -#define SDL_HAPTIC_DISABLED 1 +#define SDL_HAPTIC_DISABLED 1 #else #define SDL_JOYSTICK_XINPUT 1 #define SDL_HAPTIC_XINPUT 1 #endif /* Enable various shared object loading systems */ -#define SDL_LOADSO_WINDOWS 1 +#define SDL_LOADSO_WINDOWS 1 /* Enable various threading systems */ #if (NTDDI_VERSION >= NTDDI_WINBLUE) @@ -188,10 +202,10 @@ typedef unsigned int uintptr_t; #endif /* Enable various timer systems */ -#define SDL_TIMER_WINDOWS 1 +#define SDL_TIMER_WINDOWS 1 /* Enable various video drivers */ -#define SDL_VIDEO_DRIVER_WINRT 1 +#define SDL_VIDEO_DRIVER_WINRT 1 #define SDL_VIDEO_DRIVER_DUMMY 1 /* Enable OpenGL ES 2.0 (via a modified ANGLE library) */ @@ -210,7 +224,7 @@ typedef unsigned int uintptr_t; /* Enable assembly routines (Win64 doesn't have inline asm) */ #ifndef _WIN64 -#define SDL_ASSEMBLY_ROUTINES 1 +#define SDL_ASSEMBLY_ROUTINES 1 #endif #endif /* SDL_config_winrt_h_ */ diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_config_wiz.h b/sdl2-sys/SDL2-2.0.8/include/SDL_config_wiz.h similarity index 77% rename from sdl2-sys/SDL2-2.0.6/include/SDL_config_wiz.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_config_wiz.h index 3afd8d8af4e..fe86d5ec37e 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_config_wiz.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_config_wiz.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -64,7 +64,6 @@ #define HAVE_MEMCPY 1 #define HAVE_MEMMOVE 1 #define HAVE_STRLEN 1 -#define HAVE_STRDUP 1 #define HAVE_STRCHR 1 #define HAVE_STRRCHR 1 #define HAVE_STRSTR 1 @@ -81,20 +80,40 @@ #define HAVE_VSSCANF 1 #define HAVE_VSNPRINTF 1 #define HAVE_M_PI 1 -#define HAVE_CEIL 1 -#define HAVE_COPYSIGN 1 -#define HAVE_COS 1 -#define HAVE_COSF 1 -#define HAVE_FABS 1 -#define HAVE_FLOOR 1 -#define HAVE_LOG 1 +#define HAVE_ACOS 1 +#define HAVE_ACOSF 1 +#define HAVE_ASIN 1 +#define HAVE_ASINF 1 +#define HAVE_ATAN 1 +#define HAVE_ATANF 1 +#define HAVE_ATAN2 1 +#define HAVE_ATAN2F 1 +#define HAVE_CEIL 1 +#define HAVE_CEILF 1 +#define HAVE_COPYSIGN 1 +#define HAVE_COPYSIGNF 1 +#define HAVE_COS 1 +#define HAVE_COSF 1 +#define HAVE_FABS 1 +#define HAVE_FABSF 1 +#define HAVE_FLOOR 1 +#define HAVE_FLOORF 1 +#define HAVE_FMOD 1 +#define HAVE_FMODF 1 +#define HAVE_LOG 1 +#define HAVE_LOGF 1 +#define HAVE_LOG10 1 +#define HAVE_LOG10F 1 +#define HAVE_POW 1 +#define HAVE_POWF 1 #define HAVE_SCALBN 1 -#define HAVE_SIN 1 -#define HAVE_SINF 1 -#define HAVE_SQRT 1 -#define HAVE_SQRTF 1 -#define HAVE_TAN 1 -#define HAVE_TANF 1 +#define HAVE_SCALBNF 1 +#define HAVE_SIN 1 +#define HAVE_SINF 1 +#define HAVE_SQRT 1 +#define HAVE_SQRTF 1 +#define HAVE_TAN 1 +#define HAVE_TANF 1 #define HAVE_SIGACTION 1 #define HAVE_SETJMP 1 #define HAVE_NANOSLEEP 1 diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_copying.h b/sdl2-sys/SDL2-2.0.8/include/SDL_copying.h similarity index 93% rename from sdl2-sys/SDL2-2.0.6/include/SDL_copying.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_copying.h index 8f60af6b4f3..15616ace5f7 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_copying.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_copying.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_cpuinfo.h b/sdl2-sys/SDL2-2.0.8/include/SDL_cpuinfo.h similarity index 87% rename from sdl2-sys/SDL2-2.0.6/include/SDL_cpuinfo.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_cpuinfo.h index 94b64b03bc5..08127053096 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_cpuinfo.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_cpuinfo.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -51,27 +51,32 @@ #include #else #ifdef __ALTIVEC__ -#if HAVE_ALTIVEC_H && !defined(__APPLE_ALTIVEC__) +#if HAVE_ALTIVEC_H && !defined(__APPLE_ALTIVEC__) && !defined(SDL_DISABLE_ALTIVEC_H) #include #undef pixel +#undef bool #endif #endif -#ifdef __MMX__ -#include -#endif -#ifdef __3dNOW__ +#if defined(__3dNOW__) && !defined(SDL_DISABLE_MM3DNOW_H) #include #endif -#ifdef __SSE__ +#if HAVE_IMMINTRIN_H && !defined(SDL_DISABLE_IMMINTRIN_H) +#include +#else +#if defined(__MMX__) && !defined(SDL_DISABLE_MMINTRIN_H) +#include +#endif +#if defined(__SSE__) && !defined(SDL_DISABLE_XMMINTRIN_H) #include #endif -#ifdef __SSE2__ +#if defined(__SSE2__) && !defined(SDL_DISABLE_EMMINTRIN_H) #include #endif -#ifdef __SSE3__ +#if defined(__SSE3__) && !defined(SDL_DISABLE_PMMINTRIN_H) #include #endif -#endif +#endif /* HAVE_IMMINTRIN_H */ +#endif /* compiler version */ #include "begin_code.h" /* Set up for C function definitions, even when using C++ */ diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_egl.h b/sdl2-sys/SDL2-2.0.8/include/SDL_egl.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_egl.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_egl.h index e47fbe86247..d65ed437c33 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_egl.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_egl.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -24,7 +24,7 @@ * * This is a simple file to encapsulate the EGL API headers. */ -#ifndef _MSC_VER +#if !defined(_MSC_VER) && !defined(__ANDROID__) #include #include diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_endian.h b/sdl2-sys/SDL2-2.0.8/include/SDL_endian.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_endian.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_endian.h index 3eda7f28711..ed0bf5ba8f9 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_endian.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_endian.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_error.h b/sdl2-sys/SDL2-2.0.8/include/SDL_error.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_error.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_error.h index 49be9827e18..c0e46298e8f 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_error.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_error.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_events.h b/sdl2-sys/SDL2-2.0.8/include/SDL_events.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_events.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_events.h index 0fc09bc37d7..3d39e6a736c 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_events.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_events.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_filesystem.h b/sdl2-sys/SDL2-2.0.8/include/SDL_filesystem.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_filesystem.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_filesystem.h index a1c846ad0f0..fa6a1fa6e7b 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_filesystem.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_filesystem.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_gamecontroller.h b/sdl2-sys/SDL2-2.0.8/include/SDL_gamecontroller.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_gamecontroller.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_gamecontroller.h index c9215132ef5..2e024be6506 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_gamecontroller.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_gamecontroller.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_gesture.h b/sdl2-sys/SDL2-2.0.8/include/SDL_gesture.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_gesture.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_gesture.h index 2bba6a7294f..b223d80d44c 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_gesture.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_gesture.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_haptic.h b/sdl2-sys/SDL2-2.0.8/include/SDL_haptic.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_haptic.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_haptic.h index 60daefaa709..e3a2bca5fb1 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_haptic.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_haptic.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_hints.h b/sdl2-sys/SDL2-2.0.8/include/SDL_hints.h similarity index 92% rename from sdl2-sys/SDL2-2.0.6/include/SDL_hints.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_hints.h index 007a4bee05c..3834640f2df 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_hints.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_hints.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -76,6 +76,7 @@ extern "C" { * "opengl" * "opengles2" * "opengles" + * "metal" * "software" * * The default varies by platform, but it's the first one in the list that @@ -210,6 +211,18 @@ extern "C" { */ #define SDL_HINT_VIDEO_X11_NET_WM_PING "SDL_VIDEO_X11_NET_WM_PING" +/** + * \brief A variable controlling whether the X11 _NET_WM_BYPASS_COMPOSITOR hint should be used. + * + * This variable can be set to the following values: + * "0" - Disable _NET_WM_BYPASS_COMPOSITOR + * "1" - Enable _NET_WM_BYPASS_COMPOSITOR + * + * By default SDL will use _NET_WM_BYPASS_COMPOSITOR + * + */ +#define SDL_HINT_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR "SDL_VIDEO_X11_NET_WM_BYPASS_COMPOSITOR" + /** * \brief A variable controlling whether the window frame and title bar are interactive when the cursor is hidden * @@ -354,17 +367,37 @@ extern "C" { */ #define SDL_HINT_APPLE_TV_REMOTE_ALLOW_ROTATION "SDL_APPLE_TV_REMOTE_ALLOW_ROTATION" +/** + * \brief A variable controlling whether the home indicator bar on iPhone X + * should be hidden. + * + * This variable can be set to the following values: + * "0" - The indicator bar is not hidden (default for windowed applications) + * "1" - The indicator bar is hidden and is shown when the screen is touched (useful for movie playback applications) + * "2" - The indicator bar is dim and the first swipe makes it visible and the second swipe performs the "home" action (default for fullscreen applications) + */ +#define SDL_HINT_IOS_HIDE_HOME_INDICATOR "SDL_IOS_HIDE_HOME_INDICATOR" + /** * \brief A variable controlling whether the Android / iOS built-in - * accelerometer should be listed as a joystick device, rather than listing - * actual joysticks only. + * accelerometer should be listed as a joystick device. * * This variable can be set to the following values: - * "0" - List only real joysticks and accept input from them - * "1" - List real joysticks along with the accelerometer as if it were a 3 axis joystick (the default). + * "0" - The accelerometer is not listed as a joystick + * "1" - The accelerometer is available as a 3 axis joystick (the default). */ #define SDL_HINT_ACCELEROMETER_AS_JOYSTICK "SDL_ACCELEROMETER_AS_JOYSTICK" +/** + * \brief A variable controlling whether the Android / tvOS remotes + * should be listed as joystick devices, instead of sending keyboard events. + * + * This variable can be set to the following values: + * "0" - Remotes send enter/escape/arrow key events + * "1" - Remotes are available as 2 axis, 2 button joysticks (the default). + */ +#define SDL_HINT_TV_REMOTE_AS_JOYSTICK "SDL_TV_REMOTE_AS_JOYSTICK" + /** * \brief A variable that lets you disable the detection and use of Xinput gamepad devices * @@ -719,6 +752,18 @@ extern "C" { */ #define SDL_HINT_ANDROID_SEPARATE_MOUSE_AND_TOUCH "SDL_ANDROID_SEPARATE_MOUSE_AND_TOUCH" + /** + * \brief A variable to control whether the return key on the soft keyboard + * should hide the soft keyboard on Android and iOS. + * + * The variable can be set to the following values: + * "0" - The return key will be handled as a key event. This is the behaviour of SDL <= 2.0.3. (default) + * "1" - The return key will hide the keyboard. + * + * The value of this hint is used at runtime, so it can be changed at any time. + */ +#define SDL_HINT_RETURN_KEY_HIDES_IME "SDL_RETURN_KEY_HIDES_IME" + /** * \brief override the binding element for keyboard inputs for Emscripten builds * @@ -752,7 +797,7 @@ extern "C" { * "0" - SDL will generate a window-close event when it sees Alt+F4. * "1" - SDL will only do normal key handling for Alt+F4. */ -#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4" +#define SDL_HINT_WINDOWS_NO_CLOSE_ON_ALT_F4 "SDL_WINDOWS_NO_CLOSE_ON_ALT_F4" /** * \brief Prevent SDL from using version 4 of the bitmap header when saving BMPs. @@ -797,6 +842,24 @@ extern "C" { */ #define SDL_HINT_RPI_VIDEO_LAYER "SDL_RPI_VIDEO_LAYER" +/** + * \brief Tell the video driver that we only want a double buffer. + * + * By default, most lowlevel 2D APIs will use a triple buffer scheme that + * wastes no CPU time on waiting for vsync after issuing a flip, but + * introduces a frame of latency. On the other hand, using a double buffer + * scheme instead is recommended for cases where low latency is an important + * factor because we save a whole frame of latency. + * We do so by waiting for vsync immediately after issuing a flip, usually just + * after eglSwapBuffers call in the backend's *_SwapWindow function. + * + * Since it's driver-specific, it's only supported where possible and + * implemented. Currently supported the following drivers: + * - KMSDRM (kmsdrm) + * - Raspberry Pi (raspberrypi) + */ +#define SDL_HINT_VIDEO_DOUBLE_BUFFER "SDL_VIDEO_DOUBLE_BUFFER" + /** * \brief A variable controlling what driver to use for OpenGL ES contexts. * diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_joystick.h b/sdl2-sys/SDL2-2.0.8/include/SDL_joystick.h similarity index 95% rename from sdl2-sys/SDL2-2.0.6/include/SDL_joystick.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_joystick.h index 698b09c1429..f67772d713e 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_joystick.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_joystick.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -106,6 +106,20 @@ typedef enum } SDL_JoystickPowerLevel; /* Function prototypes */ + +/** + * Locking for multi-threaded access to the joystick API + * + * If you are using the joystick API or handling events from multiple threads + * you should use these locking functions to protect access to the joysticks. + * + * In particular, you are guaranteed that the joystick list won't change, so + * the API functions that take a joystick index will be valid, and joystick + * and game controller events will not be delivered. + */ +extern DECLSPEC void SDLCALL SDL_LockJoysticks(void); +extern DECLSPEC void SDLCALL SDL_UnlockJoysticks(void); + /** * Count the number of joysticks attached to the system right now */ diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_keyboard.h b/sdl2-sys/SDL2-2.0.8/include/SDL_keyboard.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_keyboard.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_keyboard.h index e78ca469082..87482317161 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_keyboard.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_keyboard.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_keycode.h b/sdl2-sys/SDL2-2.0.8/include/SDL_keycode.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_keycode.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_keycode.h index c41e45ff61b..d7d5b1dbcde 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_keycode.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_keycode.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_loadso.h b/sdl2-sys/SDL2-2.0.8/include/SDL_loadso.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_loadso.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_loadso.h index 6ea256c6ae5..da56fb45277 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_loadso.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_loadso.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_log.h b/sdl2-sys/SDL2-2.0.8/include/SDL_log.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_log.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_log.h index 356d0e1cf74..e12b6588601 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_log.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_log.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_main.h b/sdl2-sys/SDL2-2.0.8/include/SDL_main.h similarity index 92% rename from sdl2-sys/SDL2-2.0.6/include/SDL_main.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_main.h index 2af32360f7b..98558217fc2 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_main.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_main.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -63,10 +63,13 @@ /* On Android SDL provides a Java class in SDLActivity.java that is the main activity entry point. - See README-android.md for more details on extending that class. + See docs/README-android.md for more details on extending that class. */ #define SDL_MAIN_NEEDED +/* We need to export SDL_main so it can be launched from Java */ +#define SDLMAIN_DECLSPEC DECLSPEC + #elif defined(__NACL__) /* On NACL we use ppapi_simple to set up the application helper code, then wait for the first PSE_INSTANCE_DIDCHANGEVIEW event before @@ -85,6 +88,10 @@ #define C_LINKAGE #endif /* __cplusplus */ +#ifndef SDLMAIN_DECLSPEC +#define SDLMAIN_DECLSPEC +#endif + /** * \file SDL_main.h * @@ -107,7 +114,7 @@ /** * The prototype for the application's main() function */ -extern C_LINKAGE DECLSPEC int SDL_main(int argc, char *argv[]); +extern C_LINKAGE SDLMAIN_DECLSPEC int SDL_main(int argc, char *argv[]); #include "begin_code.h" diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_messagebox.h b/sdl2-sys/SDL2-2.0.8/include/SDL_messagebox.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_messagebox.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_messagebox.h index c326d8f0109..b7be59d88f5 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_messagebox.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_messagebox.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_mouse.h b/sdl2-sys/SDL2-2.0.8/include/SDL_mouse.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_mouse.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_mouse.h index 6001bd46c1e..d3c9f6156cb 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_mouse.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_mouse.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_mutex.h b/sdl2-sys/SDL2-2.0.8/include/SDL_mutex.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_mutex.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_mutex.h index 0272379e55e..ba4247ced81 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_mutex.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_mutex.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_name.h b/sdl2-sys/SDL2-2.0.8/include/SDL_name.h similarity index 94% rename from sdl2-sys/SDL2-2.0.6/include/SDL_name.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_name.h index 8095ed3ffd4..ecd863f4ca8 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_name.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_name.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_opengl.h b/sdl2-sys/SDL2-2.0.8/include/SDL_opengl.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_opengl.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_opengl.h index 314dd57eda3..253d9c93a96 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_opengl.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_opengl.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_opengl_glext.h b/sdl2-sys/SDL2-2.0.8/include/SDL_opengl_glext.h similarity index 100% rename from sdl2-sys/SDL2-2.0.6/include/SDL_opengl_glext.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_opengl_glext.h diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_opengles.h b/sdl2-sys/SDL2-2.0.8/include/SDL_opengles.h similarity index 95% rename from sdl2-sys/SDL2-2.0.6/include/SDL_opengles.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_opengles.h index 800c593070a..18dd984b3ed 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_opengles.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_opengles.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_opengles2.h b/sdl2-sys/SDL2-2.0.8/include/SDL_opengles2.h similarity index 96% rename from sdl2-sys/SDL2-2.0.6/include/SDL_opengles2.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_opengles2.h index 102f2f3fa70..6ccecf21657 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_opengles2.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_opengles2.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_opengles2_gl2.h b/sdl2-sys/SDL2-2.0.8/include/SDL_opengles2_gl2.h similarity index 100% rename from sdl2-sys/SDL2-2.0.6/include/SDL_opengles2_gl2.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_opengles2_gl2.h diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_opengles2_gl2ext.h b/sdl2-sys/SDL2-2.0.8/include/SDL_opengles2_gl2ext.h similarity index 100% rename from sdl2-sys/SDL2-2.0.6/include/SDL_opengles2_gl2ext.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_opengles2_gl2ext.h diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_opengles2_gl2platform.h b/sdl2-sys/SDL2-2.0.8/include/SDL_opengles2_gl2platform.h similarity index 100% rename from sdl2-sys/SDL2-2.0.6/include/SDL_opengles2_gl2platform.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_opengles2_gl2platform.h diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_opengles2_khrplatform.h b/sdl2-sys/SDL2-2.0.8/include/SDL_opengles2_khrplatform.h similarity index 100% rename from sdl2-sys/SDL2-2.0.6/include/SDL_opengles2_khrplatform.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_opengles2_khrplatform.h diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_pixels.h b/sdl2-sys/SDL2-2.0.8/include/SDL_pixels.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_pixels.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_pixels.h index 04246689f59..0b4364b1852 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_pixels.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_pixels.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -287,7 +287,9 @@ enum SDL_PIXELFORMAT_NV12 = /**< Planar mode: Y + U/V interleaved (2 planes) */ SDL_DEFINE_PIXELFOURCC('N', 'V', '1', '2'), SDL_PIXELFORMAT_NV21 = /**< Planar mode: Y + V/U interleaved (2 planes) */ - SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1') + SDL_DEFINE_PIXELFOURCC('N', 'V', '2', '1'), + SDL_PIXELFORMAT_EXTERNAL_OES = /**< Android video texture format */ + SDL_DEFINE_PIXELFOURCC('O', 'E', 'S', ' ') }; typedef struct SDL_Color diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_platform.h b/sdl2-sys/SDL2-2.0.8/include/SDL_platform.h similarity index 96% rename from sdl2-sys/SDL2-2.0.6/include/SDL_platform.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_platform.h index 9dde385fa67..7dea4ce940f 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_platform.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_platform.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -121,7 +121,12 @@ #if defined(WIN32) || defined(_WIN32) || defined(__CYGWIN__) || defined(__MINGW32__) /* Try to find out if we're compiling for WinRT or non-WinRT */ #if defined(_MSC_VER) && defined(__has_include) -#define HAVE_WINAPIFAMILY_H __has_include() +#if __has_include() +#define HAVE_WINAPIFAMILY_H 1 +#else +#define HAVE_WINAPIFAMILY_H 0 +#endif + /* If _USING_V110_SDK71_ is defined it means we are using the Windows XP toolset. */ #elif defined(_MSC_VER) && (_MSC_VER >= 1700 && !_USING_V110_SDK71_) /* _MSC_VER == 1700 for Visual Studio 2012 */ #define HAVE_WINAPIFAMILY_H 1 diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_power.h b/sdl2-sys/SDL2-2.0.8/include/SDL_power.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_power.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_power.h index d48e8a3795d..a4fe8a9359c 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_power.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_power.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_quit.h b/sdl2-sys/SDL2-2.0.8/include/SDL_quit.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_quit.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_quit.h index 9283c381050..fea56a8d88b 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_quit.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_quit.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_rect.h b/sdl2-sys/SDL2-2.0.8/include/SDL_rect.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_rect.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_rect.h index c4f6d74b339..543bb618694 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_rect.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_rect.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_render.h b/sdl2-sys/SDL2-2.0.8/include/SDL_render.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_render.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_render.h index ea6ef9ff645..d336192974f 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_render.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_render.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -898,6 +898,27 @@ extern DECLSPEC int SDLCALL SDL_GL_BindTexture(SDL_Texture *texture, float *texw */ extern DECLSPEC int SDLCALL SDL_GL_UnbindTexture(SDL_Texture *texture); +/** + * \brief Get the CAMetalLayer associated with the given Metal renderer + * + * \param renderer The renderer to query + * + * \return CAMetalLayer* on success, or NULL if the renderer isn't a Metal renderer + * + * \sa SDL_RenderGetMetalCommandEncoder() + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalLayer(SDL_Renderer * renderer); + +/** + * \brief Get the Metal command encoder for the current frame + * + * \param renderer The renderer to query + * + * \return id on success, or NULL if the renderer isn't a Metal renderer + * + * \sa SDL_RenderGetMetalLayer() + */ +extern DECLSPEC void *SDLCALL SDL_RenderGetMetalCommandEncoder(SDL_Renderer * renderer); /* Ends C function definitions when using C++ */ #ifdef __cplusplus diff --git a/sdl2-sys/SDL2-2.0.8/include/SDL_revision.h b/sdl2-sys/SDL2-2.0.8/include/SDL_revision.h new file mode 100644 index 00000000000..dbe9b97d52e --- /dev/null +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_revision.h @@ -0,0 +1,2 @@ +#define SDL_REVISION "hg-11914:f1084c419f33" +#define SDL_REVISION_NUMBER 11914 diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_rwops.h b/sdl2-sys/SDL2-2.0.8/include/SDL_rwops.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_rwops.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_rwops.h index 7f0cbdfd55d..0960699d485 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_rwops.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_rwops.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_scancode.h b/sdl2-sys/SDL2-2.0.8/include/SDL_scancode.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_scancode.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_scancode.h index 1d552120485..63871aa3b10 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_scancode.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_scancode.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_shape.h b/sdl2-sys/SDL2-2.0.8/include/SDL_shape.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_shape.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_shape.h index 9e492d93a4d..40a6baaaec3 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_shape.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_shape.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_stdinc.h b/sdl2-sys/SDL2-2.0.8/include/SDL_stdinc.h similarity index 84% rename from sdl2-sys/SDL2-2.0.6/include/SDL_stdinc.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_stdinc.h index 546544f10de..111a0645e8f 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_stdinc.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_stdinc.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -146,35 +146,51 @@ typedef enum /** * \brief A signed 8-bit integer type. */ +#define SDL_MAX_SINT8 ((Sint8)0x7F) /* 127 */ +#define SDL_MIN_SINT8 ((Sint8)(~0x7F)) /* -128 */ typedef int8_t Sint8; /** * \brief An unsigned 8-bit integer type. */ +#define SDL_MAX_UINT8 ((Uint8)0xFF) /* 255 */ +#define SDL_MIN_UINT8 ((Uint8)0x00) /* 0 */ typedef uint8_t Uint8; /** * \brief A signed 16-bit integer type. */ +#define SDL_MAX_SINT16 ((Sint16)0x7FFF) /* 32767 */ +#define SDL_MIN_SINT16 ((Sint16)(~0x7FFF)) /* -32768 */ typedef int16_t Sint16; /** * \brief An unsigned 16-bit integer type. */ +#define SDL_MAX_UINT16 ((Uint16)0xFFFF) /* 65535 */ +#define SDL_MIN_UINT16 ((Uint16)0x0000) /* 0 */ typedef uint16_t Uint16; /** * \brief A signed 32-bit integer type. */ +#define SDL_MAX_SINT32 ((Sint32)0x7FFFFFFF) /* 2147483647 */ +#define SDL_MIN_SINT32 ((Sint32)(~0x7FFFFFFF)) /* -2147483648 */ typedef int32_t Sint32; /** * \brief An unsigned 32-bit integer type. */ +#define SDL_MAX_UINT32 ((Uint32)0xFFFFFFFFu) /* 4294967295 */ +#define SDL_MIN_UINT32 ((Uint32)0x00000000) /* 0 */ typedef uint32_t Uint32; /** * \brief A signed 64-bit integer type. */ +#define SDL_MAX_SINT64 ((Sint64)0x7FFFFFFFFFFFFFFFll) /* 9223372036854775807 */ +#define SDL_MIN_SINT64 ((Sint64)(~0x7FFFFFFFFFFFFFFFll)) /* -9223372036854775808 */ typedef int64_t Sint64; /** * \brief An unsigned 64-bit integer type. */ +#define SDL_MAX_UINT64 ((Uint64)0xFFFFFFFFFFFFFFFFull) /* 18446744073709551615 */ +#define SDL_MIN_UINT64 ((Uint64)(0x0000000000000000ull)) /* 0 */ typedef uint64_t Uint64; /* @} *//* Basic data types */ @@ -347,6 +363,37 @@ extern DECLSPEC void *SDLCALL SDL_calloc(size_t nmemb, size_t size); extern DECLSPEC void *SDLCALL SDL_realloc(void *mem, size_t size); extern DECLSPEC void SDLCALL SDL_free(void *mem); +typedef void *(SDLCALL *SDL_malloc_func)(size_t size); +typedef void *(SDLCALL *SDL_calloc_func)(size_t nmemb, size_t size); +typedef void *(SDLCALL *SDL_realloc_func)(void *mem, size_t size); +typedef void (SDLCALL *SDL_free_func)(void *mem); + +/** + * \brief Get the current set of SDL memory functions + */ +extern DECLSPEC void SDLCALL SDL_GetMemoryFunctions(SDL_malloc_func *malloc_func, + SDL_calloc_func *calloc_func, + SDL_realloc_func *realloc_func, + SDL_free_func *free_func); + +/** + * \brief Replace SDL's memory allocation functions with a custom set + * + * \note If you are replacing SDL's memory functions, you should call + * SDL_GetNumAllocations() and be very careful if it returns non-zero. + * That means that your free function will be called with memory + * allocated by the previous memory allocation functions. + */ +extern DECLSPEC int SDLCALL SDL_SetMemoryFunctions(SDL_malloc_func malloc_func, + SDL_calloc_func calloc_func, + SDL_realloc_func realloc_func, + SDL_free_func free_func); + +/** + * \brief Get the number of outstanding (unfreed) allocations + */ +extern DECLSPEC int SDLCALL SDL_GetNumAllocations(void); + extern DECLSPEC char *SDLCALL SDL_getenv(const char *name); extern DECLSPEC int SDLCALL SDL_setenv(const char *name, const char *value, int overwrite); @@ -454,18 +501,33 @@ extern DECLSPEC int SDLCALL SDL_vsnprintf(SDL_OUT_Z_CAP(maxlen) char *text, size #endif extern DECLSPEC double SDLCALL SDL_acos(double x); +extern DECLSPEC float SDLCALL SDL_acosf(float x); extern DECLSPEC double SDLCALL SDL_asin(double x); +extern DECLSPEC float SDLCALL SDL_asinf(float x); extern DECLSPEC double SDLCALL SDL_atan(double x); +extern DECLSPEC float SDLCALL SDL_atanf(float x); extern DECLSPEC double SDLCALL SDL_atan2(double x, double y); +extern DECLSPEC float SDLCALL SDL_atan2f(float x, float y); extern DECLSPEC double SDLCALL SDL_ceil(double x); +extern DECLSPEC float SDLCALL SDL_ceilf(float x); extern DECLSPEC double SDLCALL SDL_copysign(double x, double y); +extern DECLSPEC float SDLCALL SDL_copysignf(float x, float y); extern DECLSPEC double SDLCALL SDL_cos(double x); extern DECLSPEC float SDLCALL SDL_cosf(float x); extern DECLSPEC double SDLCALL SDL_fabs(double x); +extern DECLSPEC float SDLCALL SDL_fabsf(float x); extern DECLSPEC double SDLCALL SDL_floor(double x); +extern DECLSPEC float SDLCALL SDL_floorf(float x); +extern DECLSPEC double SDLCALL SDL_fmod(double x, double y); +extern DECLSPEC float SDLCALL SDL_fmodf(float x, float y); extern DECLSPEC double SDLCALL SDL_log(double x); +extern DECLSPEC float SDLCALL SDL_logf(float x); +extern DECLSPEC double SDLCALL SDL_log10(double x); +extern DECLSPEC float SDLCALL SDL_log10f(float x); extern DECLSPEC double SDLCALL SDL_pow(double x, double y); +extern DECLSPEC float SDLCALL SDL_powf(float x, float y); extern DECLSPEC double SDLCALL SDL_scalbn(double x, int n); +extern DECLSPEC float SDLCALL SDL_scalbnf(float x, int n); extern DECLSPEC double SDLCALL SDL_sin(double x); extern DECLSPEC float SDLCALL SDL_sinf(float x); extern DECLSPEC double SDLCALL SDL_sqrt(double x); diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_surface.h b/sdl2-sys/SDL2-2.0.8/include/SDL_surface.h similarity index 95% rename from sdl2-sys/SDL2-2.0.6/include/SDL_surface.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_surface.h index 510690c9cff..45e5366fe51 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_surface.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_surface.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -97,6 +97,17 @@ typedef struct SDL_Surface typedef int (SDLCALL *SDL_blit) (struct SDL_Surface * src, SDL_Rect * srcrect, struct SDL_Surface * dst, SDL_Rect * dstrect); +/** + * \brief The formula used for converting between YUV and RGB + */ +typedef enum +{ + SDL_YUV_CONVERSION_JPEG, /**< Full range JPEG */ + SDL_YUV_CONVERSION_BT601, /**< BT.601 (the default) */ + SDL_YUV_CONVERSION_BT709, /**< BT.709 */ + SDL_YUV_CONVERSION_AUTOMATIC /**< BT.601 for SD content, BT.709 for HD content */ +} SDL_YUV_CONVERSION_MODE; + /** * Allocate and free an RGB surface. * @@ -509,6 +520,20 @@ extern DECLSPEC int SDLCALL SDL_LowerBlitScaled (SDL_Surface * src, SDL_Rect * srcrect, SDL_Surface * dst, SDL_Rect * dstrect); +/** + * \brief Set the YUV conversion mode + */ +extern DECLSPEC void SDLCALL SDL_SetYUVConversionMode(SDL_YUV_CONVERSION_MODE mode); + +/** + * \brief Get the YUV conversion mode + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionMode(void); + +/** + * \brief Get the YUV conversion mode, returning the correct mode for the resolution when the current conversion mode is SDL_YUV_CONVERSION_AUTOMATIC + */ +extern DECLSPEC SDL_YUV_CONVERSION_MODE SDLCALL SDL_GetYUVConversionModeForResolution(int width, int height); /* Ends C function definitions when using C++ */ #ifdef __cplusplus diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_system.h b/sdl2-sys/SDL2-2.0.8/include/SDL_system.h similarity index 90% rename from sdl2-sys/SDL2-2.0.6/include/SDL_system.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_system.h index eb069b33d81..7b776fdf1b5 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_system.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_system.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -108,6 +108,11 @@ extern DECLSPEC void * SDLCALL SDL_AndroidGetJNIEnv(void); */ extern DECLSPEC void * SDLCALL SDL_AndroidGetActivity(void); +/** + \brief Return true if the application is running on Android TV + */ +extern DECLSPEC SDL_bool SDLCALL SDL_IsAndroidTV(void); + /** See the official Android developer guide for more information: http://developer.android.com/guide/topics/data/data-storage.html @@ -169,6 +174,25 @@ typedef enum } SDL_WinRT_Path; +/** + * \brief WinRT Device Family + */ +typedef enum +{ + /** \brief Unknown family */ + SDL_WINRT_DEVICEFAMILY_UNKNOWN, + + /** \brief Desktop family*/ + SDL_WINRT_DEVICEFAMILY_DESKTOP, + + /** \brief Mobile family (for example smartphone) */ + SDL_WINRT_DEVICEFAMILY_MOBILE, + + /** \brief XBox family */ + SDL_WINRT_DEVICEFAMILY_XBOX, +} SDL_WinRT_DeviceFamily; + + /** * \brief Retrieves a WinRT defined path on the local file system * @@ -203,6 +227,13 @@ extern DECLSPEC const wchar_t * SDLCALL SDL_WinRTGetFSPathUNICODE(SDL_WinRT_Path */ extern DECLSPEC const char * SDLCALL SDL_WinRTGetFSPathUTF8(SDL_WinRT_Path pathType); +/** + * \brief Detects the device family of WinRT plattform on runtime + * + * \return Device family + */ +extern DECLSPEC SDL_WinRT_DeviceFamily SDLCALL SDL_WinRTGetDeviceFamily(); + #endif /* __WINRT__ */ /* Ends C function definitions when using C++ */ diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_syswm.h b/sdl2-sys/SDL2-2.0.8/include/SDL_syswm.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_syswm.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_syswm.h index 2d18afb6cf9..8aa4a39ec11 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_syswm.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_syswm.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test.h similarity index 95% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test.h index 62c1be37bf8..6cc373bf809 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -31,17 +31,18 @@ #define SDL_test_h_ #include "SDL.h" +#include "SDL_test_assert.h" #include "SDL_test_common.h" +#include "SDL_test_compare.h" +#include "SDL_test_crc32.h" #include "SDL_test_font.h" -#include "SDL_test_random.h" #include "SDL_test_fuzzer.h" -#include "SDL_test_crc32.h" -#include "SDL_test_md5.h" -#include "SDL_test_log.h" -#include "SDL_test_assert.h" #include "SDL_test_harness.h" #include "SDL_test_images.h" -#include "SDL_test_compare.h" +#include "SDL_test_log.h" +#include "SDL_test_md5.h" +#include "SDL_test_memory.h" +#include "SDL_test_random.h" #include "begin_code.h" /* Set up for C function definitions, even when using C++ */ diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test_assert.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_assert.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test_assert.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test_assert.h index 11d83639429..1788d7a2069 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test_assert.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_assert.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test_common.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_common.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test_common.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test_common.h index 24eeb32af1b..be2e6b2aab4 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test_common.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_common.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test_compare.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_compare.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test_compare.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test_compare.h index 9f4c4587ade..c22e447d8ae 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test_compare.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_compare.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test_crc32.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_crc32.h similarity index 96% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test_crc32.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test_crc32.h index 65aa64edb30..3d235d07400 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test_crc32.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_crc32.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -93,7 +93,7 @@ extern "C" { * \returns 0 for OK, -1 on error * */ -int SDLTest_crc32Calc(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32); +int SDLTest_Crc32Calc(SDLTest_Crc32Context * crcContext, CrcUint8 *inBuf, CrcUint32 inLen, CrcUint32 *crc32); /* Same routine broken down into three steps */ int SDLTest_Crc32CalcStart(SDLTest_Crc32Context * crcContext, CrcUint32 *crc32); diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test_font.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_font.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test_font.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test_font.h index 58c9f9d5e5f..59cbdcad6bc 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test_font.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_font.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test_fuzzer.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_fuzzer.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test_fuzzer.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test_fuzzer.h index 6cf05747ad9..8fcb9ebbfa1 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test_fuzzer.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_fuzzer.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test_harness.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_harness.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test_harness.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test_harness.h index 68c4bcb7c44..8641e0a7e3a 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test_harness.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_harness.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test_images.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_images.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test_images.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test_images.h index 683d2f8a689..9c4dd5b8295 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test_images.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_images.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test_log.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_log.h similarity index 96% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test_log.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test_log.h index 9f993fbbc88..ebd44fb5021 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test_log.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_log.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test_md5.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_md5.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test_md5.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test_md5.h index 67ca7d1defb..0e4105768fd 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test_md5.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_md5.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.8/include/SDL_test_memory.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_memory.h new file mode 100644 index 00000000000..4827ae6f2c3 --- /dev/null +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_memory.h @@ -0,0 +1,63 @@ +/* + Simple DirectMedia Layer + Copyright (C) 1997-2018 Sam Lantinga + + This software is provided 'as-is', without any express or implied + warranty. In no event will the authors be held liable for any damages + arising from the use of this software. + + Permission is granted to anyone to use this software for any purpose, + including commercial applications, and to alter it and redistribute it + freely, subject to the following restrictions: + + 1. The origin of this software must not be misrepresented; you must not + claim that you wrote the original software. If you use this software + in a product, an acknowledgment in the product documentation would be + appreciated but is not required. + 2. Altered source versions must be plainly marked as such, and must not be + misrepresented as being the original software. + 3. This notice may not be removed or altered from any source distribution. +*/ + +/** + * \file SDL_test_memory.h + * + * Include file for SDL test framework. + * + * This code is a part of the SDL2_test library, not the main SDL library. + */ + +#ifndef SDL_test_memory_h_ +#define SDL_test_memory_h_ + +#include "begin_code.h" +/* Set up for C function definitions, even when using C++ */ +#ifdef __cplusplus +extern "C" { +#endif + + +/** + * \brief Start tracking SDL memory allocations + * + * \note This should be called before any other SDL functions for complete tracking coverage + */ +int SDLTest_TrackAllocations(); + +/** + * \brief Print a log of any outstanding allocations + * + * \note This can be called after SDL_Quit() + */ +void SDLTest_LogAllocations(); + + +/* Ends C function definitions when using C++ */ +#ifdef __cplusplus +} +#endif +#include "close_code.h" + +#endif /* SDL_test_memory_h_ */ + +/* vi: set ts=4 sw=4 expandtab: */ diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_test_random.h b/sdl2-sys/SDL2-2.0.8/include/SDL_test_random.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_test_random.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_test_random.h index 2b01922c3ed..0eb414ff2e4 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_test_random.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_test_random.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_thread.h b/sdl2-sys/SDL2-2.0.8/include/SDL_thread.h similarity index 94% rename from sdl2-sys/SDL2-2.0.6/include/SDL_thread.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_thread.h index cf1ce492fad..82a43fc032a 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_thread.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_thread.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -90,14 +90,11 @@ typedef int (SDLCALL * SDL_ThreadFunction) (void *data); * library! */ #define SDL_PASSED_BEGINTHREAD_ENDTHREAD -#include /* This has _beginthread() and _endthread() defined! */ - -typedef uintptr_t(__cdecl * pfnSDL_CurrentBeginThread) (void *, unsigned, - unsigned (__stdcall * - func) (void - *), - void *arg, unsigned, - unsigned *threadID); +#include /* _beginthreadex() and _endthreadex() */ + +typedef uintptr_t(__cdecl * pfnSDL_CurrentBeginThread) + (void *, unsigned, unsigned (__stdcall *func)(void *), + void * /*arg*/, unsigned, unsigned * /* threadID */); typedef void (__cdecl * pfnSDL_CurrentEndThread) (unsigned code); /** @@ -124,7 +121,11 @@ SDL_CreateThread(SDL_ThreadFunction fn, const char *name, void *data, * into a dll with Watcom's runtime statically linked. */ #define SDL_PASSED_BEGINTHREAD_ENDTHREAD +#ifndef __EMX__ #include +#else +#include +#endif typedef int (*pfnSDL_CurrentBeginThread)(void (*func)(void *), void *, unsigned, void * /*arg*/); typedef void (*pfnSDL_CurrentEndThread)(void); extern DECLSPEC SDL_Thread *SDLCALL diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_timer.h b/sdl2-sys/SDL2-2.0.8/include/SDL_timer.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_timer.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_timer.h index 282625d3f0d..5600618ff4f 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_timer.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_timer.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_touch.h b/sdl2-sys/SDL2-2.0.8/include/SDL_touch.h similarity index 97% rename from sdl2-sys/SDL2-2.0.6/include/SDL_touch.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_touch.h index db9e25ebdcc..f4075e79a5b 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_touch.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_touch.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_types.h b/sdl2-sys/SDL2-2.0.8/include/SDL_types.h similarity index 94% rename from sdl2-sys/SDL2-2.0.6/include/SDL_types.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_types.h index 06ee80cb358..4ac248c8c57 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_types.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_types.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_version.h b/sdl2-sys/SDL2-2.0.8/include/SDL_version.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/SDL_version.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_version.h index 8471b65438e..584b48c7a28 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_version.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_version.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -59,7 +59,7 @@ typedef struct SDL_version */ #define SDL_MAJOR_VERSION 2 #define SDL_MINOR_VERSION 0 -#define SDL_PATCHLEVEL 6 +#define SDL_PATCHLEVEL 8 /** * \brief Macro to determine SDL version program was compiled against. diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_video.h b/sdl2-sys/SDL2-2.0.8/include/SDL_video.h similarity index 99% rename from sdl2-sys/SDL2-2.0.6/include/SDL_video.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_video.h index 6f6cda8b182..83f49faaefc 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_video.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_video.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages @@ -110,7 +110,9 @@ typedef enum SDL_WINDOW_MOUSE_FOCUS = 0x00000400, /**< window has mouse focus */ SDL_WINDOW_FULLSCREEN_DESKTOP = ( SDL_WINDOW_FULLSCREEN | 0x00001000 ), SDL_WINDOW_FOREIGN = 0x00000800, /**< window not created by SDL */ - SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported */ + SDL_WINDOW_ALLOW_HIGHDPI = 0x00002000, /**< window should be created in high-DPI mode if supported. + On macOS NSHighResolutionCapable must be set true in the + application's Info.plist for this to have any effect. */ SDL_WINDOW_MOUSE_CAPTURE = 0x00004000, /**< window has mouse captured (unrelated to INPUT_GRABBED) */ SDL_WINDOW_ALWAYS_ON_TOP = 0x00008000, /**< window should always be above others */ SDL_WINDOW_SKIP_TASKBAR = 0x00010000, /**< window should not be added to the taskbar */ @@ -470,7 +472,7 @@ extern DECLSPEC Uint32 SDLCALL SDL_GetWindowPixelFormat(SDL_Window * window); * If the window is created with any of the SDL_WINDOW_OPENGL or * SDL_WINDOW_VULKAN flags, then the corresponding LoadLibrary function * (SDL_GL_LoadLibrary or SDL_Vulkan_LoadLibrary) is called and the - * corrensponding UnloadLibrary function is called by SDL_DestroyWindow(). + * corresponding UnloadLibrary function is called by SDL_DestroyWindow(). * * If SDL_WINDOW_VULKAN is specified and there isn't a working Vulkan driver, * SDL_CreateWindow() will fail because SDL_Vulkan_LoadLibrary() will fail. diff --git a/sdl2-sys/SDL2-2.0.6/include/SDL_vulkan.h b/sdl2-sys/SDL2-2.0.8/include/SDL_vulkan.h similarity index 83% rename from sdl2-sys/SDL2-2.0.6/include/SDL_vulkan.h rename to sdl2-sys/SDL2-2.0.8/include/SDL_vulkan.h index 803b5feef34..f04c21adb04 100644 --- a/sdl2-sys/SDL2-2.0.6/include/SDL_vulkan.h +++ b/sdl2-sys/SDL2-2.0.8/include/SDL_vulkan.h @@ -69,30 +69,43 @@ typedef VkSurfaceKHR SDL_vulkanSurface; /* for compatibility with Tizen */ * \brief Dynamically load a Vulkan loader library. * * \param [in] path The platform dependent Vulkan loader library name, or - * \c NULL to open the default Vulkan loader library. + * \c NULL. * * \return \c 0 on success, or \c -1 if the library couldn't be loaded. * - * This should be done after initializing the video driver, but before + * If \a path is NULL SDL will use the value of the environment variable + * \c SDL_VULKAN_LIBRARY, if set, otherwise it loads the default Vulkan + * loader library. + * + * This should be called after initializing the video driver, but before * creating any Vulkan windows. If no Vulkan loader library is loaded, the * default library will be loaded upon creation of the first Vulkan window. * - * \note If you specify a non-NULL \a path, you should retrieve all of the - * Vulkan functions used in your program from the dynamic library using + * \note It is fairly common for Vulkan applications to link with \a libvulkan + * instead of explicitly loading it at run time. This will work with + * SDL provided the application links to a dynamic library and both it + * and SDL use the same search path. + * + * \note If you specify a non-NULL \c path, an application should retrieve all + * of the Vulkan functions it uses from the dynamic library using * \c SDL_Vulkan_GetVkGetInstanceProcAddr() unless you can guarantee - * \a path points to the same vulkan loader library that you linked to. + * \c path points to the same vulkan loader library the application + * linked to. * * \note On Apple devices, if \a path is NULL, SDL will attempt to find * the vkGetInstanceProcAddr address within all the mach-o images of - * the current process. This is because the currently (v0.17.0) - * recommended MoltenVK (Vulkan on Metal) usage is as a static library. - * If it is not found then SDL will attempt to load \c libMoltenVK.dylib. - * Applications using the dylib alternative therefore do not need to do - * anything special when calling SDL. - * - * \note On non-Apple devices, SDL requires you to either not link to the - * Vulkan loader or link to a dynamic library version. This limitation - * may be removed in a future version of SDL. + * the current process. This is because it is fairly common for Vulkan + * applications to link with libvulkan (and historically MoltenVK was + * provided as a static library). If it is not found then, on macOS, SDL + * will attempt to load \c vulkan.framework/vulkan, \c libvulkan.1.dylib, + * \c MoltenVK.framework/MoltenVK and \c libMoltenVK.dylib in that order. + * On iOS SDL will attempt to load \c libMoltenVK.dylib. Applications + * using a dynamic framework or .dylib must ensure it is included in its + * application bundle. + * + * \note On non-Apple devices, application linking with a static libvulkan is + * not supported. Either do not link to the Vulkan loader or link to a + * dynamic library version. * * \note This function will fail if there are no working Vulkan drivers * installed. @@ -240,6 +253,9 @@ extern DECLSPEC SDL_bool SDLCALL SDL_Vulkan_CreateSurface( * platform with high-DPI support (Apple calls this "Retina"), and not disabled * by the \c SDL_HINT_VIDEO_HIGHDPI_DISABLED hint. * + * \note On macOS high-DPI support must be enabled for an application by + * setting NSHighResolutionCapable to true in its Info.plist. + * * \sa SDL_GetWindowSize() * \sa SDL_CreateWindow() */ diff --git a/sdl2-sys/SDL2-2.0.6/include/begin_code.h b/sdl2-sys/SDL2-2.0.8/include/begin_code.h similarity index 98% rename from sdl2-sys/SDL2-2.0.6/include/begin_code.h rename to sdl2-sys/SDL2-2.0.8/include/begin_code.h index 5372d6f04df..6c2106246f2 100644 --- a/sdl2-sys/SDL2-2.0.6/include/begin_code.h +++ b/sdl2-sys/SDL2-2.0.8/include/begin_code.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/SDL2-2.0.6/include/close_code.h b/sdl2-sys/SDL2-2.0.8/include/close_code.h similarity index 95% rename from sdl2-sys/SDL2-2.0.6/include/close_code.h rename to sdl2-sys/SDL2-2.0.8/include/close_code.h index 2a352dbb9ec..b3b70a4c833 100644 --- a/sdl2-sys/SDL2-2.0.6/include/close_code.h +++ b/sdl2-sys/SDL2-2.0.8/include/close_code.h @@ -1,6 +1,6 @@ /* Simple DirectMedia Layer - Copyright (C) 1997-2017 Sam Lantinga + Copyright (C) 1997-2018 Sam Lantinga This software is provided 'as-is', without any express or implied warranty. In no event will the authors be held liable for any damages diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index d8c553e040e..c82576c11df 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -20,10 +20,10 @@ use std::path::{Path, PathBuf}; use std::{io, fs, env}; // corresponds to the headers that we have in sdl2-sys/SDL2-{version} -const SDL2_HEADERS_BUNDLED_VERSION: &str = "2.0.6"; +const SDL2_HEADERS_BUNDLED_VERSION: &str = "2.0.8"; // means the lastest stable version that can be downloaded from SDL2's source -const LASTEST_SDL2_VERSION: &str = "2.0.5"; +const LASTEST_SDL2_VERSION: &str = "2.0.8"; #[cfg(feature="bundled")] fn download_to(url: &str, mut dest: T) { From 1f95a92c74221f86ad6876ea632a8eb61eca3a0d Mon Sep 17 00:00:00 2001 From: Cobrand Date: Sat, 9 Jun 2018 22:23:14 +0000 Subject: [PATCH 13/19] Fix static linking not working with sdl 2.0.8 --- sdl2-sys/build.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index ce8ce63cfcb..03ecf38b562 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -165,8 +165,8 @@ fn link_sdl2(target_os: &str) { #[cfg(feature = "static-link")] { if cfg!(feature = "bundled") || cfg!(feature = "use-pkgconfig") == false { - println!("cargo:rustc-link-lib=static=SDL2main"); - println!("cargo:rustc-link-lib=static=SDL2"); + println!("cargo:rustc-link-lib=static=SDL2maind"); + println!("cargo:rustc-link-lib=static=SDL2d"); } // Also linked to any required libraries for each supported platform From 0f714d98fcff07dbc74034e35aa534fc06f6b47a Mon Sep 17 00:00:00 2001 From: Cobrand Date: Sat, 9 Jun 2018 22:23:33 +0000 Subject: [PATCH 14/19] gfxPrimitives_font.h is not part of gfx anymore --- sdl2-sys/wrapper_gfx_primitives.h | 1 - 1 file changed, 1 deletion(-) diff --git a/sdl2-sys/wrapper_gfx_primitives.h b/sdl2-sys/wrapper_gfx_primitives.h index 4a51648eb8c..f89a4112501 100644 --- a/sdl2-sys/wrapper_gfx_primitives.h +++ b/sdl2-sys/wrapper_gfx_primitives.h @@ -1,2 +1 @@ -#include #include From 89a7ee21cd0d2ef97c86777810bb94223904401b Mon Sep 17 00:00:00 2001 From: Cobrand Date: Sun, 10 Jun 2018 00:18:18 +0000 Subject: [PATCH 15/19] Don't try to build features (image,..) when uneeded --- sdl2-sys/build.rs | 556 ++++++++++++++++++++++++++-------------------- 1 file changed, 318 insertions(+), 238 deletions(-) diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 03ecf38b562..0e569c1616d 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -24,6 +24,16 @@ const SDL2_HEADERS_BUNDLED_VERSION: &str = "2.0.8"; // means the lastest stable version that can be downloaded from SDL2's source const LASTEST_SDL2_VERSION: &str = "2.0.8"; + +macro_rules! add_msvc_includes_to_bindings { + ($bindings:expr) => { + $bindings = $bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); + $bindings = $bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); + $bindings = $bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); + $bindings = $bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); + $bindings = $bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); + }; +} #[cfg(feature="bundled")] fn download_to(url: &str, mut dest: T) { @@ -50,19 +60,29 @@ fn download_to(url: &str, mut dest: T) { } #[cfg(feature = "use-pkgconfig")] -#[cfg(feature = "static-link")] -fn get_pkg_config() -> pkg_config::Library { +fn pkg_config_print(statik: bool, lib_name: &str) { pkg_config::Config::new() - .statik(true) - .probe("sdl2").unwrap() + .statik(statik) + .probe(lib_name).unwrap(); } #[cfg(feature = "use-pkgconfig")] -#[cfg(not(feature = "static-link"))] -fn get_pkg_config() -> pkg_config::Library { - pkg_config::Config::new() - .statik(false) - .probe("sdl2").unwrap() +fn get_pkg_config() { + let statik: bool = if cfg!(feature = "static-link") { true } else { false }; + + pkg_config_print(statik, "sdl2"); + if cfg!(feature = "image") { + pkg_config_print(statik, "SDL2_image"); + } + if cfg!(feature = "ttf") { + pkg_config_print(statik, "SDL2_ttf"); + } + if cfg!(feature = "mixer") { + pkg_config_print(statik, "SDL2_mixer"); + } + if cfg!(feature = "gfx") { + pkg_config_print(statik, "SDL2_gfx"); + } } // returns the location of the downloaded source @@ -298,26 +318,32 @@ fn copy_pregenerated_bindings() { fs::copy(crate_path.join("sdl_bindings.rs"), out_path.join("sdl_bindings.rs")) .expect("Couldn't find pregenerated bindings!"); - fs::copy(crate_path.join("sdl_image_bindings.rs"), out_path.join("sdl_image_bindings.rs")) - .expect("Couldn't find pregenerated SDL_image bindings!"); - - fs::copy(crate_path.join("sdl_ttf_bindings.rs"), out_path.join("sdl_ttf_bindings.rs")) - .expect("Couldn't find pregenerated SDL_ttf bindings!"); - - fs::copy(crate_path.join("sdl_mixer_bindings.rs"), out_path.join("sdl_mixer_bindings.rs")) - .expect("Couldn't find pregenerated SDL_mixer bindings!"); + if cfg!(feature = "image") { + fs::copy(crate_path.join("sdl_image_bindings.rs"), out_path.join("sdl_image_bindings.rs")) + .expect("Couldn't find pregenerated SDL_image bindings!"); + } + if cfg!(feature = "ttf") { + fs::copy(crate_path.join("sdl_ttf_bindings.rs"), out_path.join("sdl_ttf_bindings.rs")) + .expect("Couldn't find pregenerated SDL_ttf bindings!"); + } + if cfg!(feature = "mixer") { + fs::copy(crate_path.join("sdl_mixer_bindings.rs"), out_path.join("sdl_mixer_bindings.rs")) + .expect("Couldn't find pregenerated SDL_mixer bindings!"); + } - fs::copy(crate_path.join("sdl_gfx_framerate_bindings.rs"), out_path.join("sdl_gfx_framerate_bindings.rs")) - .expect("Couldn't find pregenerated SDL_gfx framerate bindings!"); + if cfg!(feature = "gfx") { + fs::copy(crate_path.join("sdl_gfx_framerate_bindings.rs"), out_path.join("sdl_gfx_framerate_bindings.rs")) + .expect("Couldn't find pregenerated SDL_gfx framerate bindings!"); - fs::copy(crate_path.join("sdl_gfx_primitives_bindings.rs"), out_path.join("sdl_gfx_primitives_bindings.rs")) - .expect("Couldn't find pregenerated SDL_gfx primitives bindings!"); + fs::copy(crate_path.join("sdl_gfx_primitives_bindings.rs"), out_path.join("sdl_gfx_primitives_bindings.rs")) + .expect("Couldn't find pregenerated SDL_gfx primitives bindings!"); - fs::copy(crate_path.join("sdl_gfx_imagefilter_bindings.rs"), out_path.join("sdl_gfx_imagefilter_bindings.rs")) - .expect("Couldn't find pregenerated SDL_gfx imagefilter bindings!"); + fs::copy(crate_path.join("sdl_gfx_imagefilter_bindings.rs"), out_path.join("sdl_gfx_imagefilter_bindings.rs")) + .expect("Couldn't find pregenerated SDL_gfx imagefilter bindings!"); - fs::copy(crate_path.join("sdl_gfx_rotozoom_bindings.rs"), out_path.join("sdl_gfx_rotozoom_bindings.rs")) - .expect("Couldn't find pregenerated SDL_gfx rotozoom bindings!"); + fs::copy(crate_path.join("sdl_gfx_rotozoom_bindings.rs"), out_path.join("sdl_gfx_rotozoom_bindings.rs")) + .expect("Couldn't find pregenerated SDL_gfx rotozoom bindings!"); + } } #[cfg(feature = "bindgen")] @@ -326,9 +352,13 @@ fn copy_pregenerated_bindings() { fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str, headers_paths: &[S]) { let target_os = get_os_from_triple(target).unwrap(); let mut bindings = bindgen::Builder::default(); + let mut image_bindings = bindgen::Builder::default(); + let mut ttf_bindings = bindgen::Builder::default(); + let mut mixer_bindings = bindgen::Builder::default(); + let mut gfx_framerate_bindings = bindgen::Builder::default(); let mut gfx_primitives_bindings = bindgen::Builder::default(); let mut gfx_imagefilter_bindings = bindgen::Builder::default(); @@ -339,26 +369,34 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str bindings = bindings.clang_arg("-target"); bindings = bindings.clang_arg(target.clone()); - image_bindings = image_bindings.clang_arg("-target"); - image_bindings = image_bindings.clang_arg(target.clone()); + if cfg!(feature = "image") { + image_bindings = image_bindings.clang_arg("-target"); + image_bindings = image_bindings.clang_arg(target.clone()); + } - ttf_bindings = ttf_bindings.clang_arg("-target"); - ttf_bindings = ttf_bindings.clang_arg(target.clone()); + if cfg!(feature = "ttf") { + ttf_bindings = ttf_bindings.clang_arg("-target"); + ttf_bindings = ttf_bindings.clang_arg(target.clone()); + } - mixer_bindings = mixer_bindings.clang_arg("-target"); - mixer_bindings = mixer_bindings.clang_arg(target.clone()); + if cfg!(feature = "mixer") { + mixer_bindings = mixer_bindings.clang_arg("-target"); + mixer_bindings = mixer_bindings.clang_arg(target.clone()); + } - gfx_framerate_bindings = gfx_framerate_bindings.clang_arg("-target"); - gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(target.clone()); + if cfg!(feature = "gfx") { + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg("-target"); + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(target.clone()); - gfx_primitives_bindings = gfx_primitives_bindings.clang_arg("-target"); - gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(target.clone()); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg("-target"); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(target.clone()); - gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg("-target"); - gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(target.clone()); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg("-target"); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(target.clone()); - gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg("-target"); - gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(target.clone()); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg("-target"); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(target.clone()); + } } if headers_paths.len() == 0 { @@ -367,100 +405,99 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str include_path.push(format!("SDL2-{}", SDL2_HEADERS_BUNDLED_VERSION)); include_path.push("include"); bindings = bindings.clang_arg(format!("-I{}", include_path.display())); - image_bindings = image_bindings.clang_arg(format!("-I{}", include_path.display())); - ttf_bindings = ttf_bindings.clang_arg(format!("-I{}", include_path.display())); - mixer_bindings = mixer_bindings.clang_arg(format!("-I{}", include_path.display())); - gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-I{}", include_path.display())); - gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-I{}", include_path.display())); - gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-I{}", include_path.display())); - gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-I{}", include_path.display())); + if cfg!(feature = "image") { + image_bindings = image_bindings.clang_arg(format!("-I{}", include_path.display())); + } + if cfg!(feature = "ttf") { + ttf_bindings = ttf_bindings.clang_arg(format!("-I{}", include_path.display())); + } + if cfg!(feature = "mixer") { + mixer_bindings = mixer_bindings.clang_arg(format!("-I{}", include_path.display())); + } + if cfg!(feature = "gfx") { + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-I{}", include_path.display())); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-I{}", include_path.display())); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-I{}", include_path.display())); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-I{}", include_path.display())); + } } else { // if paths are included, use them for bindgen. Bindgen should use the first one. for headers_path in headers_paths { bindings = bindings.clang_arg(format!("-I{}", headers_path.as_ref())); - image_bindings = image_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); - ttf_bindings = ttf_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); - mixer_bindings = mixer_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); - gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); - gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); - gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); - gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + if cfg!(feature = "image") { + image_bindings = image_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + } + if cfg!(feature = "ttf") { + ttf_bindings = ttf_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + } + if cfg!(feature = "mixer") { + mixer_bindings = mixer_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + } + if cfg!(feature = "gfx") { + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-I{}", headers_path.as_ref())); + } } } if target_os == "windows-msvc" { - bindings = bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); - bindings = bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); - bindings = bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); - bindings = bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); - bindings = bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); - - image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); - image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); - image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); - image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); - image_bindings = image_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); - - ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); - ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); - ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); - ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); - ttf_bindings = ttf_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); - - mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); - mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); - mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); - mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); - mixer_bindings = mixer_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); - - gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); - gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); - gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); - gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); - gfx_framerate_bindings = gfx_framerate_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); - - gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); - gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); - gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); - gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); - gfx_primitives_bindings = gfx_primitives_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); - - gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); - gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); - gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); - gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); - gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); - - gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); - gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-IC:/Program Files/LLVM/lib/clang/5.0.0/include")); - gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/10/Include/10.0.10240.0/ucrt")); - gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-IC:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include")); - gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/um")); + + add_msvc_includes_to_bindings!(bindings); + if cfg!(feature = "image") { + add_msvc_includes_to_bindings!(image_bindings); + } + if cfg!(feature = "ttf") { + add_msvc_includes_to_bindings!(ttf_bindings); + } + if cfg!(feature = "mixer") { + add_msvc_includes_to_bindings!(mixer_bindings); + } + if cfg!(feature = "gfx") { + add_msvc_includes_to_bindings!(gfx_framerate_bindings); + add_msvc_includes_to_bindings!(gfx_primitives_bindings); + add_msvc_includes_to_bindings!(gfx_imagefilter_bindings); + add_msvc_includes_to_bindings!(gfx_rotozoom_bindings); + } }; // SDL2 hasn't a default configuration for Linux if target_os == "linux-gnu" { bindings = bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); bindings = bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); - image_bindings = image_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); - image_bindings = image_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); - ttf_bindings = ttf_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); - ttf_bindings = ttf_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); - mixer_bindings = mixer_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); - mixer_bindings = mixer_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); - gfx_framerate_bindings = gfx_framerate_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); - gfx_framerate_bindings = gfx_framerate_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); - gfx_primitives_bindings = gfx_primitives_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); - gfx_primitives_bindings = gfx_primitives_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); - gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); - gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); - gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); - gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + if cfg!(feature = "image") { + image_bindings = image_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + image_bindings = image_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + } + if cfg!(feature = "ttf") { + ttf_bindings = ttf_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + ttf_bindings = ttf_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + } + if cfg!(feature = "mixer") { + mixer_bindings = mixer_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + mixer_bindings = mixer_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + } + if cfg!(feature = "gfx") { + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + gfx_framerate_bindings = gfx_framerate_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + gfx_primitives_bindings = gfx_primitives_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + gfx_imagefilter_bindings = gfx_imagefilter_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg("-DSDL_VIDEO_DRIVER_X11"); + gfx_rotozoom_bindings = gfx_rotozoom_bindings.clang_arg("-DSDL_VIDEO_DRIVER_WAYLAND"); + } } let bindings = bindings .header("wrapper.h") .rustified_enum(".*") + .blacklist_type("FP_NAN") + .blacklist_type("FP_INFINITE") + .blacklist_type("FP_ZERO") + .blacklist_type("FP_SUBNORMAL") + .blacklist_type("FP_NORMAL") .blacklist_type("max_align_t") // Until https://github.com/rust-lang-nursery/rust-bindgen/issues/550 gets fixed .generate() .expect("Unable to generate bindings!"); @@ -471,133 +508,176 @@ fn generate_bindings + ::std::fmt::Debug>(target: &str, host: &str .write_to_file(out_path.join("sdl_bindings.rs")) .expect("Couldn't write bindings!"); - let image_bindings = image_bindings - .header("wrapper_image.h") - .blacklist_type("max_align_t") // Until https://github.com/rust-lang-nursery/rust-bindgen/issues/550 gets fixed - .whitelist_type("IMG.*") - .whitelist_function("IMG.*") - .whitelist_var("IMG.*") - .blacklist_type("SDL_.*") - .blacklist_type("_IO.*|FILE") - .generate() - .expect("Unable to generate image_bindings!"); - - let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); - - image_bindings - .write_to_file(out_path.join("sdl_image_bindings.rs")) - .expect("Couldn't write image_bindings!"); - - let ttf_bindings = ttf_bindings - .header("wrapper_ttf.h") - .whitelist_type("TTF.*") - .whitelist_function("TTF.*") - .whitelist_var("TTF.*") - .blacklist_type("SDL_.*") - .blacklist_type("_IO.*|FILE") - .generate() - .expect("Unable to generate ttf_bindings!"); - - let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); - - ttf_bindings - .write_to_file(out_path.join("sdl_ttf_bindings.rs")) - .expect("Couldn't write ttf_bindings!"); - - let mixer_bindings = mixer_bindings - .header("wrapper_mixer.h") - .whitelist_type("MIX.*") - .whitelist_type("Mix.*") - .whitelist_type("MUS.*") - .whitelist_function("Mix.*") - .whitelist_var("MIX.*") - .whitelist_var("MUS.*") - .blacklist_type("SDL_.*") - .blacklist_type("_IO.*|FILE") - .generate() - .expect("Unable to generate mixer_bindings!"); - - let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); - - mixer_bindings - .write_to_file(out_path.join("sdl_mixer_bindings.rs")) - .expect("Couldn't write mixer_bindings!"); - - let gfx_framerate_bindings = gfx_framerate_bindings - .header("wrapper_gfx_framerate.h") - .whitelist_type("FPS.*") - .whitelist_function("SDL_.*rame.*") - .whitelist_var("FPS.*") - .blacklist_type("_IO.*|FILE") - .generate() - .expect("Unable to generate gfx_framerate_bindings!"); - - let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); - - gfx_framerate_bindings - .write_to_file(out_path.join("sdl_gfx_framerate_bindings.rs")) - .expect("Couldn't write gfx_framerate_bindings!"); - - let gfx_primitives_bindings = gfx_primitives_bindings - .header("wrapper_gfx_primitives.h") - .blacklist_type("SDL_.*") - .whitelist_function("pixel.*") - .whitelist_function("rectangle.*") - .whitelist_function("rounded.*") - .whitelist_function("box.*") - .whitelist_function(".*line(Color|RGBA).*") - .whitelist_function("thick.*") - .whitelist_function(".*circle.*") - .whitelist_function("arc.*") - .whitelist_function("filled.*") - .whitelist_function(".*ellipse.*") - .whitelist_function("pie.*") - .whitelist_function(".*trigon.*") - .whitelist_function(".*polygon.*") - .whitelist_function("textured.*") - .whitelist_function("bezier.*") - .whitelist_function("character.*") - .whitelist_function("string.*") - .whitelist_function("gfx.*") - .blacklist_type("_IO.*|FILE") - .generate() - .expect("Unable to generate gfx_primitives_bindings!"); - - let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); - - gfx_primitives_bindings - .write_to_file(out_path.join("sdl_gfx_primitives_bindings.rs")) - .expect("Couldn't write gfx_primitives_bindings!"); - - let gfx_imagefilter_bindings = gfx_imagefilter_bindings - .header("wrapper_gfx_imagefilter.h") - .whitelist_function("SDL_image.*") - .blacklist_type("_IO.*|FILE") - .generate() - .expect("Unable to generate gfx_imagefilter_bindings!"); - - let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + if cfg!(feature = "image") { + let image_bindings = image_bindings + .header("wrapper_image.h") + .blacklist_type("FP_NAN") + .blacklist_type("FP_INFINITE") + .blacklist_type("FP_ZERO") + .blacklist_type("FP_SUBNORMAL") + .blacklist_type("FP_NORMAL") + .blacklist_type("max_align_t") // Until https://github.com/rust-lang-nursery/rust-bindgen/issues/550 gets fixed + .whitelist_type("IMG.*") + .whitelist_function("IMG.*") + .whitelist_var("IMG.*") + .blacklist_type("SDL_.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate image_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + image_bindings + .write_to_file(out_path.join("sdl_image_bindings.rs")) + .expect("Couldn't write image_bindings!"); + } - gfx_imagefilter_bindings - .write_to_file(out_path.join("sdl_gfx_imagefilter_bindings.rs")) - .expect("Couldn't write gfx_imagefilter_bindings!"); - - let gfx_rotozoom_bindings = gfx_rotozoom_bindings - .header("wrapper_gfx_rotozoom.h") - .blacklist_type("SDL_.*") - .whitelist_function("rotozoom.*") - .whitelist_function("zoom.*") - .whitelist_function("shrink.*") - .whitelist_function("rotate.*") - .blacklist_type("_IO.*|FILE") - .generate() - .expect("Unable to generate gfx_rotozoom_bindings!"); + if cfg!(feature = "ttf") { + let ttf_bindings = ttf_bindings + .header("wrapper_ttf.h") + .blacklist_type("FP_NAN") + .blacklist_type("FP_INFINITE") + .blacklist_type("FP_ZERO") + .blacklist_type("FP_SUBNORMAL") + .blacklist_type("FP_NORMAL") + .whitelist_type("TTF.*") + .whitelist_function("TTF.*") + .whitelist_var("TTF.*") + .blacklist_type("SDL_.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate ttf_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + ttf_bindings + .write_to_file(out_path.join("sdl_ttf_bindings.rs")) + .expect("Couldn't write ttf_bindings!"); + } - let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + if cfg!(feature = "mixer") { + let mixer_bindings = mixer_bindings + .header("wrapper_mixer.h") + .blacklist_type("FP_NAN") + .blacklist_type("FP_INFINITE") + .blacklist_type("FP_ZERO") + .blacklist_type("FP_SUBNORMAL") + .blacklist_type("FP_NORMAL") + .whitelist_type("MIX.*") + .whitelist_type("Mix.*") + .whitelist_type("MUS.*") + .whitelist_function("Mix.*") + .whitelist_var("MIX.*") + .whitelist_var("MUS.*") + .blacklist_type("SDL_.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate mixer_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + mixer_bindings + .write_to_file(out_path.join("sdl_mixer_bindings.rs")) + .expect("Couldn't write mixer_bindings!"); + } - gfx_rotozoom_bindings - .write_to_file(out_path.join("sdl_gfx_rotozoom_bindings.rs")) - .expect("Couldn't write gfx_rotozoom_bindings!"); + if cfg!(feature = "gfx") { + let gfx_framerate_bindings = gfx_framerate_bindings + .header("wrapper_gfx_framerate.h") + .blacklist_type("FP_NAN") + .blacklist_type("FP_INFINITE") + .blacklist_type("FP_ZERO") + .blacklist_type("FP_SUBNORMAL") + .blacklist_type("FP_NORMAL") + .whitelist_type("FPS.*") + .whitelist_function("SDL_.*rame.*") + .whitelist_var("FPS.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate gfx_framerate_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + gfx_framerate_bindings + .write_to_file(out_path.join("sdl_gfx_framerate_bindings.rs")) + .expect("Couldn't write gfx_framerate_bindings!"); + + let gfx_primitives_bindings = gfx_primitives_bindings + .header("wrapper_gfx_primitives.h") + .blacklist_type("FP_NAN") + .blacklist_type("FP_INFINITE") + .blacklist_type("FP_ZERO") + .blacklist_type("FP_SUBNORMAL") + .blacklist_type("FP_NORMAL") + .blacklist_type("SDL_.*") + .whitelist_function("pixel.*") + .whitelist_function("rectangle.*") + .whitelist_function("rounded.*") + .whitelist_function("box.*") + .whitelist_function(".*line(Color|RGBA).*") + .whitelist_function("thick.*") + .whitelist_function(".*circle.*") + .whitelist_function("arc.*") + .whitelist_function("filled.*") + .whitelist_function(".*ellipse.*") + .whitelist_function("pie.*") + .whitelist_function(".*trigon.*") + .whitelist_function(".*polygon.*") + .whitelist_function("textured.*") + .whitelist_function("bezier.*") + .whitelist_function("character.*") + .whitelist_function("string.*") + .whitelist_function("gfx.*") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate gfx_primitives_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + gfx_primitives_bindings + .write_to_file(out_path.join("sdl_gfx_primitives_bindings.rs")) + .expect("Couldn't write gfx_primitives_bindings!"); + + let gfx_imagefilter_bindings = gfx_imagefilter_bindings + .header("wrapper_gfx_imagefilter.h") + .whitelist_function("SDL_image.*") + .blacklist_type("FP_NAN") + .blacklist_type("FP_INFINITE") + .blacklist_type("FP_ZERO") + .blacklist_type("FP_SUBNORMAL") + .blacklist_type("FP_NORMAL") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate gfx_imagefilter_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + gfx_imagefilter_bindings + .write_to_file(out_path.join("sdl_gfx_imagefilter_bindings.rs")) + .expect("Couldn't write gfx_imagefilter_bindings!"); + + let gfx_rotozoom_bindings = gfx_rotozoom_bindings + .header("wrapper_gfx_rotozoom.h") + .blacklist_type("SDL_.*") + .whitelist_function("rotozoom.*") + .whitelist_function("zoom.*") + .whitelist_function("shrink.*") + .whitelist_function("rotate.*") + .blacklist_type("FP_NAN") + .blacklist_type("FP_INFINITE") + .blacklist_type("FP_ZERO") + .blacklist_type("FP_SUBNORMAL") + .blacklist_type("FP_NORMAL") + .blacklist_type("_IO.*|FILE") + .generate() + .expect("Unable to generate gfx_rotozoom_bindings!"); + + let out_path = PathBuf::from(env::var("OUT_DIR").unwrap()); + + gfx_rotozoom_bindings + .write_to_file(out_path.join("sdl_gfx_rotozoom_bindings.rs")) + .expect("Couldn't write gfx_rotozoom_bindings!"); + } } fn get_os_from_triple(triple: &str) -> Option<&str> From c555aa9857727c3d7d164d4386743d392be3766b Mon Sep 17 00:00:00 2001 From: Cobrand Date: Sat, 7 Jul 2018 23:04:09 +0000 Subject: [PATCH 16/19] Always build SDL2 in release mode --- sdl2-sys/build.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 0e569c1616d..cdb19d8b384 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -115,6 +115,7 @@ fn download_sdl2() -> PathBuf { #[cfg(feature = "bundled")] fn compile_sdl2(sdl2_build_path: &Path, target_os: &str) -> PathBuf { let mut cfg = cmake::Config::new(sdl2_build_path); + cfg.define("CMAKE_BUILD_TYPE", "RELEASE"); if target_os == "windows-gnu" { cfg.define("VIDEO_OPENGLES", "OFF"); @@ -185,8 +186,8 @@ fn link_sdl2(target_os: &str) { #[cfg(feature = "static-link")] { if cfg!(feature = "bundled") || cfg!(feature = "use-pkgconfig") == false { - println!("cargo:rustc-link-lib=static=SDL2maind"); - println!("cargo:rustc-link-lib=static=SDL2d"); + println!("cargo:rustc-link-lib=static=SDL2main"); + println!("cargo:rustc-link-lib=static=SDL2"); } // Also linked to any required libraries for each supported platform From 315082a8e3ad8ab89db41f36d45f3d58457ddb07 Mon Sep 17 00:00:00 2001 From: Cobrand Date: Sun, 8 Jul 2018 14:32:33 +0000 Subject: [PATCH 17/19] temporarily fix test_audio_cvt test --- src/sdl2/audio.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/sdl2/audio.rs b/src/sdl2/audio.rs index 19d81a157c6..c4bc2612732 100644 --- a/src/sdl2/audio.rs +++ b/src/sdl2/audio.rs @@ -827,10 +827,15 @@ mod test { let cvt = AudioCVT::new(AudioFormat::U8, 1, 44100, AudioFormat::U8, 2, 44100).unwrap(); assert!(cvt.is_conversion_needed()); - assert_eq!(cvt.capacity(255), 255*2); + + // since we're going from mono to stereo, our capacity must be at least twice the original (255) vec size + assert!(cvt.capacity(255) > 255*2, "capacity must be able to hold the converted audio sample"); let new_buffer = cvt.convert(buffer); - assert_eq!(new_buffer.len(), new_buffer_expected.len()); - assert_eq!(new_buffer, new_buffer_expected); + assert_eq!(new_buffer.len(), new_buffer_expected.len(), "capacity must be exactly equal to twice the original vec size"); + + // // this has been commented, see https://discourse.libsdl.org/t/change-of-behavior-in-audiocvt-sdl-convertaudio-from-2-0-5-to-2-0-6/24682 + // // to maybe re-enable it someday + // assert_eq!(new_buffer, new_buffer_expected); } } From e41793821818f4abd1894b51d7188cd617010cab Mon Sep 17 00:00:00 2001 From: Cobrand Date: Sun, 8 Jul 2018 14:39:32 +0000 Subject: [PATCH 18/19] Prevent warning in sdl2-sys/build.rs --- sdl2-sys/build.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index cdb19d8b384..75e1bedb74e 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -24,7 +24,8 @@ const SDL2_HEADERS_BUNDLED_VERSION: &str = "2.0.8"; // means the lastest stable version that can be downloaded from SDL2's source const LASTEST_SDL2_VERSION: &str = "2.0.8"; - + +#[cfg(feature = "bindgen")] macro_rules! add_msvc_includes_to_bindings { ($bindings:expr) => { $bindings = $bindings.clang_arg(format!("-IC:/Program Files (x86)/Windows Kits/8.1/Include/shared")); From 9a0afae51fde21aeac2344bbc2c43a882a90f4d3 Mon Sep 17 00:00:00 2001 From: Cobrand Date: Sun, 8 Jul 2018 14:55:09 +0000 Subject: [PATCH 19/19] Use the proper way to compile SDL2 in release mode --- sdl2-sys/build.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index 75e1bedb74e..5b182008887 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -116,7 +116,7 @@ fn download_sdl2() -> PathBuf { #[cfg(feature = "bundled")] fn compile_sdl2(sdl2_build_path: &Path, target_os: &str) -> PathBuf { let mut cfg = cmake::Config::new(sdl2_build_path); - cfg.define("CMAKE_BUILD_TYPE", "RELEASE"); + cfg.profile("release"); if target_os == "windows-gnu" { cfg.define("VIDEO_OPENGLES", "OFF");