Skip to main content

sdl_image_sys/generated/
bindings_x86_64_unknown_linux_gnu.rs

1/* automatically generated by rust-bindgen 0.72.1 */
2
3use sdl_sys_bindgen::*;
4
5pub const SDL_IMAGE_MAJOR_VERSION: u32 = 3;
6pub const SDL_IMAGE_MINOR_VERSION: u32 = 5;
7pub const SDL_IMAGE_MICRO_VERSION: u32 = 0;
8pub const IMG_PROP_ANIMATION_ENCODER_CREATE_FILENAME_STRING: &[u8; 44] =
9    b"SDL_image.animation_encoder.create.filename\0";
10pub const IMG_PROP_ANIMATION_ENCODER_CREATE_IOSTREAM_POINTER: &[u8; 44] =
11    b"SDL_image.animation_encoder.create.iostream\0";
12pub const IMG_PROP_ANIMATION_ENCODER_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN: &[u8; 54] =
13    b"SDL_image.animation_encoder.create.iostream.autoclose\0";
14pub const IMG_PROP_ANIMATION_ENCODER_CREATE_TYPE_STRING: &[u8; 40] =
15    b"SDL_image.animation_encoder.create.type\0";
16pub const IMG_PROP_ANIMATION_ENCODER_CREATE_QUALITY_NUMBER: &[u8; 43] =
17    b"SDL_image.animation_encoder.create.quality\0";
18pub const IMG_PROP_ANIMATION_ENCODER_CREATE_TIMEBASE_NUMERATOR_NUMBER: &[u8; 54] =
19    b"SDL_image.animation_encoder.create.timebase.numerator\0";
20pub const IMG_PROP_ANIMATION_ENCODER_CREATE_TIMEBASE_DENOMINATOR_NUMBER: &[u8; 56] =
21    b"SDL_image.animation_encoder.create.timebase.denominator\0";
22pub const IMG_PROP_ANIMATION_ENCODER_CREATE_AVIF_MAX_THREADS_NUMBER: &[u8; 52] =
23    b"SDL_image.animation_encoder.create.avif.max_threads\0";
24pub const IMG_PROP_ANIMATION_ENCODER_CREATE_AVIF_KEYFRAME_INTERVAL_NUMBER: &[u8; 58] =
25    b"SDL_image.animation_encoder.create.avif.keyframe_interval\0";
26pub const IMG_PROP_ANIMATION_ENCODER_CREATE_GIF_USE_LUT_BOOLEAN: &[u8; 47] =
27    b"SDL_image.animation_encoder.create.gif.use_lut\0";
28pub const IMG_PROP_ANIMATION_DECODER_CREATE_FILENAME_STRING: &[u8; 44] =
29    b"SDL_image.animation_decoder.create.filename\0";
30pub const IMG_PROP_ANIMATION_DECODER_CREATE_IOSTREAM_POINTER: &[u8; 44] =
31    b"SDL_image.animation_decoder.create.iostream\0";
32pub const IMG_PROP_ANIMATION_DECODER_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN: &[u8; 54] =
33    b"SDL_image.animation_decoder.create.iostream.autoclose\0";
34pub const IMG_PROP_ANIMATION_DECODER_CREATE_TYPE_STRING: &[u8; 40] =
35    b"SDL_image.animation_decoder.create.type\0";
36pub const IMG_PROP_ANIMATION_DECODER_CREATE_TIMEBASE_NUMERATOR_NUMBER: &[u8; 54] =
37    b"SDL_image.animation_decoder.create.timebase.numerator\0";
38pub const IMG_PROP_ANIMATION_DECODER_CREATE_TIMEBASE_DENOMINATOR_NUMBER: &[u8; 56] =
39    b"SDL_image.animation_decoder.create.timebase.denominator\0";
40pub const IMG_PROP_ANIMATION_DECODER_CREATE_AVIF_MAX_THREADS_NUMBER: &[u8; 52] =
41    b"SDL_image.animation_decoder.create.avif.max_threads\0";
42pub const IMG_PROP_ANIMATION_DECODER_CREATE_AVIF_ALLOW_INCREMENTAL_BOOLEAN: &[u8; 58] =
43    b"SDL_image.animation_decoder.create.avif.allow_incremental\0";
44pub const IMG_PROP_ANIMATION_DECODER_CREATE_AVIF_ALLOW_PROGRESSIVE_BOOLEAN: &[u8; 58] =
45    b"SDL_image.animation_decoder.create.avif.allow_progressive\0";
46pub const IMG_PROP_ANIMATION_DECODER_CREATE_GIF_TRANSPARENT_COLOR_INDEX_NUMBER: &[u8; 63] =
47    b"SDL_image.animation_encoder.create.gif.transparent_color_index\0";
48pub const IMG_PROP_ANIMATION_DECODER_CREATE_GIF_NUM_COLORS_NUMBER: &[u8; 50] =
49    b"SDL_image.animation_encoder.create.gif.num_colors\0";
50pub const IMG_PROP_METADATA_IGNORE_PROPS_BOOLEAN: &[u8; 32] = b"SDL_image.metadata.ignore_props\0";
51pub const IMG_PROP_METADATA_DESCRIPTION_STRING: &[u8; 31] = b"SDL_image.metadata.description\0";
52pub const IMG_PROP_METADATA_COPYRIGHT_STRING: &[u8; 29] = b"SDL_image.metadata.copyright\0";
53pub const IMG_PROP_METADATA_TITLE_STRING: &[u8; 25] = b"SDL_image.metadata.title\0";
54pub const IMG_PROP_METADATA_AUTHOR_STRING: &[u8; 26] = b"SDL_image.metadata.author\0";
55pub const IMG_PROP_METADATA_CREATION_TIME_STRING: &[u8; 33] = b"SDL_image.metadata.creation_time\0";
56pub const IMG_PROP_METADATA_FRAME_COUNT_NUMBER: &[u8; 31] = b"SDL_image.metadata.frame_count\0";
57pub const IMG_PROP_METADATA_LOOP_COUNT_NUMBER: &[u8; 30] = b"SDL_image.metadata.loop_count\0";
58unsafe extern "C" {
59    #[doc = "This function gets the version of the dynamically linked SDL_image library.\n\n**Returns:** SDL_image version.\n\n**Available Since:** This function is available since SDL_image 3.0.0."]
60    pub fn IMG_Version() -> core::ffi::c_int;
61}
62unsafe extern "C" {
63    #[doc = "Load an image from a filesystem path into a software surface.\n\nAn SDL_Surface is a buffer of pixels in memory accessible by the CPU. Use\nthis if you plan to hand the data to something else or manipulate it\nfurther in code.\n\nThere are no guarantees about what format the new SDL_Surface data will be;\nin many cases, SDL_image will attempt to supply a surface that exactly\nmatches the provided image, but in others it might have to convert (either\nbecause the image is in a format that SDL doesn't directly support or\nbecause it's compressed data that could reasonably uncompress to various\nformats and SDL_image had to pick one). You can inspect an SDL_Surface for\nits specifics, and use SDL_ConvertSurface to then migrate to any supported\nformat.\n\nIf the image format supports a transparent pixel, SDL will set the colorkey\nfor the surface. You can enable RLE acceleration on the surface afterwards\nby calling: SDL_SetSurfaceColorKey(image, SDL_RLEACCEL,\n\nimage->format->colorkey);\n\nThere is a separate function to read files from an SDL_IOStream, if you\nneed an i/o abstraction to provide data from anywhere instead of a simple\nfilesystem read; that function is IMG_Load_IO().\n\nIf you are using SDL's 2D rendering API, there is an equivalent call to\nload images directly into an SDL_Texture for use by the GPU without using a\nsoftware surface: call IMG_LoadTexture() instead.\n\nWhen done with the returned surface, the app should dispose of it with a\ncall to\n[SDL_DestroySurface](https://wiki.libsdl.org/SDL3/SDL_DestroySurface)\n().\n\n**Parameter:** file a path on the filesystem to load an image from.\n\n**Returns:** a new SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadTyped_IO\n\n**See Also:** IMG_Load_IO"]
64    pub fn IMG_Load(file: *const core::ffi::c_char) -> *mut SDL_Surface;
65}
66unsafe extern "C" {
67    #[doc = "Load an image from an SDL data source into a software surface.\n\nAn SDL_Surface is a buffer of pixels in memory accessible by the CPU. Use\nthis if you plan to hand the data to something else or manipulate it\nfurther in code.\n\nThere are no guarantees about what format the new SDL_Surface data will be;\nin many cases, SDL_image will attempt to supply a surface that exactly\nmatches the provided image, but in others it might have to convert (either\nbecause the image is in a format that SDL doesn't directly support or\nbecause it's compressed data that could reasonably uncompress to various\nformats and SDL_image had to pick one). You can inspect an SDL_Surface for\nits specifics, and use SDL_ConvertSurface to then migrate to any supported\nformat.\n\nIf the image format supports a transparent pixel, SDL will set the colorkey\nfor the surface. You can enable RLE acceleration on the surface afterwards\nby calling: SDL_SetSurfaceColorKey(image, SDL_RLEACCEL,\n\nimage->format->colorkey);\n\nIf `closeio` is true, `src` will be closed before returning, whether this\nfunction succeeds or not. SDL_image reads everything it needs from `src`\nduring this call in any case.\n\nThere is a separate function to read files from disk without having to deal\nwith SDL_IOStream: `IMG_Load(\"filename.jpg\")` will call this function and\nmanage those details for you, determining the file type from the filename's\nextension.\n\nThere is also IMG_LoadTyped_IO(), which is equivalent to this function\nexcept a file extension (like \"BMP\", \"JPG\", etc) can be specified, in case\nSDL_image cannot autodetect the file format.\n\nIf you are using SDL's 2D rendering API, there is an equivalent call to\nload images directly into an SDL_Texture for use by the GPU without using a\nsoftware surface: call IMG_LoadTexture_IO() instead.\n\nWhen done with the returned surface, the app should dispose of it with a\ncall to SDL_DestroySurface().\n\n**Parameter:** src an SDL_IOStream that data will be read from.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** a new SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_Load\n\n**See Also:** IMG_LoadTyped_IO"]
68    pub fn IMG_Load_IO(src: *mut SDL_IOStream, closeio: bool) -> *mut SDL_Surface;
69}
70unsafe extern "C" {
71    #[doc = "Load an image from an SDL data source into a software surface.\n\nAn SDL_Surface is a buffer of pixels in memory accessible by the CPU. Use\nthis if you plan to hand the data to something else or manipulate it\nfurther in code.\n\nThere are no guarantees about what format the new SDL_Surface data will be;\nin many cases, SDL_image will attempt to supply a surface that exactly\nmatches the provided image, but in others it might have to convert (either\nbecause the image is in a format that SDL doesn't directly support or\nbecause it's compressed data that could reasonably uncompress to various\nformats and SDL_image had to pick one). You can inspect an SDL_Surface for\nits specifics, and use SDL_ConvertSurface to then migrate to any supported\nformat.\n\nIf the image format supports a transparent pixel, SDL will set the colorkey\nfor the surface. You can enable RLE acceleration on the surface afterwards\nby calling: SDL_SetSurfaceColorKey(image, SDL_RLEACCEL,\n\nimage->format->colorkey);\n\nIf `closeio` is true, `src` will be closed before returning, whether this\nfunction succeeds or not. SDL_image reads everything it needs from `src`\nduring this call in any case.\n\nEven though this function accepts a file type, SDL_image may still try\nother decoders that are capable of detecting file type from the contents of\nthe image data, but may rely on the caller-provided type string for formats\nthat it cannot autodetect. If `type` is NULL, SDL_image will rely solely on\nits ability to guess the format.\n\nThere is a separate function to read files from disk without having to deal\nwith SDL_IOStream: `IMG_Load(\"filename.jpg\")` will call this function and\nmanage those details for you, determining the file type from the filename's\nextension.\n\nThere is also IMG_Load_IO(), which is equivalent to this function except\nthat it will rely on SDL_image to determine what type of data it is\nloading, much like passing a NULL for type.\n\nIf you are using SDL's 2D rendering API, there is an equivalent call to\nload images directly into an SDL_Texture for use by the GPU without using a\nsoftware surface: call IMG_LoadTextureTyped_IO() instead.\n\nWhen done with the returned surface, the app should dispose of it with a\ncall to SDL_DestroySurface().\n\n**Parameter:** src an SDL_IOStream that data will be read from.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** type a filename extension that represent this data (\"BMP\", \"GIF\",\n\"PNG\", etc).\n\n**Returns:** a new SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_Load\n\n**See Also:** IMG_Load_IO"]
72    pub fn IMG_LoadTyped_IO(
73        src: *mut SDL_IOStream,
74        closeio: bool,
75        type_: *const core::ffi::c_char,
76    ) -> *mut SDL_Surface;
77}
78unsafe extern "C" {
79    #[doc = "Load an image from a filesystem path into a texture.\n\nAn SDL_Texture represents an image in GPU memory, usable by SDL's 2D Render\nAPI. This can be significantly more efficient than using a CPU-bound\nSDL_Surface if you don't need to manipulate the image directly after\nloading it.\n\nIf the loaded image has transparency or a colorkey, a texture with an alpha\nchannel will be created. Otherwise, SDL_image will attempt to create an\nSDL_Texture in the most format that most reasonably represents the image\ndata (but in many cases, this will just end up being 32-bit RGB or 32-bit\nRGBA).\n\nThere is a separate function to read files from an SDL_IOStream, if you\nneed an i/o abstraction to provide data from anywhere instead of a simple\nfilesystem read; that function is IMG_LoadTexture_IO().\n\nIf you would rather decode an image to an SDL_Surface (a buffer of pixels\nin CPU memory), call IMG_Load() instead.\n\nWhen done with the returned texture, the app should dispose of it with a\ncall to SDL_DestroyTexture().\n\n**Parameter:** renderer the SDL_Renderer to use to create the texture.\n\n**Parameter:** file a path on the filesystem to load an image from.\n\n**Returns:** a new texture, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadTextureTyped_IO\n\n**See Also:** IMG_LoadTexture_IO"]
80    pub fn IMG_LoadTexture(
81        renderer: *mut SDL_Renderer,
82        file: *const core::ffi::c_char,
83    ) -> *mut SDL_Texture;
84}
85unsafe extern "C" {
86    #[doc = "Load an image from an SDL data source into a texture.\n\nAn SDL_Texture represents an image in GPU memory, usable by SDL's 2D Render\nAPI. This can be significantly more efficient than using a CPU-bound\nSDL_Surface if you don't need to manipulate the image directly after\nloading it.\n\nIf the loaded image has transparency or a colorkey, a texture with an alpha\nchannel will be created. Otherwise, SDL_image will attempt to create an\nSDL_Texture in the most format that most reasonably represents the image\ndata (but in many cases, this will just end up being 32-bit RGB or 32-bit\nRGBA).\n\nIf `closeio` is true, `src` will be closed before returning, whether this\nfunction succeeds or not. SDL_image reads everything it needs from `src`\nduring this call in any case.\n\nThere is a separate function to read files from disk without having to deal\nwith SDL_IOStream: `IMG_LoadTexture(renderer, \"filename.jpg\")` will call\nthis function and manage those details for you, determining the file type\nfrom the filename's extension.\n\nThere is also IMG_LoadTextureTyped_IO(), which is equivalent to this\nfunction except a file extension (like \"BMP\", \"JPG\", etc) can be specified,\nin case SDL_image cannot autodetect the file format.\n\nIf you would rather decode an image to an SDL_Surface (a buffer of pixels\nin CPU memory), call IMG_Load() instead.\n\nWhen done with the returned texture, the app should dispose of it with a\ncall to SDL_DestroyTexture().\n\n**Parameter:** renderer the SDL_Renderer to use to create the texture.\n\n**Parameter:** src an SDL_IOStream that data will be read from.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** a new texture, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadTexture\n\n**See Also:** IMG_LoadTextureTyped_IO"]
87    pub fn IMG_LoadTexture_IO(
88        renderer: *mut SDL_Renderer,
89        src: *mut SDL_IOStream,
90        closeio: bool,
91    ) -> *mut SDL_Texture;
92}
93unsafe extern "C" {
94    #[doc = "Load an image from an SDL data source into a texture.\n\nAn SDL_Texture represents an image in GPU memory, usable by SDL's 2D Render\nAPI. This can be significantly more efficient than using a CPU-bound\nSDL_Surface if you don't need to manipulate the image directly after\nloading it.\n\nIf the loaded image has transparency or a colorkey, a texture with an alpha\nchannel will be created. Otherwise, SDL_image will attempt to create an\nSDL_Texture in the most format that most reasonably represents the image\ndata (but in many cases, this will just end up being 32-bit RGB or 32-bit\nRGBA).\n\nIf `closeio` is true, `src` will be closed before returning, whether this\nfunction succeeds or not. SDL_image reads everything it needs from `src`\nduring this call in any case.\n\nEven though this function accepts a file type, SDL_image may still try\nother decoders that are capable of detecting file type from the contents of\nthe image data, but may rely on the caller-provided type string for formats\nthat it cannot autodetect. If `type` is NULL, SDL_image will rely solely on\nits ability to guess the format.\n\nThere is a separate function to read files from disk without having to deal\nwith SDL_IOStream: `IMG_LoadTexture(\"filename.jpg\")` will call this\nfunction and manage those details for you, determining the file type from\nthe filename's extension.\n\nThere is also IMG_LoadTexture_IO(), which is equivalent to this function\nexcept that it will rely on SDL_image to determine what type of data it is\nloading, much like passing a NULL for type.\n\nIf you would rather decode an image to an SDL_Surface (a buffer of pixels\nin CPU memory), call IMG_LoadTyped_IO() instead.\n\nWhen done with the returned texture, the app should dispose of it with a\ncall to SDL_DestroyTexture().\n\n**Parameter:** renderer the SDL_Renderer to use to create the texture.\n\n**Parameter:** src an SDL_IOStream that data will be read from.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** type a filename extension that represent this data (\"BMP\", \"GIF\",\n\"PNG\", etc).\n\n**Returns:** a new texture, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadTexture\n\n**See Also:** IMG_LoadTexture_IO"]
95    pub fn IMG_LoadTextureTyped_IO(
96        renderer: *mut SDL_Renderer,
97        src: *mut SDL_IOStream,
98        closeio: bool,
99        type_: *const core::ffi::c_char,
100    ) -> *mut SDL_Texture;
101}
102unsafe extern "C" {
103    #[doc = "Load an image from a filesystem path into a GPU texture.\n\nAn SDL_GPUTexture represents an image in GPU memory, usable by SDL's GPU\nAPI. Regardless of the source format of the image, this function will\ncreate a GPU texture with the format SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM\nwith no mip levels. It can be bound as a sampled texture from a graphics or\ncompute pipeline and as a a readonly storage texture in a compute pipeline.\n\nThere is a separate function to read files from an SDL_IOStream, if you\nneed an i/o abstraction to provide data from anywhere instead of a simple\nfilesystem read; that function is IMG_LoadGPUTexture_IO().\n\nWhen done with the returned texture, the app should dispose of it with a\ncall to SDL_ReleaseGPUTexture().\n\n**Parameter:** device the SDL_GPUDevice to use to create the GPU texture.\n\n**Parameter:** copy_pass the SDL_GPUCopyPass to use to upload the loaded image to\nthe GPU texture.\n\n**Parameter:** file a path on the filesystem to load an image from.\n\n**Parameter:** width a pointer filled in with the width of the GPU texture. may be\nNULL.\n\n**Parameter:** height a pointer filled in with the width of the GPU texture. may be\nNULL.\n\n**Returns:** a new GPU texture, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_LoadGPUTextureTyped_IO\n\n**See Also:** IMG_LoadGPUTexture_IO"]
104    pub fn IMG_LoadGPUTexture(
105        device: *mut SDL_GPUDevice,
106        copy_pass: *mut SDL_GPUCopyPass,
107        file: *const core::ffi::c_char,
108        width: *mut core::ffi::c_int,
109        height: *mut core::ffi::c_int,
110    ) -> *mut SDL_GPUTexture;
111}
112unsafe extern "C" {
113    #[doc = "Load an image from an SDL data source into a GPU texture.\n\nAn SDL_GPUTexture represents an image in GPU memory, usable by SDL's GPU\nAPI. Regardless of the source format of the image, this function will\ncreate a GPU texture with the format SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM\nwith no mip levels. It can be bound as a sampled texture from a graphics or\ncompute pipeline and as a a readonly storage texture in a compute pipeline.\n\nIf `closeio` is true, `src` will be closed before returning, whether this\nfunction succeeds or not. SDL_image reads everything it needs from `src`\nduring this call in any case.\n\nThere is a separate function to read files from disk without having to deal\nwith SDL_IOStream: `IMG_LoadGPUTexture(device, copy_pass, \"filename.jpg\",\nwidth, height) will call this function and manage those details for you,\ndetermining the file type from the filename's extension.\n\nThere is also IMG_LoadGPUTextureTyped_IO(), which is equivalent to this\nfunction except a file extension (like \"BMP\", \"JPG\", etc) can be specified,\nin case SDL_image cannot autodetect the file format.\n\nWhen done with the returned texture, the app should dispose of it with a\ncall to SDL_ReleaseGPUTexture().\n\n**Parameter:** device the SDL_GPUDevice to use to create the GPU texture.\n\n**Parameter:** copy_pass the SDL_GPUCopyPass to use to upload the loaded image to\nthe GPU texture.\n\n**Parameter:** src an SDL_IOStream that data will be read from.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** width a pointer filled in with the width of the GPU texture. may be\nNULL.\n\n**Parameter:** height a pointer filled in with the width of the GPU texture. may be\nNULL.\n\n**Returns:** a new GPU texture, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_LoadGPUTexture\n\n**See Also:** IMG_LoadGPUTextureTyped_IO"]
114    pub fn IMG_LoadGPUTexture_IO(
115        device: *mut SDL_GPUDevice,
116        copy_pass: *mut SDL_GPUCopyPass,
117        src: *mut SDL_IOStream,
118        closeio: bool,
119        width: *mut core::ffi::c_int,
120        height: *mut core::ffi::c_int,
121    ) -> *mut SDL_GPUTexture;
122}
123unsafe extern "C" {
124    #[doc = "Load an image from an SDL data source into a GPU texture.\n\nAn SDL_GPUTexture represents an image in GPU memory, usable by SDL's GPU\nAPI. Regardless of the source format of the image, this function will\ncreate a GPU texture with the format SDL_GPU_TEXTUREFORMAT_R8G8B8A8_UNORM\nwith no mip levels. It can be bound as a sampled texture from a graphics or\ncompute pipeline and as a a readonly storage texture in a compute pipeline.\n\nIf `closeio` is true, `src` will be closed before returning, whether this\nfunction succeeds or not. SDL_image reads everything it needs from `src`\nduring this call in any case.\n\nEven though this function accepts a file type, SDL_image may still try\nother decoders that are capable of detecting file type from the contents of\nthe image data, but may rely on the caller-provided type string for formats\nthat it cannot autodetect. If `type` is NULL, SDL_image will rely solely on\nits ability to guess the format.\n\nThere is a separate function to read files from disk without having to deal\nwith SDL_IOStream: `IMG_LoadGPUTexture(device, copy_pass, \"filename.jpg\",\nwidth, height) will call this function and manage those details for you,\ndetermining the file type from the filename's extension.\n\nThere is also IMG_LoadGPUTexture_IO(), which is equivalent to this function\nexcept that it will rely on SDL_image to determine what type of data it is\nloading, much like passing a NULL for type.\n\nWhen done with the returned texture, the app should dispose of it with a\ncall to SDL_ReleaseGPUTexture().\n\n**Parameter:** device the SDL_GPUDevice to use to create the GPU texture.\n\n**Parameter:** copy_pass the SDL_GPUCopyPass to use to upload the loaded image to\nthe GPU texture.\n\n**Parameter:** src an SDL_IOStream that data will be read from.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** type a filename extension that represent this data (\"BMP\", \"GIF\",\n\"PNG\", etc).\n\n**Parameter:** width a pointer filled in with the width of the GPU texture. may be\nNULL.\n\n**Parameter:** height a pointer filled in with the width of the GPU texture. may be\nNULL.\n\n**Returns:** a new GPU texture, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_LoadGPUTexture\n\n**See Also:** IMG_LoadGPUTexture_IO"]
125    pub fn IMG_LoadGPUTextureTyped_IO(
126        device: *mut SDL_GPUDevice,
127        copy_pass: *mut SDL_GPUCopyPass,
128        src: *mut SDL_IOStream,
129        closeio: bool,
130        type_: *const core::ffi::c_char,
131        width: *mut core::ffi::c_int,
132        height: *mut core::ffi::c_int,
133    ) -> *mut SDL_GPUTexture;
134}
135unsafe extern "C" {
136    #[doc = "Get the image currently in the clipboard.\n\nWhen done with the returned surface, the app should dispose of it with a\ncall to SDL_DestroySurface().\n\n**Returns:** a new SDL surface, or NULL if no supported image is available.\n\n**Available Since:** This function is available since SDL_image 3.4.0."]
137    pub fn IMG_GetClipboardImage() -> *mut SDL_Surface;
138}
139unsafe extern "C" {
140    #[doc = "Detect ANI animated cursor data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is ANI animated cursor data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
141    pub fn IMG_isANI(src: *mut SDL_IOStream) -> bool;
142}
143unsafe extern "C" {
144    #[doc = "Detect AVIF image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is AVIF data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
145    pub fn IMG_isAVIF(src: *mut SDL_IOStream) -> bool;
146}
147unsafe extern "C" {
148    #[doc = "Detect CUR image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is CUR data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
149    pub fn IMG_isCUR(src: *mut SDL_IOStream) -> bool;
150}
151unsafe extern "C" {
152    #[doc = "Detect BMP image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is BMP data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
153    pub fn IMG_isBMP(src: *mut SDL_IOStream) -> bool;
154}
155unsafe extern "C" {
156    #[doc = "Detect GIF image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is GIF data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
157    pub fn IMG_isGIF(src: *mut SDL_IOStream) -> bool;
158}
159unsafe extern "C" {
160    #[doc = "Detect ICO image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is ICO data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
161    pub fn IMG_isICO(src: *mut SDL_IOStream) -> bool;
162}
163unsafe extern "C" {
164    #[doc = "Detect JPG image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is JPG data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
165    pub fn IMG_isJPG(src: *mut SDL_IOStream) -> bool;
166}
167unsafe extern "C" {
168    #[doc = "Detect JXL image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is JXL data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
169    pub fn IMG_isJXL(src: *mut SDL_IOStream) -> bool;
170}
171unsafe extern "C" {
172    #[doc = "Detect LBM image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is LBM data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
173    pub fn IMG_isLBM(src: *mut SDL_IOStream) -> bool;
174}
175unsafe extern "C" {
176    #[doc = "Detect PCX image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is PCX data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
177    pub fn IMG_isPCX(src: *mut SDL_IOStream) -> bool;
178}
179unsafe extern "C" {
180    #[doc = "Detect PNG image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is PNG data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
181    pub fn IMG_isPNG(src: *mut SDL_IOStream) -> bool;
182}
183unsafe extern "C" {
184    #[doc = "Detect PNM image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is PNM data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
185    pub fn IMG_isPNM(src: *mut SDL_IOStream) -> bool;
186}
187unsafe extern "C" {
188    #[doc = "Detect QOI image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is QOI data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
189    pub fn IMG_isQOI(src: *mut SDL_IOStream) -> bool;
190}
191unsafe extern "C" {
192    #[doc = "Detect SVG image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is SVG data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
193    pub fn IMG_isSVG(src: *mut SDL_IOStream) -> bool;
194}
195unsafe extern "C" {
196    #[doc = "Detect TIFF image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is TIFF data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
197    pub fn IMG_isTIF(src: *mut SDL_IOStream) -> bool;
198}
199unsafe extern "C" {
200    #[doc = "Detect WEBP image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is WEBP data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
201    pub fn IMG_isWEBP(src: *mut SDL_IOStream) -> bool;
202}
203unsafe extern "C" {
204    #[doc = "Detect XCF image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is XCF data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXPM\n\n**See Also:** IMG_isXV"]
205    pub fn IMG_isXCF(src: *mut SDL_IOStream) -> bool;
206}
207unsafe extern "C" {
208    #[doc = "Detect XPM image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is XPM data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXV"]
209    pub fn IMG_isXPM(src: *mut SDL_IOStream) -> bool;
210}
211unsafe extern "C" {
212    #[doc = "Detect XV image data on a readable/seekable SDL_IOStream.\n\nThis function attempts to determine if a file is a given filetype, reading\nthe least amount possible from the SDL_IOStream (usually a few bytes).\n\nThere is no distinction made between \"not the filetype in question\" and\nbasic i/o errors.\n\nThis function will always attempt to seek `src` back to where it started\nwhen this function was called, but it will not report any errors in doing\nso, but assuming seeking works, this means you can immediately use this\nwith a different IMG_isTYPE function, or load the image without further\nseeking.\n\nYou do not need to call this function to load data; SDL_image can work to\ndetermine file type in many cases in its standard load functions.\n\n**Parameter:** src a seekable/readable SDL_IOStream to provide image data.\n\n**Returns:** true if this is XV data, false otherwise.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_isBMP\n\n**See Also:** IMG_isCUR\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_isICO\n\n**See Also:** IMG_isJPG\n\n**See Also:** IMG_isJXL\n\n**See Also:** IMG_isLBM\n\n**See Also:** IMG_isPCX\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_isPNM\n\n**See Also:** IMG_isQOI\n\n**See Also:** IMG_isSVG\n\n**See Also:** IMG_isTIF\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_isXCF\n\n**See Also:** IMG_isXPM"]
213    pub fn IMG_isXV(src: *mut SDL_IOStream) -> bool;
214}
215unsafe extern "C" {
216    #[doc = "Load a AVIF image directly.\n\nIf you know you definitely have a AVIF image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
217    pub fn IMG_LoadAVIF_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
218}
219unsafe extern "C" {
220    #[doc = "Load a BMP image directly.\n\nIf you know you definitely have a BMP image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
221    pub fn IMG_LoadBMP_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
222}
223unsafe extern "C" {
224    #[doc = "Load a CUR image directly.\n\nIf you know you definitely have a CUR image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
225    pub fn IMG_LoadCUR_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
226}
227unsafe extern "C" {
228    #[doc = "Load a GIF image directly.\n\nIf you know you definitely have a GIF image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
229    pub fn IMG_LoadGIF_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
230}
231unsafe extern "C" {
232    #[doc = "Load a ICO image directly.\n\nIf you know you definitely have a ICO image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
233    pub fn IMG_LoadICO_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
234}
235unsafe extern "C" {
236    #[doc = "Load a JPG image directly.\n\nIf you know you definitely have a JPG image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
237    pub fn IMG_LoadJPG_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
238}
239unsafe extern "C" {
240    #[doc = "Load a JXL image directly.\n\nIf you know you definitely have a JXL image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
241    pub fn IMG_LoadJXL_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
242}
243unsafe extern "C" {
244    #[doc = "Load a LBM image directly.\n\nIf you know you definitely have a LBM image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
245    pub fn IMG_LoadLBM_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
246}
247unsafe extern "C" {
248    #[doc = "Load a PCX image directly.\n\nIf you know you definitely have a PCX image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
249    pub fn IMG_LoadPCX_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
250}
251unsafe extern "C" {
252    #[doc = "Load a PNG image directly.\n\nIf you know you definitely have a PNG image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
253    pub fn IMG_LoadPNG_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
254}
255unsafe extern "C" {
256    #[doc = "Load a PNM image directly.\n\nIf you know you definitely have a PNM image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
257    pub fn IMG_LoadPNM_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
258}
259unsafe extern "C" {
260    #[doc = "Load a SVG image directly.\n\nIf you know you definitely have a SVG image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSizedSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
261    pub fn IMG_LoadSVG_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
262}
263unsafe extern "C" {
264    #[doc = "Load an SVG image, scaled to a specific size.\n\nSince SVG files are resolution-independent, you specify the size you would\nlike the output image to be and it will be generated at those dimensions.\n\nEither width or height may be 0 and the image will be auto-sized to\npreserve aspect ratio.\n\nWhen done with the returned surface, the app should dispose of it with a\ncall to SDL_DestroySurface().\n\n**Parameter:** src an SDL_IOStream to load SVG data from.\n\n**Parameter:** width desired width of the generated surface, in pixels.\n\n**Parameter:** height desired height of the generated surface, in pixels.\n\n**Returns:** a new SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadSVG_IO"]
265    pub fn IMG_LoadSizedSVG_IO(
266        src: *mut SDL_IOStream,
267        width: core::ffi::c_int,
268        height: core::ffi::c_int,
269    ) -> *mut SDL_Surface;
270}
271unsafe extern "C" {
272    #[doc = "Load a QOI image directly.\n\nIf you know you definitely have a QOI image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
273    pub fn IMG_LoadQOI_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
274}
275unsafe extern "C" {
276    #[doc = "Load a TGA image directly.\n\nIf you know you definitely have a TGA image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
277    pub fn IMG_LoadTGA_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
278}
279unsafe extern "C" {
280    #[doc = "Load a TIFF image directly.\n\nIf you know you definitely have a TIFF image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
281    pub fn IMG_LoadTIF_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
282}
283unsafe extern "C" {
284    #[doc = "Load a WEBP image directly.\n\nIf you know you definitely have a WEBP image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
285    pub fn IMG_LoadWEBP_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
286}
287unsafe extern "C" {
288    #[doc = "Load a XCF image directly.\n\nIf you know you definitely have a XCF image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXPM_IO\n\n**See Also:** IMG_LoadXV_IO"]
289    pub fn IMG_LoadXCF_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
290}
291unsafe extern "C" {
292    #[doc = "Load a XPM image directly.\n\nIf you know you definitely have a XPM image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXV_IO"]
293    pub fn IMG_LoadXPM_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
294}
295unsafe extern "C" {
296    #[doc = "Load a XV image directly.\n\nIf you know you definitely have a XV image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream to load image data from.\n\n**Returns:** SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAVIF_IO\n\n**See Also:** IMG_LoadBMP_IO\n\n**See Also:** IMG_LoadCUR_IO\n\n**See Also:** IMG_LoadGIF_IO\n\n**See Also:** IMG_LoadICO_IO\n\n**See Also:** IMG_LoadJPG_IO\n\n**See Also:** IMG_LoadJXL_IO\n\n**See Also:** IMG_LoadLBM_IO\n\n**See Also:** IMG_LoadPCX_IO\n\n**See Also:** IMG_LoadPNG_IO\n\n**See Also:** IMG_LoadPNM_IO\n\n**See Also:** IMG_LoadQOI_IO\n\n**See Also:** IMG_LoadSVG_IO\n\n**See Also:** IMG_LoadTGA_IO\n\n**See Also:** IMG_LoadTIF_IO\n\n**See Also:** IMG_LoadWEBP_IO\n\n**See Also:** IMG_LoadXCF_IO\n\n**See Also:** IMG_LoadXPM_IO"]
297    pub fn IMG_LoadXV_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
298}
299unsafe extern "C" {
300    #[doc = "Load an XPM image from a memory array.\n\nThe returned surface will be an 8bpp indexed surface, if possible,\notherwise it will be 32bpp. If you always want 32-bit data, use\nIMG_ReadXPMFromArrayToRGB888() instead.\n\nWhen done with the returned surface, the app should dispose of it with a\ncall to SDL_DestroySurface().\n\n**Parameter:** xpm a null-terminated array of strings that comprise XPM data.\n\n**Returns:** a new SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_ReadXPMFromArrayToRGB888"]
301    pub fn IMG_ReadXPMFromArray(xpm: *mut *mut core::ffi::c_char) -> *mut SDL_Surface;
302}
303unsafe extern "C" {
304    #[doc = "Load an XPM image from a memory array.\n\nThe returned surface will always be a 32-bit RGB surface. If you want 8-bit\nindexed colors (and the XPM data allows it), use IMG_ReadXPMFromArray()\ninstead.\n\nWhen done with the returned surface, the app should dispose of it with a\ncall to SDL_DestroySurface().\n\n**Parameter:** xpm a null-terminated array of strings that comprise XPM data.\n\n**Returns:** a new SDL surface, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_ReadXPMFromArray"]
305    pub fn IMG_ReadXPMFromArrayToRGB888(xpm: *mut *mut core::ffi::c_char) -> *mut SDL_Surface;
306}
307unsafe extern "C" {
308    #[doc = "Save an SDL_Surface into an image file.\n\nIf the file already exists, it will be overwritten.\n\nFor formats that accept a quality, a default quality of 90 will be used.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** file path on the filesystem to write new file to.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveTyped_IO\n\n**See Also:** IMG_SaveAVIF\n\n**See Also:** IMG_SaveBMP\n\n**See Also:** IMG_SaveCUR\n\n**See Also:** IMG_SaveGIF\n\n**See Also:** IMG_SaveICO\n\n**See Also:** IMG_SaveJPG\n\n**See Also:** IMG_SavePNG\n\n**See Also:** IMG_SaveTGA\n\n**See Also:** IMG_SaveWEBP"]
309    pub fn IMG_Save(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
310}
311unsafe extern "C" {
312    #[doc = "Save an SDL_Surface into formatted image data, via an SDL_IOStream.\n\nIf you just want to save to a filename, you can use IMG_Save() instead.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\nFor formats that accept a quality, a default quality of 90 will be used.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** dst the SDL_IOStream to save the image data to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** type a filename extension that represent this data (\"BMP\", \"GIF\",\n\"PNG\", etc).\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_Save\n\n**See Also:** IMG_SaveAVIF_IO\n\n**See Also:** IMG_SaveBMP_IO\n\n**See Also:** IMG_SaveCUR_IO\n\n**See Also:** IMG_SaveGIF_IO\n\n**See Also:** IMG_SaveICO_IO\n\n**See Also:** IMG_SaveJPG_IO\n\n**See Also:** IMG_SavePNG_IO\n\n**See Also:** IMG_SaveTGA_IO\n\n**See Also:** IMG_SaveWEBP_IO"]
313    pub fn IMG_SaveTyped_IO(
314        surface: *mut SDL_Surface,
315        dst: *mut SDL_IOStream,
316        closeio: bool,
317        type_: *const core::ffi::c_char,
318    ) -> bool;
319}
320unsafe extern "C" {
321    #[doc = "Save an SDL_Surface into a AVIF image file.\n\nIf the file already exists, it will be overwritten.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** file path on the filesystem to write new file to.\n\n**Parameter:** quality the desired quality, ranging between 0 (lowest) and 100\n(highest).\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_SaveAVIF_IO"]
322    pub fn IMG_SaveAVIF(
323        surface: *mut SDL_Surface,
324        file: *const core::ffi::c_char,
325        quality: core::ffi::c_int,
326    ) -> bool;
327}
328unsafe extern "C" {
329    #[doc = "Save an SDL_Surface into AVIF image data, via an SDL_IOStream.\n\nIf you just want to save to a filename, you can use IMG_SaveAVIF() instead.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** dst the SDL_IOStream to save the image data to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** quality the desired quality, ranging between 0 (lowest) and 100\n(highest).\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_SaveAVIF"]
330    pub fn IMG_SaveAVIF_IO(
331        surface: *mut SDL_Surface,
332        dst: *mut SDL_IOStream,
333        closeio: bool,
334        quality: core::ffi::c_int,
335    ) -> bool;
336}
337unsafe extern "C" {
338    #[doc = "Save an SDL_Surface into a BMP image file.\n\nIf the file already exists, it will be overwritten.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** file path on the filesystem to write new file to.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveBMP_IO"]
339    pub fn IMG_SaveBMP(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
340}
341unsafe extern "C" {
342    #[doc = "Save an SDL_Surface into BMP image data, via an SDL_IOStream.\n\nIf you just want to save to a filename, you can use IMG_SaveBMP() instead.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** dst the SDL_IOStream to save the image data to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveBMP"]
343    pub fn IMG_SaveBMP_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
344        -> bool;
345}
346unsafe extern "C" {
347    #[doc = "Save an SDL_Surface into a CUR image file.\n\nIf the file already exists, it will be overwritten.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** file path on the filesystem to write new file to.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveCUR_IO"]
348    pub fn IMG_SaveCUR(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
349}
350unsafe extern "C" {
351    #[doc = "Save an SDL_Surface into CUR image data, via an SDL_IOStream.\n\nIf you just want to save to a filename, you can use IMG_SaveCUR() instead.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** dst the SDL_IOStream to save the image data to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveCUR"]
352    pub fn IMG_SaveCUR_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
353        -> bool;
354}
355unsafe extern "C" {
356    #[doc = "Save an SDL_Surface into a GIF image file.\n\nIf the file already exists, it will be overwritten.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** file path on the filesystem to write new file to.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveGIF_IO"]
357    pub fn IMG_SaveGIF(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
358}
359unsafe extern "C" {
360    #[doc = "Save an SDL_Surface into GIF image data, via an SDL_IOStream.\n\nIf you just want to save to a filename, you can use IMG_SaveGIF() instead.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** dst the SDL_IOStream to save the image data to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveGIF"]
361    pub fn IMG_SaveGIF_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
362        -> bool;
363}
364unsafe extern "C" {
365    #[doc = "Save an SDL_Surface into a ICO image file.\n\nIf the file already exists, it will be overwritten.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** file path on the filesystem to write new file to.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveICO_IO"]
366    pub fn IMG_SaveICO(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
367}
368unsafe extern "C" {
369    #[doc = "Save an SDL_Surface into ICO image data, via an SDL_IOStream.\n\nIf you just want to save to a filename, you can use IMG_SaveICO() instead.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** dst the SDL_IOStream to save the image data to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveICO"]
370    pub fn IMG_SaveICO_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
371        -> bool;
372}
373unsafe extern "C" {
374    #[doc = "Save an SDL_Surface into a JPEG image file.\n\nIf the file already exists, it will be overwritten.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** file path on the filesystem to write new file to.\n\n**Parameter:** quality [0; 33] is Lowest quality, [34; 66] is Middle quality, [67;\n100] is Highest quality.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_SaveJPG_IO"]
375    pub fn IMG_SaveJPG(
376        surface: *mut SDL_Surface,
377        file: *const core::ffi::c_char,
378        quality: core::ffi::c_int,
379    ) -> bool;
380}
381unsafe extern "C" {
382    #[doc = "Save an SDL_Surface into JPEG image data, via an SDL_IOStream.\n\nIf you just want to save to a filename, you can use IMG_SaveJPG() instead.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** dst the SDL_IOStream to save the image data to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** quality [0; 33] is Lowest quality, [34; 66] is Middle quality, [67;\n100] is Highest quality.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_SaveJPG"]
383    pub fn IMG_SaveJPG_IO(
384        surface: *mut SDL_Surface,
385        dst: *mut SDL_IOStream,
386        closeio: bool,
387        quality: core::ffi::c_int,
388    ) -> bool;
389}
390unsafe extern "C" {
391    #[doc = "Save an SDL_Surface into a PNG image file.\n\nIf the file already exists, it will be overwritten.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** file path on the filesystem to write new file to.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_SavePNG_IO"]
392    pub fn IMG_SavePNG(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
393}
394unsafe extern "C" {
395    #[doc = "Save an SDL_Surface into PNG image data, via an SDL_IOStream.\n\nIf you just want to save to a filename, you can use IMG_SavePNG() instead.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** dst the SDL_IOStream to save the image data to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_SavePNG"]
396    pub fn IMG_SavePNG_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
397        -> bool;
398}
399unsafe extern "C" {
400    #[doc = "Save an SDL_Surface into a TGA image file.\n\nIf the file already exists, it will be overwritten.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** file path on the filesystem to write new file to.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveTGA_IO"]
401    pub fn IMG_SaveTGA(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
402}
403unsafe extern "C" {
404    #[doc = "Save an SDL_Surface into TGA image data, via an SDL_IOStream.\n\nIf you just want to save to a filename, you can use IMG_SaveTGA() instead.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** dst the SDL_IOStream to save the image data to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveTGA"]
405    pub fn IMG_SaveTGA_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
406        -> bool;
407}
408unsafe extern "C" {
409    #[doc = "Save an SDL_Surface into a WEBP image file.\n\nIf the file already exists, it will be overwritten.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** file path on the filesystem to write the new file to.\n\n**Parameter:** quality between 0 and 100. For lossy, 0 gives the smallest size and\n100 the largest. For lossless, this parameter is the amount\nof effort put into the compression: 0 is the fastest but\ngives larger files compared to the slowest, but best, 100.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveWEBP_IO"]
410    pub fn IMG_SaveWEBP(
411        surface: *mut SDL_Surface,
412        file: *const core::ffi::c_char,
413        quality: f32,
414    ) -> bool;
415}
416unsafe extern "C" {
417    #[doc = "Save an SDL_Surface into WEBP image data, via an SDL_IOStream.\n\nIf you just want to save to a filename, you can use IMG_SaveWEBP() instead.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** surface the SDL surface to save.\n\n**Parameter:** dst the SDL_IOStream to save the image data to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** quality between 0 and 100. For lossy, 0 gives the smallest size and\n100 the largest. For lossless, this parameter is the amount\nof effort put into the compression: 0 is the fastest but\ngives larger files compared to the slowest, but best, 100.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveWEBP"]
418    pub fn IMG_SaveWEBP_IO(
419        surface: *mut SDL_Surface,
420        dst: *mut SDL_IOStream,
421        closeio: bool,
422        quality: f32,
423    ) -> bool;
424}
425#[doc = "Animated image support"]
426#[repr(C)]
427#[derive(Debug, Copy, Clone, Hash)]
428pub struct IMG_Animation {
429    #[doc = "< The width of the frames"]
430    pub w: core::ffi::c_int,
431    #[doc = "< The height of the frames"]
432    pub h: core::ffi::c_int,
433    #[doc = "< The number of frames"]
434    pub count: core::ffi::c_int,
435    #[doc = "< An array of frames"]
436    pub frames: *mut *mut SDL_Surface,
437    #[doc = "< An array of frame delays, in milliseconds"]
438    pub delays: *mut core::ffi::c_int,
439}
440#[allow(clippy::unnecessary_operation, clippy::identity_op)]
441const _: () = {
442    ["Size of IMG_Animation"][::core::mem::size_of::<IMG_Animation>() - 32usize];
443    ["Alignment of IMG_Animation"][::core::mem::align_of::<IMG_Animation>() - 8usize];
444    ["Offset of field: IMG_Animation::w"][::core::mem::offset_of!(IMG_Animation, w) - 0usize];
445    ["Offset of field: IMG_Animation::h"][::core::mem::offset_of!(IMG_Animation, h) - 4usize];
446    ["Offset of field: IMG_Animation::count"]
447        [::core::mem::offset_of!(IMG_Animation, count) - 8usize];
448    ["Offset of field: IMG_Animation::frames"]
449        [::core::mem::offset_of!(IMG_Animation, frames) - 16usize];
450    ["Offset of field: IMG_Animation::delays"]
451        [::core::mem::offset_of!(IMG_Animation, delays) - 24usize];
452};
453impl Default for IMG_Animation {
454    fn default() -> Self {
455        let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
456        unsafe {
457            ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
458            s.assume_init()
459        }
460    }
461}
462unsafe extern "C" {
463    #[doc = "Load an animation from a file.\n\nWhen done with the returned animation, the app should dispose of it with a\ncall to IMG_FreeAnimation().\n\n**Parameter:** file path on the filesystem containing an animated image.\n\n**Returns:** a new IMG_Animation, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_CreateAnimatedCursor\n\n**See Also:** IMG_LoadAnimation_IO\n\n**See Also:** IMG_LoadAnimationTyped_IO\n\n**See Also:** IMG_LoadANIAnimation_IO\n\n**See Also:** IMG_LoadAPNGAnimation_IO\n\n**See Also:** IMG_LoadAVIFAnimation_IO\n\n**See Also:** IMG_LoadGIFAnimation_IO\n\n**See Also:** IMG_LoadWEBPAnimation_IO\n\n**See Also:** IMG_FreeAnimation"]
464    pub fn IMG_LoadAnimation(file: *const core::ffi::c_char) -> *mut IMG_Animation;
465}
466unsafe extern "C" {
467    #[doc = "Load an animation from an SDL_IOStream.\n\nIf `closeio` is true, `src` will be closed before returning, whether this\nfunction succeeds or not. SDL_image reads everything it needs from `src`\nduring this call in any case.\n\nWhen done with the returned animation, the app should dispose of it with a\ncall to IMG_FreeAnimation().\n\n**Parameter:** src an SDL_IOStream that data will be read from.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** a new IMG_Animation, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_CreateAnimatedCursor\n\n**See Also:** IMG_LoadAnimation\n\n**See Also:** IMG_LoadAnimationTyped_IO\n\n**See Also:** IMG_LoadANIAnimation_IO\n\n**See Also:** IMG_LoadAPNGAnimation_IO\n\n**See Also:** IMG_LoadAVIFAnimation_IO\n\n**See Also:** IMG_LoadGIFAnimation_IO\n\n**See Also:** IMG_LoadWEBPAnimation_IO\n\n**See Also:** IMG_FreeAnimation"]
468    pub fn IMG_LoadAnimation_IO(src: *mut SDL_IOStream, closeio: bool) -> *mut IMG_Animation;
469}
470unsafe extern "C" {
471    #[doc = "Load an animation from an SDL_IOStream.\n\nEven though this function accepts a file type, SDL_image may still try\nother decoders that are capable of detecting file type from the contents of\nthe image data, but may rely on the caller-provided type string for formats\nthat it cannot autodetect. If `type` is NULL, SDL_image will rely solely on\nits ability to guess the format.\n\nIf `closeio` is true, `src` will be closed before returning, whether this\nfunction succeeds or not. SDL_image reads everything it needs from `src`\nduring this call in any case.\n\nWhen done with the returned animation, the app should dispose of it with a\ncall to IMG_FreeAnimation().\n\n**Parameter:** src an SDL_IOStream that data will be read from.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** type a filename extension that represent this data (\"GIF\", etc).\n\n**Returns:** a new IMG_Animation, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_CreateAnimatedCursor\n\n**See Also:** IMG_LoadAnimation\n\n**See Also:** IMG_LoadAnimation_IO\n\n**See Also:** IMG_LoadANIAnimation_IO\n\n**See Also:** IMG_LoadAPNGAnimation_IO\n\n**See Also:** IMG_LoadAVIFAnimation_IO\n\n**See Also:** IMG_LoadGIFAnimation_IO\n\n**See Also:** IMG_LoadWEBPAnimation_IO\n\n**See Also:** IMG_FreeAnimation"]
472    pub fn IMG_LoadAnimationTyped_IO(
473        src: *mut SDL_IOStream,
474        closeio: bool,
475        type_: *const core::ffi::c_char,
476    ) -> *mut IMG_Animation;
477}
478unsafe extern "C" {
479    #[doc = "Load an ANI animation directly from an SDL_IOStream.\n\nIf you know you definitely have an ANI image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally, it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\nWhen done with the returned animation, the app should dispose of it with a\ncall to IMG_FreeAnimation().\n\n**Parameter:** src an SDL_IOStream from which data will be read.\n\n**Returns:** a new IMG_Animation, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_isANI\n\n**See Also:** IMG_LoadAnimation\n\n**See Also:** IMG_LoadAnimation_IO\n\n**See Also:** IMG_LoadAnimationTyped_IO\n\n**See Also:** IMG_LoadAPNGAnimation_IO\n\n**See Also:** IMG_LoadAVIFAnimation_IO\n\n**See Also:** IMG_LoadGIFAnimation_IO\n\n**See Also:** IMG_LoadWEBPAnimation_IO\n\n**See Also:** IMG_FreeAnimation"]
480    pub fn IMG_LoadANIAnimation_IO(src: *mut SDL_IOStream) -> *mut IMG_Animation;
481}
482unsafe extern "C" {
483    #[doc = "Load an APNG animation directly from an SDL_IOStream.\n\nIf you know you definitely have an APNG image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally, it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\nWhen done with the returned animation, the app should dispose of it with a\ncall to IMG_FreeAnimation().\n\n**Parameter:** src an SDL_IOStream from which data will be read.\n\n**Returns:** a new IMG_Animation, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_isPNG\n\n**See Also:** IMG_LoadAnimation\n\n**See Also:** IMG_LoadAnimation_IO\n\n**See Also:** IMG_LoadAnimationTyped_IO\n\n**See Also:** IMG_LoadANIAnimation_IO\n\n**See Also:** IMG_LoadAVIFAnimation_IO\n\n**See Also:** IMG_LoadGIFAnimation_IO\n\n**See Also:** IMG_LoadWEBPAnimation_IO\n\n**See Also:** IMG_FreeAnimation"]
484    pub fn IMG_LoadAPNGAnimation_IO(src: *mut SDL_IOStream) -> *mut IMG_Animation;
485}
486unsafe extern "C" {
487    #[doc = "Load an AVIF animation directly from an SDL_IOStream.\n\nIf you know you definitely have an AVIF animation, you can call this\nfunction, which will skip SDL_image's file format detection routines.\nGenerally it's better to use the abstract interfaces; also, there is only\nan SDL_IOStream interface available here.\n\nWhen done with the returned animation, the app should dispose of it with a\ncall to IMG_FreeAnimation().\n\n**Parameter:** src an SDL_IOStream that data will be read from.\n\n**Returns:** a new IMG_Animation, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_isAVIF\n\n**See Also:** IMG_LoadAnimation\n\n**See Also:** IMG_LoadAnimation_IO\n\n**See Also:** IMG_LoadAnimationTyped_IO\n\n**See Also:** IMG_LoadANIAnimation_IO\n\n**See Also:** IMG_LoadAPNGAnimation_IO\n\n**See Also:** IMG_LoadGIFAnimation_IO\n\n**See Also:** IMG_LoadWEBPAnimation_IO\n\n**See Also:** IMG_FreeAnimation"]
488    pub fn IMG_LoadAVIFAnimation_IO(src: *mut SDL_IOStream) -> *mut IMG_Animation;
489}
490unsafe extern "C" {
491    #[doc = "Load a GIF animation directly.\n\nIf you know you definitely have a GIF image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream that data will be read from.\n\n**Returns:** a new IMG_Animation, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isGIF\n\n**See Also:** IMG_LoadAnimation\n\n**See Also:** IMG_LoadAnimation_IO\n\n**See Also:** IMG_LoadAnimationTyped_IO\n\n**See Also:** IMG_LoadANIAnimation_IO\n\n**See Also:** IMG_LoadAPNGAnimation_IO\n\n**See Also:** IMG_LoadAVIFAnimation_IO\n\n**See Also:** IMG_LoadWEBPAnimation_IO\n\n**See Also:** IMG_FreeAnimation"]
492    pub fn IMG_LoadGIFAnimation_IO(src: *mut SDL_IOStream) -> *mut IMG_Animation;
493}
494unsafe extern "C" {
495    #[doc = "Load a WEBP animation directly.\n\nIf you know you definitely have a WEBP image, you can call this function,\nwhich will skip SDL_image's file format detection routines. Generally it's\nbetter to use the abstract interfaces; also, there is only an SDL_IOStream\ninterface available here.\n\n**Parameter:** src an SDL_IOStream that data will be read from.\n\n**Returns:** a new IMG_Animation, or NULL on error.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_isWEBP\n\n**See Also:** IMG_LoadAnimation\n\n**See Also:** IMG_LoadAnimation_IO\n\n**See Also:** IMG_LoadAnimationTyped_IO\n\n**See Also:** IMG_LoadANIAnimation_IO\n\n**See Also:** IMG_LoadAPNGAnimation_IO\n\n**See Also:** IMG_LoadAVIFAnimation_IO\n\n**See Also:** IMG_LoadGIFAnimation_IO\n\n**See Also:** IMG_FreeAnimation"]
496    pub fn IMG_LoadWEBPAnimation_IO(src: *mut SDL_IOStream) -> *mut IMG_Animation;
497}
498unsafe extern "C" {
499    #[doc = "Save an animation to a file.\n\nFor formats that accept a quality, a default quality of 90 will be used.\n\n**Parameter:** anim the animation to save.\n\n**Parameter:** file path on the filesystem containing an animated image.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveAnimationTyped_IO\n\n**See Also:** IMG_SaveANIAnimation_IO\n\n**See Also:** IMG_SaveAPNGAnimation_IO\n\n**See Also:** IMG_SaveAVIFAnimation_IO\n\n**See Also:** IMG_SaveGIFAnimation_IO\n\n**See Also:** IMG_SaveWEBPAnimation_IO"]
500    pub fn IMG_SaveAnimation(anim: *mut IMG_Animation, file: *const core::ffi::c_char) -> bool;
501}
502unsafe extern "C" {
503    #[doc = "Save an animation to an SDL_IOStream.\n\nIf you just want to save to a filename, you can use IMG_SaveAnimation()\ninstead.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\nFor formats that accept a quality, a default quality of 90 will be used.\n\n**Parameter:** anim the animation to save.\n\n**Parameter:** dst an SDL_IOStream that data will be written to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** type a filename extension that represent this data (\"GIF\", etc).\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveAnimation\n\n**See Also:** IMG_SaveANIAnimation_IO\n\n**See Also:** IMG_SaveAPNGAnimation_IO\n\n**See Also:** IMG_SaveAVIFAnimation_IO\n\n**See Also:** IMG_SaveGIFAnimation_IO\n\n**See Also:** IMG_SaveWEBPAnimation_IO"]
504    pub fn IMG_SaveAnimationTyped_IO(
505        anim: *mut IMG_Animation,
506        dst: *mut SDL_IOStream,
507        closeio: bool,
508        type_: *const core::ffi::c_char,
509    ) -> bool;
510}
511unsafe extern "C" {
512    #[doc = "Save an animation in ANI format to an SDL_IOStream.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** anim the animation to save.\n\n**Parameter:** dst an SDL_IOStream from which data will be written to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveAnimation\n\n**See Also:** IMG_SaveAnimationTyped_IO\n\n**See Also:** IMG_SaveAPNGAnimation_IO\n\n**See Also:** IMG_SaveAVIFAnimation_IO\n\n**See Also:** IMG_SaveGIFAnimation_IO\n\n**See Also:** IMG_SaveWEBPAnimation_IO"]
513    pub fn IMG_SaveANIAnimation_IO(
514        anim: *mut IMG_Animation,
515        dst: *mut SDL_IOStream,
516        closeio: bool,
517    ) -> bool;
518}
519unsafe extern "C" {
520    #[doc = "Save an animation in APNG format to an SDL_IOStream.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** anim the animation to save.\n\n**Parameter:** dst an SDL_IOStream from which data will be written to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveAnimation\n\n**See Also:** IMG_SaveAnimationTyped_IO\n\n**See Also:** IMG_SaveANIAnimation_IO\n\n**See Also:** IMG_SaveAVIFAnimation_IO\n\n**See Also:** IMG_SaveGIFAnimation_IO\n\n**See Also:** IMG_SaveWEBPAnimation_IO"]
521    pub fn IMG_SaveAPNGAnimation_IO(
522        anim: *mut IMG_Animation,
523        dst: *mut SDL_IOStream,
524        closeio: bool,
525    ) -> bool;
526}
527unsafe extern "C" {
528    #[doc = "Save an animation in AVIF format to an SDL_IOStream.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** anim the animation to save.\n\n**Parameter:** dst an SDL_IOStream from which data will be written to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** quality the desired quality, ranging between 0 (lowest) and 100\n(highest).\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveAnimation\n\n**See Also:** IMG_SaveAnimationTyped_IO\n\n**See Also:** IMG_SaveANIAnimation_IO\n\n**See Also:** IMG_SaveAPNGAnimation_IO\n\n**See Also:** IMG_SaveGIFAnimation_IO\n\n**See Also:** IMG_SaveWEBPAnimation_IO"]
529    pub fn IMG_SaveAVIFAnimation_IO(
530        anim: *mut IMG_Animation,
531        dst: *mut SDL_IOStream,
532        closeio: bool,
533        quality: core::ffi::c_int,
534    ) -> bool;
535}
536unsafe extern "C" {
537    #[doc = "Save an animation in GIF format to an SDL_IOStream.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** anim the animation to save.\n\n**Parameter:** dst an SDL_IOStream from which data will be written to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveAnimation\n\n**See Also:** IMG_SaveAnimationTyped_IO\n\n**See Also:** IMG_SaveANIAnimation_IO\n\n**See Also:** IMG_SaveAPNGAnimation_IO\n\n**See Also:** IMG_SaveAVIFAnimation_IO\n\n**See Also:** IMG_SaveWEBPAnimation_IO"]
538    pub fn IMG_SaveGIFAnimation_IO(
539        anim: *mut IMG_Animation,
540        dst: *mut SDL_IOStream,
541        closeio: bool,
542    ) -> bool;
543}
544unsafe extern "C" {
545    #[doc = "Save an animation in WEBP format to an SDL_IOStream.\n\nIf `closeio` is true, `dst` will be closed before returning, whether this\nfunction succeeds or not.\n\n**Parameter:** anim the animation to save.\n\n**Parameter:** dst an SDL_IOStream from which data will be written to.\n\n**Parameter:** closeio true to close/free the SDL_IOStream before returning, false\nto leave it open.\n\n**Parameter:** quality between 0 and 100. For lossy, 0 gives the smallest size and\n100 the largest. For lossless, this parameter is the amount\nof effort put into the compression: 0 is the fastest but\ngives larger files compared to the slowest, but best, 100.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_SaveAnimation\n\n**See Also:** IMG_SaveAnimationTyped_IO\n\n**See Also:** IMG_SaveANIAnimation_IO\n\n**See Also:** IMG_SaveAPNGAnimation_IO\n\n**See Also:** IMG_SaveAVIFAnimation_IO\n\n**See Also:** IMG_SaveGIFAnimation_IO"]
546    pub fn IMG_SaveWEBPAnimation_IO(
547        anim: *mut IMG_Animation,
548        dst: *mut SDL_IOStream,
549        closeio: bool,
550        quality: core::ffi::c_int,
551    ) -> bool;
552}
553unsafe extern "C" {
554    #[doc = "Create an animated cursor from an animation.\n\n**Parameter:** anim an animation to use to create an animated cursor.\n\n**Parameter:** hot_x the x position of the cursor hot spot.\n\n**Parameter:** hot_y the y position of the cursor hot spot.\n\n**Returns:** the new cursor on success or NULL on failure; call SDL_GetError()\nfor more information.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_LoadAnimation\n\n**See Also:** IMG_LoadAnimation_IO\n\n**See Also:** IMG_LoadAnimationTyped_IO"]
555    pub fn IMG_CreateAnimatedCursor(
556        anim: *mut IMG_Animation,
557        hot_x: core::ffi::c_int,
558        hot_y: core::ffi::c_int,
559    ) -> *mut SDL_Cursor;
560}
561unsafe extern "C" {
562    #[doc = "Dispose of an IMG_Animation and free its resources.\n\nThe provided `anim` pointer is not valid once this call returns.\n\n**Parameter:** anim IMG_Animation to dispose of.\n\n**Available Since:** This function is available since SDL_image 3.0.0.\n\n**See Also:** IMG_LoadAnimation\n\n**See Also:** IMG_LoadAnimation_IO\n\n**See Also:** IMG_LoadAnimationTyped_IO\n\n**See Also:** IMG_LoadANIAnimation_IO\n\n**See Also:** IMG_LoadAPNGAnimation_IO\n\n**See Also:** IMG_LoadAVIFAnimation_IO\n\n**See Also:** IMG_LoadGIFAnimation_IO\n\n**See Also:** IMG_LoadWEBPAnimation_IO"]
563    pub fn IMG_FreeAnimation(anim: *mut IMG_Animation);
564}
565#[repr(C)]
566#[derive(Debug, Copy, Clone)]
567pub struct IMG_AnimationEncoder {
568    _unused: [u8; 0],
569}
570unsafe extern "C" {
571    #[doc = "Create an encoder to save a series of images to a file.\n\nThese animation types are currently supported:\n\n- ANI\n- APNG\n- AVIFS\n- GIF\n- WEBP\n\nThe file type is determined from the file extension, e.g. \"file.webp\" will\nbe encoded using WEBP.\n\n**Parameter:** file the file where the animation will be saved.\n\n**Returns:** a new IMG_AnimationEncoder, or NULL on failure; call\nSDL_GetError() for more information.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationEncoder_IO\n\n**See Also:** IMG_CreateAnimationEncoderWithProperties\n\n**See Also:** IMG_AddAnimationEncoderFrame\n\n**See Also:** IMG_CloseAnimationEncoder"]
572    pub fn IMG_CreateAnimationEncoder(file: *const core::ffi::c_char) -> *mut IMG_AnimationEncoder;
573}
574unsafe extern "C" {
575    #[doc = "Create an encoder to save a series of images to an IOStream.\n\nThese animation types are currently supported:\n\n- ANI\n- APNG\n- AVIFS\n- GIF\n- WEBP\n\nIf `closeio` is true, `dst` will be closed before returning if this\nfunction fails, or when the animation encoder is closed if this function\nsucceeds.\n\n**Parameter:** dst an SDL_IOStream that will be used to save the stream.\n\n**Parameter:** closeio true to close the SDL_IOStream when done, false to leave it\nopen.\n\n**Parameter:** type a filename extension that represent this data (\"WEBP\", etc).\n\n**Returns:** a new IMG_AnimationEncoder, or NULL on failure; call\nSDL_GetError() for more information.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationEncoder\n\n**See Also:** IMG_CreateAnimationEncoderWithProperties\n\n**See Also:** IMG_AddAnimationEncoderFrame\n\n**See Also:** IMG_CloseAnimationEncoder"]
576    pub fn IMG_CreateAnimationEncoder_IO(
577        dst: *mut SDL_IOStream,
578        closeio: bool,
579        type_: *const core::ffi::c_char,
580    ) -> *mut IMG_AnimationEncoder;
581}
582unsafe extern "C" {
583    #[doc = "Create an animation encoder with the specified properties.\n\nThese animation types are currently supported:\n\n- ANI\n- APNG\n- AVIFS\n- GIF\n- WEBP\n\nThese are the supported properties:\n\n- `IMG_PROP_ANIMATION_ENCODER_CREATE_FILENAME_STRING`: the file to save, if\nan SDL_IOStream isn't being used. This is required if\n`IMG_PROP_ANIMATION_ENCODER_CREATE_IOSTREAM_POINTER` isn't set.\n- `IMG_PROP_ANIMATION_ENCODER_CREATE_IOSTREAM_POINTER`: an SDL_IOStream\nthat will be used to save the stream. This should not be closed until the\nanimation encoder is closed. This is required if\n`IMG_PROP_ANIMATION_ENCODER_CREATE_FILENAME_STRING` isn't set.\n- `IMG_PROP_ANIMATION_ENCODER_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN`: true if\nclosing the animation encoder should also close the associated\nSDL_IOStream.\n- `IMG_PROP_ANIMATION_ENCODER_CREATE_TYPE_STRING`: the output file type,\ne.g. \"webp\", defaults to the file extension if\n`IMG_PROP_ANIMATION_ENCODER_CREATE_FILENAME_STRING` is set.\n- `IMG_PROP_ANIMATION_ENCODER_CREATE_QUALITY_NUMBER`: the compression\nquality, in the range of 0 to 100. The higher the number, the higher the\nquality and file size. This defaults to a balanced value for compression\nand quality.\n- `IMG_PROP_ANIMATION_ENCODER_CREATE_TIMEBASE_NUMERATOR_NUMBER`: the\nnumerator of the fraction used to multiply the pts to convert it to\nseconds. This defaults to 1.\n- `IMG_PROP_ANIMATION_ENCODER_CREATE_TIMEBASE_DENOMINATOR_NUMBER`: the\ndenominator of the fraction used to multiply the pts to convert it to\nseconds. This defaults to 1000.\n\n**Parameter:** props the properties of the animation encoder.\n\n**Returns:** a new IMG_AnimationEncoder, or NULL on failure; call\nSDL_GetError() for more information.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationEncoder\n\n**See Also:** IMG_CreateAnimationEncoder_IO\n\n**See Also:** IMG_AddAnimationEncoderFrame\n\n**See Also:** IMG_CloseAnimationEncoder"]
584    pub fn IMG_CreateAnimationEncoderWithProperties(
585        props: SDL_PropertiesID,
586    ) -> *mut IMG_AnimationEncoder;
587}
588unsafe extern "C" {
589    #[doc = "Add a frame to an animation encoder.\n\n**Parameter:** encoder the receiving images.\n\n**Parameter:** surface the surface to add as the next frame in the animation.\n\n**Parameter:** duration the duration of the frame, usually in milliseconds but can\nbe other units if the\n`IMG_PROP_ANIMATION_ENCODER_CREATE_TIMEBASE_DENOMINATOR_NUMBER`\nproperty is set when creating the encoder.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationEncoder\n\n**See Also:** IMG_CreateAnimationEncoder_IO\n\n**See Also:** IMG_CreateAnimationEncoderWithProperties\n\n**See Also:** IMG_CloseAnimationEncoder"]
590    pub fn IMG_AddAnimationEncoderFrame(
591        encoder: *mut IMG_AnimationEncoder,
592        surface: *mut SDL_Surface,
593        duration: Uint64,
594    ) -> bool;
595}
596unsafe extern "C" {
597    #[doc = "Close an animation encoder, finishing any encoding.\n\nCalling this function frees the animation encoder, and returns the final\nstatus of the encoding process.\n\n**Parameter:** encoder the encoder to close.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationEncoder\n\n**See Also:** IMG_CreateAnimationEncoder_IO\n\n**See Also:** IMG_CreateAnimationEncoderWithProperties"]
598    pub fn IMG_CloseAnimationEncoder(encoder: *mut IMG_AnimationEncoder) -> bool;
599}
600impl IMG_AnimationDecoderStatus {
601    #[doc = "< The decoder is invalid"]
602    pub const IMG_DECODER_STATUS_INVALID: IMG_AnimationDecoderStatus =
603        IMG_AnimationDecoderStatus(-1);
604    #[doc = "< The decoder is ready to decode the next frame"]
605    pub const IMG_DECODER_STATUS_OK: IMG_AnimationDecoderStatus = IMG_AnimationDecoderStatus(0);
606    #[doc = "< The decoder failed to decode a frame, call SDL_GetError() for more information."]
607    pub const IMG_DECODER_STATUS_FAILED: IMG_AnimationDecoderStatus = IMG_AnimationDecoderStatus(1);
608    #[doc = "< No more frames available"]
609    pub const IMG_DECODER_STATUS_COMPLETE: IMG_AnimationDecoderStatus =
610        IMG_AnimationDecoderStatus(2);
611}
612#[repr(transparent)]
613#[doc = "An enum representing the status of an animation decoder.\n\n**Available Since:** This enum is available since SDL_image 3.4.0."]
614#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
615pub struct IMG_AnimationDecoderStatus(pub core::ffi::c_int);
616#[repr(C)]
617#[derive(Debug, Copy, Clone)]
618pub struct IMG_AnimationDecoder {
619    _unused: [u8; 0],
620}
621unsafe extern "C" {
622    #[doc = "Create a decoder to read a series of images from a file.\n\nThese animation types are currently supported:\n\n- ANI\n- APNG\n- AVIFS\n- GIF\n- WEBP\n\nThe file type is determined from the file extension, e.g. \"file.webp\" will\nbe decoded using WEBP.\n\n**Parameter:** file the file containing a series of images.\n\n**Returns:** a new IMG_AnimationDecoder, or NULL on failure; call\nSDL_GetError() for more information.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationDecoder_IO\n\n**See Also:** IMG_CreateAnimationDecoderWithProperties\n\n**See Also:** IMG_GetAnimationDecoderFrame\n\n**See Also:** IMG_ResetAnimationDecoder\n\n**See Also:** IMG_CloseAnimationDecoder"]
623    pub fn IMG_CreateAnimationDecoder(file: *const core::ffi::c_char) -> *mut IMG_AnimationDecoder;
624}
625unsafe extern "C" {
626    #[doc = "Create a decoder to read a series of images from an IOStream.\n\nThese animation types are currently supported:\n\n- ANI\n- APNG\n- AVIFS\n- GIF\n- WEBP\n\nIf `closeio` is true, `src` will be closed before returning if this\nfunction fails, or when the animation decoder is closed if this function\nsucceeds.\n\n**Parameter:** src an SDL_IOStream containing a series of images.\n\n**Parameter:** closeio true to close the SDL_IOStream when done, false to leave it\nopen.\n\n**Parameter:** type a filename extension that represent this data (\"WEBP\", etc).\n\n**Returns:** a new IMG_AnimationDecoder, or NULL on failure; call\nSDL_GetError() for more information.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationDecoder\n\n**See Also:** IMG_CreateAnimationDecoderWithProperties\n\n**See Also:** IMG_GetAnimationDecoderFrame\n\n**See Also:** IMG_ResetAnimationDecoder\n\n**See Also:** IMG_CloseAnimationDecoder"]
627    pub fn IMG_CreateAnimationDecoder_IO(
628        src: *mut SDL_IOStream,
629        closeio: bool,
630        type_: *const core::ffi::c_char,
631    ) -> *mut IMG_AnimationDecoder;
632}
633unsafe extern "C" {
634    #[doc = "Create an animation decoder with the specified properties.\n\nThese animation types are currently supported:\n\n- ANI\n- APNG\n- AVIFS\n- GIF\n- WEBP\n\nThese are the supported properties:\n\n- `IMG_PROP_ANIMATION_DECODER_CREATE_FILENAME_STRING`: the file to load, if\nan SDL_IOStream isn't being used. This is required if\n`IMG_PROP_ANIMATION_DECODER_CREATE_IOSTREAM_POINTER` isn't set.\n- `IMG_PROP_ANIMATION_DECODER_CREATE_IOSTREAM_POINTER`: an SDL_IOStream\ncontaining a series of images. This should not be closed until the\nanimation decoder is closed. This is required if\n`IMG_PROP_ANIMATION_DECODER_CREATE_FILENAME_STRING` isn't set.\n- `IMG_PROP_ANIMATION_DECODER_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN`: true if\nclosing the animation decoder should also close the associated\nSDL_IOStream.\n- `IMG_PROP_ANIMATION_DECODER_CREATE_TYPE_STRING`: the input file type,\ne.g. \"webp\", defaults to the file extension if\n`IMG_PROP_ANIMATION_DECODER_CREATE_FILENAME_STRING` is set.\n\n**Parameter:** props the properties of the animation decoder.\n\n**Returns:** a new IMG_AnimationDecoder, or NULL on failure; call\nSDL_GetError() for more information.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationDecoder\n\n**See Also:** IMG_CreateAnimationDecoder_IO\n\n**See Also:** IMG_GetAnimationDecoderFrame\n\n**See Also:** IMG_ResetAnimationDecoder\n\n**See Also:** IMG_CloseAnimationDecoder"]
635    pub fn IMG_CreateAnimationDecoderWithProperties(
636        props: SDL_PropertiesID,
637    ) -> *mut IMG_AnimationDecoder;
638}
639unsafe extern "C" {
640    #[doc = "Get the properties of an animation decoder.\n\nThis function returns the properties of the animation decoder, which holds\ninformation about the underlying image such as description, copyright text\nand loop count.\n\n**Parameter:** decoder the animation decoder.\n\n**Returns:** the properties ID of the animation decoder, or 0 if there are no\nproperties; call SDL_GetError() for more information.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationDecoder\n\n**See Also:** IMG_CreateAnimationDecoder_IO\n\n**See Also:** IMG_CreateAnimationDecoderWithProperties"]
641    pub fn IMG_GetAnimationDecoderProperties(
642        decoder: *mut IMG_AnimationDecoder,
643    ) -> SDL_PropertiesID;
644}
645unsafe extern "C" {
646    #[doc = "Get the next frame in an animation decoder.\n\nThis function decodes the next frame in the animation decoder, returning it\nas an SDL_Surface. The returned surface should be freed with\nSDL_FreeSurface() when no longer needed.\n\nIf the animation decoder has no more frames or an error occurred while\ndecoding the frame, this function returns false. In that case, please call\nSDL_GetError() for more information. If SDL_GetError() returns an empty\nstring, that means there are no more available frames. If SDL_GetError()\nreturns a valid string, that means the decoding failed.\n\n**Parameter:** decoder the animation decoder.\n\n**Parameter:** frame a pointer filled in with the SDL_Surface for the next frame in\nthe animation.\n\n**Parameter:** duration the duration of the frame, usually in milliseconds but can\nbe other units if the\n`IMG_PROP_ANIMATION_DECODER_CREATE_TIMEBASE_DENOMINATOR_NUMBER`\nproperty is set when creating the decoder.\n\n**Returns:** true on success or false on failure and when no more frames are\navailable; call IMG_GetAnimationDecoderStatus() or SDL_GetError()\nfor more information.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationDecoder\n\n**See Also:** IMG_CreateAnimationDecoder_IO\n\n**See Also:** IMG_CreateAnimationDecoderWithProperties\n\n**See Also:** IMG_GetAnimationDecoderStatus\n\n**See Also:** IMG_ResetAnimationDecoder\n\n**See Also:** IMG_CloseAnimationDecoder"]
647    pub fn IMG_GetAnimationDecoderFrame(
648        decoder: *mut IMG_AnimationDecoder,
649        frame: *mut *mut SDL_Surface,
650        duration: *mut Uint64,
651    ) -> bool;
652}
653unsafe extern "C" {
654    #[doc = "Get the decoder status indicating the current state of the decoder.\n\n**Parameter:** decoder the decoder to get the status of.\n\n**Returns:** the status of the underlying decoder, or\nIMG_DECODER_STATUS_INVALID if the given decoder is invalid.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_GetAnimationDecoderFrame"]
655    pub fn IMG_GetAnimationDecoderStatus(
656        decoder: *mut IMG_AnimationDecoder,
657    ) -> IMG_AnimationDecoderStatus;
658}
659unsafe extern "C" {
660    #[doc = "Reset an animation decoder.\n\nCalling this function resets the animation decoder, allowing it to start\nfrom the beginning again. This is useful if you want to decode the frame\nsequence again without creating a new decoder.\n\n**Parameter:** decoder the decoder to reset.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationDecoder\n\n**See Also:** IMG_CreateAnimationDecoder_IO\n\n**See Also:** IMG_CreateAnimationDecoderWithProperties\n\n**See Also:** IMG_GetAnimationDecoderFrame\n\n**See Also:** IMG_CloseAnimationDecoder"]
661    pub fn IMG_ResetAnimationDecoder(decoder: *mut IMG_AnimationDecoder) -> bool;
662}
663unsafe extern "C" {
664    #[doc = "Close an animation decoder, finishing any decoding.\n\nCalling this function frees the animation decoder, and returns the final\nstatus of the decoding process.\n\n**Parameter:** decoder the decoder to close.\n\n**Returns:** true on success or false on failure; call SDL_GetError() for more\ninformation.\n\n**Available Since:** This function is available since SDL_image 3.4.0.\n\n**See Also:** IMG_CreateAnimationDecoder\n\n**See Also:** IMG_CreateAnimationDecoder_IO\n\n**See Also:** IMG_CreateAnimationDecoderWithProperties"]
665    pub fn IMG_CloseAnimationDecoder(decoder: *mut IMG_AnimationDecoder) -> bool;
666}