annotate SDL3/SDL_clipboard.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
1 /*
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
2 Simple DirectMedia Layer
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
3 Copyright (C) 1997-2025 Sam Lantinga <slouken@libsdl.org>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
4
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
5 This software is provided 'as-is', without any express or implied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
6 warranty. In no event will the authors be held liable for any damages
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
7 arising from the use of this software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
8
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
9 Permission is granted to anyone to use this software for any purpose,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
10 including commercial applications, and to alter it and redistribute it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
11 freely, subject to the following restrictions:
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
12
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
13 1. The origin of this software must not be misrepresented; you must not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
14 claim that you wrote the original software. If you use this software
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
15 in a product, an acknowledgment in the product documentation would be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
16 appreciated but is not required.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
17 2. Altered source versions must be plainly marked as such, and must not be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
18 misrepresented as being the original software.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
19 3. This notice may not be removed or altered from any source distribution.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
20 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
21
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
22 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
23 * # CategoryClipboard
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
24 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
25 * SDL provides access to the system clipboard, both for reading information
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
26 * from other processes and publishing information of its own.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
27 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
28 * This is not just text! SDL apps can access and publish data by mimetype.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
29 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
30 * ## Basic use (text)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
31 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
32 * Obtaining and publishing simple text to the system clipboard is as easy as
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
33 * calling SDL_GetClipboardText() and SDL_SetClipboardText(), respectively.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
34 * These deal with C strings in UTF-8 encoding. Data transmission and encoding
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
35 * conversion is completely managed by SDL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
36 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
37 * ## Clipboard callbacks (data other than text)
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
38 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
39 * Things get more complicated when the clipboard contains something other
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
40 * than text. Not only can the system clipboard contain data of any type, in
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
41 * some cases it can contain the same data in different formats! For example,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
42 * an image painting app might let the user copy a graphic to the clipboard,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
43 * and offers it in .BMP, .JPG, or .PNG format for other apps to consume.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
44 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
45 * Obtaining clipboard data ("pasting") like this is a matter of calling
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
46 * SDL_GetClipboardData() and telling it the mimetype of the data you want.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
47 * But how does one know if that format is available? SDL_HasClipboardData()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
48 * can report if a specific mimetype is offered, and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
49 * SDL_GetClipboardMimeTypes() can provide the entire list of mimetypes
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
50 * available, so the app can decide what to do with the data and what formats
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
51 * it can support.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
52 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
53 * Setting the clipboard ("copying") to arbitrary data is done with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
54 * SDL_SetClipboardData. The app does not provide the data in this call, but
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
55 * rather the mimetypes it is willing to provide and a callback function.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
56 * During the callback, the app will generate the data. This allows massive
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
57 * data sets to be provided to the clipboard, without any data being copied
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
58 * before it is explicitly requested. More specifically, it allows an app to
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
59 * offer data in multiple formats without providing a copy of all of them
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
60 * upfront. If the app has an image that it could provide in PNG or JPG
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
61 * format, it doesn't have to encode it to either of those unless and until
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
62 * something tries to paste it.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
63 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
64 * ## Primary Selection
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
65 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
66 * The X11 and Wayland video targets have a concept of the "primary selection"
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
67 * in addition to the usual clipboard. This is generally highlighted (but not
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
68 * explicitly copied) text from various apps. SDL offers APIs for this through
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
69 * SDL_GetPrimarySelectionText() and SDL_SetPrimarySelectionText(). SDL offers
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
70 * these APIs on platforms without this concept, too, but only so far that it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
71 * will keep a copy of a string that the app sets for later retrieval; the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
72 * operating system will not ever attempt to change the string externally if
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
73 * it doesn't support a primary selection.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
74 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
75
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
76 #ifndef SDL_clipboard_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
77 #define SDL_clipboard_h_
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
78
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
79 #include <SDL3/SDL_stdinc.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
80 #include <SDL3/SDL_error.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
81
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
82 #include <SDL3/SDL_begin_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
83 /* Set up for C function definitions, even when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
84 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
85 extern "C" {
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
86 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
87
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
88 /* Function prototypes */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
89
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
90 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
91 * Put UTF-8 text into the clipboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
92 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
93 * \param text the text to store in the clipboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
94 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
95 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
96 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
97 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
98 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
99 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
100 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
101 * \sa SDL_GetClipboardText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
102 * \sa SDL_HasClipboardText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
103 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
104 extern SDL_DECLSPEC bool SDLCALL SDL_SetClipboardText(const char *text);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
105
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
106 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
107 * Get UTF-8 text from the clipboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
108 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
109 * This function returns an empty string if there is not enough memory left
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
110 * for a copy of the clipboard's content.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
111 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
112 * \returns the clipboard text on success or an empty string on failure; call
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
113 * SDL_GetError() for more information. This should be freed with
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
114 * SDL_free() when it is no longer needed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
115 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
116 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
117 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
118 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
119 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
120 * \sa SDL_HasClipboardText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
121 * \sa SDL_SetClipboardText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
122 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
123 extern SDL_DECLSPEC char * SDLCALL SDL_GetClipboardText(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
124
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
125 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
126 * Query whether the clipboard exists and contains a non-empty text string.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
127 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
128 * \returns true if the clipboard has text, or false if it does not.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
129 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
130 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
131 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
132 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
133 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
134 * \sa SDL_GetClipboardText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
135 * \sa SDL_SetClipboardText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
136 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
137 extern SDL_DECLSPEC bool SDLCALL SDL_HasClipboardText(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
138
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
139 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
140 * Put UTF-8 text into the primary selection.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
141 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
142 * \param text the text to store in the primary selection.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
143 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
144 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
145 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
146 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
147 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
148 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
149 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
150 * \sa SDL_GetPrimarySelectionText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
151 * \sa SDL_HasPrimarySelectionText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
152 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
153 extern SDL_DECLSPEC bool SDLCALL SDL_SetPrimarySelectionText(const char *text);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
154
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
155 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
156 * Get UTF-8 text from the primary selection.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
157 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
158 * This function returns an empty string if there is not enough memory left
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
159 * for a copy of the primary selection's content.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
160 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
161 * \returns the primary selection text on success or an empty string on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
162 * failure; call SDL_GetError() for more information. This should be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
163 * freed with SDL_free() when it is no longer needed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
164 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
165 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
166 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
167 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
168 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
169 * \sa SDL_HasPrimarySelectionText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
170 * \sa SDL_SetPrimarySelectionText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
171 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
172 extern SDL_DECLSPEC char * SDLCALL SDL_GetPrimarySelectionText(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
173
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
174 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
175 * Query whether the primary selection exists and contains a non-empty text
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
176 * string.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
177 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
178 * \returns true if the primary selection has text, or false if it does not.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
179 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
180 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
181 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
182 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
183 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
184 * \sa SDL_GetPrimarySelectionText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
185 * \sa SDL_SetPrimarySelectionText
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
186 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
187 extern SDL_DECLSPEC bool SDLCALL SDL_HasPrimarySelectionText(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
188
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
189 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
190 * Callback function that will be called when data for the specified mime-type
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
191 * is requested by the OS.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
192 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
193 * The callback function is called with NULL as the mime_type when the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
194 * clipboard is cleared or new data is set. The clipboard is automatically
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
195 * cleared in SDL_Quit().
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
196 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
197 * \param userdata a pointer to the provided user data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
198 * \param mime_type the requested mime-type.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
199 * \param size a pointer filled in with the length of the returned data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
200 * \returns a pointer to the data for the provided mime-type. Returning NULL
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
201 * or setting the length to 0 will cause zero length data to be sent
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
202 * to the "receiver", which should be able to handle this. The
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
203 * returned data will not be freed, so it needs to be retained and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
204 * dealt with internally.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
205 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
206 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
207 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
208 * \sa SDL_SetClipboardData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
209 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
210 typedef const void *(SDLCALL *SDL_ClipboardDataCallback)(void *userdata, const char *mime_type, size_t *size);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
211
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
212 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
213 * Callback function that will be called when the clipboard is cleared, or
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
214 * when new data is set.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
215 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
216 * \param userdata a pointer to the provided user data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
217 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
218 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
219 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
220 * \sa SDL_SetClipboardData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
221 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
222 typedef void (SDLCALL *SDL_ClipboardCleanupCallback)(void *userdata);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
223
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
224 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
225 * Offer clipboard data to the OS.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
226 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
227 * Tell the operating system that the application is offering clipboard data
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
228 * for each of the provided mime-types. Once another application requests the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
229 * data the callback function will be called, allowing it to generate and
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
230 * respond with the data for the requested mime-type.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
231 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
232 * The size of text data does not include any terminator, and the text does
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
233 * not need to be null-terminated (e.g., you can directly copy a portion of a
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
234 * document).
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
235 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
236 * \param callback a function pointer to the function that provides the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
237 * clipboard data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
238 * \param cleanup a function pointer to the function that cleans up the
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
239 * clipboard data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
240 * \param userdata an opaque pointer that will be forwarded to the callbacks.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
241 * \param mime_types a list of mime-types that are being offered. SDL copies
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
242 * the given list.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
243 * \param num_mime_types the number of mime-types in the mime_types list.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
244 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
245 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
246 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
247 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
248 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
249 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
250 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
251 * \sa SDL_ClearClipboardData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
252 * \sa SDL_GetClipboardData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
253 * \sa SDL_HasClipboardData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
254 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
255 extern SDL_DECLSPEC bool SDLCALL SDL_SetClipboardData(SDL_ClipboardDataCallback callback, SDL_ClipboardCleanupCallback cleanup, void *userdata, const char **mime_types, size_t num_mime_types);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
256
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
257 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
258 * Clear the clipboard data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
259 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
260 * \returns true on success or false on failure; call SDL_GetError() for more
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
261 * information.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
262 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
263 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
264 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
265 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
266 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
267 * \sa SDL_SetClipboardData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
268 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
269 extern SDL_DECLSPEC bool SDLCALL SDL_ClearClipboardData(void);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
270
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
271 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
272 * Get the data from the clipboard for a given mime type.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
273 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
274 * The size of text data does not include the terminator, but the text is
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
275 * guaranteed to be null-terminated.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
276 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
277 * \param mime_type the mime type to read from the clipboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
278 * \param size a pointer filled in with the length of the returned data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
279 * \returns the retrieved data buffer or NULL on failure; call SDL_GetError()
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
280 * for more information. This should be freed with SDL_free() when it
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
281 * is no longer needed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
282 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
283 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
284 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
285 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
286 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
287 * \sa SDL_HasClipboardData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
288 * \sa SDL_SetClipboardData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
289 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
290 extern SDL_DECLSPEC void * SDLCALL SDL_GetClipboardData(const char *mime_type, size_t *size);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
291
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
292 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
293 * Query whether there is data in the clipboard for the provided mime type.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
294 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
295 * \param mime_type the mime type to check for data.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
296 * \returns true if data exists in the clipboard for the provided mime type,
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
297 * false if it does not.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
298 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
299 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
300 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
301 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
302 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
303 * \sa SDL_SetClipboardData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
304 * \sa SDL_GetClipboardData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
305 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
306 extern SDL_DECLSPEC bool SDLCALL SDL_HasClipboardData(const char *mime_type);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
307
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
308 /**
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
309 * Retrieve the list of mime types available in the clipboard.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
310 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
311 * \param num_mime_types a pointer filled with the number of mime types, may
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
312 * be NULL.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
313 * \returns a null-terminated array of strings with mime types, or NULL on
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
314 * failure; call SDL_GetError() for more information. This should be
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
315 * freed with SDL_free() when it is no longer needed.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
316 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
317 * \threadsafety This function should only be called on the main thread.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
318 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
319 * \since This function is available since SDL 3.2.0.
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
320 *
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
321 * \sa SDL_SetClipboardData
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
322 */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
323 extern SDL_DECLSPEC char ** SDLCALL SDL_GetClipboardMimeTypes(size_t *num_mime_types);
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
324
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
325 /* Ends C function definitions when using C++ */
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
326 #ifdef __cplusplus
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
327 }
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
328 #endif
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
329 #include <SDL3/SDL_close_code.h>
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
330
20d02a178406 *: check in everything else
Paper <paper@tflc.us>
parents:
diff changeset
331 #endif /* SDL_clipboard_h_ */