initial add

This commit is contained in:
2025-12-11 10:39:24 -06:00
commit c116f4665e
23 changed files with 8649 additions and 0 deletions

90
clipboard.c Normal file
View File

@@ -0,0 +1,90 @@
#include "cell.h"
#include <SDL3/SDL.h>
// SDL_SetClipboardText(text) -> bool
JSC_CCALL(clipboard_set_text,
const char *text = JS_ToCString(js, argv[0]);
if (!text) return JS_EXCEPTION;
bool result = SDL_SetClipboardText(text);
JS_FreeCString(js, text);
return JS_NewBool(js, result);
)
// SDL_GetClipboardText() -> string
JSC_CCALL(clipboard_get_text,
char *text = SDL_GetClipboardText();
if (!text) return JS_NewString(js, "");
JSValue result = JS_NewString(js, text);
SDL_free(text);
return result;
)
// SDL_HasClipboardText() -> bool
JSC_CCALL(clipboard_has_text,
return JS_NewBool(js, SDL_HasClipboardText());
)
// SDL_SetPrimarySelectionText(text) -> bool
JSC_CCALL(clipboard_set_primary_text,
const char *text = JS_ToCString(js, argv[0]);
if (!text) return JS_EXCEPTION;
bool result = SDL_SetPrimarySelectionText(text);
JS_FreeCString(js, text);
return JS_NewBool(js, result);
)
// SDL_GetPrimarySelectionText() -> string
JSC_CCALL(clipboard_get_primary_text,
char *text = SDL_GetPrimarySelectionText();
if (!text) return JS_NewString(js, "");
JSValue result = JS_NewString(js, text);
SDL_free(text);
return result;
)
// SDL_HasPrimarySelectionText() -> bool
JSC_CCALL(clipboard_has_primary_text,
return JS_NewBool(js, SDL_HasPrimarySelectionText());
)
// SDL_ClearClipboardData() -> bool
JSC_CCALL(clipboard_clear,
return JS_NewBool(js, SDL_ClearClipboardData());
)
// SDL_HasClipboardData(mime_type) -> bool
JSC_CCALL(clipboard_has_data,
const char *mime_type = JS_ToCString(js, argv[0]);
if (!mime_type) return JS_EXCEPTION;
bool result = SDL_HasClipboardData(mime_type);
JS_FreeCString(js, mime_type);
return JS_NewBool(js, result);
)
// SDL_GetClipboardMimeTypes() -> array of strings
JSC_CCALL(clipboard_get_mime_types,
size_t count = 0;
char **types = SDL_GetClipboardMimeTypes(&count);
if (!types) return JS_NewArray(js);
JSValue arr = JS_NewArray(js);
for (size_t i = 0; i < count; i++) {
JS_SetPropertyUint32(js, arr, i, JS_NewString(js, types[i]));
}
SDL_free(types);
return arr;
)
static const JSCFunctionListEntry js_clipboard_funcs[] = {
MIST_FUNC_DEF(clipboard, set_text, 1),
MIST_FUNC_DEF(clipboard, get_text, 0),
MIST_FUNC_DEF(clipboard, has_text, 0),
MIST_FUNC_DEF(clipboard, set_primary_text, 1),
MIST_FUNC_DEF(clipboard, get_primary_text, 0),
MIST_FUNC_DEF(clipboard, has_primary_text, 0),
MIST_FUNC_DEF(clipboard, clear, 0),
MIST_FUNC_DEF(clipboard, has_data, 1),
MIST_FUNC_DEF(clipboard, get_mime_types, 0),
};
CELL_USE_FUNCS(js_clipboard_funcs)