SDL 3.0
|
#include <SDL3/SDL_stdinc.h>
#include <SDL3/SDL_error.h>
#include <SDL3/SDL_begin_code.h>
#include <SDL3/SDL_close_code.h>
Go to the source code of this file.
Typedefs | |
typedef const void *(* | SDL_ClipboardDataCallback) (void *userdata, const char *mime_type, size_t *size) |
typedef void(* | SDL_ClipboardCleanupCallback) (void *userdata) |
Functions | |
bool | SDL_SetClipboardText (const char *text) |
char * | SDL_GetClipboardText (void) |
bool | SDL_HasClipboardText (void) |
bool | SDL_SetPrimarySelectionText (const char *text) |
char * | SDL_GetPrimarySelectionText (void) |
bool | SDL_HasPrimarySelectionText (void) |
bool | SDL_SetClipboardData (SDL_ClipboardDataCallback callback, SDL_ClipboardCleanupCallback cleanup, void *userdata, const char **mime_types, size_t num_mime_types) |
bool | SDL_ClearClipboardData (void) |
void * | SDL_GetClipboardData (const char *mime_type, size_t *size) |
bool | SDL_HasClipboardData (const char *mime_type) |
char ** | SDL_GetClipboardMimeTypes (size_t *num_mime_types) |
typedef void(* SDL_ClipboardCleanupCallback) (void *userdata) |
Callback function that will be called when the clipboard is cleared, or new data is set.
userdata | a pointer to provided user data. |
Definition at line 223 of file SDL_clipboard.h.
typedef const void *(* SDL_ClipboardDataCallback) (void *userdata, const char *mime_type, size_t *size) |
Callback function that will be called when data for the specified mime-type is requested by the OS.
The callback function is called with NULL as the mime_type when the clipboard is cleared or new data is set. The clipboard is automatically cleared in SDL_Quit().
userdata | a pointer to provided user data. |
mime_type | the requested mime-type. |
size | a pointer filled in with the length of the returned data. |
Definition at line 211 of file SDL_clipboard.h.
|
extern |
Clear the clipboard data.
\threadsafety This function should only be called on the main thread.
|
extern |
Get the data from clipboard for a given mime type.
The size of text data does not include the terminator, but the text is guaranteed to be null terminated.
mime_type | the mime type to read from the clipboard. |
size | a pointer filled in with the length of the returned data. |
\threadsafety This function should only be called on the main thread.
|
extern |
Retrieve the list of mime types available in the clipboard.
num_mime_types | a pointer filled with the number of mime types, may be NULL. |
\threadsafety This function should only be called on the main thread.
|
extern |
Get UTF-8 text from the clipboard.
This functions returns an empty string if there was not enough memory left for a copy of the clipboard's content.
\threadsafety This function should only be called on the main thread.
|
extern |
Get UTF-8 text from the primary selection.
This functions returns an empty string if there was not enough memory left for a copy of the primary selection's content.
\threadsafety This function should only be called on the main thread.
|
extern |
Query whether there is data in the clipboard for the provided mime type.
mime_type | the mime type to check for data for. |
\threadsafety This function should only be called on the main thread.
|
extern |
Query whether the clipboard exists and contains a non-empty text string.
\threadsafety This function should only be called on the main thread.
|
extern |
Query whether the primary selection exists and contains a non-empty text string.
\threadsafety This function should only be called on the main thread.
|
extern |
Offer clipboard data to the OS.
Tell the operating system that the application is offering clipboard data for each of the provided mime-types. Once another application requests the data the callback function will be called, allowing it to generate and respond with the data for the requested mime-type.
The size of text data does not include any terminator, and the text does not need to be null terminated (e.g. you can directly copy a portion of a document).
callback | a function pointer to the function that provides the clipboard data. |
cleanup | a function pointer to the function that cleans up the clipboard data. |
userdata | an opaque pointer that will be forwarded to the callbacks. |
mime_types | a list of mime-types that are being offered. |
num_mime_types | the number of mime-types in the mime_types list. |
\threadsafety This function should only be called on the main thread.
|
extern |
SDL provides access to the system clipboard, both for reading information from other processes and publishing information of its own.
This is not just text! SDL apps can access and publish data by mimetype.
Obtaining and publishing simple text to the system clipboard is as easy as calling SDL_GetClipboardText() and SDL_SetClipboardText(), respectively. These deal with C strings in UTF-8 encoding. Data transmission and encoding conversion is completely managed by SDL.
Things get more complicated when the clipboard contains something other than text. Not only can the system clipboard contain data of any type, in some cases it can contain the same data in different formats! For example, an image painting app might let the user copy a graphic to the clipboard, and offers it in .BMP, .JPG, or .PNG format for other apps to consume.
Obtaining clipboard data ("pasting") like this is a matter of calling SDL_GetClipboardData() and telling it the mimetype of the data you want. But how does one know if that format is available? SDL_HasClipboardData() can report if a specific mimetype is offered, and SDL_GetClipboardMimeTypes() can provide the entire list of mimetypes available, so the app can decide what to do with the data and what formats it can support.
Setting the clipboard ("copying") to arbitrary data is done with SDL_SetClipboardData. The app does not provide the data in this call, but rather the mimetypes it is willing to provide and a callback function. During the callback, the app will generate the data. This allows massive data sets to be provided to the clipboard, without any data being copied before it is explicitly requested. More specifically, it allows an app to offer data in multiple formats without providing a copy of all of them upfront. If the app has an image that it could provide in PNG or JPG format, it doesn't have to encode it to either of those unless and until something tries to paste it.
The X11 and Wayland video targets have a concept of the "primary selection" in addition to the usual clipboard. This is generally highlighted (but not explicitly copied) text from various apps. SDL offers APIs for this through SDL_GetPrimarySelectionText() and SDL_SetPrimarySelectionText(). SDL offers these APIs on platforms without this concept, too, but only so far that it will keep a copy of a string that the app sets for later retrieval; the operating system will not ever attempt to change the string externally if it doesn't support a primary selection. Put UTF-8 text into the clipboard.
text | the text to store in the clipboard. |
\threadsafety This function should only be called on the main thread.
|
extern |
Put UTF-8 text into the primary selection.
text | the text to store in the primary selection. |
\threadsafety This function should only be called on the main thread.