123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151 |
- package sdl2
- import "core:c"
- when ODIN_OS == .Windows {
- foreign import lib "SDL2.lib"
- } else {
- foreign import lib "system:SDL2"
- }
- bool :: distinct b32
- #assert(size_of(bool) == size_of(c.int))
- FOURCC :: #force_inline proc "c" (A, B, C, D: u8) -> u32 {
- return u32(A) << 0 | u32(B) << 8 | u32(C) << 16 | u32(D) << 24
- }
- malloc_func :: proc "c" (size: c.size_t) -> rawptr
- calloc_func :: proc "c" (nmemb, size: c.size_t) -> rawptr
- realloc_func :: proc "c" (mem: rawptr, size: c.size_t) -> rawptr
- free_func :: proc "c" (mem: rawptr)
- @(default_calling_convention="c", link_prefix="SDL_")
- foreign lib {
- malloc :: proc(size: c.size_t) -> rawptr ---
- calloc :: proc(nmemb, size: c.size_t) -> rawptr ---
- realloc :: proc(mem: rawptr, size: c.size_t) -> rawptr ---
- free :: proc(mem: rawptr) ---
- GetMemoryFunctions :: proc(malloc_func: ^malloc_func,
- calloc_func: ^calloc_func,
- realloc_func: ^realloc_func,
- free_func: ^free_func) ---
- SetMemoryFunctions :: proc(malloc_func: malloc_func,
- calloc_func: calloc_func,
- realloc_func: realloc_func,
- free_func: free_func) -> c.int ---
- GetNumAllocations :: proc() -> c.int ---
- }
- @(default_calling_convention="c", link_prefix="SDL_")
- foreign lib {
- getenv :: proc(name: cstring) -> cstring ---
- setenv :: proc(name, value: cstring, overwrite: c.int) -> c.int ---
- }
- @(default_calling_convention="c", link_prefix="SDL_")
- foreign lib {
- isalpha :: proc(x: rune) -> bool ---
- isalnum :: proc(x: rune) -> bool ---
- isblank :: proc(x: rune) -> bool ---
- iscntrl :: proc(x: rune) -> bool ---
- isdigit :: proc(x: rune) -> bool ---
- isxdigit :: proc(x: rune) -> bool ---
- ispunct :: proc(x: rune) -> bool ---
- isspace :: proc(x: rune) -> bool ---
- isupper :: proc(x: rune) -> bool ---
- islower :: proc(x: rune) -> bool ---
- isprint :: proc(x: rune) -> bool ---
- isgraph :: proc(x: rune) -> bool ---
- toupper :: proc(x: rune) -> bool ---
- tolower :: proc(x: rune) -> bool ---
- crc32 :: proc(crc: u32, data: rawptr, len: c.size_t) -> u32 ---
- }
- M_PI :: 3.14159265358979323846264338327950288
- @(default_calling_convention="c", link_prefix="SDL_")
- foreign lib {
- acos :: proc(x: f64) -> f64 ---
- acosf :: proc(x: f32) -> f32 ---
- asin :: proc(x: f64) -> f64 ---
- asinf :: proc(x: f32) -> f32 ---
- atan :: proc(x: f64) -> f64 ---
- atanf :: proc(x: f32) -> f32 ---
- atan2 :: proc(x, y: f64) -> f64 ---
- atan2f :: proc(x, y: f32) -> f32 ---
- ceil :: proc(x: f64) -> f64 ---
- ceilf :: proc(x: f32) -> f32 ---
- copysign :: proc(x, y: f64) -> f64 ---
- copysignf :: proc(x, y: f32) -> f32 ---
- cos :: proc(x: f64) -> f64 ---
- cosf :: proc(x: f32) -> f32 ---
- exp :: proc(x: f64) -> f64 ---
- expf :: proc(x: f32) -> f32 ---
- fabs :: proc(x: f64) -> f64 ---
- fabsf :: proc(x: f32) -> f32 ---
- floor :: proc(x: f64) -> f64 ---
- floorf :: proc(x: f32) -> f32 ---
- trunc :: proc(x: f64) -> f64 ---
- truncf :: proc(x: f32) -> f32 ---
- fmod :: proc(x, y: f64) -> f64 ---
- fmodf :: proc(x, y: f32) -> f32 ---
- log :: proc(x: f64) -> f64 ---
- logf :: proc(x: f32) -> f32 ---
- log10 :: proc(x: f64) -> f64 ---
- log10f :: proc(x: f32) -> f32 ---
- pow :: proc(x, y: f64) -> f64 ---
- powf :: proc(x, y: f32) -> f32 ---
- round :: proc(x: f64) -> f64 ---
- roundf :: proc(x: f32) -> f32 ---
- lround :: proc(x: f64) -> c.long ---
- lroundf :: proc(x: f32) -> c.long ---
- scalbn :: proc(x: f64, n: c.int) -> f64 ---
- scalbnf :: proc(x: f32, n: c.int) -> f32 ---
- sin :: proc(x: f64) -> f64 ---
- sinf :: proc(x: f32) -> f32 ---
- sqrt :: proc(x: f64) -> f64 ---
- sqrtf :: proc(x: f32) -> f32 ---
- tan :: proc(x: f64) -> f64 ---
- tanf :: proc(x: f32) -> f32 ---
- }
- /* The SDL implementation of iconv() returns these error codes */
- ICONV_ERROR :: ~c.size_t(0) // (size_t)-1
- ICONV_E2BIG :: ~c.size_t(1) // (size_t)-2
- ICONV_EILSEQ :: ~c.size_t(2) // (size_t)-3
- ICONV_EINVAL :: ~c.size_t(3) // (size_t)-4
- /* SDL_iconv_* are now always real symbols/types, not macros or inlined. */
- iconv_t :: distinct rawptr
- @(default_calling_convention="c", link_prefix="SDL_")
- foreign lib {
- iconv_open :: proc(tocode, fromcode: cstring) -> iconv_t ---
- iconv_close :: proc(cd: iconv_t) -> c.int ---
- iconv :: proc(cd: iconv_t, inbuf: ^cstring, inbytesleft: ^c.size_t, outbuf: ^[^]u8, outbytesleft: ^c.size_t) -> c.size_t ---
- iconv_string :: proc(tocode, fromcode, inbuf: cstring, inbytesleft: c.size_t) -> [^]u8 ---
- }
- iconv_utf8_locale :: proc "c" (s: string) -> cstring {
- return cast(cstring)iconv_string("", "UTF-8", cstring(raw_data(s)), len(s)+1)
- }
- iconv_utf8_utf16 :: iconv_utf8_ucs2
- iconv_utf8_ucs2 :: proc "c" (s: string) -> [^]u16 {
- return cast([^]u16)iconv_string("UCS-2-INTERNAL", "UTF-8", cstring(raw_data(s)), len(s)+1)
- }
- #assert(size_of(rune) == size_of(c.int))
- iconv_utf8_utf32 :: iconv_utf8_ucs4
- iconv_utf8_ucs4 :: proc "c" (s: string) -> [^]rune {
- return cast([^]rune)iconv_string("UCS-4-INTERNAL", "UTF-8", cstring(raw_data(s)), len(s)+1)
- }
|