1use 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}