aboutsummaryrefslogtreecommitdiffstats
path: root/c_src/sdl_clipboard.c
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2014-04-02 20:06:04 +0200
committerLoïc Hoguin <[email protected]>2014-04-02 20:28:34 +0200
commitdcc0097096d3841ca41e6228b7c95158398f5a5b (patch)
treea5219c96fb62bb0db25b6976eea2c407828bca93 /c_src/sdl_clipboard.c
parent43ad16d15766ed2c75515a696b391d5bb02c8b26 (diff)
downloadesdl2-dcc0097096d3841ca41e6228b7c95158398f5a5b.tar.gz
esdl2-dcc0097096d3841ca41e6228b7c95158398f5a5b.tar.bz2
esdl2-dcc0097096d3841ca41e6228b7c95158398f5a5b.zip
Add clipboard functions
Diffstat (limited to 'c_src/sdl_clipboard.c')
-rw-r--r--c_src/sdl_clipboard.c66
1 files changed, 66 insertions, 0 deletions
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;
+}