forked from ohai/ruby-sdl2
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathclipboard.c
More file actions
61 lines (55 loc) · 1.36 KB
/
clipboard.c
File metadata and controls
61 lines (55 loc) · 1.36 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "rubysdl2_internal.h"
#include <SDL_clipboard.h>
/*
* Document-module: SDL2::Clipboard
*
* This module has clipboard manipulating functions.
*
*/
/*
* Get the text from the clipboard.
*
* @return [String] a string in the clipboard
* @return [nil] if the clipboard is empty
*/
static VALUE Clipboard_s_text(VALUE self)
{
if (SDL_HasClipboardText()) {
char* text = SDL_GetClipboardText();
VALUE str;
if (!text)
SDL_ERROR();
str = utf8str_new_cstr(text);
SDL_free(text);
return str;
} else {
return Qnil;
}
}
/*
* @overload text=(text)
* Set the text in the clipboard.
*
* @param text [String] a new text
* @return [String] text
*/
static VALUE Clipboard_s_set_text(VALUE self, VALUE text)
{
HANDLE_ERROR(SDL_SetClipboardText(StringValueCStr(text)));
return text;
}
/*
* Return true if the clipboard has any text.
*
*/
static VALUE Clipboard_s_has_text_p(VALUE self)
{
return INT2BOOL(SDL_HasClipboardText());
}
void rubysdl2_init_clipboard(void)
{
VALUE mClipBoard = rb_define_module_under(mSDL2, "Clipboard");
rb_define_module_function(mClipBoard, "text", Clipboard_s_text, 0);
rb_define_module_function(mClipBoard, "text=", Clipboard_s_set_text, 1);
rb_define_module_function(mClipBoard, "has_text?", Clipboard_s_has_text_p, 0);
}