Heavy work on improving category documentation.

Still more to go!

Reference Issue #9440.
This commit is contained in:
Ryan C. Gordon
2024-12-16 01:10:37 -05:00
parent 9aca97f4e7
commit 79316ca36e
30 changed files with 209 additions and 43 deletions

View File

@@ -26,6 +26,52 @@
* from other processes and publishing information of its own.
*
* This is not just text! SDL apps can access and publish data by mimetype.
*
* ## Basic use (text)
*
* 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.
*
* ## Clipboard callbacks (data other than text)
*
* 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.
*
* ## Primary Selection
*
* 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.
*/
#ifndef SDL_clipboard_h_
@@ -181,13 +227,13 @@ typedef void (SDLCALL *SDL_ClipboardCleanupCallback)(void *userdata);
* Offer clipboard data to the OS.
*
* Tell the operating system that the application is offering clipboard data
* for each of the proivded mime-types. Once another application requests the
* data the callback function will be called allowing it to generate and
* 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)
* document).
*
* \param callback a function pointer to the function that provides the
* clipboard data.