sdl-image-sys 0.1.3+3.5.0-b5ae5e2336b510e77891d6a7292f852b4b38a7d0

Alternative bindings for SDL3_image using bindgen
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
/* automatically generated by rust-bindgen 0.72.1 */

use sdl_sys_bindgen::*;

pub const SDL_IMAGE_MAJOR_VERSION: u32 = 3;
pub const SDL_IMAGE_MINOR_VERSION: u32 = 5;
pub const SDL_IMAGE_MICRO_VERSION: u32 = 0;
pub const IMG_PROP_ANIMATION_ENCODER_CREATE_FILENAME_STRING: &[u8; 44] =
    b"SDL_image.animation_encoder.create.filename\0";
pub const IMG_PROP_ANIMATION_ENCODER_CREATE_IOSTREAM_POINTER: &[u8; 44] =
    b"SDL_image.animation_encoder.create.iostream\0";
pub const IMG_PROP_ANIMATION_ENCODER_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN: &[u8; 54] =
    b"SDL_image.animation_encoder.create.iostream.autoclose\0";
pub const IMG_PROP_ANIMATION_ENCODER_CREATE_TYPE_STRING: &[u8; 40] =
    b"SDL_image.animation_encoder.create.type\0";
pub const IMG_PROP_ANIMATION_ENCODER_CREATE_QUALITY_NUMBER: &[u8; 43] =
    b"SDL_image.animation_encoder.create.quality\0";
pub const IMG_PROP_ANIMATION_ENCODER_CREATE_TIMEBASE_NUMERATOR_NUMBER: &[u8; 54] =
    b"SDL_image.animation_encoder.create.timebase.numerator\0";
pub const IMG_PROP_ANIMATION_ENCODER_CREATE_TIMEBASE_DENOMINATOR_NUMBER: &[u8; 56] =
    b"SDL_image.animation_encoder.create.timebase.denominator\0";
pub const IMG_PROP_ANIMATION_ENCODER_CREATE_AVIF_MAX_THREADS_NUMBER: &[u8; 52] =
    b"SDL_image.animation_encoder.create.avif.max_threads\0";
pub const IMG_PROP_ANIMATION_ENCODER_CREATE_AVIF_KEYFRAME_INTERVAL_NUMBER: &[u8; 58] =
    b"SDL_image.animation_encoder.create.avif.keyframe_interval\0";
pub const IMG_PROP_ANIMATION_ENCODER_CREATE_GIF_USE_LUT_BOOLEAN: &[u8; 47] =
    b"SDL_image.animation_encoder.create.gif.use_lut\0";
pub const IMG_PROP_ANIMATION_DECODER_CREATE_FILENAME_STRING: &[u8; 44] =
    b"SDL_image.animation_decoder.create.filename\0";
pub const IMG_PROP_ANIMATION_DECODER_CREATE_IOSTREAM_POINTER: &[u8; 44] =
    b"SDL_image.animation_decoder.create.iostream\0";
pub const IMG_PROP_ANIMATION_DECODER_CREATE_IOSTREAM_AUTOCLOSE_BOOLEAN: &[u8; 54] =
    b"SDL_image.animation_decoder.create.iostream.autoclose\0";
pub const IMG_PROP_ANIMATION_DECODER_CREATE_TYPE_STRING: &[u8; 40] =
    b"SDL_image.animation_decoder.create.type\0";
pub const IMG_PROP_ANIMATION_DECODER_CREATE_TIMEBASE_NUMERATOR_NUMBER: &[u8; 54] =
    b"SDL_image.animation_decoder.create.timebase.numerator\0";
pub const IMG_PROP_ANIMATION_DECODER_CREATE_TIMEBASE_DENOMINATOR_NUMBER: &[u8; 56] =
    b"SDL_image.animation_decoder.create.timebase.denominator\0";
pub const IMG_PROP_ANIMATION_DECODER_CREATE_AVIF_MAX_THREADS_NUMBER: &[u8; 52] =
    b"SDL_image.animation_decoder.create.avif.max_threads\0";
pub const IMG_PROP_ANIMATION_DECODER_CREATE_AVIF_ALLOW_INCREMENTAL_BOOLEAN: &[u8; 58] =
    b"SDL_image.animation_decoder.create.avif.allow_incremental\0";
pub const IMG_PROP_ANIMATION_DECODER_CREATE_AVIF_ALLOW_PROGRESSIVE_BOOLEAN: &[u8; 58] =
    b"SDL_image.animation_decoder.create.avif.allow_progressive\0";
pub const IMG_PROP_ANIMATION_DECODER_CREATE_GIF_TRANSPARENT_COLOR_INDEX_NUMBER: &[u8; 63] =
    b"SDL_image.animation_encoder.create.gif.transparent_color_index\0";
pub const IMG_PROP_ANIMATION_DECODER_CREATE_GIF_NUM_COLORS_NUMBER: &[u8; 50] =
    b"SDL_image.animation_encoder.create.gif.num_colors\0";
pub const IMG_PROP_METADATA_IGNORE_PROPS_BOOLEAN: &[u8; 32] = b"SDL_image.metadata.ignore_props\0";
pub const IMG_PROP_METADATA_DESCRIPTION_STRING: &[u8; 31] = b"SDL_image.metadata.description\0";
pub const IMG_PROP_METADATA_COPYRIGHT_STRING: &[u8; 29] = b"SDL_image.metadata.copyright\0";
pub const IMG_PROP_METADATA_TITLE_STRING: &[u8; 25] = b"SDL_image.metadata.title\0";
pub const IMG_PROP_METADATA_AUTHOR_STRING: &[u8; 26] = b"SDL_image.metadata.author\0";
pub const IMG_PROP_METADATA_CREATION_TIME_STRING: &[u8; 33] = b"SDL_image.metadata.creation_time\0";
pub const IMG_PROP_METADATA_FRAME_COUNT_NUMBER: &[u8; 31] = b"SDL_image.metadata.frame_count\0";
pub const IMG_PROP_METADATA_LOOP_COUNT_NUMBER: &[u8; 30] = b"SDL_image.metadata.loop_count\0";
unsafe extern "C" {
    #[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."]
    pub fn IMG_Version() -> core::ffi::c_int;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_Load(file: *const core::ffi::c_char) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_Load_IO(src: *mut SDL_IOStream, closeio: bool) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadTyped_IO(
        src: *mut SDL_IOStream,
        closeio: bool,
        type_: *const core::ffi::c_char,
    ) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadTexture(
        renderer: *mut SDL_Renderer,
        file: *const core::ffi::c_char,
    ) -> *mut SDL_Texture;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadTexture_IO(
        renderer: *mut SDL_Renderer,
        src: *mut SDL_IOStream,
        closeio: bool,
    ) -> *mut SDL_Texture;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadTextureTyped_IO(
        renderer: *mut SDL_Renderer,
        src: *mut SDL_IOStream,
        closeio: bool,
        type_: *const core::ffi::c_char,
    ) -> *mut SDL_Texture;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadGPUTexture(
        device: *mut SDL_GPUDevice,
        copy_pass: *mut SDL_GPUCopyPass,
        file: *const core::ffi::c_char,
        width: *mut core::ffi::c_int,
        height: *mut core::ffi::c_int,
    ) -> *mut SDL_GPUTexture;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadGPUTexture_IO(
        device: *mut SDL_GPUDevice,
        copy_pass: *mut SDL_GPUCopyPass,
        src: *mut SDL_IOStream,
        closeio: bool,
        width: *mut core::ffi::c_int,
        height: *mut core::ffi::c_int,
    ) -> *mut SDL_GPUTexture;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadGPUTextureTyped_IO(
        device: *mut SDL_GPUDevice,
        copy_pass: *mut SDL_GPUCopyPass,
        src: *mut SDL_IOStream,
        closeio: bool,
        type_: *const core::ffi::c_char,
        width: *mut core::ffi::c_int,
        height: *mut core::ffi::c_int,
    ) -> *mut SDL_GPUTexture;
}
unsafe extern "C" {
    #[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."]
    pub fn IMG_GetClipboardImage() -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isANI(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isAVIF(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isCUR(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isBMP(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isGIF(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isICO(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isJPG(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isJXL(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isLBM(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isPCX(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isPNG(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isPNM(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isQOI(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isSVG(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isTIF(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isWEBP(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isXCF(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isXPM(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_isXV(src: *mut SDL_IOStream) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadAVIF_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadBMP_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadCUR_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadGIF_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadICO_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadJPG_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadJXL_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadLBM_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadPCX_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadPNG_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadPNM_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadSVG_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadSizedSVG_IO(
        src: *mut SDL_IOStream,
        width: core::ffi::c_int,
        height: core::ffi::c_int,
    ) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadQOI_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadTGA_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadTIF_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadWEBP_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadXCF_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadXPM_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadXV_IO(src: *mut SDL_IOStream) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_ReadXPMFromArray(xpm: *mut *mut core::ffi::c_char) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_ReadXPMFromArrayToRGB888(xpm: *mut *mut core::ffi::c_char) -> *mut SDL_Surface;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_Save(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveTyped_IO(
        surface: *mut SDL_Surface,
        dst: *mut SDL_IOStream,
        closeio: bool,
        type_: *const core::ffi::c_char,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveAVIF(
        surface: *mut SDL_Surface,
        file: *const core::ffi::c_char,
        quality: core::ffi::c_int,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveAVIF_IO(
        surface: *mut SDL_Surface,
        dst: *mut SDL_IOStream,
        closeio: bool,
        quality: core::ffi::c_int,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveBMP(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveBMP_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
        -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveCUR(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveCUR_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
        -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveGIF(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveGIF_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
        -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveICO(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveICO_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
        -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveJPG(
        surface: *mut SDL_Surface,
        file: *const core::ffi::c_char,
        quality: core::ffi::c_int,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveJPG_IO(
        surface: *mut SDL_Surface,
        dst: *mut SDL_IOStream,
        closeio: bool,
        quality: core::ffi::c_int,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SavePNG(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SavePNG_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
        -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveTGA(surface: *mut SDL_Surface, file: *const core::ffi::c_char) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveTGA_IO(surface: *mut SDL_Surface, dst: *mut SDL_IOStream, closeio: bool)
        -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveWEBP(
        surface: *mut SDL_Surface,
        file: *const core::ffi::c_char,
        quality: f32,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveWEBP_IO(
        surface: *mut SDL_Surface,
        dst: *mut SDL_IOStream,
        closeio: bool,
        quality: f32,
    ) -> bool;
}
#[doc = "Animated image support"]
#[repr(C)]
#[derive(Debug, Copy, Clone, Hash)]
pub struct IMG_Animation {
    #[doc = "< The width of the frames"]
    pub w: core::ffi::c_int,
    #[doc = "< The height of the frames"]
    pub h: core::ffi::c_int,
    #[doc = "< The number of frames"]
    pub count: core::ffi::c_int,
    #[doc = "< An array of frames"]
    pub frames: *mut *mut SDL_Surface,
    #[doc = "< An array of frame delays, in milliseconds"]
    pub delays: *mut core::ffi::c_int,
}
#[allow(clippy::unnecessary_operation, clippy::identity_op)]
const _: () = {
    ["Size of IMG_Animation"][::core::mem::size_of::<IMG_Animation>() - 32usize];
    ["Alignment of IMG_Animation"][::core::mem::align_of::<IMG_Animation>() - 8usize];
    ["Offset of field: IMG_Animation::w"][::core::mem::offset_of!(IMG_Animation, w) - 0usize];
    ["Offset of field: IMG_Animation::h"][::core::mem::offset_of!(IMG_Animation, h) - 4usize];
    ["Offset of field: IMG_Animation::count"]
        [::core::mem::offset_of!(IMG_Animation, count) - 8usize];
    ["Offset of field: IMG_Animation::frames"]
        [::core::mem::offset_of!(IMG_Animation, frames) - 16usize];
    ["Offset of field: IMG_Animation::delays"]
        [::core::mem::offset_of!(IMG_Animation, delays) - 24usize];
};
impl Default for IMG_Animation {
    fn default() -> Self {
        let mut s = ::core::mem::MaybeUninit::<Self>::uninit();
        unsafe {
            ::core::ptr::write_bytes(s.as_mut_ptr(), 0, 1);
            s.assume_init()
        }
    }
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadAnimation(file: *const core::ffi::c_char) -> *mut IMG_Animation;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadAnimation_IO(src: *mut SDL_IOStream, closeio: bool) -> *mut IMG_Animation;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadAnimationTyped_IO(
        src: *mut SDL_IOStream,
        closeio: bool,
        type_: *const core::ffi::c_char,
    ) -> *mut IMG_Animation;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadANIAnimation_IO(src: *mut SDL_IOStream) -> *mut IMG_Animation;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadAPNGAnimation_IO(src: *mut SDL_IOStream) -> *mut IMG_Animation;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadAVIFAnimation_IO(src: *mut SDL_IOStream) -> *mut IMG_Animation;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadGIFAnimation_IO(src: *mut SDL_IOStream) -> *mut IMG_Animation;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_LoadWEBPAnimation_IO(src: *mut SDL_IOStream) -> *mut IMG_Animation;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveAnimation(anim: *mut IMG_Animation, file: *const core::ffi::c_char) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveAnimationTyped_IO(
        anim: *mut IMG_Animation,
        dst: *mut SDL_IOStream,
        closeio: bool,
        type_: *const core::ffi::c_char,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveANIAnimation_IO(
        anim: *mut IMG_Animation,
        dst: *mut SDL_IOStream,
        closeio: bool,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveAPNGAnimation_IO(
        anim: *mut IMG_Animation,
        dst: *mut SDL_IOStream,
        closeio: bool,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveAVIFAnimation_IO(
        anim: *mut IMG_Animation,
        dst: *mut SDL_IOStream,
        closeio: bool,
        quality: core::ffi::c_int,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveGIFAnimation_IO(
        anim: *mut IMG_Animation,
        dst: *mut SDL_IOStream,
        closeio: bool,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_SaveWEBPAnimation_IO(
        anim: *mut IMG_Animation,
        dst: *mut SDL_IOStream,
        closeio: bool,
        quality: core::ffi::c_int,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_CreateAnimatedCursor(
        anim: *mut IMG_Animation,
        hot_x: core::ffi::c_int,
        hot_y: core::ffi::c_int,
    ) -> *mut SDL_Cursor;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_FreeAnimation(anim: *mut IMG_Animation);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct IMG_AnimationEncoder {
    _unused: [u8; 0],
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_CreateAnimationEncoder(file: *const core::ffi::c_char) -> *mut IMG_AnimationEncoder;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_CreateAnimationEncoder_IO(
        dst: *mut SDL_IOStream,
        closeio: bool,
        type_: *const core::ffi::c_char,
    ) -> *mut IMG_AnimationEncoder;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_CreateAnimationEncoderWithProperties(
        props: SDL_PropertiesID,
    ) -> *mut IMG_AnimationEncoder;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_AddAnimationEncoderFrame(
        encoder: *mut IMG_AnimationEncoder,
        surface: *mut SDL_Surface,
        duration: Uint64,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_CloseAnimationEncoder(encoder: *mut IMG_AnimationEncoder) -> bool;
}
impl IMG_AnimationDecoderStatus {
    #[doc = "< The decoder is invalid"]
    pub const IMG_DECODER_STATUS_INVALID: IMG_AnimationDecoderStatus =
        IMG_AnimationDecoderStatus(-1);
    #[doc = "< The decoder is ready to decode the next frame"]
    pub const IMG_DECODER_STATUS_OK: IMG_AnimationDecoderStatus = IMG_AnimationDecoderStatus(0);
    #[doc = "< The decoder failed to decode a frame, call SDL_GetError() for more information."]
    pub const IMG_DECODER_STATUS_FAILED: IMG_AnimationDecoderStatus = IMG_AnimationDecoderStatus(1);
    #[doc = "< No more frames available"]
    pub const IMG_DECODER_STATUS_COMPLETE: IMG_AnimationDecoderStatus =
        IMG_AnimationDecoderStatus(2);
}
#[repr(transparent)]
#[doc = "An enum representing the status of an animation decoder.\n\n**Available Since:** This enum is available since SDL_image 3.4.0."]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct IMG_AnimationDecoderStatus(pub core::ffi::c_int);
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct IMG_AnimationDecoder {
    _unused: [u8; 0],
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_CreateAnimationDecoder(file: *const core::ffi::c_char) -> *mut IMG_AnimationDecoder;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_CreateAnimationDecoder_IO(
        src: *mut SDL_IOStream,
        closeio: bool,
        type_: *const core::ffi::c_char,
    ) -> *mut IMG_AnimationDecoder;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_CreateAnimationDecoderWithProperties(
        props: SDL_PropertiesID,
    ) -> *mut IMG_AnimationDecoder;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_GetAnimationDecoderProperties(
        decoder: *mut IMG_AnimationDecoder,
    ) -> SDL_PropertiesID;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_GetAnimationDecoderFrame(
        decoder: *mut IMG_AnimationDecoder,
        frame: *mut *mut SDL_Surface,
        duration: *mut Uint64,
    ) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_GetAnimationDecoderStatus(
        decoder: *mut IMG_AnimationDecoder,
    ) -> IMG_AnimationDecoderStatus;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_ResetAnimationDecoder(decoder: *mut IMG_AnimationDecoder) -> bool;
}
unsafe extern "C" {
    #[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"]
    pub fn IMG_CloseAnimationDecoder(decoder: *mut IMG_AnimationDecoder) -> bool;
}