diff options
author | Loïc Hoguin <[email protected]> | 2014-04-03 13:20:36 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2014-04-03 13:20:36 +0200 |
commit | bfd03ec67be42977ce9210b1f39b59d6141a2545 (patch) | |
tree | cb99b93b1c6df40102d93bd355d818c40df62fb2 /c_src | |
parent | 059ada86139b0cd42675180e553dc916323311d7 (diff) | |
download | esdl2-bfd03ec67be42977ce9210b1f39b59d6141a2545.tar.gz esdl2-bfd03ec67be42977ce9210b1f39b59d6141a2545.tar.bz2 esdl2-bfd03ec67be42977ce9210b1f39b59d6141a2545.zip |
Add 'centered' and 'undefined' pos options to sdl_window:create/6
Diffstat (limited to 'c_src')
-rw-r--r-- | c_src/sdl_window.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/c_src/sdl_window.c b/c_src/sdl_window.c index 49fa005..0983370 100644 --- a/c_src/sdl_window.c +++ b/c_src/sdl_window.c @@ -63,12 +63,36 @@ NIF_CALL_HANDLER(thread_create_window) NIF_FUNCTION(create_window) { char* title = (char*)enif_alloc(255); + char buf[MAX_ATOM_LENGTH]; int x, y, w, h; Uint32 flags = 0; BADARG_IF(!enif_get_string(env, argv[0], title, 255, ERL_NIF_LATIN1)); - BADARG_IF(!enif_get_int(env, argv[1], &x)); - BADARG_IF(!enif_get_int(env, argv[2], &y)); + + if (enif_is_atom(env, argv[1])) { + BADARG_IF(!enif_get_atom(env, argv[1], buf, MAX_ATOM_LENGTH, ERL_NIF_LATIN1)); + + if (!strcmp(buf, "centered")) + x = SDL_WINDOWPOS_CENTERED; + else if (!strcmp(buf, "undefined")) + x = SDL_WINDOWPOS_UNDEFINED; + else + return enif_make_badarg(env); + } else + BADARG_IF(!enif_get_int(env, argv[1], &x)); + + if (enif_is_atom(env, argv[2])) { + BADARG_IF(!enif_get_atom(env, argv[2], buf, MAX_ATOM_LENGTH, ERL_NIF_LATIN1)); + + if (!strcmp(buf, "centered")) + y = SDL_WINDOWPOS_CENTERED; + else if (!strcmp(buf, "undefined")) + y = SDL_WINDOWPOS_UNDEFINED; + else + return enif_make_badarg(env); + } else + BADARG_IF(!enif_get_int(env, argv[2], &y)); + BADARG_IF(!enif_get_int(env, argv[3], &w)); BADARG_IF(!enif_get_int(env, argv[4], &h)); BADARG_IF(!list_to_window_flags(env, argv[5], &flags)); |