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 | |
parent | 43ad16d15766ed2c75515a696b391d5bb02c8b26 (diff) | |
download | esdl2-dcc0097096d3841ca41e6228b7c95158398f5a5b.tar.gz esdl2-dcc0097096d3841ca41e6228b7c95158398f5a5b.tar.bz2 esdl2-dcc0097096d3841ca41e6228b7c95158398f5a5b.zip |
Add clipboard functions
-rw-r--r-- | c_src/esdl2.h | 4 | ||||
-rw-r--r-- | c_src/sdl_clipboard.c | 66 | ||||
-rw-r--r-- | src/esdl2.erl | 16 | ||||
-rw-r--r-- | src/sdl_clipboard.erl | 28 |
4 files changed, 114 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; +} diff --git a/src/esdl2.erl b/src/esdl2.erl index 3f29141..efe1596 100644 --- a/src/esdl2.erl +++ b/src/esdl2.erl @@ -22,6 +22,11 @@ -export([set_main_ready/0]). -export([was_init/1]). +%% sdl_clipboard +-export([get_clipboard_text/0]). +-export([has_clipboard_text/0]). +-export([set_clipboard_text/1]). + %% sdl_events -export([poll_event/0]). @@ -78,6 +83,17 @@ set_main_ready() -> was_init(_) -> erlang:nif_error({not_loaded, ?MODULE}). +%% sdl_clipboard + +get_clipboard_text() -> + erlang:nif_error({not_loaded, ?MODULE}). + +has_clipboard_text() -> + erlang:nif_error({not_loaded, ?MODULE}). + +set_clipboard_text(_) -> + erlang:nif_error({not_loaded, ?MODULE}). + %% sdl_events poll_event() -> diff --git a/src/sdl_clipboard.erl b/src/sdl_clipboard.erl new file mode 100644 index 0000000..4ac3c9a --- /dev/null +++ b/src/sdl_clipboard.erl @@ -0,0 +1,28 @@ +%% 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. + +-module(sdl_clipboard). + +-export([get_text/0]). +-export([has_text/0]). +-export([set_text/1]). + +get_text() -> + esdl2:get_clipboard_text(). + +has_text() -> + esdl2:has_clipboard_text(). + +set_text(Text) -> + esdl2:set_clipboard_text(Text). |