diff options
author | Loïc Hoguin <[email protected]> | 2014-04-02 20:06:04 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2014-04-02 20:28:34 +0200 |
commit | dcc0097096d3841ca41e6228b7c95158398f5a5b (patch) | |
tree | a5219c96fb62bb0db25b6976eea2c407828bca93 /c_src | |
parent | 43ad16d15766ed2c75515a696b391d5bb02c8b26 (diff) | |
download | esdl2-dcc0097096d3841ca41e6228b7c95158398f5a5b.tar.gz esdl2-dcc0097096d3841ca41e6228b7c95158398f5a5b.tar.bz2 esdl2-dcc0097096d3841ca41e6228b7c95158398f5a5b.zip |
Add clipboard functions
Diffstat (limited to 'c_src')
-rw-r--r-- | c_src/esdl2.h | 4 | ||||
-rw-r--r-- | c_src/sdl_clipboard.c | 66 |
2 files changed, 70 insertions, 0 deletions
diff --git a/c_src/esdl2.h b/c_src/esdl2.h index 970fa6c..80e6406 100644 --- a/c_src/esdl2.h +++ b/c_src/esdl2.h @@ -104,6 +104,10 @@ F(quit_subsystem, 1) \ F(set_main_ready, 0) \ F(was_init, 1) \ + /* sdl_clipboard */ \ + F(get_clipboard_text, 0) \ + F(has_clipboard_text, 0) \ + F(set_clipboard_text, 1) \ /* sdl_events */ \ F(poll_event, 0) \ /* sdl_renderer */ \ diff --git a/c_src/sdl_clipboard.c b/c_src/sdl_clipboard.c new file mode 100644 index 0000000..14d1a3e --- /dev/null +++ b/c_src/sdl_clipboard.c @@ -0,0 +1,66 @@ +// Copyright (c) 2014, Loïc Hoguin <[email protected]> +// +// Permission to use, copy, modify, and/or distribute this software for any +// purpose with or without fee is hereby granted, provided that the above +// copyright notice and this permission notice appear in all copies. +// +// THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +#include "esdl2.h" + +// get_clipboard_text + +NIF_FUNCTION(get_clipboard_text) +{ + char* text; + ERL_NIF_TERM term; + + text = SDL_GetClipboardText(); + + if (!text) + return sdl_error_tuple(env); + + term = enif_make_string(env, text, ERL_NIF_LATIN1); + + SDL_free(text); + + return term; +} + +// has_clipboard_text + +NIF_FUNCTION(has_clipboard_text) +{ + if (SDL_HasClipboardText()) + return atom_true; + + return atom_false; +} + +// set_clipboard_text + +NIF_FUNCTION(set_clipboard_text) +{ + unsigned int len; + char* text; + int ret; + + BADARG_IF(!enif_get_list_length(env, argv[0], &len)); + text = (char*)enif_alloc(len + 1); + BADARG_IF(!enif_get_string(env, argv[0], text, len + 1, ERL_NIF_LATIN1)); + + ret = SDL_SetClipboardText(text); + + enif_free(text); + + if (ret != 0) + return sdl_error_tuple(env); + + return atom_ok; +} |