Skip to main content

vips_sys/bindings/
prebuilt.rs

1/* automatically generated by rust-bindgen 0.73.2
2 *
3 * Pregenerated FFI declarations for the public libvips C API.
4 * Part of vips-sys (MIT). The libvips library itself is LGPL-2.1;
5 * linking/distributing against it requires LGPL-2.1 compliance.
6 * See README “License”.
7 */
8
9#[repr(C)]
10#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
11pub struct __BindgenBitfieldUnit<Storage> {
12    storage: Storage,
13}
14impl<Storage> __BindgenBitfieldUnit<Storage> {
15    #[inline]
16    pub const fn new(storage: Storage) -> Self {
17        Self { storage }
18    }
19}
20impl<Storage> __BindgenBitfieldUnit<Storage>
21where
22    Storage: AsRef<[u8]> + AsMut<[u8]>,
23{
24    #[inline]
25    fn extract_bit(byte: u8, index: usize) -> bool {
26        let bit_index = if cfg!(target_endian = "big") {
27            7 - (index % 8)
28        } else {
29            index % 8
30        };
31        let mask = 1 << bit_index;
32        byte & mask == mask
33    }
34    #[inline]
35    pub fn get_bit(&self, index: usize) -> bool {
36        debug_assert!(index / 8 < self.storage.as_ref().len());
37        let byte_index = index / 8;
38        let byte = self.storage.as_ref()[byte_index];
39        Self::extract_bit(byte, index)
40    }
41    #[inline]
42    pub unsafe fn raw_get_bit(this: *const Self, index: usize) -> bool {
43        debug_assert!(index / 8 < core::mem::size_of::<Storage>());
44        let byte_index = index / 8;
45        let byte = unsafe {
46            *(core::ptr::addr_of!((*this).storage) as *const u8).offset(byte_index as isize)
47        };
48        Self::extract_bit(byte, index)
49    }
50    #[inline]
51    fn change_bit(byte: u8, index: usize, val: bool) -> u8 {
52        let bit_index = if cfg!(target_endian = "big") {
53            7 - (index % 8)
54        } else {
55            index % 8
56        };
57        let mask = 1 << bit_index;
58        if val { byte | mask } else { byte & !mask }
59    }
60    #[inline]
61    pub fn set_bit(&mut self, index: usize, val: bool) {
62        debug_assert!(index / 8 < self.storage.as_ref().len());
63        let byte_index = index / 8;
64        let byte = &mut self.storage.as_mut()[byte_index];
65        *byte = Self::change_bit(*byte, index, val);
66    }
67    #[inline]
68    pub unsafe fn raw_set_bit(this: *mut Self, index: usize, val: bool) {
69        debug_assert!(index / 8 < core::mem::size_of::<Storage>());
70        let byte_index = index / 8;
71        let byte = unsafe {
72            (core::ptr::addr_of_mut!((*this).storage) as *mut u8).offset(byte_index as isize)
73        };
74        unsafe { *byte = Self::change_bit(*byte, index, val) };
75    }
76    #[inline]
77    pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
78        debug_assert!(bit_width <= 64);
79        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
80        debug_assert!((bit_offset + (bit_width as usize) + 7) / 8 <= self.storage.as_ref().len());
81        if bit_width == 0 {
82            return 0;
83        }
84        let mut val = 0u64;
85        let storage = self.storage.as_ref();
86        let start_byte = bit_offset / 8;
87        let bit_shift = bit_offset % 8;
88        let bytes_needed = (bit_width as usize + bit_shift + 7) / 8;
89        if cfg!(target_endian = "big") {
90            for i in 0..bytes_needed {
91                val |= (storage[start_byte + i].reverse_bits() as u64) << (i * 8);
92            }
93        } else {
94            for i in 0..bytes_needed {
95                val |= (storage[start_byte + i] as u64) << (i * 8);
96            }
97        }
98        val >>= bit_shift;
99        if bit_width < 64 {
100            val &= (1u64 << bit_width) - 1;
101        }
102        if cfg!(target_endian = "big") {
103            val = val.reverse_bits() >> (64 - bit_width as usize);
104        }
105        val
106    }
107    #[inline]
108    pub unsafe fn raw_get(this: *const Self, bit_offset: usize, bit_width: u8) -> u64 {
109        debug_assert!(bit_width <= 64);
110        debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());
111        debug_assert!(
112            (bit_offset + (bit_width as usize) + 7) / 8 <= core::mem::size_of::<Storage>()
113        );
114        if bit_width == 0 {
115            return 0;
116        }
117        let mut val = 0u64;
118        let start_byte = bit_offset / 8;
119        let bit_shift = bit_offset % 8;
120        let bytes_needed = (bit_width as usize + bit_shift + 7) / 8;
121        let storage_ptr = unsafe { core::ptr::addr_of!((*this).storage) as *const u8 };
122        if cfg!(target_endian = "big") {
123            for i in 0..bytes_needed {
124                let byte = unsafe { *storage_ptr.add(start_byte + i) };
125                val |= (byte.reverse_bits() as u64) << (i * 8);
126            }
127        } else {
128            for i in 0..bytes_needed {
129                let byte = unsafe { *storage_ptr.add(start_byte + i) };
130                val |= (byte as u64) << (i * 8);
131            }
132        }
133        val >>= bit_shift;
134        if bit_width < 64 {
135            val &= (1u64 << bit_width) - 1;
136        }
137        if cfg!(target_endian = "big") {
138            val = val.reverse_bits() >> (64 - bit_width as usize);
139        }
140        val
141    }
142    #[inline]
143    pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
144        debug_assert!(bit_width <= 64);
145        debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
146        debug_assert!((bit_offset + (bit_width as usize) + 7) / 8 <= self.storage.as_ref().len());
147        if bit_width == 0 {
148            return;
149        }
150        let mut val = val;
151        if bit_width < 64 {
152            val &= (1u64 << bit_width) - 1;
153        }
154        if cfg!(target_endian = "big") {
155            val = val.reverse_bits() >> (64 - bit_width as usize);
156        }
157        let storage = self.storage.as_mut();
158        let start_byte = bit_offset / 8;
159        let bit_shift = bit_offset % 8;
160        let bytes_needed = (bit_width as usize + bit_shift + 7) / 8;
161        val <<= bit_shift;
162        let field_mask = if bit_width as usize + bit_shift >= 64 {
163            !0u64 << bit_shift
164        } else {
165            ((1u64 << bit_width) - 1) << bit_shift
166        };
167        for i in 0..bytes_needed {
168            let byte_val = (val >> (i * 8)) as u8;
169            let byte_mask = (field_mask >> (i * 8)) as u8;
170            if cfg!(target_endian = "big") {
171                let byte = storage[start_byte + i].reverse_bits();
172                let new_byte = (byte & !byte_mask) | (byte_val & byte_mask);
173                storage[start_byte + i] = new_byte.reverse_bits();
174            } else {
175                storage[start_byte + i] =
176                    (storage[start_byte + i] & !byte_mask) | (byte_val & byte_mask);
177            }
178        }
179    }
180    #[inline]
181    pub unsafe fn raw_set(this: *mut Self, bit_offset: usize, bit_width: u8, val: u64) {
182        debug_assert!(bit_width <= 64);
183        debug_assert!(bit_offset / 8 < core::mem::size_of::<Storage>());
184        debug_assert!(
185            (bit_offset + (bit_width as usize) + 7) / 8 <= core::mem::size_of::<Storage>()
186        );
187        if bit_width == 0 {
188            return;
189        }
190        let mut val = val;
191        if bit_width < 64 {
192            val &= (1u64 << bit_width) - 1;
193        }
194        if cfg!(target_endian = "big") {
195            val = val.reverse_bits() >> (64 - bit_width as usize);
196        }
197        let start_byte = bit_offset / 8;
198        let bit_shift = bit_offset % 8;
199        let bytes_needed = (bit_width as usize + bit_shift + 7) / 8;
200        val <<= bit_shift;
201        let field_mask = if bit_width as usize + bit_shift >= 64 {
202            !0u64 << bit_shift
203        } else {
204            ((1u64 << bit_width) - 1) << bit_shift
205        };
206        let storage_ptr = unsafe { core::ptr::addr_of_mut!((*this).storage) as *mut u8 };
207        for i in 0..bytes_needed {
208            let byte_val = (val >> (i * 8)) as u8;
209            let byte_mask = (field_mask >> (i * 8)) as u8;
210            let byte_ptr = unsafe { storage_ptr.add(start_byte + i) };
211            if cfg!(target_endian = "big") {
212                let byte = unsafe { (*byte_ptr).reverse_bits() };
213                let new_byte = (byte & !byte_mask) | (byte_val & byte_mask);
214                unsafe { *byte_ptr = new_byte.reverse_bits() };
215            } else {
216                unsafe { *byte_ptr = (*byte_ptr & !byte_mask) | (byte_val & byte_mask) };
217            }
218        }
219    }
220}
221#[doc = " Const-generic methods for efficient bitfield access when offset and width"]
222#[doc = " are known at compile time."]
223impl<const N: usize> __BindgenBitfieldUnit<[u8; N]> {
224    #[doc = " Get a field using const generics for compile-time optimization."]
225    #[doc = " Uses native word size operations when the field fits in usize."]
226    #[inline]
227    pub const fn get_const<const BIT_OFFSET: usize, const BIT_WIDTH: u8>(&self) -> u64 {
228        debug_assert!(BIT_WIDTH <= 64);
229        debug_assert!(BIT_OFFSET / 8 < N);
230        debug_assert!((BIT_OFFSET + (BIT_WIDTH as usize) + 7) / 8 <= N);
231        if BIT_WIDTH == 0 {
232            return 0;
233        }
234        let start_byte = BIT_OFFSET / 8;
235        let bit_shift = BIT_OFFSET % 8;
236        let bytes_needed = (BIT_WIDTH as usize + bit_shift + 7) / 8;
237        if BIT_WIDTH as usize + bit_shift <= usize::BITS as usize {
238            let mut val = 0usize;
239            if cfg!(target_endian = "big") {
240                let mut i = 0;
241                while i < bytes_needed {
242                    val |= (self.storage[start_byte + i].reverse_bits() as usize) << (i * 8);
243                    i += 1;
244                }
245            } else {
246                let mut i = 0;
247                while i < bytes_needed {
248                    val |= (self.storage[start_byte + i] as usize) << (i * 8);
249                    i += 1;
250                }
251            }
252            val >>= bit_shift;
253            if (BIT_WIDTH as u32) < usize::BITS {
254                val &= (1usize << BIT_WIDTH) - 1;
255            }
256            if cfg!(target_endian = "big") {
257                val = val.reverse_bits() >> (usize::BITS as usize - BIT_WIDTH as usize);
258            }
259            val as u64
260        } else {
261            let mut val = 0u64;
262            if cfg!(target_endian = "big") {
263                let mut i = 0;
264                while i < bytes_needed {
265                    val |= (self.storage[start_byte + i].reverse_bits() as u64) << (i * 8);
266                    i += 1;
267                }
268            } else {
269                let mut i = 0;
270                while i < bytes_needed {
271                    val |= (self.storage[start_byte + i] as u64) << (i * 8);
272                    i += 1;
273                }
274            }
275            val >>= bit_shift;
276            if BIT_WIDTH < 64 {
277                val &= (1u64 << BIT_WIDTH) - 1;
278            }
279            if cfg!(target_endian = "big") {
280                val = val.reverse_bits() >> (64 - BIT_WIDTH as usize);
281            }
282            val
283        }
284    }
285    #[doc = " Set a field using const generics for compile-time optimization."]
286    #[doc = " Uses native word size operations when the field fits in usize."]
287    #[inline]
288    pub fn set_const<const BIT_OFFSET: usize, const BIT_WIDTH: u8>(&mut self, val: u64) {
289        debug_assert!(BIT_WIDTH <= 64);
290        debug_assert!(BIT_OFFSET / 8 < N);
291        debug_assert!((BIT_OFFSET + (BIT_WIDTH as usize) + 7) / 8 <= N);
292        if BIT_WIDTH == 0 {
293            return;
294        }
295        let start_byte = BIT_OFFSET / 8;
296        let bit_shift = BIT_OFFSET % 8;
297        let bytes_needed = (BIT_WIDTH as usize + bit_shift + 7) / 8;
298        if BIT_WIDTH as usize + bit_shift <= usize::BITS as usize {
299            let mut val = val as usize;
300            if (BIT_WIDTH as u32) < usize::BITS {
301                val &= (1usize << BIT_WIDTH) - 1;
302            }
303            if cfg!(target_endian = "big") {
304                val = val.reverse_bits() >> (usize::BITS as usize - BIT_WIDTH as usize);
305            }
306            val <<= bit_shift;
307            let field_mask = if BIT_WIDTH as usize + bit_shift >= usize::BITS as usize {
308                !0usize << bit_shift
309            } else {
310                ((1usize << BIT_WIDTH) - 1) << bit_shift
311            };
312            let mut i = 0;
313            while i < bytes_needed {
314                let byte_val = (val >> (i * 8)) as u8;
315                let byte_mask = (field_mask >> (i * 8)) as u8;
316                if cfg!(target_endian = "big") {
317                    let byte = self.storage[start_byte + i].reverse_bits();
318                    let new_byte = (byte & !byte_mask) | (byte_val & byte_mask);
319                    self.storage[start_byte + i] = new_byte.reverse_bits();
320                } else {
321                    self.storage[start_byte + i] =
322                        (self.storage[start_byte + i] & !byte_mask) | (byte_val & byte_mask);
323                }
324                i += 1;
325            }
326        } else {
327            let mut val = val;
328            if BIT_WIDTH < 64 {
329                val &= (1u64 << BIT_WIDTH) - 1;
330            }
331            if cfg!(target_endian = "big") {
332                val = val.reverse_bits() >> (64 - BIT_WIDTH as usize);
333            }
334            val <<= bit_shift;
335            let field_mask = if BIT_WIDTH as usize + bit_shift >= 64 {
336                !0u64 << bit_shift
337            } else {
338                ((1u64 << BIT_WIDTH) - 1) << bit_shift
339            };
340            let mut i = 0;
341            while i < bytes_needed {
342                let byte_val = (val >> (i * 8)) as u8;
343                let byte_mask = (field_mask >> (i * 8)) as u8;
344                if cfg!(target_endian = "big") {
345                    let byte = self.storage[start_byte + i].reverse_bits();
346                    let new_byte = (byte & !byte_mask) | (byte_val & byte_mask);
347                    self.storage[start_byte + i] = new_byte.reverse_bits();
348                } else {
349                    self.storage[start_byte + i] =
350                        (self.storage[start_byte + i] & !byte_mask) | (byte_val & byte_mask);
351                }
352                i += 1;
353            }
354        }
355    }
356    #[doc = " Raw pointer get using const generics for compile-time optimization."]
357    #[doc = " Uses native word size operations when the field fits in usize."]
358    #[inline]
359    pub const unsafe fn raw_get_const<const BIT_OFFSET: usize, const BIT_WIDTH: u8>(
360        this: *const Self,
361    ) -> u64 {
362        debug_assert!(BIT_WIDTH <= 64);
363        debug_assert!(BIT_OFFSET / 8 < N);
364        debug_assert!((BIT_OFFSET + (BIT_WIDTH as usize) + 7) / 8 <= N);
365        if BIT_WIDTH == 0 {
366            return 0;
367        }
368        let start_byte = BIT_OFFSET / 8;
369        let bit_shift = BIT_OFFSET % 8;
370        let bytes_needed = (BIT_WIDTH as usize + bit_shift + 7) / 8;
371        let storage_ptr = unsafe { core::ptr::addr_of!((*this).storage) as *const u8 };
372        if BIT_WIDTH as usize + bit_shift <= usize::BITS as usize {
373            let mut val = 0usize;
374            if cfg!(target_endian = "big") {
375                let mut i = 0;
376                while i < bytes_needed {
377                    let byte = unsafe { *storage_ptr.add(start_byte + i) };
378                    val |= (byte.reverse_bits() as usize) << (i * 8);
379                    i += 1;
380                }
381            } else {
382                let mut i = 0;
383                while i < bytes_needed {
384                    let byte = unsafe { *storage_ptr.add(start_byte + i) };
385                    val |= (byte as usize) << (i * 8);
386                    i += 1;
387                }
388            }
389            val >>= bit_shift;
390            if (BIT_WIDTH as u32) < usize::BITS {
391                val &= (1usize << BIT_WIDTH) - 1;
392            }
393            if cfg!(target_endian = "big") {
394                val = val.reverse_bits() >> (usize::BITS as usize - BIT_WIDTH as usize);
395            }
396            val as u64
397        } else {
398            let mut val = 0u64;
399            if cfg!(target_endian = "big") {
400                let mut i = 0;
401                while i < bytes_needed {
402                    let byte = unsafe { *storage_ptr.add(start_byte + i) };
403                    val |= (byte.reverse_bits() as u64) << (i * 8);
404                    i += 1;
405                }
406            } else {
407                let mut i = 0;
408                while i < bytes_needed {
409                    let byte = unsafe { *storage_ptr.add(start_byte + i) };
410                    val |= (byte as u64) << (i * 8);
411                    i += 1;
412                }
413            }
414            val >>= bit_shift;
415            if BIT_WIDTH < 64 {
416                val &= (1u64 << BIT_WIDTH) - 1;
417            }
418            if cfg!(target_endian = "big") {
419                val = val.reverse_bits() >> (64 - BIT_WIDTH as usize);
420            }
421            val
422        }
423    }
424    #[doc = " Raw pointer set using const generics for compile-time optimization."]
425    #[doc = " Uses native word size operations when the field fits in usize."]
426    #[inline]
427    pub unsafe fn raw_set_const<const BIT_OFFSET: usize, const BIT_WIDTH: u8>(
428        this: *mut Self,
429        val: u64,
430    ) {
431        debug_assert!(BIT_WIDTH <= 64);
432        debug_assert!(BIT_OFFSET / 8 < N);
433        debug_assert!((BIT_OFFSET + (BIT_WIDTH as usize) + 7) / 8 <= N);
434        if BIT_WIDTH == 0 {
435            return;
436        }
437        let start_byte = BIT_OFFSET / 8;
438        let bit_shift = BIT_OFFSET % 8;
439        let bytes_needed = (BIT_WIDTH as usize + bit_shift + 7) / 8;
440        let storage_ptr = this.cast::<[u8; N]>().cast::<u8>();
441        if BIT_WIDTH as usize + bit_shift <= usize::BITS as usize {
442            let mut val = val as usize;
443            if (BIT_WIDTH as u32) < usize::BITS {
444                val &= (1usize << BIT_WIDTH) - 1;
445            }
446            if cfg!(target_endian = "big") {
447                val = val.reverse_bits() >> (usize::BITS as usize - BIT_WIDTH as usize);
448            }
449            val <<= bit_shift;
450            let field_mask = if BIT_WIDTH as usize + bit_shift >= usize::BITS as usize {
451                !0usize << bit_shift
452            } else {
453                ((1usize << BIT_WIDTH) - 1) << bit_shift
454            };
455            let mut i = 0;
456            while i < bytes_needed {
457                let byte_val = (val >> (i * 8)) as u8;
458                let byte_mask = (field_mask >> (i * 8)) as u8;
459                let byte_ptr = unsafe { storage_ptr.add(start_byte + i) };
460                if cfg!(target_endian = "big") {
461                    let byte = unsafe { (*byte_ptr).reverse_bits() };
462                    let new_byte = (byte & !byte_mask) | (byte_val & byte_mask);
463                    unsafe { *byte_ptr = new_byte.reverse_bits() };
464                } else {
465                    unsafe { *byte_ptr = (*byte_ptr & !byte_mask) | (byte_val & byte_mask) };
466                }
467                i += 1;
468            }
469        } else {
470            let mut val = val;
471            if BIT_WIDTH < 64 {
472                val &= (1u64 << BIT_WIDTH) - 1;
473            }
474            if cfg!(target_endian = "big") {
475                val = val.reverse_bits() >> (64 - BIT_WIDTH as usize);
476            }
477            val <<= bit_shift;
478            let field_mask = if BIT_WIDTH as usize + bit_shift >= 64 {
479                !0u64 << bit_shift
480            } else {
481                ((1u64 << BIT_WIDTH) - 1) << bit_shift
482            };
483            let mut i = 0;
484            while i < bytes_needed {
485                let byte_val = (val >> (i * 8)) as u8;
486                let byte_mask = (field_mask >> (i * 8)) as u8;
487                let byte_ptr = unsafe { storage_ptr.add(start_byte + i) };
488                if cfg!(target_endian = "big") {
489                    let byte = unsafe { (*byte_ptr).reverse_bits() };
490                    let new_byte = (byte & !byte_mask) | (byte_val & byte_mask);
491                    unsafe { *byte_ptr = new_byte.reverse_bits() };
492                } else {
493                    unsafe { *byte_ptr = (*byte_ptr & !byte_mask) | (byte_val & byte_mask) };
494                }
495                i += 1;
496            }
497        }
498    }
499}
500pub const VIPS_PI: f64 = 3.141592653589793;
501pub const VIPS_PATH_MAX: u32 = 4096;
502pub const VIPS_TARGET_BUFFER_SIZE: u32 = 8500;
503pub const VIPS_TARGET_CUSTOM_BUFFER_SIZE: u32 = 4096;
504pub const VIPS_SBUF_BUFFER_SIZE: u32 = 4096;
505pub const VIPS_VERSION: &[u8; 7] = b"8.18.6\0";
506pub const VIPS_VERSION_STRING: &[u8; 7] = b"8.18.6\0";
507pub const VIPS_MAJOR_VERSION: u32 = 8;
508pub const VIPS_MINOR_VERSION: u32 = 18;
509pub const VIPS_MICRO_VERSION: u32 = 6;
510pub const VIPS_LIBRARY_CURRENT: u32 = 58;
511pub const VIPS_LIBRARY_REVISION: u32 = 6;
512pub const VIPS_LIBRARY_AGE: u32 = 18;
513pub const VIPS_CONFIG: &[u8; 29] = b"vendored headers for bindgen\0";
514pub const VIPS_ENABLE_DEPRECATED: u32 = 1;
515pub const VIPS_SPARE: u32 = 8;
516pub const VIPS_SIZEOF_HEADER: u32 = 64;
517pub const VIPS__TILE_WIDTH: u32 = 128;
518pub const VIPS__TILE_HEIGHT: u32 = 128;
519pub const VIPS__THINSTRIP_HEIGHT: u32 = 1;
520pub const VIPS__FATSTRIP_HEIGHT: u32 = 16;
521pub const VIPS_MAGIC_INTEL: u32 = 3064394248;
522pub const VIPS_MAGIC_SPARC: u32 = 150120118;
523pub const VIPS_DEFAULT_MAX_COORD: u32 = 100000000;
524pub const VIPS_TRANSFORM_SHIFT: u32 = 6;
525pub const VIPS_TRANSFORM_SCALE: u32 = 64;
526pub const VIPS_INTERPOLATE_SHIFT: u32 = 12;
527pub const VIPS_INTERPOLATE_SCALE: u32 = 4096;
528pub const VIPS_META_EXIF_NAME: &[u8; 10] = b"exif-data\0";
529pub const VIPS_META_XMP_NAME: &[u8; 9] = b"xmp-data\0";
530pub const VIPS_META_IPTC_NAME: &[u8; 10] = b"iptc-data\0";
531pub const VIPS_META_PHOTOSHOP_NAME: &[u8; 15] = b"photoshop-data\0";
532pub const VIPS_META_ICC_NAME: &[u8; 17] = b"icc-profile-data\0";
533pub const VIPS_META_IMAGEDESCRIPTION: &[u8; 18] = b"image-description\0";
534pub const VIPS_META_RESOLUTION_UNIT: &[u8; 16] = b"resolution-unit\0";
535pub const VIPS_META_BITS_PER_SAMPLE: &[u8; 16] = b"bits-per-sample\0";
536pub const VIPS_META_PALETTE: &[u8; 8] = b"palette\0";
537pub const VIPS_META_LOADER: &[u8; 12] = b"vips-loader\0";
538pub const VIPS_META_SEQUENTIAL: &[u8; 16] = b"vips-sequential\0";
539pub const VIPS_META_ORIENTATION: &[u8; 12] = b"orientation\0";
540pub const VIPS_META_PAGE_HEIGHT: &[u8; 12] = b"page-height\0";
541pub const VIPS_META_N_PAGES: &[u8; 8] = b"n-pages\0";
542pub const VIPS_META_N_SUBIFDS: &[u8; 10] = b"n-subifds\0";
543pub const VIPS_META_CONCURRENCY: &[u8; 12] = b"concurrency\0";
544pub const VIPS_META_TILE_WIDTH: &[u8; 11] = b"tile-width\0";
545pub const VIPS_META_TILE_HEIGHT: &[u8; 12] = b"tile-height\0";
546pub const VIPS_D93_X0: f64 = 89.74;
547pub const VIPS_D93_Y0: f64 = 100.0;
548pub const VIPS_D93_Z0: f64 = 130.77;
549pub const VIPS_D75_X0: f64 = 94.9682;
550pub const VIPS_D75_Y0: f64 = 100.0;
551pub const VIPS_D75_Z0: f64 = 122.571;
552pub const VIPS_D65_X0: f64 = 95.047;
553pub const VIPS_D65_Y0: f64 = 100.0;
554pub const VIPS_D65_Z0: f64 = 108.8827;
555pub const VIPS_D55_X0: f64 = 95.6831;
556pub const VIPS_D55_Y0: f64 = 100.0;
557pub const VIPS_D55_Z0: f64 = 92.0871;
558pub const VIPS_D50_X0: f64 = 96.425;
559pub const VIPS_D50_Y0: f64 = 100.0;
560pub const VIPS_D50_Z0: f64 = 82.468;
561pub const VIPS_A_X0: f64 = 109.8503;
562pub const VIPS_A_Y0: f64 = 100.0;
563pub const VIPS_A_Z0: f64 = 35.5849;
564pub const VIPS_B_X0: f64 = 99.072;
565pub const VIPS_B_Y0: f64 = 100.0;
566pub const VIPS_B_Z0: f64 = 85.223;
567pub const VIPS_C_X0: f64 = 98.07;
568pub const VIPS_C_Y0: f64 = 100.0;
569pub const VIPS_C_Z0: f64 = 118.23;
570pub const VIPS_E_X0: f64 = 100.0;
571pub const VIPS_E_Y0: f64 = 100.0;
572pub const VIPS_E_Z0: f64 = 100.0;
573pub const VIPS_D3250_X0: f64 = 105.659;
574pub const VIPS_D3250_Y0: f64 = 100.0;
575pub const VIPS_D3250_Z0: f64 = 45.8501;
576pub const VIPS_META_IPCT_NAME: &[u8; 10] = b"iptc-data\0";
577pub const VIPS_EXEEXT: &[u8; 1] = b"\0";
578pub const VIPS_VECTOR_SOURCE_MAX: u32 = 10;
579pub const VIPS_SAVEABLE_LAST: u32 = 99;
580pub type guint8 = core::ffi::c_uchar;
581pub type guint32 = core::ffi::c_uint;
582pub type gint64 = core::ffi::c_longlong;
583pub type guint64 = core::ffi::c_ulonglong;
584pub type gssize = core::ffi::c_long;
585pub type gsize = core::ffi::c_ulong;
586pub type __int64_t = core::ffi::c_longlong;
587pub type __darwin_off_t = __int64_t;
588pub type gchar = core::ffi::c_char;
589pub type glong = core::ffi::c_long;
590pub type gint = core::ffi::c_int;
591pub type gboolean = gint;
592pub type gulong = core::ffi::c_ulong;
593pub type guint = core::ffi::c_uint;
594pub type gfloat = f32;
595pub type gdouble = f64;
596pub type gpointer = *mut core::ffi::c_void;
597pub type GFunc = ::core::option::Option<unsafe extern "C" fn(data: gpointer, user_data: gpointer)>;
598pub type GByteArray = _GByteArray;
599#[repr(C)]
600#[derive(Debug, Copy, Clone)]
601pub struct _GByteArray {
602    pub data: *mut guint8,
603    pub len: guint,
604}
605pub type va_list = __builtin_va_list;
606pub type GQuark = guint32;
607pub type GError = _GError;
608#[repr(C)]
609#[derive(Debug, Copy, Clone)]
610pub struct _GError {
611    pub domain: GQuark,
612    pub code: gint,
613    pub message: *mut gchar,
614}
615pub type GThreadFunc = ::core::option::Option<unsafe extern "C" fn(data: gpointer) -> gpointer>;
616pub type GThread = _GThread;
617pub type GMutex = _GMutex;
618pub type GCond = _GCond;
619#[repr(C)]
620#[derive(Copy, Clone)]
621pub union _GMutex {
622    pub p: gpointer,
623    pub i: [guint; 2usize],
624}
625#[repr(C)]
626#[derive(Debug, Copy, Clone)]
627pub struct _GCond {
628    pub p: gpointer,
629    pub i: [guint; 2usize],
630}
631#[repr(C)]
632#[derive(Debug)]
633pub struct _GData {
634    _unused: [u8; 0],
635}
636pub type GData = _GData;
637unsafe extern "C" {
638    pub fn g_free(mem: gpointer);
639}
640pub type GList = _GList;
641#[repr(C)]
642#[derive(Debug, Copy, Clone)]
643pub struct _GList {
644    pub data: gpointer,
645    pub next: *mut GList,
646    pub prev: *mut GList,
647}
648#[repr(C)]
649#[derive(Debug)]
650pub struct _GHashTable {
651    _unused: [u8; 0],
652}
653pub type GHashTable = _GHashTable;
654pub type GSList = _GSList;
655#[repr(C)]
656#[derive(Debug, Copy, Clone)]
657pub struct _GSList {
658    pub data: gpointer,
659    pub next: *mut GSList,
660}
661pub type GString = _GString;
662#[repr(C)]
663#[derive(Debug, Copy, Clone)]
664pub struct _GString {
665    pub str_: *mut gchar,
666    pub len: gsize,
667    pub allocated_len: gsize,
668}
669#[repr(C)]
670#[derive(Debug)]
671pub struct _GOptionGroup {
672    _unused: [u8; 0],
673}
674pub type GOptionGroup = _GOptionGroup;
675pub type GQueue = _GQueue;
676#[repr(C)]
677#[derive(Debug, Copy, Clone)]
678pub struct _GQueue {
679    pub head: *mut GList,
680    pub tail: *mut GList,
681    pub length: guint,
682}
683#[repr(C)]
684#[derive(Debug)]
685pub struct _GTimer {
686    _unused: [u8; 0],
687}
688pub type GTimer = _GTimer;
689#[repr(u32)]
690#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
691pub enum GThreadPriority {
692    G_THREAD_PRIORITY_LOW = 0,
693    G_THREAD_PRIORITY_NORMAL = 1,
694    G_THREAD_PRIORITY_HIGH = 2,
695    G_THREAD_PRIORITY_URGENT = 3,
696}
697#[repr(C)]
698#[derive(Debug, Copy, Clone)]
699pub struct _GThread {
700    pub func: GThreadFunc,
701    pub data: gpointer,
702    pub joinable: gboolean,
703    pub priority: GThreadPriority,
704}
705pub type off_t = __darwin_off_t;
706pub type fpos_t = __darwin_off_t;
707#[repr(C)]
708#[derive(Debug, Copy, Clone)]
709pub struct __sbuf {
710    pub _base: *mut core::ffi::c_uchar,
711    pub _size: core::ffi::c_int,
712}
713#[repr(C)]
714#[derive(Debug)]
715pub struct __sFILEX {
716    _unused: [u8; 0],
717}
718#[repr(C)]
719#[derive(Debug, Copy, Clone)]
720pub struct __sFILE {
721    pub _p: *mut core::ffi::c_uchar,
722    pub _r: core::ffi::c_int,
723    pub _w: core::ffi::c_int,
724    pub _flags: core::ffi::c_short,
725    pub _file: core::ffi::c_short,
726    pub _bf: __sbuf,
727    pub _lbfsize: core::ffi::c_int,
728    pub _cookie: *mut core::ffi::c_void,
729    pub _close: ::core::option::Option<
730        unsafe extern "C" fn(arg1: *mut core::ffi::c_void) -> core::ffi::c_int,
731    >,
732    pub _read: ::core::option::Option<
733        unsafe extern "C" fn(
734            arg1: *mut core::ffi::c_void,
735            arg2: *mut core::ffi::c_char,
736            __n: core::ffi::c_int,
737        ) -> core::ffi::c_int,
738    >,
739    pub _seek: ::core::option::Option<
740        unsafe extern "C" fn(
741            arg1: *mut core::ffi::c_void,
742            arg2: fpos_t,
743            arg3: core::ffi::c_int,
744        ) -> fpos_t,
745    >,
746    pub _write: ::core::option::Option<
747        unsafe extern "C" fn(
748            arg1: *mut core::ffi::c_void,
749            arg2: *const core::ffi::c_char,
750            __n: core::ffi::c_int,
751        ) -> core::ffi::c_int,
752    >,
753    pub _ub: __sbuf,
754    pub _extra: *mut __sFILEX,
755    pub _ur: core::ffi::c_int,
756    pub _ubuf: [core::ffi::c_uchar; 3usize],
757    pub _nbuf: [core::ffi::c_uchar; 1usize],
758    pub _lb: __sbuf,
759    pub _blksize: core::ffi::c_int,
760    pub _offset: fpos_t,
761}
762pub type FILE = __sFILE;
763pub type GType = gsize;
764pub type GValue = _GValue;
765pub type GTypeClass = _GTypeClass;
766pub type GTypeInstance = _GTypeInstance;
767#[repr(C)]
768#[derive(Debug, Copy, Clone)]
769pub struct _GTypeClass {
770    pub g_type: GType,
771}
772#[repr(C)]
773#[derive(Debug, Copy, Clone)]
774pub struct _GTypeInstance {
775    pub g_class: *mut GTypeClass,
776}
777#[repr(C)]
778#[derive(Copy, Clone)]
779pub struct _GValue {
780    pub g_type: GType,
781    pub data: [_GValue__bindgen_ty_1; 2usize],
782}
783#[repr(C)]
784#[derive(Copy, Clone)]
785pub union _GValue__bindgen_ty_1 {
786    pub v_int: gint,
787    pub v_uint: guint,
788    pub v_long: glong,
789    pub v_ulong: gulong,
790    pub v_int64: gint64,
791    pub v_uint64: guint64,
792    pub v_float: gfloat,
793    pub v_double: gdouble,
794    pub v_pointer: gpointer,
795}
796impl GParamFlags {
797    pub const G_PARAM_PRIVATE: GParamFlags = GParamFlags::G_PARAM_STATIC_NAME;
798}
799#[repr(i32)]
800#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
801pub enum GParamFlags {
802    G_PARAM_READABLE = 1,
803    G_PARAM_WRITABLE = 2,
804    G_PARAM_READWRITE = 3,
805    G_PARAM_CONSTRUCT = 4,
806    G_PARAM_CONSTRUCT_ONLY = 8,
807    G_PARAM_LAX_VALIDATION = 16,
808    G_PARAM_STATIC_NAME = 32,
809    G_PARAM_STATIC_NICK = 64,
810    G_PARAM_STATIC_BLURB = 128,
811    G_PARAM_EXPLICIT_NOTIFY = 1073741824,
812    G_PARAM_DEPRECATED = -2147483648,
813}
814pub type GParamSpec = _GParamSpec;
815#[repr(C)]
816#[derive(Debug, Copy, Clone)]
817pub struct _GParamSpec {
818    pub g_type_instance: GTypeInstance,
819    pub name: *const gchar,
820    pub flags: GParamFlags,
821    pub value_type: GType,
822    pub owner_type: GType,
823    pub _nick: *mut gchar,
824    pub _blurb: *mut gchar,
825    pub qdata: *mut GData,
826    pub ref_count: guint,
827    pub param_id: guint,
828}
829pub type GClosure = _GClosure;
830pub type GClosureNotifyData = _GClosureNotifyData;
831pub type GCallback = ::core::option::Option<unsafe extern "C" fn()>;
832pub type GClosureNotify =
833    ::core::option::Option<unsafe extern "C" fn(data: gpointer, closure: *mut GClosure)>;
834#[repr(C)]
835#[derive(Debug, Copy, Clone)]
836pub struct _GClosureNotifyData {
837    pub data: gpointer,
838    pub notify: GClosureNotify,
839}
840#[repr(C)]
841#[derive(Debug, Copy, Clone)]
842pub struct _GClosure {
843    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize]>,
844    pub marshal: ::core::option::Option<
845        unsafe extern "C" fn(
846            closure: *mut GClosure,
847            return_value: *mut GValue,
848            n_param_values: guint,
849            param_values: *const GValue,
850            invocation_hint: gpointer,
851            marshal_data: gpointer,
852        ),
853    >,
854    pub data: gpointer,
855    pub notifiers: *mut GClosureNotifyData,
856}
857impl _GClosure {
858    #[inline]
859    #[allow(unnecessary_transmutes)]
860    pub fn ref_count(&self) -> guint {
861        unsafe { ::core::mem::transmute(self._bitfield_1.get_const::<0usize, 15u8>() as u32) }
862    }
863    #[inline]
864    #[allow(unnecessary_transmutes)]
865    pub fn set_ref_count(&mut self, val: guint) {
866        unsafe {
867            let val: u32 = ::core::mem::transmute(val);
868            self._bitfield_1.set_const::<0usize, 15u8>(val as u64)
869        }
870    }
871    #[inline]
872    #[allow(unnecessary_transmutes)]
873    pub unsafe fn ref_count_raw(this: *const Self) -> guint {
874        unsafe {
875            ::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get_const::<
876                0usize,
877                15u8,
878            >(::core::ptr::addr_of!((*this)._bitfield_1))
879                as u32)
880        }
881    }
882    #[inline]
883    #[allow(unnecessary_transmutes)]
884    pub unsafe fn set_ref_count_raw(this: *mut Self, val: guint) {
885        unsafe {
886            let val: u32 = ::core::mem::transmute(val);
887            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set_const::<0usize, 15u8>(
888                ::core::ptr::addr_of_mut!((*this)._bitfield_1),
889                val as u64,
890            )
891        }
892    }
893    #[inline]
894    #[allow(unnecessary_transmutes)]
895    pub fn meta_marshal_nouse(&self) -> guint {
896        unsafe { ::core::mem::transmute(self._bitfield_1.get_const::<15usize, 1u8>() as u32) }
897    }
898    #[inline]
899    #[allow(unnecessary_transmutes)]
900    pub fn set_meta_marshal_nouse(&mut self, val: guint) {
901        unsafe {
902            let val: u32 = ::core::mem::transmute(val);
903            self._bitfield_1.set_const::<15usize, 1u8>(val as u64)
904        }
905    }
906    #[inline]
907    #[allow(unnecessary_transmutes)]
908    pub unsafe fn meta_marshal_nouse_raw(this: *const Self) -> guint {
909        unsafe {
910            ::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get_const::<
911                15usize,
912                1u8,
913            >(::core::ptr::addr_of!((*this)._bitfield_1))
914                as u32)
915        }
916    }
917    #[inline]
918    #[allow(unnecessary_transmutes)]
919    pub unsafe fn set_meta_marshal_nouse_raw(this: *mut Self, val: guint) {
920        unsafe {
921            let val: u32 = ::core::mem::transmute(val);
922            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set_const::<15usize, 1u8>(
923                ::core::ptr::addr_of_mut!((*this)._bitfield_1),
924                val as u64,
925            )
926        }
927    }
928    #[inline]
929    #[allow(unnecessary_transmutes)]
930    pub fn n_guards(&self) -> guint {
931        unsafe { ::core::mem::transmute(self._bitfield_1.get_const::<16usize, 1u8>() as u32) }
932    }
933    #[inline]
934    #[allow(unnecessary_transmutes)]
935    pub fn set_n_guards(&mut self, val: guint) {
936        unsafe {
937            let val: u32 = ::core::mem::transmute(val);
938            self._bitfield_1.set_const::<16usize, 1u8>(val as u64)
939        }
940    }
941    #[inline]
942    #[allow(unnecessary_transmutes)]
943    pub unsafe fn n_guards_raw(this: *const Self) -> guint {
944        unsafe {
945            ::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get_const::<
946                16usize,
947                1u8,
948            >(::core::ptr::addr_of!((*this)._bitfield_1))
949                as u32)
950        }
951    }
952    #[inline]
953    #[allow(unnecessary_transmutes)]
954    pub unsafe fn set_n_guards_raw(this: *mut Self, val: guint) {
955        unsafe {
956            let val: u32 = ::core::mem::transmute(val);
957            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set_const::<16usize, 1u8>(
958                ::core::ptr::addr_of_mut!((*this)._bitfield_1),
959                val as u64,
960            )
961        }
962    }
963    #[inline]
964    #[allow(unnecessary_transmutes)]
965    pub fn n_fnotifiers(&self) -> guint {
966        unsafe { ::core::mem::transmute(self._bitfield_1.get_const::<17usize, 2u8>() as u32) }
967    }
968    #[inline]
969    #[allow(unnecessary_transmutes)]
970    pub fn set_n_fnotifiers(&mut self, val: guint) {
971        unsafe {
972            let val: u32 = ::core::mem::transmute(val);
973            self._bitfield_1.set_const::<17usize, 2u8>(val as u64)
974        }
975    }
976    #[inline]
977    #[allow(unnecessary_transmutes)]
978    pub unsafe fn n_fnotifiers_raw(this: *const Self) -> guint {
979        unsafe {
980            ::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get_const::<
981                17usize,
982                2u8,
983            >(::core::ptr::addr_of!((*this)._bitfield_1))
984                as u32)
985        }
986    }
987    #[inline]
988    #[allow(unnecessary_transmutes)]
989    pub unsafe fn set_n_fnotifiers_raw(this: *mut Self, val: guint) {
990        unsafe {
991            let val: u32 = ::core::mem::transmute(val);
992            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set_const::<17usize, 2u8>(
993                ::core::ptr::addr_of_mut!((*this)._bitfield_1),
994                val as u64,
995            )
996        }
997    }
998    #[inline]
999    #[allow(unnecessary_transmutes)]
1000    pub fn n_inotifiers(&self) -> guint {
1001        unsafe { ::core::mem::transmute(self._bitfield_1.get_const::<19usize, 8u8>() as u32) }
1002    }
1003    #[inline]
1004    #[allow(unnecessary_transmutes)]
1005    pub fn set_n_inotifiers(&mut self, val: guint) {
1006        unsafe {
1007            let val: u32 = ::core::mem::transmute(val);
1008            self._bitfield_1.set_const::<19usize, 8u8>(val as u64)
1009        }
1010    }
1011    #[inline]
1012    #[allow(unnecessary_transmutes)]
1013    pub unsafe fn n_inotifiers_raw(this: *const Self) -> guint {
1014        unsafe {
1015            ::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get_const::<
1016                19usize,
1017                8u8,
1018            >(::core::ptr::addr_of!((*this)._bitfield_1))
1019                as u32)
1020        }
1021    }
1022    #[inline]
1023    #[allow(unnecessary_transmutes)]
1024    pub unsafe fn set_n_inotifiers_raw(this: *mut Self, val: guint) {
1025        unsafe {
1026            let val: u32 = ::core::mem::transmute(val);
1027            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set_const::<19usize, 8u8>(
1028                ::core::ptr::addr_of_mut!((*this)._bitfield_1),
1029                val as u64,
1030            )
1031        }
1032    }
1033    #[inline]
1034    #[allow(unnecessary_transmutes)]
1035    pub fn in_inotify(&self) -> guint {
1036        unsafe { ::core::mem::transmute(self._bitfield_1.get_const::<27usize, 1u8>() as u32) }
1037    }
1038    #[inline]
1039    #[allow(unnecessary_transmutes)]
1040    pub fn set_in_inotify(&mut self, val: guint) {
1041        unsafe {
1042            let val: u32 = ::core::mem::transmute(val);
1043            self._bitfield_1.set_const::<27usize, 1u8>(val as u64)
1044        }
1045    }
1046    #[inline]
1047    #[allow(unnecessary_transmutes)]
1048    pub unsafe fn in_inotify_raw(this: *const Self) -> guint {
1049        unsafe {
1050            ::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get_const::<
1051                27usize,
1052                1u8,
1053            >(::core::ptr::addr_of!((*this)._bitfield_1))
1054                as u32)
1055        }
1056    }
1057    #[inline]
1058    #[allow(unnecessary_transmutes)]
1059    pub unsafe fn set_in_inotify_raw(this: *mut Self, val: guint) {
1060        unsafe {
1061            let val: u32 = ::core::mem::transmute(val);
1062            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set_const::<27usize, 1u8>(
1063                ::core::ptr::addr_of_mut!((*this)._bitfield_1),
1064                val as u64,
1065            )
1066        }
1067    }
1068    #[inline]
1069    #[allow(unnecessary_transmutes)]
1070    pub fn floating(&self) -> guint {
1071        unsafe { ::core::mem::transmute(self._bitfield_1.get_const::<28usize, 1u8>() as u32) }
1072    }
1073    #[inline]
1074    #[allow(unnecessary_transmutes)]
1075    pub fn set_floating(&mut self, val: guint) {
1076        unsafe {
1077            let val: u32 = ::core::mem::transmute(val);
1078            self._bitfield_1.set_const::<28usize, 1u8>(val as u64)
1079        }
1080    }
1081    #[inline]
1082    #[allow(unnecessary_transmutes)]
1083    pub unsafe fn floating_raw(this: *const Self) -> guint {
1084        unsafe {
1085            ::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get_const::<
1086                28usize,
1087                1u8,
1088            >(::core::ptr::addr_of!((*this)._bitfield_1))
1089                as u32)
1090        }
1091    }
1092    #[inline]
1093    #[allow(unnecessary_transmutes)]
1094    pub unsafe fn set_floating_raw(this: *mut Self, val: guint) {
1095        unsafe {
1096            let val: u32 = ::core::mem::transmute(val);
1097            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set_const::<28usize, 1u8>(
1098                ::core::ptr::addr_of_mut!((*this)._bitfield_1),
1099                val as u64,
1100            )
1101        }
1102    }
1103    #[inline]
1104    #[allow(unnecessary_transmutes)]
1105    pub fn derivative_flag(&self) -> guint {
1106        unsafe { ::core::mem::transmute(self._bitfield_1.get_const::<29usize, 1u8>() as u32) }
1107    }
1108    #[inline]
1109    #[allow(unnecessary_transmutes)]
1110    pub fn set_derivative_flag(&mut self, val: guint) {
1111        unsafe {
1112            let val: u32 = ::core::mem::transmute(val);
1113            self._bitfield_1.set_const::<29usize, 1u8>(val as u64)
1114        }
1115    }
1116    #[inline]
1117    #[allow(unnecessary_transmutes)]
1118    pub unsafe fn derivative_flag_raw(this: *const Self) -> guint {
1119        unsafe {
1120            ::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get_const::<
1121                29usize,
1122                1u8,
1123            >(::core::ptr::addr_of!((*this)._bitfield_1))
1124                as u32)
1125        }
1126    }
1127    #[inline]
1128    #[allow(unnecessary_transmutes)]
1129    pub unsafe fn set_derivative_flag_raw(this: *mut Self, val: guint) {
1130        unsafe {
1131            let val: u32 = ::core::mem::transmute(val);
1132            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set_const::<29usize, 1u8>(
1133                ::core::ptr::addr_of_mut!((*this)._bitfield_1),
1134                val as u64,
1135            )
1136        }
1137    }
1138    #[inline]
1139    #[allow(unnecessary_transmutes)]
1140    pub fn in_marshal(&self) -> guint {
1141        unsafe { ::core::mem::transmute(self._bitfield_1.get_const::<30usize, 1u8>() as u32) }
1142    }
1143    #[inline]
1144    #[allow(unnecessary_transmutes)]
1145    pub fn set_in_marshal(&mut self, val: guint) {
1146        unsafe {
1147            let val: u32 = ::core::mem::transmute(val);
1148            self._bitfield_1.set_const::<30usize, 1u8>(val as u64)
1149        }
1150    }
1151    #[inline]
1152    #[allow(unnecessary_transmutes)]
1153    pub unsafe fn in_marshal_raw(this: *const Self) -> guint {
1154        unsafe {
1155            ::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get_const::<
1156                30usize,
1157                1u8,
1158            >(::core::ptr::addr_of!((*this)._bitfield_1))
1159                as u32)
1160        }
1161    }
1162    #[inline]
1163    #[allow(unnecessary_transmutes)]
1164    pub unsafe fn set_in_marshal_raw(this: *mut Self, val: guint) {
1165        unsafe {
1166            let val: u32 = ::core::mem::transmute(val);
1167            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set_const::<30usize, 1u8>(
1168                ::core::ptr::addr_of_mut!((*this)._bitfield_1),
1169                val as u64,
1170            )
1171        }
1172    }
1173    #[inline]
1174    #[allow(unnecessary_transmutes)]
1175    pub fn is_invalid(&self) -> guint {
1176        unsafe { ::core::mem::transmute(self._bitfield_1.get_const::<31usize, 1u8>() as u32) }
1177    }
1178    #[inline]
1179    #[allow(unnecessary_transmutes)]
1180    pub fn set_is_invalid(&mut self, val: guint) {
1181        unsafe {
1182            let val: u32 = ::core::mem::transmute(val);
1183            self._bitfield_1.set_const::<31usize, 1u8>(val as u64)
1184        }
1185    }
1186    #[inline]
1187    #[allow(unnecessary_transmutes)]
1188    pub unsafe fn is_invalid_raw(this: *const Self) -> guint {
1189        unsafe {
1190            ::core::mem::transmute(<__BindgenBitfieldUnit<[u8; 4usize]>>::raw_get_const::<
1191                31usize,
1192                1u8,
1193            >(::core::ptr::addr_of!((*this)._bitfield_1))
1194                as u32)
1195        }
1196    }
1197    #[inline]
1198    #[allow(unnecessary_transmutes)]
1199    pub unsafe fn set_is_invalid_raw(this: *mut Self, val: guint) {
1200        unsafe {
1201            let val: u32 = ::core::mem::transmute(val);
1202            <__BindgenBitfieldUnit<[u8; 4usize]>>::raw_set_const::<31usize, 1u8>(
1203                ::core::ptr::addr_of_mut!((*this)._bitfield_1),
1204                val as u64,
1205            )
1206        }
1207    }
1208    #[inline]
1209    #[allow(unnecessary_transmutes)]
1210    pub fn new_bitfield_1(
1211        ref_count: guint,
1212        meta_marshal_nouse: guint,
1213        n_guards: guint,
1214        n_fnotifiers: guint,
1215        n_inotifiers: guint,
1216        in_inotify: guint,
1217        floating: guint,
1218        derivative_flag: guint,
1219        in_marshal: guint,
1220        is_invalid: guint,
1221    ) -> __BindgenBitfieldUnit<[u8; 4usize]> {
1222        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize]> = Default::default();
1223        __bindgen_bitfield_unit.set_const::<0usize, 15u8>({
1224            let ref_count: u32 = unsafe { ::core::mem::transmute(ref_count) };
1225            ref_count as u64
1226        });
1227        __bindgen_bitfield_unit.set_const::<15usize, 1u8>({
1228            let meta_marshal_nouse: u32 = unsafe { ::core::mem::transmute(meta_marshal_nouse) };
1229            meta_marshal_nouse as u64
1230        });
1231        __bindgen_bitfield_unit.set_const::<16usize, 1u8>({
1232            let n_guards: u32 = unsafe { ::core::mem::transmute(n_guards) };
1233            n_guards as u64
1234        });
1235        __bindgen_bitfield_unit.set_const::<17usize, 2u8>({
1236            let n_fnotifiers: u32 = unsafe { ::core::mem::transmute(n_fnotifiers) };
1237            n_fnotifiers as u64
1238        });
1239        __bindgen_bitfield_unit.set_const::<19usize, 8u8>({
1240            let n_inotifiers: u32 = unsafe { ::core::mem::transmute(n_inotifiers) };
1241            n_inotifiers as u64
1242        });
1243        __bindgen_bitfield_unit.set_const::<27usize, 1u8>({
1244            let in_inotify: u32 = unsafe { ::core::mem::transmute(in_inotify) };
1245            in_inotify as u64
1246        });
1247        __bindgen_bitfield_unit.set_const::<28usize, 1u8>({
1248            let floating: u32 = unsafe { ::core::mem::transmute(floating) };
1249            floating as u64
1250        });
1251        __bindgen_bitfield_unit.set_const::<29usize, 1u8>({
1252            let derivative_flag: u32 = unsafe { ::core::mem::transmute(derivative_flag) };
1253            derivative_flag as u64
1254        });
1255        __bindgen_bitfield_unit.set_const::<30usize, 1u8>({
1256            let in_marshal: u32 = unsafe { ::core::mem::transmute(in_marshal) };
1257            in_marshal as u64
1258        });
1259        __bindgen_bitfield_unit.set_const::<31usize, 1u8>({
1260            let is_invalid: u32 = unsafe { ::core::mem::transmute(is_invalid) };
1261            is_invalid as u64
1262        });
1263        __bindgen_bitfield_unit
1264    }
1265}
1266#[repr(u32)]
1267#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1268pub enum GConnectFlags {
1269    G_CONNECT_DEFAULT = 0,
1270    G_CONNECT_AFTER = 1,
1271    G_CONNECT_SWAPPED = 2,
1272}
1273unsafe extern "C" {
1274    pub fn g_signal_connect_data(
1275        instance: gpointer,
1276        detailed_signal: *const gchar,
1277        c_handler: GCallback,
1278        data: gpointer,
1279        destroy_data: GClosureNotify,
1280        connect_flags: GConnectFlags,
1281    ) -> gulong;
1282}
1283pub type GObject = _GObject;
1284pub type GObjectClass = _GObjectClass;
1285pub type GObjectConstructParam = _GObjectConstructParam;
1286#[repr(C)]
1287#[derive(Debug, Copy, Clone)]
1288pub struct _GObject {
1289    pub g_type_instance: GTypeInstance,
1290    pub ref_count: guint,
1291    pub qdata: *mut GData,
1292}
1293#[repr(C)]
1294#[derive(Debug, Copy, Clone)]
1295pub struct _GObjectClass {
1296    pub g_type_class: GTypeClass,
1297    pub construct_properties: *mut GSList,
1298    pub constructor: ::core::option::Option<
1299        unsafe extern "C" fn(
1300            type_: GType,
1301            n_construct_properties: guint,
1302            construct_properties: *mut GObjectConstructParam,
1303        ) -> *mut GObject,
1304    >,
1305    pub set_property: ::core::option::Option<
1306        unsafe extern "C" fn(
1307            object: *mut GObject,
1308            property_id: guint,
1309            value: *const GValue,
1310            pspec: *mut GParamSpec,
1311        ),
1312    >,
1313    pub get_property: ::core::option::Option<
1314        unsafe extern "C" fn(
1315            object: *mut GObject,
1316            property_id: guint,
1317            value: *mut GValue,
1318            pspec: *mut GParamSpec,
1319        ),
1320    >,
1321    pub dispose: ::core::option::Option<unsafe extern "C" fn(object: *mut GObject)>,
1322    pub finalize: ::core::option::Option<unsafe extern "C" fn(object: *mut GObject)>,
1323    pub dispatch_properties_changed: ::core::option::Option<
1324        unsafe extern "C" fn(object: *mut GObject, n_pspecs: guint, pspecs: *mut *mut GParamSpec),
1325    >,
1326    pub notify:
1327        ::core::option::Option<unsafe extern "C" fn(object: *mut GObject, pspec: *mut GParamSpec)>,
1328    pub constructed: ::core::option::Option<unsafe extern "C" fn(object: *mut GObject)>,
1329    pub flags: gsize,
1330    pub n_construct_properties: gsize,
1331    pub pspecs: gpointer,
1332    pub n_pspecs: gsize,
1333    pub pdummy: [gpointer; 3usize],
1334}
1335#[repr(C)]
1336#[derive(Debug, Copy, Clone)]
1337pub struct _GObjectConstructParam {
1338    pub pspec: *mut GParamSpec,
1339    pub value: *mut GValue,
1340}
1341unsafe extern "C" {
1342    pub fn g_object_ref(object: gpointer) -> gpointer;
1343}
1344unsafe extern "C" {
1345    pub fn g_object_unref(object: gpointer);
1346}
1347#[repr(C)]
1348#[derive(Debug)]
1349pub struct _GAsyncResult {
1350    _unused: [u8; 0],
1351}
1352pub type GAsyncResult = _GAsyncResult;
1353pub type GCancellable = _GCancellable;
1354#[repr(C)]
1355#[derive(Debug)]
1356pub struct _GFileInfo {
1357    _unused: [u8; 0],
1358}
1359pub type GFileInfo = _GFileInfo;
1360pub type GInputStream = _GInputStream;
1361#[repr(C)]
1362#[derive(Debug)]
1363pub struct _GSeekable {
1364    _unused: [u8; 0],
1365}
1366pub type GSeekable = _GSeekable;
1367pub type GAsyncReadyCallback = ::core::option::Option<
1368    unsafe extern "C" fn(source_object: *mut GObject, res: *mut GAsyncResult, data: gpointer),
1369>;
1370pub type GInputStreamClass = _GInputStreamClass;
1371#[repr(C)]
1372#[derive(Debug)]
1373pub struct _GInputStreamPrivate {
1374    _unused: [u8; 0],
1375}
1376pub type GInputStreamPrivate = _GInputStreamPrivate;
1377#[repr(C)]
1378#[derive(Debug, Copy, Clone)]
1379pub struct _GInputStream {
1380    pub parent_instance: GObject,
1381    pub priv_: *mut GInputStreamPrivate,
1382}
1383#[repr(C)]
1384#[derive(Debug, Copy, Clone)]
1385pub struct _GInputStreamClass {
1386    pub parent_class: GObjectClass,
1387    pub read_fn: ::core::option::Option<
1388        unsafe extern "C" fn(
1389            stream: *mut GInputStream,
1390            buffer: *mut core::ffi::c_void,
1391            count: gsize,
1392            cancellable: *mut GCancellable,
1393            error: *mut *mut GError,
1394        ) -> gssize,
1395    >,
1396    pub skip: ::core::option::Option<
1397        unsafe extern "C" fn(
1398            stream: *mut GInputStream,
1399            count: gsize,
1400            cancellable: *mut GCancellable,
1401            error: *mut *mut GError,
1402        ) -> gssize,
1403    >,
1404    pub close_fn: ::core::option::Option<
1405        unsafe extern "C" fn(
1406            stream: *mut GInputStream,
1407            cancellable: *mut GCancellable,
1408            error: *mut *mut GError,
1409        ) -> gboolean,
1410    >,
1411    pub read_async: ::core::option::Option<
1412        unsafe extern "C" fn(
1413            stream: *mut GInputStream,
1414            buffer: *mut core::ffi::c_void,
1415            count: gsize,
1416            io_priority: core::ffi::c_int,
1417            cancellable: *mut GCancellable,
1418            callback: GAsyncReadyCallback,
1419            user_data: gpointer,
1420        ),
1421    >,
1422    pub read_finish: ::core::option::Option<
1423        unsafe extern "C" fn(
1424            stream: *mut GInputStream,
1425            result: *mut GAsyncResult,
1426            error: *mut *mut GError,
1427        ) -> gssize,
1428    >,
1429    pub skip_async: ::core::option::Option<
1430        unsafe extern "C" fn(
1431            stream: *mut GInputStream,
1432            count: gsize,
1433            io_priority: core::ffi::c_int,
1434            cancellable: *mut GCancellable,
1435            callback: GAsyncReadyCallback,
1436            user_data: gpointer,
1437        ),
1438    >,
1439    pub skip_finish: ::core::option::Option<
1440        unsafe extern "C" fn(
1441            stream: *mut GInputStream,
1442            result: *mut GAsyncResult,
1443            error: *mut *mut GError,
1444        ) -> gssize,
1445    >,
1446    pub close_async: ::core::option::Option<
1447        unsafe extern "C" fn(
1448            stream: *mut GInputStream,
1449            io_priority: core::ffi::c_int,
1450            cancellable: *mut GCancellable,
1451            callback: GAsyncReadyCallback,
1452            user_data: gpointer,
1453        ),
1454    >,
1455    pub close_finish: ::core::option::Option<
1456        unsafe extern "C" fn(
1457            stream: *mut GInputStream,
1458            result: *mut GAsyncResult,
1459            error: *mut *mut GError,
1460        ) -> gboolean,
1461    >,
1462    pub _g_reserved1: ::core::option::Option<unsafe extern "C" fn()>,
1463    pub _g_reserved2: ::core::option::Option<unsafe extern "C" fn()>,
1464    pub _g_reserved3: ::core::option::Option<unsafe extern "C" fn()>,
1465    pub _g_reserved4: ::core::option::Option<unsafe extern "C" fn()>,
1466    pub _g_reserved5: ::core::option::Option<unsafe extern "C" fn()>,
1467}
1468#[repr(C)]
1469#[derive(Debug)]
1470pub struct _GCancellablePrivate {
1471    _unused: [u8; 0],
1472}
1473pub type GCancellablePrivate = _GCancellablePrivate;
1474#[repr(C)]
1475#[derive(Debug, Copy, Clone)]
1476pub struct _GCancellable {
1477    pub parent_instance: GObject,
1478    pub priv_: *mut GCancellablePrivate,
1479}
1480pub type VipsPel = core::ffi::c_uchar;
1481pub type VipsCallbackFn = ::core::option::Option<
1482    unsafe extern "C" fn(a: *mut core::ffi::c_void, b: *mut core::ffi::c_void) -> core::ffi::c_int,
1483>;
1484pub type VipsSListMap2Fn = ::core::option::Option<
1485    unsafe extern "C" fn(
1486        item: *mut core::ffi::c_void,
1487        a: *mut core::ffi::c_void,
1488        b: *mut core::ffi::c_void,
1489    ) -> *mut core::ffi::c_void,
1490>;
1491pub type VipsSListMap4Fn = ::core::option::Option<
1492    unsafe extern "C" fn(
1493        item: *mut core::ffi::c_void,
1494        a: *mut core::ffi::c_void,
1495        b: *mut core::ffi::c_void,
1496        c: *mut core::ffi::c_void,
1497        d: *mut core::ffi::c_void,
1498    ) -> *mut core::ffi::c_void,
1499>;
1500pub type VipsSListFold2Fn = ::core::option::Option<
1501    unsafe extern "C" fn(
1502        item: *mut core::ffi::c_void,
1503        a: *mut core::ffi::c_void,
1504        b: *mut core::ffi::c_void,
1505        c: *mut core::ffi::c_void,
1506    ) -> *mut core::ffi::c_void,
1507>;
1508#[repr(u32)]
1509#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1510pub enum VipsPrecision {
1511    VIPS_PRECISION_INTEGER = 0,
1512    VIPS_PRECISION_FLOAT = 1,
1513    VIPS_PRECISION_APPROXIMATE = 2,
1514    VIPS_PRECISION_LAST = 3,
1515}
1516unsafe extern "C" {
1517    pub fn vips_path_filename7(path: *const core::ffi::c_char) -> *mut core::ffi::c_char;
1518}
1519unsafe extern "C" {
1520    pub fn vips_path_mode7(path: *const core::ffi::c_char) -> *mut core::ffi::c_char;
1521}
1522pub type VipsImage = _VipsImage;
1523pub type VipsRegion = _VipsRegion;
1524pub type VipsBuf = _VipsBuf;
1525pub type VipsSource = _VipsSource;
1526pub type VipsTarget = _VipsTarget;
1527pub type VipsInterpolate = _VipsInterpolate;
1528pub type VipsOperation = _VipsOperation;
1529#[repr(C)]
1530#[derive(Debug, Copy, Clone)]
1531pub struct _VipsBuf {
1532    pub base: *mut core::ffi::c_char,
1533    pub mx: core::ffi::c_int,
1534    pub i: core::ffi::c_int,
1535    pub full: gboolean,
1536    pub lasti: core::ffi::c_int,
1537    pub dynamic: gboolean,
1538}
1539unsafe extern "C" {
1540    pub fn vips_buf_rewind(buf: *mut VipsBuf);
1541}
1542unsafe extern "C" {
1543    pub fn vips_buf_destroy(buf: *mut VipsBuf);
1544}
1545unsafe extern "C" {
1546    pub fn vips_buf_init(buf: *mut VipsBuf);
1547}
1548unsafe extern "C" {
1549    pub fn vips_buf_set_static(
1550        buf: *mut VipsBuf,
1551        base: *mut core::ffi::c_char,
1552        mx: core::ffi::c_int,
1553    );
1554}
1555unsafe extern "C" {
1556    pub fn vips_buf_set_dynamic(buf: *mut VipsBuf, mx: core::ffi::c_int);
1557}
1558unsafe extern "C" {
1559    pub fn vips_buf_init_static(
1560        buf: *mut VipsBuf,
1561        base: *mut core::ffi::c_char,
1562        mx: core::ffi::c_int,
1563    );
1564}
1565unsafe extern "C" {
1566    pub fn vips_buf_init_dynamic(buf: *mut VipsBuf, mx: core::ffi::c_int);
1567}
1568unsafe extern "C" {
1569    pub fn vips_buf_appendns(
1570        buf: *mut VipsBuf,
1571        str_: *const core::ffi::c_char,
1572        sz: core::ffi::c_int,
1573    ) -> gboolean;
1574}
1575unsafe extern "C" {
1576    pub fn vips_buf_appends(buf: *mut VipsBuf, str_: *const core::ffi::c_char) -> gboolean;
1577}
1578unsafe extern "C" {
1579    pub fn vips_buf_appendf(buf: *mut VipsBuf, fmt: *const core::ffi::c_char, ...) -> gboolean;
1580}
1581unsafe extern "C" {
1582    pub fn vips_buf_vappendf(
1583        buf: *mut VipsBuf,
1584        fmt: *const core::ffi::c_char,
1585        ap: va_list,
1586    ) -> gboolean;
1587}
1588unsafe extern "C" {
1589    pub fn vips_buf_appendc(buf: *mut VipsBuf, ch: core::ffi::c_char) -> gboolean;
1590}
1591unsafe extern "C" {
1592    pub fn vips_buf_appendgv(buf: *mut VipsBuf, value: *mut GValue) -> gboolean;
1593}
1594unsafe extern "C" {
1595    pub fn vips_buf_append_size(buf: *mut VipsBuf, n: usize) -> gboolean;
1596}
1597unsafe extern "C" {
1598    pub fn vips_buf_removec(buf: *mut VipsBuf, ch: core::ffi::c_char) -> gboolean;
1599}
1600unsafe extern "C" {
1601    pub fn vips_buf_change(
1602        buf: *mut VipsBuf,
1603        o: *const core::ffi::c_char,
1604        n: *const core::ffi::c_char,
1605    ) -> gboolean;
1606}
1607unsafe extern "C" {
1608    pub fn vips_buf_is_empty(buf: *mut VipsBuf) -> gboolean;
1609}
1610unsafe extern "C" {
1611    pub fn vips_buf_is_full(buf: *mut VipsBuf) -> gboolean;
1612}
1613unsafe extern "C" {
1614    pub fn vips_buf_all(buf: *mut VipsBuf) -> *const core::ffi::c_char;
1615}
1616unsafe extern "C" {
1617    pub fn vips_buf_firstline(buf: *mut VipsBuf) -> *const core::ffi::c_char;
1618}
1619unsafe extern "C" {
1620    pub fn vips_buf_appendg(buf: *mut VipsBuf, g: f64) -> gboolean;
1621}
1622unsafe extern "C" {
1623    pub fn vips_buf_appendd(buf: *mut VipsBuf, d: core::ffi::c_int) -> gboolean;
1624}
1625unsafe extern "C" {
1626    pub fn vips_buf_len(buf: *mut VipsBuf) -> core::ffi::c_int;
1627}
1628#[repr(C)]
1629#[derive(Debug, Copy, Clone)]
1630pub struct _VipsDbuf {
1631    pub data: *mut core::ffi::c_uchar,
1632    pub allocated_size: usize,
1633    pub data_size: usize,
1634    pub write_point: usize,
1635}
1636pub type VipsDbuf = _VipsDbuf;
1637unsafe extern "C" {
1638    pub fn vips_dbuf_init(dbuf: *mut VipsDbuf);
1639}
1640unsafe extern "C" {
1641    pub fn vips_dbuf_minimum_size(dbuf: *mut VipsDbuf, size: usize) -> gboolean;
1642}
1643unsafe extern "C" {
1644    pub fn vips_dbuf_allocate(dbuf: *mut VipsDbuf, size: usize) -> gboolean;
1645}
1646unsafe extern "C" {
1647    pub fn vips_dbuf_read(dbuf: *mut VipsDbuf, data: *mut core::ffi::c_uchar, size: usize)
1648    -> usize;
1649}
1650unsafe extern "C" {
1651    pub fn vips_dbuf_get_write(dbuf: *mut VipsDbuf, size: *mut usize) -> *mut core::ffi::c_uchar;
1652}
1653unsafe extern "C" {
1654    pub fn vips_dbuf_write(
1655        dbuf: *mut VipsDbuf,
1656        data: *const core::ffi::c_uchar,
1657        size: usize,
1658    ) -> gboolean;
1659}
1660unsafe extern "C" {
1661    pub fn vips_dbuf_writef(dbuf: *mut VipsDbuf, fmt: *const core::ffi::c_char, ...) -> gboolean;
1662}
1663unsafe extern "C" {
1664    pub fn vips_dbuf_write_amp(dbuf: *mut VipsDbuf, str_: *const core::ffi::c_char) -> gboolean;
1665}
1666unsafe extern "C" {
1667    pub fn vips_dbuf_reset(dbuf: *mut VipsDbuf);
1668}
1669unsafe extern "C" {
1670    pub fn vips_dbuf_destroy(dbuf: *mut VipsDbuf);
1671}
1672unsafe extern "C" {
1673    pub fn vips_dbuf_seek(dbuf: *mut VipsDbuf, offset: off_t, whence: core::ffi::c_int)
1674    -> gboolean;
1675}
1676unsafe extern "C" {
1677    pub fn vips_dbuf_truncate(dbuf: *mut VipsDbuf);
1678}
1679unsafe extern "C" {
1680    pub fn vips_dbuf_tell(dbuf: *mut VipsDbuf) -> off_t;
1681}
1682unsafe extern "C" {
1683    pub fn vips_dbuf_string(dbuf: *mut VipsDbuf, size: *mut usize) -> *mut core::ffi::c_uchar;
1684}
1685unsafe extern "C" {
1686    pub fn vips_dbuf_steal(dbuf: *mut VipsDbuf, size: *mut usize) -> *mut core::ffi::c_uchar;
1687}
1688unsafe extern "C" {
1689    pub fn vips_enum_string(enm: GType, value: core::ffi::c_int) -> *const core::ffi::c_char;
1690}
1691unsafe extern "C" {
1692    pub fn vips_enum_nick(enm: GType, value: core::ffi::c_int) -> *const core::ffi::c_char;
1693}
1694unsafe extern "C" {
1695    pub fn vips_enum_from_nick(
1696        domain: *const core::ffi::c_char,
1697        type_: GType,
1698        str_: *const core::ffi::c_char,
1699    ) -> core::ffi::c_int;
1700}
1701unsafe extern "C" {
1702    pub fn vips_flags_from_nick(
1703        domain: *const core::ffi::c_char,
1704        type_: GType,
1705        nick: *const core::ffi::c_char,
1706    ) -> core::ffi::c_int;
1707}
1708unsafe extern "C" {
1709    pub fn vips_slist_equal(l1: *mut GSList, l2: *mut GSList) -> gboolean;
1710}
1711unsafe extern "C" {
1712    pub fn vips_slist_map2(
1713        list: *mut GSList,
1714        fn_: VipsSListMap2Fn,
1715        a: *mut core::ffi::c_void,
1716        b: *mut core::ffi::c_void,
1717    ) -> *mut core::ffi::c_void;
1718}
1719unsafe extern "C" {
1720    pub fn vips_slist_map2_rev(
1721        list: *mut GSList,
1722        fn_: VipsSListMap2Fn,
1723        a: *mut core::ffi::c_void,
1724        b: *mut core::ffi::c_void,
1725    ) -> *mut core::ffi::c_void;
1726}
1727unsafe extern "C" {
1728    pub fn vips_slist_map4(
1729        list: *mut GSList,
1730        fn_: VipsSListMap4Fn,
1731        a: *mut core::ffi::c_void,
1732        b: *mut core::ffi::c_void,
1733        c: *mut core::ffi::c_void,
1734        d: *mut core::ffi::c_void,
1735    ) -> *mut core::ffi::c_void;
1736}
1737unsafe extern "C" {
1738    pub fn vips_slist_fold2(
1739        list: *mut GSList,
1740        start: *mut core::ffi::c_void,
1741        fn_: VipsSListFold2Fn,
1742        a: *mut core::ffi::c_void,
1743        b: *mut core::ffi::c_void,
1744    ) -> *mut core::ffi::c_void;
1745}
1746unsafe extern "C" {
1747    pub fn vips_slist_filter(
1748        list: *mut GSList,
1749        fn_: VipsSListMap2Fn,
1750        a: *mut core::ffi::c_void,
1751        b: *mut core::ffi::c_void,
1752    ) -> *mut GSList;
1753}
1754unsafe extern "C" {
1755    pub fn vips_slist_free_all(list: *mut GSList);
1756}
1757unsafe extern "C" {
1758    pub fn vips_map_equal(
1759        a: *mut core::ffi::c_void,
1760        b: *mut core::ffi::c_void,
1761    ) -> *mut core::ffi::c_void;
1762}
1763unsafe extern "C" {
1764    pub fn vips_hash_table_map(
1765        hash: *mut GHashTable,
1766        fn_: VipsSListMap2Fn,
1767        a: *mut core::ffi::c_void,
1768        b: *mut core::ffi::c_void,
1769    ) -> *mut core::ffi::c_void;
1770}
1771unsafe extern "C" {
1772    pub fn vips_iscasepostfix(a: *const core::ffi::c_char, b: *const core::ffi::c_char)
1773    -> gboolean;
1774}
1775unsafe extern "C" {
1776    pub fn vips_isprefix(a: *const core::ffi::c_char, b: *const core::ffi::c_char) -> gboolean;
1777}
1778unsafe extern "C" {
1779    pub fn vips_break_token(
1780        str_: *mut core::ffi::c_char,
1781        brk: *const core::ffi::c_char,
1782    ) -> *mut core::ffi::c_char;
1783}
1784unsafe extern "C" {
1785    pub fn vips_filename_suffix_match(
1786        path: *const core::ffi::c_char,
1787        suffixes: *mut *const core::ffi::c_char,
1788    ) -> core::ffi::c_int;
1789}
1790unsafe extern "C" {
1791    pub fn vips_file_length(fd: core::ffi::c_int) -> gint64;
1792}
1793unsafe extern "C" {
1794    pub fn vips_existsf(name: *const core::ffi::c_char, ...) -> core::ffi::c_int;
1795}
1796unsafe extern "C" {
1797    pub fn vips_isdirf(name: *const core::ffi::c_char, ...) -> core::ffi::c_int;
1798}
1799unsafe extern "C" {
1800    pub fn vips_mkdirf(name: *const core::ffi::c_char, ...) -> core::ffi::c_int;
1801}
1802unsafe extern "C" {
1803    pub fn vips_rmdirf(name: *const core::ffi::c_char, ...) -> core::ffi::c_int;
1804}
1805unsafe extern "C" {
1806    pub fn vips_rename(
1807        old_name: *const core::ffi::c_char,
1808        new_name: *const core::ffi::c_char,
1809    ) -> core::ffi::c_int;
1810}
1811#[repr(u32)]
1812#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1813pub enum VipsToken {
1814    VIPS_TOKEN_LEFT = 1,
1815    VIPS_TOKEN_RIGHT = 2,
1816    VIPS_TOKEN_STRING = 3,
1817    VIPS_TOKEN_EQUALS = 4,
1818    VIPS_TOKEN_COMMA = 5,
1819}
1820unsafe extern "C" {
1821    pub fn vips__token_get(
1822        buffer: *const core::ffi::c_char,
1823        token: *mut VipsToken,
1824        string: *mut core::ffi::c_char,
1825        size: core::ffi::c_int,
1826    ) -> *const core::ffi::c_char;
1827}
1828unsafe extern "C" {
1829    pub fn vips_ispoweroftwo(p: core::ffi::c_int) -> core::ffi::c_int;
1830}
1831unsafe extern "C" {
1832    pub fn vips_amiMSBfirst() -> core::ffi::c_int;
1833}
1834unsafe extern "C" {
1835    pub fn vips_realpath(path: *const core::ffi::c_char) -> *mut core::ffi::c_char;
1836}
1837unsafe extern "C" {
1838    pub fn vips_strtod(str_: *const core::ffi::c_char, out: *mut f64) -> core::ffi::c_int;
1839}
1840pub type VipsObject = _VipsObject;
1841pub type VipsObjectClass = _VipsObjectClass;
1842#[repr(u32)]
1843#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
1844pub enum VipsArgumentFlags {
1845    VIPS_ARGUMENT_NONE = 0,
1846    VIPS_ARGUMENT_REQUIRED = 1,
1847    VIPS_ARGUMENT_CONSTRUCT = 2,
1848    VIPS_ARGUMENT_SET_ONCE = 4,
1849    VIPS_ARGUMENT_SET_ALWAYS = 8,
1850    VIPS_ARGUMENT_INPUT = 16,
1851    VIPS_ARGUMENT_OUTPUT = 32,
1852    VIPS_ARGUMENT_DEPRECATED = 64,
1853    VIPS_ARGUMENT_MODIFY = 128,
1854    VIPS_ARGUMENT_NON_HASHABLE = 256,
1855}
1856#[repr(C)]
1857#[derive(Debug, Copy, Clone)]
1858pub struct _VipsArgument {
1859    pub pspec: *mut GParamSpec,
1860}
1861pub type VipsArgument = _VipsArgument;
1862#[repr(C)]
1863#[derive(Debug, Copy, Clone)]
1864pub struct _VipsArgumentClass {
1865    pub parent: VipsArgument,
1866    pub object_class: *mut VipsObjectClass,
1867    pub flags: VipsArgumentFlags,
1868    pub priority: core::ffi::c_int,
1869    pub offset: guint,
1870}
1871pub type VipsArgumentClass = _VipsArgumentClass;
1872#[repr(C)]
1873#[derive(Debug, Copy, Clone)]
1874pub struct _VipsArgumentInstance {
1875    pub parent: VipsArgument,
1876    pub argument_class: *mut VipsArgumentClass,
1877    pub object: *mut VipsObject,
1878    pub assigned: gboolean,
1879    pub close_id: gulong,
1880    pub invalidate_id: gulong,
1881}
1882pub type VipsArgumentInstance = _VipsArgumentInstance;
1883pub type VipsArgumentTable = GHashTable;
1884unsafe extern "C" {
1885    pub fn vips_argument_get_id() -> core::ffi::c_int;
1886}
1887unsafe extern "C" {
1888    pub fn vips__object_set_member(
1889        object: *mut VipsObject,
1890        pspec: *mut GParamSpec,
1891        member: *mut *mut GObject,
1892        argument: *mut GObject,
1893    );
1894}
1895pub type VipsArgumentMapFn = ::core::option::Option<
1896    unsafe extern "C" fn(
1897        object: *mut VipsObject,
1898        pspec: *mut GParamSpec,
1899        argument_class: *mut VipsArgumentClass,
1900        argument_instance: *mut VipsArgumentInstance,
1901        a: *mut core::ffi::c_void,
1902        b: *mut core::ffi::c_void,
1903    ) -> *mut core::ffi::c_void,
1904>;
1905unsafe extern "C" {
1906    pub fn vips_argument_map(
1907        object: *mut VipsObject,
1908        fn_: VipsArgumentMapFn,
1909        a: *mut core::ffi::c_void,
1910        b: *mut core::ffi::c_void,
1911    ) -> *mut core::ffi::c_void;
1912}
1913unsafe extern "C" {
1914    pub fn vips_object_get_args(
1915        object: *mut VipsObject,
1916        names: *mut *mut *const core::ffi::c_char,
1917        flags: *mut *mut core::ffi::c_int,
1918        n_args: *mut core::ffi::c_int,
1919    ) -> core::ffi::c_int;
1920}
1921pub type VipsArgumentClassMapFn = ::core::option::Option<
1922    unsafe extern "C" fn(
1923        object_class: *mut VipsObjectClass,
1924        pspec: *mut GParamSpec,
1925        argument_class: *mut VipsArgumentClass,
1926        a: *mut core::ffi::c_void,
1927        b: *mut core::ffi::c_void,
1928    ) -> *mut core::ffi::c_void,
1929>;
1930unsafe extern "C" {
1931    pub fn vips_argument_class_map(
1932        object_class: *mut VipsObjectClass,
1933        fn_: VipsArgumentClassMapFn,
1934        a: *mut core::ffi::c_void,
1935        b: *mut core::ffi::c_void,
1936    ) -> *mut core::ffi::c_void;
1937}
1938unsafe extern "C" {
1939    pub fn vips_argument_class_needsstring(argument_class: *mut VipsArgumentClass) -> gboolean;
1940}
1941unsafe extern "C" {
1942    pub fn vips_object_get_argument(
1943        object: *mut VipsObject,
1944        name: *const core::ffi::c_char,
1945        pspec: *mut *mut GParamSpec,
1946        argument_class: *mut *mut VipsArgumentClass,
1947        argument_instance: *mut *mut VipsArgumentInstance,
1948    ) -> core::ffi::c_int;
1949}
1950unsafe extern "C" {
1951    pub fn vips_object_argument_isset(
1952        object: *mut VipsObject,
1953        name: *const core::ffi::c_char,
1954    ) -> gboolean;
1955}
1956unsafe extern "C" {
1957    pub fn vips_object_get_argument_flags(
1958        object: *mut VipsObject,
1959        name: *const core::ffi::c_char,
1960    ) -> VipsArgumentFlags;
1961}
1962unsafe extern "C" {
1963    pub fn vips_object_get_argument_priority(
1964        object: *mut VipsObject,
1965        name: *const core::ffi::c_char,
1966    ) -> core::ffi::c_int;
1967}
1968#[repr(C)]
1969#[derive(Debug, Copy, Clone)]
1970pub struct _VipsObject {
1971    pub parent_instance: GObject,
1972    pub constructed: gboolean,
1973    pub static_object: gboolean,
1974    pub argument_table: *mut VipsArgumentTable,
1975    pub nickname: *mut core::ffi::c_char,
1976    pub description: *mut core::ffi::c_char,
1977    pub preclose: gboolean,
1978    pub close: gboolean,
1979    pub postclose: gboolean,
1980    pub local_memory: usize,
1981}
1982#[repr(C)]
1983#[derive(Debug, Copy, Clone)]
1984pub struct _VipsObjectClass {
1985    pub parent_class: GObjectClass,
1986    pub build:
1987        ::core::option::Option<unsafe extern "C" fn(object: *mut VipsObject) -> core::ffi::c_int>,
1988    pub postbuild: ::core::option::Option<
1989        unsafe extern "C" fn(
1990            object: *mut VipsObject,
1991            data: *mut core::ffi::c_void,
1992        ) -> core::ffi::c_int,
1993    >,
1994    pub summary_class:
1995        ::core::option::Option<unsafe extern "C" fn(cls: *mut _VipsObjectClass, buf: *mut VipsBuf)>,
1996    pub summary:
1997        ::core::option::Option<unsafe extern "C" fn(object: *mut VipsObject, buf: *mut VipsBuf)>,
1998    pub dump:
1999        ::core::option::Option<unsafe extern "C" fn(object: *mut VipsObject, buf: *mut VipsBuf)>,
2000    pub sanity:
2001        ::core::option::Option<unsafe extern "C" fn(object: *mut VipsObject, buf: *mut VipsBuf)>,
2002    pub rewind: ::core::option::Option<unsafe extern "C" fn(object: *mut VipsObject)>,
2003    pub preclose: ::core::option::Option<unsafe extern "C" fn(object: *mut VipsObject)>,
2004    pub close: ::core::option::Option<unsafe extern "C" fn(object: *mut VipsObject)>,
2005    pub postclose: ::core::option::Option<unsafe extern "C" fn(object: *mut VipsObject)>,
2006    pub new_from_string: ::core::option::Option<
2007        unsafe extern "C" fn(string: *const core::ffi::c_char) -> *mut VipsObject,
2008    >,
2009    pub to_string:
2010        ::core::option::Option<unsafe extern "C" fn(object: *mut VipsObject, buf: *mut VipsBuf)>,
2011    pub output_needs_arg: gboolean,
2012    pub output_to_arg: ::core::option::Option<
2013        unsafe extern "C" fn(
2014            object: *mut VipsObject,
2015            string: *const core::ffi::c_char,
2016        ) -> core::ffi::c_int,
2017    >,
2018    pub nickname: *const core::ffi::c_char,
2019    pub description: *const core::ffi::c_char,
2020    pub argument_table: *mut VipsArgumentTable,
2021    pub argument_table_traverse: *mut GSList,
2022    pub argument_table_traverse_gtype: GType,
2023    pub deprecated: gboolean,
2024    pub _vips_reserved1: ::core::option::Option<unsafe extern "C" fn()>,
2025    pub _vips_reserved2: ::core::option::Option<unsafe extern "C" fn()>,
2026    pub _vips_reserved3: ::core::option::Option<unsafe extern "C" fn()>,
2027    pub _vips_reserved4: ::core::option::Option<unsafe extern "C" fn()>,
2028}
2029unsafe extern "C" {
2030    pub fn vips_value_is_null(psoec: *mut GParamSpec, value: *const GValue) -> gboolean;
2031}
2032unsafe extern "C" {
2033    pub fn vips_object_set_property(
2034        gobject: *mut GObject,
2035        property_id: guint,
2036        value: *const GValue,
2037        pspec: *mut GParamSpec,
2038    );
2039}
2040unsafe extern "C" {
2041    pub fn vips_object_get_property(
2042        gobject: *mut GObject,
2043        property_id: guint,
2044        value: *mut GValue,
2045        pspec: *mut GParamSpec,
2046    );
2047}
2048unsafe extern "C" {
2049    pub fn vips_object_preclose(object: *mut VipsObject);
2050}
2051unsafe extern "C" {
2052    pub fn vips_object_build(object: *mut VipsObject) -> core::ffi::c_int;
2053}
2054unsafe extern "C" {
2055    pub fn vips_object_summary_class(klass: *mut VipsObjectClass, buf: *mut VipsBuf);
2056}
2057unsafe extern "C" {
2058    pub fn vips_object_summary(object: *mut VipsObject, buf: *mut VipsBuf);
2059}
2060unsafe extern "C" {
2061    pub fn vips_object_dump(object: *mut VipsObject, buf: *mut VipsBuf);
2062}
2063unsafe extern "C" {
2064    pub fn vips_object_print_summary_class(klass: *mut VipsObjectClass);
2065}
2066unsafe extern "C" {
2067    pub fn vips_object_print_summary(object: *mut VipsObject);
2068}
2069unsafe extern "C" {
2070    pub fn vips_object_print_dump(object: *mut VipsObject);
2071}
2072unsafe extern "C" {
2073    pub fn vips_object_print_name(object: *mut VipsObject);
2074}
2075unsafe extern "C" {
2076    pub fn vips_object_sanity(object: *mut VipsObject) -> gboolean;
2077}
2078unsafe extern "C" {
2079    pub fn vips_object_get_type() -> GType;
2080}
2081unsafe extern "C" {
2082    pub fn vips_object_class_install_argument(
2083        cls: *mut VipsObjectClass,
2084        pspec: *mut GParamSpec,
2085        flags: VipsArgumentFlags,
2086        priority: core::ffi::c_int,
2087        offset: guint,
2088    );
2089}
2090unsafe extern "C" {
2091    pub fn vips_object_set_argument_from_string(
2092        object: *mut VipsObject,
2093        name: *const core::ffi::c_char,
2094        value: *const core::ffi::c_char,
2095    ) -> core::ffi::c_int;
2096}
2097unsafe extern "C" {
2098    pub fn vips_object_argument_needsstring(
2099        object: *mut VipsObject,
2100        name: *const core::ffi::c_char,
2101    ) -> gboolean;
2102}
2103unsafe extern "C" {
2104    pub fn vips_object_get_argument_to_string(
2105        object: *mut VipsObject,
2106        name: *const core::ffi::c_char,
2107        arg: *const core::ffi::c_char,
2108    ) -> core::ffi::c_int;
2109}
2110unsafe extern "C" {
2111    pub fn vips_object_set_required(
2112        object: *mut VipsObject,
2113        value: *const core::ffi::c_char,
2114    ) -> core::ffi::c_int;
2115}
2116pub type VipsObjectSetArguments = ::core::option::Option<
2117    unsafe extern "C" fn(
2118        object: *mut VipsObject,
2119        a: *mut core::ffi::c_void,
2120        b: *mut core::ffi::c_void,
2121    ) -> *mut core::ffi::c_void,
2122>;
2123unsafe extern "C" {
2124    pub fn vips_object_new(
2125        type_: GType,
2126        set: VipsObjectSetArguments,
2127        a: *mut core::ffi::c_void,
2128        b: *mut core::ffi::c_void,
2129    ) -> *mut VipsObject;
2130}
2131unsafe extern "C" {
2132    pub fn vips_object_set_valist(object: *mut VipsObject, ap: va_list) -> core::ffi::c_int;
2133}
2134unsafe extern "C" {
2135    pub fn vips_object_set(object: *mut VipsObject, ...) -> core::ffi::c_int;
2136}
2137unsafe extern "C" {
2138    pub fn vips_object_set_from_string(
2139        object: *mut VipsObject,
2140        string: *const core::ffi::c_char,
2141    ) -> core::ffi::c_int;
2142}
2143unsafe extern "C" {
2144    pub fn vips_object_new_from_string(
2145        object_class: *mut VipsObjectClass,
2146        p: *const core::ffi::c_char,
2147    ) -> *mut VipsObject;
2148}
2149unsafe extern "C" {
2150    pub fn vips_object_to_string(object: *mut VipsObject, buf: *mut VipsBuf);
2151}
2152unsafe extern "C" {
2153    pub fn vips_object_map(
2154        fn_: VipsSListMap2Fn,
2155        a: *mut core::ffi::c_void,
2156        b: *mut core::ffi::c_void,
2157    ) -> *mut core::ffi::c_void;
2158}
2159pub type VipsTypeMapFn = ::core::option::Option<
2160    unsafe extern "C" fn(type_: GType, a: *mut core::ffi::c_void) -> *mut core::ffi::c_void,
2161>;
2162pub type VipsTypeMap2Fn = ::core::option::Option<
2163    unsafe extern "C" fn(
2164        type_: GType,
2165        a: *mut core::ffi::c_void,
2166        b: *mut core::ffi::c_void,
2167    ) -> *mut core::ffi::c_void,
2168>;
2169pub type VipsClassMapFn = ::core::option::Option<
2170    unsafe extern "C" fn(
2171        cls: *mut VipsObjectClass,
2172        a: *mut core::ffi::c_void,
2173    ) -> *mut core::ffi::c_void,
2174>;
2175unsafe extern "C" {
2176    pub fn vips_type_map(
2177        base: GType,
2178        fn_: VipsTypeMap2Fn,
2179        a: *mut core::ffi::c_void,
2180        b: *mut core::ffi::c_void,
2181    ) -> *mut core::ffi::c_void;
2182}
2183unsafe extern "C" {
2184    pub fn vips_type_map_all(
2185        base: GType,
2186        fn_: VipsTypeMapFn,
2187        a: *mut core::ffi::c_void,
2188    ) -> *mut core::ffi::c_void;
2189}
2190unsafe extern "C" {
2191    pub fn vips_type_depth(type_: GType) -> core::ffi::c_int;
2192}
2193unsafe extern "C" {
2194    pub fn vips_type_find(
2195        basename: *const core::ffi::c_char,
2196        nickname: *const core::ffi::c_char,
2197    ) -> GType;
2198}
2199unsafe extern "C" {
2200    pub fn vips_nickname_find(type_: GType) -> *const core::ffi::c_char;
2201}
2202unsafe extern "C" {
2203    pub fn vips_class_map_all(
2204        type_: GType,
2205        fn_: VipsClassMapFn,
2206        a: *mut core::ffi::c_void,
2207    ) -> *mut core::ffi::c_void;
2208}
2209unsafe extern "C" {
2210    pub fn vips_class_find(
2211        basename: *const core::ffi::c_char,
2212        nickname: *const core::ffi::c_char,
2213    ) -> *const VipsObjectClass;
2214}
2215unsafe extern "C" {
2216    pub fn vips_object_local_array(
2217        parent: *mut VipsObject,
2218        n: core::ffi::c_int,
2219    ) -> *mut *mut VipsObject;
2220}
2221unsafe extern "C" {
2222    pub fn vips_object_local_cb(vobject: *mut VipsObject, gobject: *mut GObject);
2223}
2224unsafe extern "C" {
2225    pub fn vips_object_set_static(object: *mut VipsObject, static_object: gboolean);
2226}
2227unsafe extern "C" {
2228    pub fn vips_object_print_all();
2229}
2230unsafe extern "C" {
2231    pub fn vips_object_sanity_all();
2232}
2233unsafe extern "C" {
2234    pub fn vips_object_rewind(object: *mut VipsObject);
2235}
2236unsafe extern "C" {
2237    pub fn vips_object_unref_outputs(object: *mut VipsObject);
2238}
2239unsafe extern "C" {
2240    pub fn vips_object_get_description(object: *mut VipsObject) -> *const core::ffi::c_char;
2241}
2242#[repr(C)]
2243#[derive(Debug, Copy, Clone)]
2244pub struct _VipsThing {
2245    pub i: core::ffi::c_int,
2246}
2247pub type VipsThing = _VipsThing;
2248unsafe extern "C" {
2249    pub fn vips_thing_get_type() -> GType;
2250}
2251unsafe extern "C" {
2252    pub fn vips_thing_new(i: core::ffi::c_int) -> *mut VipsThing;
2253}
2254#[repr(C)]
2255#[derive(Copy, Clone)]
2256pub struct _VipsArea {
2257    pub data: *mut core::ffi::c_void,
2258    pub length: usize,
2259    pub n: core::ffi::c_int,
2260    pub count: core::ffi::c_int,
2261    pub lock: GMutex,
2262    pub free_fn: VipsCallbackFn,
2263    pub client: *mut core::ffi::c_void,
2264    pub type_: GType,
2265    pub sizeof_type: usize,
2266}
2267pub type VipsArea = _VipsArea;
2268unsafe extern "C" {
2269    pub fn vips_area_copy(area: *mut VipsArea) -> *mut VipsArea;
2270}
2271unsafe extern "C" {
2272    pub fn vips_area_free_cb(mem: *mut core::ffi::c_void, area: *mut VipsArea) -> core::ffi::c_int;
2273}
2274unsafe extern "C" {
2275    pub fn vips_area_unref(area: *mut VipsArea);
2276}
2277unsafe extern "C" {
2278    pub fn vips_area_new(free_fn: VipsCallbackFn, data: *mut core::ffi::c_void) -> *mut VipsArea;
2279}
2280unsafe extern "C" {
2281    pub fn vips_area_new_array(
2282        type_: GType,
2283        sizeof_type: usize,
2284        n: core::ffi::c_int,
2285    ) -> *mut VipsArea;
2286}
2287unsafe extern "C" {
2288    pub fn vips_area_new_array_object(n: core::ffi::c_int) -> *mut VipsArea;
2289}
2290unsafe extern "C" {
2291    pub fn vips_area_get_data(
2292        area: *mut VipsArea,
2293        length: *mut usize,
2294        n: *mut core::ffi::c_int,
2295        type_: *mut GType,
2296        sizeof_type: *mut usize,
2297    ) -> *mut core::ffi::c_void;
2298}
2299unsafe extern "C" {
2300    pub fn vips_area_get_type() -> GType;
2301}
2302unsafe extern "C" {
2303    pub fn vips_save_string_get_type() -> GType;
2304}
2305#[repr(C)]
2306#[derive(Debug, Copy, Clone)]
2307pub struct _VipsSaveString {
2308    pub s: *mut core::ffi::c_char,
2309}
2310pub type VipsSaveString = _VipsSaveString;
2311#[repr(C)]
2312#[derive(Copy, Clone)]
2313pub struct _VipsRefString {
2314    pub area: VipsArea,
2315}
2316pub type VipsRefString = _VipsRefString;
2317unsafe extern "C" {
2318    pub fn vips_ref_string_new(str_: *const core::ffi::c_char) -> *mut VipsRefString;
2319}
2320unsafe extern "C" {
2321    pub fn vips_ref_string_get(
2322        refstr: *mut VipsRefString,
2323        length: *mut usize,
2324    ) -> *const core::ffi::c_char;
2325}
2326unsafe extern "C" {
2327    pub fn vips_ref_string_get_type() -> GType;
2328}
2329#[repr(C)]
2330#[derive(Copy, Clone)]
2331pub struct _VipsBlob {
2332    pub area: VipsArea,
2333}
2334pub type VipsBlob = _VipsBlob;
2335unsafe extern "C" {
2336    pub fn vips_blob_new(
2337        free_fn: VipsCallbackFn,
2338        data: *const core::ffi::c_void,
2339        length: usize,
2340    ) -> *mut VipsBlob;
2341}
2342unsafe extern "C" {
2343    pub fn vips_blob_copy(data: *const core::ffi::c_void, length: usize) -> *mut VipsBlob;
2344}
2345unsafe extern "C" {
2346    pub fn vips_blob_get(blob: *mut VipsBlob, length: *mut usize) -> *const core::ffi::c_void;
2347}
2348unsafe extern "C" {
2349    pub fn vips_blob_set(
2350        blob: *mut VipsBlob,
2351        free_fn: VipsCallbackFn,
2352        data: *const core::ffi::c_void,
2353        length: usize,
2354    );
2355}
2356unsafe extern "C" {
2357    pub fn vips_blob_get_type() -> GType;
2358}
2359#[repr(C)]
2360#[derive(Copy, Clone)]
2361pub struct _VipsArrayDouble {
2362    pub area: VipsArea,
2363}
2364pub type VipsArrayDouble = _VipsArrayDouble;
2365unsafe extern "C" {
2366    pub fn vips_array_double_new(array: *const f64, n: core::ffi::c_int) -> *mut VipsArrayDouble;
2367}
2368unsafe extern "C" {
2369    pub fn vips_array_double_newv(n: core::ffi::c_int, ...) -> *mut VipsArrayDouble;
2370}
2371unsafe extern "C" {
2372    pub fn vips_array_double_get(array: *mut VipsArrayDouble, n: *mut core::ffi::c_int)
2373    -> *mut f64;
2374}
2375unsafe extern "C" {
2376    pub fn vips_array_double_get_type() -> GType;
2377}
2378#[repr(C)]
2379#[derive(Copy, Clone)]
2380pub struct _VipsArrayInt {
2381    pub area: VipsArea,
2382}
2383pub type VipsArrayInt = _VipsArrayInt;
2384unsafe extern "C" {
2385    pub fn vips_array_int_new(
2386        array: *const core::ffi::c_int,
2387        n: core::ffi::c_int,
2388    ) -> *mut VipsArrayInt;
2389}
2390unsafe extern "C" {
2391    pub fn vips_array_int_newv(n: core::ffi::c_int, ...) -> *mut VipsArrayInt;
2392}
2393unsafe extern "C" {
2394    pub fn vips_array_int_get(
2395        array: *mut VipsArrayInt,
2396        n: *mut core::ffi::c_int,
2397    ) -> *mut core::ffi::c_int;
2398}
2399unsafe extern "C" {
2400    pub fn vips_array_int_get_type() -> GType;
2401}
2402#[repr(C)]
2403#[derive(Copy, Clone)]
2404pub struct _VipsArrayImage {
2405    pub area: VipsArea,
2406}
2407pub type VipsArrayImage = _VipsArrayImage;
2408unsafe extern "C" {
2409    pub fn vips_array_image_get_type() -> GType;
2410}
2411unsafe extern "C" {
2412    pub fn vips_value_set_area(
2413        value: *mut GValue,
2414        free_fn: VipsCallbackFn,
2415        data: *mut core::ffi::c_void,
2416    );
2417}
2418unsafe extern "C" {
2419    pub fn vips_value_get_area(value: *const GValue, length: *mut usize) -> *mut core::ffi::c_void;
2420}
2421unsafe extern "C" {
2422    pub fn vips_value_get_save_string(value: *const GValue) -> *const core::ffi::c_char;
2423}
2424unsafe extern "C" {
2425    pub fn vips_value_set_save_string(value: *mut GValue, str_: *const core::ffi::c_char);
2426}
2427unsafe extern "C" {
2428    pub fn vips_value_set_save_stringf(value: *mut GValue, fmt: *const core::ffi::c_char, ...);
2429}
2430unsafe extern "C" {
2431    pub fn vips_value_get_ref_string(
2432        value: *const GValue,
2433        length: *mut usize,
2434    ) -> *const core::ffi::c_char;
2435}
2436unsafe extern "C" {
2437    pub fn vips_value_set_ref_string(value: *mut GValue, str_: *const core::ffi::c_char);
2438}
2439unsafe extern "C" {
2440    pub fn vips_value_get_blob(value: *const GValue, length: *mut usize) -> *mut core::ffi::c_void;
2441}
2442unsafe extern "C" {
2443    pub fn vips_value_set_blob(
2444        value: *mut GValue,
2445        free_fn: VipsCallbackFn,
2446        data: *const core::ffi::c_void,
2447        length: usize,
2448    );
2449}
2450unsafe extern "C" {
2451    pub fn vips_value_set_blob_free(
2452        value: *mut GValue,
2453        data: *mut core::ffi::c_void,
2454        length: usize,
2455    );
2456}
2457unsafe extern "C" {
2458    pub fn vips_value_set_array(
2459        value: *mut GValue,
2460        n: core::ffi::c_int,
2461        type_: GType,
2462        sizeof_type: usize,
2463    );
2464}
2465unsafe extern "C" {
2466    pub fn vips_value_get_array(
2467        value: *const GValue,
2468        n: *mut core::ffi::c_int,
2469        type_: *mut GType,
2470        sizeof_type: *mut usize,
2471    ) -> *mut core::ffi::c_void;
2472}
2473unsafe extern "C" {
2474    pub fn vips_value_get_array_double(value: *const GValue, n: *mut core::ffi::c_int) -> *mut f64;
2475}
2476unsafe extern "C" {
2477    pub fn vips_value_set_array_double(value: *mut GValue, array: *const f64, n: core::ffi::c_int);
2478}
2479unsafe extern "C" {
2480    pub fn vips_value_get_array_int(
2481        value: *const GValue,
2482        n: *mut core::ffi::c_int,
2483    ) -> *mut core::ffi::c_int;
2484}
2485unsafe extern "C" {
2486    pub fn vips_value_set_array_int(
2487        value: *mut GValue,
2488        array: *const core::ffi::c_int,
2489        n: core::ffi::c_int,
2490    );
2491}
2492unsafe extern "C" {
2493    pub fn vips_value_get_array_object(
2494        value: *const GValue,
2495        n: *mut core::ffi::c_int,
2496    ) -> *mut *mut GObject;
2497}
2498unsafe extern "C" {
2499    pub fn vips_value_set_array_object(value: *mut GValue, n: core::ffi::c_int);
2500}
2501unsafe extern "C" {
2502    pub fn vips_profile_set(profile: gboolean);
2503}
2504#[repr(C)]
2505#[derive(Debug, Copy, Clone)]
2506pub struct _VipsConnection {
2507    pub parent_object: VipsObject,
2508    pub descriptor: core::ffi::c_int,
2509    pub tracked_descriptor: core::ffi::c_int,
2510    pub close_descriptor: core::ffi::c_int,
2511    pub filename: *mut core::ffi::c_char,
2512}
2513pub type VipsConnection = _VipsConnection;
2514#[repr(C)]
2515#[derive(Debug, Copy, Clone)]
2516pub struct _VipsConnectionClass {
2517    pub parent_class: VipsObjectClass,
2518}
2519pub type VipsConnectionClass = _VipsConnectionClass;
2520unsafe extern "C" {
2521    pub fn vips_connection_get_type() -> GType;
2522}
2523unsafe extern "C" {
2524    pub fn vips_connection_filename(connection: *mut VipsConnection) -> *const core::ffi::c_char;
2525}
2526unsafe extern "C" {
2527    pub fn vips_connection_nick(connection: *mut VipsConnection) -> *const core::ffi::c_char;
2528}
2529unsafe extern "C" {
2530    pub fn vips_pipe_read_limit_set(limit: gint64);
2531}
2532#[repr(C)]
2533#[derive(Debug, Copy, Clone)]
2534pub struct _VipsSource {
2535    pub parent_object: VipsConnection,
2536    pub decode: gboolean,
2537    pub have_tested_seek: gboolean,
2538    pub is_pipe: gboolean,
2539    pub read_position: gint64,
2540    pub length: gint64,
2541    pub data: *const core::ffi::c_void,
2542    pub header_bytes: *mut GByteArray,
2543    pub sniff: *mut GByteArray,
2544    pub blob: *mut VipsBlob,
2545    pub mmap_baseaddr: *mut core::ffi::c_void,
2546    pub mmap_length: usize,
2547}
2548#[repr(C)]
2549#[derive(Debug, Copy, Clone)]
2550pub struct _VipsSourceClass {
2551    pub parent_class: VipsConnectionClass,
2552    pub read: ::core::option::Option<
2553        unsafe extern "C" fn(
2554            source: *mut VipsSource,
2555            buffer: *mut core::ffi::c_void,
2556            length: usize,
2557        ) -> gint64,
2558    >,
2559    pub seek: ::core::option::Option<
2560        unsafe extern "C" fn(
2561            source: *mut VipsSource,
2562            offset: gint64,
2563            whence: core::ffi::c_int,
2564        ) -> gint64,
2565    >,
2566}
2567pub type VipsSourceClass = _VipsSourceClass;
2568unsafe extern "C" {
2569    pub fn vips_source_get_type() -> GType;
2570}
2571unsafe extern "C" {
2572    pub fn vips_source_new_from_descriptor(descriptor: core::ffi::c_int) -> *mut VipsSource;
2573}
2574unsafe extern "C" {
2575    pub fn vips_source_new_from_file(filename: *const core::ffi::c_char) -> *mut VipsSource;
2576}
2577unsafe extern "C" {
2578    pub fn vips_source_new_from_blob(blob: *mut VipsBlob) -> *mut VipsSource;
2579}
2580unsafe extern "C" {
2581    pub fn vips_source_new_from_target(target: *mut VipsTarget) -> *mut VipsSource;
2582}
2583unsafe extern "C" {
2584    pub fn vips_source_new_from_memory(
2585        data: *const core::ffi::c_void,
2586        length: usize,
2587    ) -> *mut VipsSource;
2588}
2589unsafe extern "C" {
2590    pub fn vips_source_new_from_options(options: *const core::ffi::c_char) -> *mut VipsSource;
2591}
2592unsafe extern "C" {
2593    pub fn vips_source_minimise(source: *mut VipsSource);
2594}
2595unsafe extern "C" {
2596    pub fn vips_source_unminimise(source: *mut VipsSource) -> core::ffi::c_int;
2597}
2598unsafe extern "C" {
2599    pub fn vips_source_decode(source: *mut VipsSource) -> core::ffi::c_int;
2600}
2601unsafe extern "C" {
2602    pub fn vips_source_read(
2603        source: *mut VipsSource,
2604        buffer: *mut core::ffi::c_void,
2605        length: usize,
2606    ) -> gint64;
2607}
2608unsafe extern "C" {
2609    pub fn vips_source_is_mappable(source: *mut VipsSource) -> gboolean;
2610}
2611unsafe extern "C" {
2612    pub fn vips_source_is_file(source: *mut VipsSource) -> gboolean;
2613}
2614unsafe extern "C" {
2615    pub fn vips_source_map(source: *mut VipsSource, length: *mut usize)
2616    -> *const core::ffi::c_void;
2617}
2618unsafe extern "C" {
2619    pub fn vips_source_map_blob(source: *mut VipsSource) -> *mut VipsBlob;
2620}
2621unsafe extern "C" {
2622    pub fn vips_source_seek(
2623        source: *mut VipsSource,
2624        offset: gint64,
2625        whence: core::ffi::c_int,
2626    ) -> gint64;
2627}
2628unsafe extern "C" {
2629    pub fn vips_source_rewind(source: *mut VipsSource) -> core::ffi::c_int;
2630}
2631unsafe extern "C" {
2632    pub fn vips_source_sniff_at_most(
2633        source: *mut VipsSource,
2634        data: *mut *mut core::ffi::c_uchar,
2635        length: usize,
2636    ) -> gint64;
2637}
2638unsafe extern "C" {
2639    pub fn vips_source_sniff(source: *mut VipsSource, length: usize) -> *mut core::ffi::c_uchar;
2640}
2641unsafe extern "C" {
2642    pub fn vips_source_length(source: *mut VipsSource) -> gint64;
2643}
2644#[repr(C)]
2645#[derive(Debug, Copy, Clone)]
2646pub struct _VipsSourceCustom {
2647    pub parent_object: VipsSource,
2648}
2649pub type VipsSourceCustom = _VipsSourceCustom;
2650#[repr(C)]
2651#[derive(Debug, Copy, Clone)]
2652pub struct _VipsSourceCustomClass {
2653    pub parent_class: VipsSourceClass,
2654    pub read: ::core::option::Option<
2655        unsafe extern "C" fn(
2656            source: *mut VipsSourceCustom,
2657            buffer: *mut core::ffi::c_void,
2658            length: gint64,
2659        ) -> gint64,
2660    >,
2661    pub seek: ::core::option::Option<
2662        unsafe extern "C" fn(
2663            source: *mut VipsSourceCustom,
2664            offset: gint64,
2665            whence: core::ffi::c_int,
2666        ) -> gint64,
2667    >,
2668}
2669pub type VipsSourceCustomClass = _VipsSourceCustomClass;
2670unsafe extern "C" {
2671    pub fn vips_source_custom_get_type() -> GType;
2672}
2673unsafe extern "C" {
2674    pub fn vips_source_custom_new() -> *mut VipsSourceCustom;
2675}
2676#[repr(C)]
2677#[derive(Debug, Copy, Clone)]
2678pub struct _VipsGInputStream {
2679    pub parent_instance: GInputStream,
2680    pub source: *mut VipsSource,
2681}
2682pub type VipsGInputStream = _VipsGInputStream;
2683#[repr(C)]
2684#[derive(Debug, Copy, Clone)]
2685pub struct _VipsGInputStreamClass {
2686    pub parent_class: GInputStreamClass,
2687}
2688pub type VipsGInputStreamClass = _VipsGInputStreamClass;
2689unsafe extern "C" {
2690    pub fn vips_g_input_stream_get_type() -> GType;
2691}
2692unsafe extern "C" {
2693    pub fn vips_g_input_stream_new_from_source(source: *mut VipsSource) -> *mut GInputStream;
2694}
2695#[repr(C)]
2696#[derive(Debug, Copy, Clone)]
2697pub struct _VipsSourceGInputStream {
2698    pub parent_instance: VipsSource,
2699    pub stream: *mut GInputStream,
2700    pub seekable: *mut GSeekable,
2701    pub info: *mut GFileInfo,
2702}
2703pub type VipsSourceGInputStream = _VipsSourceGInputStream;
2704#[repr(C)]
2705#[derive(Debug, Copy, Clone)]
2706pub struct _VipsSourceGInputStreamClass {
2707    pub parent_class: VipsSourceClass,
2708}
2709pub type VipsSourceGInputStreamClass = _VipsSourceGInputStreamClass;
2710unsafe extern "C" {
2711    pub fn vips_source_g_input_stream_get_type() -> GType;
2712}
2713unsafe extern "C" {
2714    pub fn vips_source_g_input_stream_new(stream: *mut GInputStream)
2715    -> *mut VipsSourceGInputStream;
2716}
2717#[repr(C)]
2718#[derive(Debug, Copy, Clone)]
2719pub struct _VipsTarget {
2720    pub parent_object: VipsConnection,
2721    pub memory: gboolean,
2722    pub ended: gboolean,
2723    pub memory_buffer: *mut GString,
2724    pub blob: *mut VipsBlob,
2725    pub output_buffer: [core::ffi::c_uchar; 8500usize],
2726    pub write_point: core::ffi::c_int,
2727    pub position: gint64,
2728    pub delete_on_close: gboolean,
2729    pub delete_on_close_filename: *mut core::ffi::c_char,
2730}
2731#[repr(C)]
2732#[derive(Debug, Copy, Clone)]
2733pub struct _VipsTargetClass {
2734    pub parent_class: VipsConnectionClass,
2735    pub write: ::core::option::Option<
2736        unsafe extern "C" fn(
2737            target: *mut VipsTarget,
2738            data: *const core::ffi::c_void,
2739            length: usize,
2740        ) -> gint64,
2741    >,
2742    pub finish: ::core::option::Option<unsafe extern "C" fn(target: *mut VipsTarget)>,
2743    pub read: ::core::option::Option<
2744        unsafe extern "C" fn(
2745            target: *mut VipsTarget,
2746            buffer: *mut core::ffi::c_void,
2747            length: usize,
2748        ) -> gint64,
2749    >,
2750    pub seek: ::core::option::Option<
2751        unsafe extern "C" fn(
2752            target: *mut VipsTarget,
2753            offset: gint64,
2754            whence: core::ffi::c_int,
2755        ) -> gint64,
2756    >,
2757    pub end:
2758        ::core::option::Option<unsafe extern "C" fn(target: *mut VipsTarget) -> core::ffi::c_int>,
2759}
2760pub type VipsTargetClass = _VipsTargetClass;
2761unsafe extern "C" {
2762    pub fn vips_target_get_type() -> GType;
2763}
2764unsafe extern "C" {
2765    pub fn vips_target_new_to_descriptor(descriptor: core::ffi::c_int) -> *mut VipsTarget;
2766}
2767unsafe extern "C" {
2768    pub fn vips_target_new_to_file(filename: *const core::ffi::c_char) -> *mut VipsTarget;
2769}
2770unsafe extern "C" {
2771    pub fn vips_target_new_to_memory() -> *mut VipsTarget;
2772}
2773unsafe extern "C" {
2774    pub fn vips_target_new_temp(based_on: *mut VipsTarget) -> *mut VipsTarget;
2775}
2776unsafe extern "C" {
2777    pub fn vips_target_write(
2778        target: *mut VipsTarget,
2779        data: *const core::ffi::c_void,
2780        length: usize,
2781    ) -> core::ffi::c_int;
2782}
2783unsafe extern "C" {
2784    pub fn vips_target_read(
2785        target: *mut VipsTarget,
2786        buffer: *mut core::ffi::c_void,
2787        length: usize,
2788    ) -> gint64;
2789}
2790unsafe extern "C" {
2791    pub fn vips_target_seek(
2792        target: *mut VipsTarget,
2793        offset: gint64,
2794        whence: core::ffi::c_int,
2795    ) -> gint64;
2796}
2797unsafe extern "C" {
2798    pub fn vips_target_end(target: *mut VipsTarget) -> core::ffi::c_int;
2799}
2800unsafe extern "C" {
2801    pub fn vips_target_steal(
2802        target: *mut VipsTarget,
2803        length: *mut usize,
2804    ) -> *mut core::ffi::c_uchar;
2805}
2806unsafe extern "C" {
2807    pub fn vips_target_steal_text(target: *mut VipsTarget) -> *mut core::ffi::c_char;
2808}
2809unsafe extern "C" {
2810    pub fn vips_target_putc(target: *mut VipsTarget, ch: core::ffi::c_int) -> core::ffi::c_int;
2811}
2812unsafe extern "C" {
2813    pub fn vips_target_writes(
2814        target: *mut VipsTarget,
2815        str_: *const core::ffi::c_char,
2816    ) -> core::ffi::c_int;
2817}
2818unsafe extern "C" {
2819    pub fn vips_target_writef(
2820        target: *mut VipsTarget,
2821        fmt: *const core::ffi::c_char,
2822        ...
2823    ) -> core::ffi::c_int;
2824}
2825unsafe extern "C" {
2826    pub fn vips_target_write_amp(
2827        target: *mut VipsTarget,
2828        str_: *const core::ffi::c_char,
2829    ) -> core::ffi::c_int;
2830}
2831#[repr(C)]
2832#[derive(Debug, Copy, Clone)]
2833pub struct _VipsTargetCustom {
2834    pub parent_object: VipsTarget,
2835}
2836pub type VipsTargetCustom = _VipsTargetCustom;
2837#[repr(C)]
2838#[derive(Debug, Copy, Clone)]
2839pub struct _VipsTargetCustomClass {
2840    pub parent_class: VipsTargetClass,
2841    pub write: ::core::option::Option<
2842        unsafe extern "C" fn(
2843            target: *mut VipsTargetCustom,
2844            data: *const core::ffi::c_void,
2845            length: gint64,
2846        ) -> gint64,
2847    >,
2848    pub finish: ::core::option::Option<unsafe extern "C" fn(target: *mut VipsTargetCustom)>,
2849    pub read: ::core::option::Option<
2850        unsafe extern "C" fn(
2851            target: *mut VipsTargetCustom,
2852            buffer: *mut core::ffi::c_void,
2853            length: gint64,
2854        ) -> gint64,
2855    >,
2856    pub seek: ::core::option::Option<
2857        unsafe extern "C" fn(
2858            target: *mut VipsTargetCustom,
2859            offset: gint64,
2860            whence: core::ffi::c_int,
2861        ) -> gint64,
2862    >,
2863    pub end: ::core::option::Option<
2864        unsafe extern "C" fn(target: *mut VipsTargetCustom) -> core::ffi::c_int,
2865    >,
2866}
2867pub type VipsTargetCustomClass = _VipsTargetCustomClass;
2868unsafe extern "C" {
2869    pub fn vips_target_custom_get_type() -> GType;
2870}
2871unsafe extern "C" {
2872    pub fn vips_target_custom_new() -> *mut VipsTargetCustom;
2873}
2874#[repr(C)]
2875#[derive(Debug, Copy, Clone)]
2876pub struct _VipsSbuf {
2877    pub parent_object: VipsObject,
2878    pub source: *mut VipsSource,
2879    pub input_buffer: [core::ffi::c_uchar; 4097usize],
2880    pub chars_in_buffer: core::ffi::c_int,
2881    pub read_point: core::ffi::c_int,
2882    pub line: [core::ffi::c_uchar; 4097usize],
2883}
2884pub type VipsSbuf = _VipsSbuf;
2885#[repr(C)]
2886#[derive(Debug, Copy, Clone)]
2887pub struct _VipsSbufClass {
2888    pub parent_class: VipsObjectClass,
2889}
2890pub type VipsSbufClass = _VipsSbufClass;
2891unsafe extern "C" {
2892    pub fn vips_sbuf_get_type() -> GType;
2893}
2894unsafe extern "C" {
2895    pub fn vips_sbuf_new_from_source(source: *mut VipsSource) -> *mut VipsSbuf;
2896}
2897unsafe extern "C" {
2898    pub fn vips_sbuf_unbuffer(sbuf: *mut VipsSbuf);
2899}
2900unsafe extern "C" {
2901    pub fn vips_sbuf_getc(sbuf: *mut VipsSbuf) -> core::ffi::c_int;
2902}
2903unsafe extern "C" {
2904    pub fn vips_sbuf_ungetc(sbuf: *mut VipsSbuf);
2905}
2906unsafe extern "C" {
2907    pub fn vips_sbuf_require(sbuf: *mut VipsSbuf, require: core::ffi::c_int) -> core::ffi::c_int;
2908}
2909unsafe extern "C" {
2910    pub fn vips_sbuf_get_line(sbuf: *mut VipsSbuf) -> *const core::ffi::c_char;
2911}
2912unsafe extern "C" {
2913    pub fn vips_sbuf_get_line_copy(sbuf: *mut VipsSbuf) -> *mut core::ffi::c_char;
2914}
2915unsafe extern "C" {
2916    pub fn vips_sbuf_get_non_whitespace(sbuf: *mut VipsSbuf) -> *const core::ffi::c_char;
2917}
2918unsafe extern "C" {
2919    pub fn vips_sbuf_skip_whitespace(sbuf: *mut VipsSbuf) -> core::ffi::c_int;
2920}
2921#[repr(C)]
2922#[derive(Debug, Copy, Clone)]
2923pub struct _VipsRect {
2924    pub left: core::ffi::c_int,
2925    pub top: core::ffi::c_int,
2926    pub width: core::ffi::c_int,
2927    pub height: core::ffi::c_int,
2928}
2929pub type VipsRect = _VipsRect;
2930unsafe extern "C" {
2931    pub fn vips_rect_isempty(r: *const VipsRect) -> gboolean;
2932}
2933unsafe extern "C" {
2934    pub fn vips_rect_includespoint(
2935        r: *const VipsRect,
2936        x: core::ffi::c_int,
2937        y: core::ffi::c_int,
2938    ) -> gboolean;
2939}
2940unsafe extern "C" {
2941    pub fn vips_rect_includesrect(r1: *const VipsRect, r2: *const VipsRect) -> gboolean;
2942}
2943unsafe extern "C" {
2944    pub fn vips_rect_equalsrect(r1: *const VipsRect, r2: *const VipsRect) -> gboolean;
2945}
2946unsafe extern "C" {
2947    pub fn vips_rect_overlapsrect(r1: *const VipsRect, r2: *const VipsRect) -> gboolean;
2948}
2949unsafe extern "C" {
2950    pub fn vips_rect_marginadjust(r: *mut VipsRect, n: core::ffi::c_int);
2951}
2952unsafe extern "C" {
2953    pub fn vips_rect_intersectrect(r1: *const VipsRect, r2: *const VipsRect, out: *mut VipsRect);
2954}
2955unsafe extern "C" {
2956    pub fn vips_rect_unionrect(r1: *const VipsRect, r2: *const VipsRect, out: *mut VipsRect);
2957}
2958unsafe extern "C" {
2959    pub fn vips_rect_dup(r: *const VipsRect) -> *mut VipsRect;
2960}
2961unsafe extern "C" {
2962    pub fn vips_rect_normalise(r: *mut VipsRect);
2963}
2964#[repr(C)]
2965#[derive(Debug, Copy, Clone)]
2966pub struct VipsWindow {
2967    pub ref_count: core::ffi::c_int,
2968    pub im: *mut _VipsImage,
2969    pub top: core::ffi::c_int,
2970    pub height: core::ffi::c_int,
2971    pub data: *mut VipsPel,
2972    pub baseaddr: *mut core::ffi::c_void,
2973    pub length: usize,
2974}
2975unsafe extern "C" {
2976    pub fn vips_window_unref(window: *mut VipsWindow) -> core::ffi::c_int;
2977}
2978unsafe extern "C" {
2979    pub fn vips_window_print(window: *mut VipsWindow);
2980}
2981#[repr(C)]
2982#[derive(Debug, Copy, Clone)]
2983pub struct VipsBufferThread {
2984    pub hash: *mut GHashTable,
2985    pub thread: *mut GThread,
2986}
2987#[repr(C)]
2988#[derive(Debug, Copy, Clone)]
2989pub struct _VipsBufferCache {
2990    pub buffers: *mut GSList,
2991    pub thread: *mut GThread,
2992    pub im: *mut _VipsImage,
2993    pub buffer_thread: *mut VipsBufferThread,
2994    pub reserve: *mut GSList,
2995    pub n_reserve: core::ffi::c_int,
2996}
2997pub type VipsBufferCache = _VipsBufferCache;
2998#[repr(C)]
2999#[derive(Debug, Copy, Clone)]
3000pub struct _VipsBuffer {
3001    pub ref_count: core::ffi::c_int,
3002    pub im: *mut _VipsImage,
3003    pub area: VipsRect,
3004    pub done: gboolean,
3005    pub cache: *mut VipsBufferCache,
3006    pub buf: *mut VipsPel,
3007    pub bsize: usize,
3008}
3009pub type VipsBuffer = _VipsBuffer;
3010unsafe extern "C" {
3011    pub fn vips_buffer_dump_all();
3012}
3013unsafe extern "C" {
3014    pub fn vips_buffer_done(buffer: *mut VipsBuffer);
3015}
3016unsafe extern "C" {
3017    pub fn vips_buffer_undone(buffer: *mut VipsBuffer);
3018}
3019unsafe extern "C" {
3020    pub fn vips_buffer_unref(buffer: *mut VipsBuffer);
3021}
3022unsafe extern "C" {
3023    pub fn vips_buffer_new(im: *mut _VipsImage, area: *mut VipsRect) -> *mut VipsBuffer;
3024}
3025unsafe extern "C" {
3026    pub fn vips_buffer_ref(im: *mut _VipsImage, area: *mut VipsRect) -> *mut VipsBuffer;
3027}
3028unsafe extern "C" {
3029    pub fn vips_buffer_unref_ref(
3030        buffer: *mut VipsBuffer,
3031        im: *mut _VipsImage,
3032        area: *mut VipsRect,
3033    ) -> *mut VipsBuffer;
3034}
3035unsafe extern "C" {
3036    pub fn vips_buffer_print(buffer: *mut VipsBuffer);
3037}
3038unsafe extern "C" {
3039    pub fn vips__render_shutdown();
3040}
3041#[repr(u32)]
3042#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3043pub enum _RegionType {
3044    VIPS_REGION_NONE = 0,
3045    VIPS_REGION_BUFFER = 1,
3046    VIPS_REGION_OTHER_REGION = 2,
3047    VIPS_REGION_OTHER_IMAGE = 3,
3048    VIPS_REGION_WINDOW = 4,
3049}
3050pub use self::_RegionType as RegionType;
3051unsafe extern "C" {
3052    pub fn vips__region_take_ownership(reg: *mut _VipsRegion);
3053}
3054unsafe extern "C" {
3055    pub fn vips__region_check_ownership(reg: *mut _VipsRegion);
3056}
3057unsafe extern "C" {
3058    pub fn vips__region_no_ownership(reg: *mut _VipsRegion);
3059}
3060pub type VipsRegionFillFn = ::core::option::Option<
3061    unsafe extern "C" fn(arg1: *mut _VipsRegion, arg2: *mut core::ffi::c_void) -> core::ffi::c_int,
3062>;
3063unsafe extern "C" {
3064    pub fn vips_region_fill(
3065        reg: *mut _VipsRegion,
3066        r: *const VipsRect,
3067        fn_: VipsRegionFillFn,
3068        a: *mut core::ffi::c_void,
3069    ) -> core::ffi::c_int;
3070}
3071unsafe extern "C" {
3072    pub fn vips__image_wio_output(image: *mut _VipsImage) -> core::ffi::c_int;
3073}
3074unsafe extern "C" {
3075    pub fn vips__image_pio_output(image: *mut _VipsImage) -> core::ffi::c_int;
3076}
3077unsafe extern "C" {
3078    pub fn vips__argument_get_instance(
3079        argument_class: *mut VipsArgumentClass,
3080        object: *mut VipsObject,
3081    ) -> *mut VipsArgumentInstance;
3082}
3083unsafe extern "C" {
3084    pub fn vips__argument_table_lookup(
3085        table: *mut VipsArgumentTable,
3086        pspec: *mut GParamSpec,
3087    ) -> *mut VipsArgument;
3088}
3089unsafe extern "C" {
3090    pub fn vips__demand_hint_array(
3091        image: *mut _VipsImage,
3092        hint: core::ffi::c_int,
3093        in_: *mut *mut _VipsImage,
3094    );
3095}
3096unsafe extern "C" {
3097    pub fn vips__image_copy_fields_array(
3098        out: *mut _VipsImage,
3099        in_: *mut *mut _VipsImage,
3100    ) -> core::ffi::c_int;
3101}
3102unsafe extern "C" {
3103    pub fn vips__region_count_pixels(region: *mut _VipsRegion, nickname: *const core::ffi::c_char);
3104}
3105unsafe extern "C" {
3106    pub fn vips_region_dump_all();
3107}
3108unsafe extern "C" {
3109    pub fn vips_region_prepare_many(
3110        reg: *mut *mut _VipsRegion,
3111        r: *const VipsRect,
3112    ) -> core::ffi::c_int;
3113}
3114unsafe extern "C" {
3115    pub fn vips__view_image(image: *mut _VipsImage) -> core::ffi::c_int;
3116}
3117unsafe extern "C" {
3118    pub fn vips__thread_gate_start(gate_name: *const core::ffi::c_char);
3119}
3120unsafe extern "C" {
3121    pub fn vips__thread_gate_stop(gate_name: *const core::ffi::c_char);
3122}
3123unsafe extern "C" {
3124    pub fn vips__thread_malloc_free(size: gint64);
3125}
3126unsafe extern "C" {
3127    pub fn vips__file_open_read(
3128        filename: *const core::ffi::c_char,
3129        fallback_dir: *const core::ffi::c_char,
3130        text_mode: gboolean,
3131    ) -> *mut FILE;
3132}
3133unsafe extern "C" {
3134    pub fn vips__file_open_write(
3135        filename: *const core::ffi::c_char,
3136        text_mode: gboolean,
3137    ) -> *mut FILE;
3138}
3139unsafe extern "C" {
3140    pub fn vips__write(
3141        fd: core::ffi::c_int,
3142        buf: *const core::ffi::c_void,
3143        count: usize,
3144    ) -> core::ffi::c_int;
3145}
3146unsafe extern "C" {
3147    pub fn vips__open(
3148        filename: *const core::ffi::c_char,
3149        flags: core::ffi::c_int,
3150        mode: core::ffi::c_int,
3151    ) -> core::ffi::c_int;
3152}
3153unsafe extern "C" {
3154    pub fn vips__file_read(
3155        fp: *mut FILE,
3156        name: *const core::ffi::c_char,
3157        length_out: *mut usize,
3158    ) -> *mut core::ffi::c_char;
3159}
3160unsafe extern "C" {
3161    pub fn vips__get_bytes(
3162        filename: *const core::ffi::c_char,
3163        buf: *mut core::ffi::c_uchar,
3164        len: gint64,
3165    ) -> gint64;
3166}
3167unsafe extern "C" {
3168    pub fn vips__seek(fd: core::ffi::c_int, pos: gint64, whence: core::ffi::c_int) -> gint64;
3169}
3170unsafe extern "C" {
3171    pub fn vips__filename_split8(
3172        name: *const core::ffi::c_char,
3173        filename: *mut core::ffi::c_char,
3174        option_string: *mut core::ffi::c_char,
3175    );
3176}
3177unsafe extern "C" {
3178    pub fn vips__temp_name(format: *const core::ffi::c_char) -> *mut core::ffi::c_char;
3179}
3180unsafe extern "C" {
3181    pub fn vips__win32_terminate(ret: core::ffi::c_int);
3182}
3183#[repr(u32)]
3184#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3185pub enum VipsRegionShrink {
3186    VIPS_REGION_SHRINK_MEAN = 0,
3187    VIPS_REGION_SHRINK_MEDIAN = 1,
3188    VIPS_REGION_SHRINK_MODE = 2,
3189    VIPS_REGION_SHRINK_MAX = 3,
3190    VIPS_REGION_SHRINK_MIN = 4,
3191    VIPS_REGION_SHRINK_NEAREST = 5,
3192    VIPS_REGION_SHRINK_LAST = 6,
3193}
3194#[repr(C)]
3195#[derive(Debug, Copy, Clone)]
3196pub struct _VipsRegion {
3197    pub parent_object: VipsObject,
3198    pub im: *mut VipsImage,
3199    pub valid: VipsRect,
3200    pub type_: RegionType,
3201    pub data: *mut VipsPel,
3202    pub bpl: core::ffi::c_int,
3203    pub seq: *mut core::ffi::c_void,
3204    pub thread: *mut GThread,
3205    pub window: *mut VipsWindow,
3206    pub buffer: *mut VipsBuffer,
3207    pub invalid: gboolean,
3208}
3209#[repr(C)]
3210#[derive(Debug, Copy, Clone)]
3211pub struct _VipsRegionClass {
3212    pub parent_class: VipsObjectClass,
3213}
3214pub type VipsRegionClass = _VipsRegionClass;
3215unsafe extern "C" {
3216    pub fn vips_region_get_type() -> GType;
3217}
3218unsafe extern "C" {
3219    pub fn vips_region_new(image: *mut VipsImage) -> *mut VipsRegion;
3220}
3221unsafe extern "C" {
3222    pub fn vips_region_buffer(reg: *mut VipsRegion, r: *const VipsRect) -> core::ffi::c_int;
3223}
3224unsafe extern "C" {
3225    pub fn vips_region_image(reg: *mut VipsRegion, r: *const VipsRect) -> core::ffi::c_int;
3226}
3227unsafe extern "C" {
3228    pub fn vips_region_region(
3229        reg: *mut VipsRegion,
3230        dest: *mut VipsRegion,
3231        r: *const VipsRect,
3232        x: core::ffi::c_int,
3233        y: core::ffi::c_int,
3234    ) -> core::ffi::c_int;
3235}
3236unsafe extern "C" {
3237    pub fn vips_region_equalsregion(
3238        reg1: *mut VipsRegion,
3239        reg2: *mut VipsRegion,
3240    ) -> core::ffi::c_int;
3241}
3242unsafe extern "C" {
3243    pub fn vips_region_position(
3244        reg: *mut VipsRegion,
3245        x: core::ffi::c_int,
3246        y: core::ffi::c_int,
3247    ) -> core::ffi::c_int;
3248}
3249unsafe extern "C" {
3250    pub fn vips_region_paint(reg: *mut VipsRegion, r: *const VipsRect, value: core::ffi::c_int);
3251}
3252unsafe extern "C" {
3253    pub fn vips_region_paint_pel(reg: *mut VipsRegion, r: *const VipsRect, ink: *const VipsPel);
3254}
3255unsafe extern "C" {
3256    pub fn vips_region_black(reg: *mut VipsRegion);
3257}
3258unsafe extern "C" {
3259    pub fn vips_region_copy(
3260        reg: *mut VipsRegion,
3261        dest: *mut VipsRegion,
3262        r: *const VipsRect,
3263        x: core::ffi::c_int,
3264        y: core::ffi::c_int,
3265    );
3266}
3267unsafe extern "C" {
3268    pub fn vips_region_shrink_method(
3269        from: *mut VipsRegion,
3270        to: *mut VipsRegion,
3271        target: *const VipsRect,
3272        method: VipsRegionShrink,
3273    ) -> core::ffi::c_int;
3274}
3275unsafe extern "C" {
3276    pub fn vips_region_shrink(
3277        from: *mut VipsRegion,
3278        to: *mut VipsRegion,
3279        target: *const VipsRect,
3280    ) -> core::ffi::c_int;
3281}
3282unsafe extern "C" {
3283    pub fn vips_region_prepare(reg: *mut VipsRegion, r: *const VipsRect) -> core::ffi::c_int;
3284}
3285unsafe extern "C" {
3286    pub fn vips_region_prepare_to(
3287        reg: *mut VipsRegion,
3288        dest: *mut VipsRegion,
3289        r: *const VipsRect,
3290        x: core::ffi::c_int,
3291        y: core::ffi::c_int,
3292    ) -> core::ffi::c_int;
3293}
3294unsafe extern "C" {
3295    pub fn vips_region_fetch(
3296        region: *mut VipsRegion,
3297        left: core::ffi::c_int,
3298        top: core::ffi::c_int,
3299        width: core::ffi::c_int,
3300        height: core::ffi::c_int,
3301        len: *mut usize,
3302    ) -> *mut VipsPel;
3303}
3304unsafe extern "C" {
3305    pub fn vips_region_width(region: *mut VipsRegion) -> core::ffi::c_int;
3306}
3307unsafe extern "C" {
3308    pub fn vips_region_height(region: *mut VipsRegion) -> core::ffi::c_int;
3309}
3310unsafe extern "C" {
3311    pub fn vips_region_invalidate(reg: *mut VipsRegion);
3312}
3313#[repr(i32)]
3314#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3315pub enum VipsDemandStyle {
3316    VIPS_DEMAND_STYLE_ERROR = -1,
3317    VIPS_DEMAND_STYLE_SMALLTILE = 0,
3318    VIPS_DEMAND_STYLE_FATSTRIP = 1,
3319    VIPS_DEMAND_STYLE_THINSTRIP = 2,
3320    VIPS_DEMAND_STYLE_ANY = 3,
3321}
3322#[repr(i32)]
3323#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3324pub enum VipsImageType {
3325    VIPS_IMAGE_ERROR = -1,
3326    VIPS_IMAGE_NONE = 0,
3327    VIPS_IMAGE_SETBUF = 1,
3328    VIPS_IMAGE_SETBUF_FOREIGN = 2,
3329    VIPS_IMAGE_OPENIN = 3,
3330    VIPS_IMAGE_MMAPIN = 4,
3331    VIPS_IMAGE_MMAPINRW = 5,
3332    VIPS_IMAGE_OPENOUT = 6,
3333    VIPS_IMAGE_PARTIAL = 7,
3334}
3335#[repr(i32)]
3336#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3337pub enum VipsInterpretation {
3338    VIPS_INTERPRETATION_ERROR = -1,
3339    VIPS_INTERPRETATION_MULTIBAND = 0,
3340    VIPS_INTERPRETATION_B_W = 1,
3341    VIPS_INTERPRETATION_HISTOGRAM = 10,
3342    VIPS_INTERPRETATION_XYZ = 12,
3343    VIPS_INTERPRETATION_LAB = 13,
3344    VIPS_INTERPRETATION_CMYK = 15,
3345    VIPS_INTERPRETATION_LABQ = 16,
3346    VIPS_INTERPRETATION_RGB = 17,
3347    VIPS_INTERPRETATION_CMC = 18,
3348    VIPS_INTERPRETATION_LCH = 19,
3349    VIPS_INTERPRETATION_LABS = 21,
3350    VIPS_INTERPRETATION_sRGB = 22,
3351    VIPS_INTERPRETATION_YXY = 23,
3352    VIPS_INTERPRETATION_FOURIER = 24,
3353    VIPS_INTERPRETATION_RGB16 = 25,
3354    VIPS_INTERPRETATION_GREY16 = 26,
3355    VIPS_INTERPRETATION_MATRIX = 27,
3356    VIPS_INTERPRETATION_scRGB = 28,
3357    VIPS_INTERPRETATION_HSV = 29,
3358    VIPS_INTERPRETATION_OKLAB = 30,
3359    VIPS_INTERPRETATION_OKLCH = 31,
3360    VIPS_INTERPRETATION_LAST = 32,
3361}
3362#[repr(i32)]
3363#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3364pub enum VipsBandFormat {
3365    VIPS_FORMAT_NOTSET = -1,
3366    VIPS_FORMAT_UCHAR = 0,
3367    VIPS_FORMAT_CHAR = 1,
3368    VIPS_FORMAT_USHORT = 2,
3369    VIPS_FORMAT_SHORT = 3,
3370    VIPS_FORMAT_UINT = 4,
3371    VIPS_FORMAT_INT = 5,
3372    VIPS_FORMAT_FLOAT = 6,
3373    VIPS_FORMAT_COMPLEX = 7,
3374    VIPS_FORMAT_DOUBLE = 8,
3375    VIPS_FORMAT_DPCOMPLEX = 9,
3376    VIPS_FORMAT_LAST = 10,
3377}
3378#[repr(i32)]
3379#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3380pub enum VipsCoding {
3381    VIPS_CODING_ERROR = -1,
3382    VIPS_CODING_NONE = 0,
3383    VIPS_CODING_LABQ = 2,
3384    VIPS_CODING_RAD = 6,
3385    VIPS_CODING_LAST = 7,
3386}
3387#[repr(u32)]
3388#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
3389pub enum VipsAccess {
3390    VIPS_ACCESS_RANDOM = 0,
3391    VIPS_ACCESS_SEQUENTIAL = 1,
3392    VIPS_ACCESS_SEQUENTIAL_UNBUFFERED = 2,
3393    VIPS_ACCESS_LAST = 3,
3394}
3395pub type VipsStartFn = ::core::option::Option<
3396    unsafe extern "C" fn(
3397        out: *mut VipsImage,
3398        a: *mut core::ffi::c_void,
3399        b: *mut core::ffi::c_void,
3400    ) -> *mut core::ffi::c_void,
3401>;
3402pub type VipsGenerateFn = ::core::option::Option<
3403    unsafe extern "C" fn(
3404        out: *mut VipsRegion,
3405        seq: *mut core::ffi::c_void,
3406        a: *mut core::ffi::c_void,
3407        b: *mut core::ffi::c_void,
3408        stop: *mut gboolean,
3409    ) -> core::ffi::c_int,
3410>;
3411pub type VipsStopFn = ::core::option::Option<
3412    unsafe extern "C" fn(
3413        seq: *mut core::ffi::c_void,
3414        a: *mut core::ffi::c_void,
3415        b: *mut core::ffi::c_void,
3416    ) -> core::ffi::c_int,
3417>;
3418#[repr(C)]
3419#[derive(Debug, Copy, Clone)]
3420pub struct _VipsProgress {
3421    pub im: *mut VipsImage,
3422    pub run: core::ffi::c_int,
3423    pub eta: core::ffi::c_int,
3424    pub tpels: gint64,
3425    pub npels: gint64,
3426    pub percent: core::ffi::c_int,
3427    pub start: *mut GTimer,
3428}
3429pub type VipsProgress = _VipsProgress;
3430#[repr(C)]
3431#[derive(Copy, Clone)]
3432pub struct _VipsImage {
3433    pub parent_instance: VipsObject,
3434    pub Xsize: core::ffi::c_int,
3435    pub Ysize: core::ffi::c_int,
3436    pub Bands: core::ffi::c_int,
3437    pub BandFmt: VipsBandFormat,
3438    pub Coding: VipsCoding,
3439    pub Type: VipsInterpretation,
3440    pub Xres: f64,
3441    pub Yres: f64,
3442    pub Xoffset: core::ffi::c_int,
3443    pub Yoffset: core::ffi::c_int,
3444    pub Length: core::ffi::c_int,
3445    pub Compression: core::ffi::c_short,
3446    pub Level: core::ffi::c_short,
3447    pub Bbits: core::ffi::c_int,
3448    pub time: *mut VipsProgress,
3449    pub Hist: *mut core::ffi::c_char,
3450    pub filename: *mut core::ffi::c_char,
3451    pub data: *mut VipsPel,
3452    pub kill: core::ffi::c_int,
3453    pub Xres_float: f32,
3454    pub Yres_float: f32,
3455    pub mode: *mut core::ffi::c_char,
3456    pub dtype: VipsImageType,
3457    pub fd: core::ffi::c_int,
3458    pub baseaddr: *mut core::ffi::c_void,
3459    pub length: usize,
3460    pub magic: guint32,
3461    pub start_fn: VipsStartFn,
3462    pub generate_fn: VipsGenerateFn,
3463    pub stop_fn: VipsStopFn,
3464    pub client1: *mut core::ffi::c_void,
3465    pub client2: *mut core::ffi::c_void,
3466    pub sslock: GMutex,
3467    pub regions: *mut GSList,
3468    pub dhint: VipsDemandStyle,
3469    pub meta: *mut GHashTable,
3470    pub meta_traverse: *mut GSList,
3471    pub sizeof_header: gint64,
3472    pub windows: *mut GSList,
3473    pub upstream: *mut GSList,
3474    pub downstream: *mut GSList,
3475    pub serial: core::ffi::c_int,
3476    pub history_list: *mut GSList,
3477    pub progress_signal: *mut VipsImage,
3478    pub file_length: gint64,
3479    pub hint_set: gboolean,
3480    pub delete_on_close: gboolean,
3481    pub delete_on_close_filename: *mut core::ffi::c_char,
3482}
3483#[repr(C)]
3484#[derive(Debug, Copy, Clone)]
3485pub struct _VipsImageClass {
3486    pub parent_class: VipsObjectClass,
3487    pub preeval: ::core::option::Option<
3488        unsafe extern "C" fn(
3489            image: *mut VipsImage,
3490            progress: *mut VipsProgress,
3491            data: *mut core::ffi::c_void,
3492        ),
3493    >,
3494    pub eval: ::core::option::Option<
3495        unsafe extern "C" fn(
3496            image: *mut VipsImage,
3497            progress: *mut VipsProgress,
3498            data: *mut core::ffi::c_void,
3499        ),
3500    >,
3501    pub posteval: ::core::option::Option<
3502        unsafe extern "C" fn(
3503            image: *mut VipsImage,
3504            progress: *mut VipsProgress,
3505            data: *mut core::ffi::c_void,
3506        ),
3507    >,
3508    pub written: ::core::option::Option<
3509        unsafe extern "C" fn(
3510            image: *mut VipsImage,
3511            result: *mut core::ffi::c_int,
3512            data: *mut core::ffi::c_void,
3513        ),
3514    >,
3515    pub invalidate: ::core::option::Option<
3516        unsafe extern "C" fn(image: *mut VipsImage, data: *mut core::ffi::c_void),
3517    >,
3518    pub minimise: ::core::option::Option<
3519        unsafe extern "C" fn(image: *mut VipsImage, data: *mut core::ffi::c_void),
3520    >,
3521}
3522pub type VipsImageClass = _VipsImageClass;
3523unsafe extern "C" {
3524    pub fn vips_image_get_type() -> GType;
3525}
3526unsafe extern "C" {
3527    pub fn vips_progress_set(progress: gboolean);
3528}
3529unsafe extern "C" {
3530    pub fn vips_image_invalidate_all(image: *mut VipsImage);
3531}
3532unsafe extern "C" {
3533    pub fn vips_image_minimise_all(image: *mut VipsImage);
3534}
3535unsafe extern "C" {
3536    pub fn vips_image_is_sequential(image: *mut VipsImage) -> gboolean;
3537}
3538unsafe extern "C" {
3539    pub fn vips_image_preeval(image: *mut VipsImage);
3540}
3541unsafe extern "C" {
3542    pub fn vips_image_eval(image: *mut VipsImage, processed: guint64);
3543}
3544unsafe extern "C" {
3545    pub fn vips_image_posteval(image: *mut VipsImage);
3546}
3547unsafe extern "C" {
3548    pub fn vips_image_set_progress(image: *mut VipsImage, progress: gboolean);
3549}
3550unsafe extern "C" {
3551    pub fn vips_image_iskilled(image: *mut VipsImage) -> gboolean;
3552}
3553unsafe extern "C" {
3554    pub fn vips_image_set_kill(image: *mut VipsImage, kill: gboolean);
3555}
3556unsafe extern "C" {
3557    pub fn vips_filename_get_filename(
3558        vips_filename: *const core::ffi::c_char,
3559    ) -> *mut core::ffi::c_char;
3560}
3561unsafe extern "C" {
3562    pub fn vips_filename_get_options(
3563        vips_filename: *const core::ffi::c_char,
3564    ) -> *mut core::ffi::c_char;
3565}
3566unsafe extern "C" {
3567    pub fn vips_image_new() -> *mut VipsImage;
3568}
3569unsafe extern "C" {
3570    pub fn vips_image_new_memory() -> *mut VipsImage;
3571}
3572unsafe extern "C" {
3573    pub fn vips_image_memory() -> *mut VipsImage;
3574}
3575unsafe extern "C" {
3576    pub fn vips_image_new_from_file(name: *const core::ffi::c_char, ...) -> *mut VipsImage;
3577}
3578unsafe extern "C" {
3579    pub fn vips_image_new_from_file_RW(filename: *const core::ffi::c_char) -> *mut VipsImage;
3580}
3581unsafe extern "C" {
3582    pub fn vips_image_new_from_file_raw(
3583        filename: *const core::ffi::c_char,
3584        xsize: core::ffi::c_int,
3585        ysize: core::ffi::c_int,
3586        bands: core::ffi::c_int,
3587        offset: guint64,
3588    ) -> *mut VipsImage;
3589}
3590unsafe extern "C" {
3591    pub fn vips_image_new_from_memory(
3592        data: *const core::ffi::c_void,
3593        size: usize,
3594        width: core::ffi::c_int,
3595        height: core::ffi::c_int,
3596        bands: core::ffi::c_int,
3597        format: VipsBandFormat,
3598    ) -> *mut VipsImage;
3599}
3600unsafe extern "C" {
3601    pub fn vips_image_new_from_memory_copy(
3602        data: *const core::ffi::c_void,
3603        size: usize,
3604        width: core::ffi::c_int,
3605        height: core::ffi::c_int,
3606        bands: core::ffi::c_int,
3607        format: VipsBandFormat,
3608    ) -> *mut VipsImage;
3609}
3610unsafe extern "C" {
3611    pub fn vips_image_new_from_buffer(
3612        buf: *const core::ffi::c_void,
3613        len: usize,
3614        option_string: *const core::ffi::c_char,
3615        ...
3616    ) -> *mut VipsImage;
3617}
3618unsafe extern "C" {
3619    pub fn vips_image_new_from_source(
3620        source: *mut VipsSource,
3621        option_string: *const core::ffi::c_char,
3622        ...
3623    ) -> *mut VipsImage;
3624}
3625unsafe extern "C" {
3626    pub fn vips_image_new_matrix(
3627        width: core::ffi::c_int,
3628        height: core::ffi::c_int,
3629    ) -> *mut VipsImage;
3630}
3631unsafe extern "C" {
3632    pub fn vips_image_new_matrixv(
3633        width: core::ffi::c_int,
3634        height: core::ffi::c_int,
3635        ...
3636    ) -> *mut VipsImage;
3637}
3638unsafe extern "C" {
3639    pub fn vips_image_new_matrix_from_array(
3640        width: core::ffi::c_int,
3641        height: core::ffi::c_int,
3642        array: *const f64,
3643        size: core::ffi::c_int,
3644    ) -> *mut VipsImage;
3645}
3646unsafe extern "C" {
3647    pub fn vips_image_matrix_from_array(
3648        width: core::ffi::c_int,
3649        height: core::ffi::c_int,
3650        array: *const f64,
3651        size: core::ffi::c_int,
3652    ) -> *mut VipsImage;
3653}
3654unsafe extern "C" {
3655    pub fn vips_image_new_from_image(
3656        image: *mut VipsImage,
3657        c: *const f64,
3658        n: core::ffi::c_int,
3659    ) -> *mut VipsImage;
3660}
3661unsafe extern "C" {
3662    pub fn vips_image_new_from_image1(image: *mut VipsImage, c: f64) -> *mut VipsImage;
3663}
3664unsafe extern "C" {
3665    pub fn vips_image_set_delete_on_close(image: *mut VipsImage, delete_on_close: gboolean);
3666}
3667unsafe extern "C" {
3668    pub fn vips_get_disc_threshold() -> guint64;
3669}
3670unsafe extern "C" {
3671    pub fn vips_image_new_temp_file(format: *const core::ffi::c_char) -> *mut VipsImage;
3672}
3673unsafe extern "C" {
3674    pub fn vips_image_write(image: *mut VipsImage, out: *mut VipsImage) -> core::ffi::c_int;
3675}
3676unsafe extern "C" {
3677    pub fn vips_image_write_to_file(
3678        image: *mut VipsImage,
3679        name: *const core::ffi::c_char,
3680        ...
3681    ) -> core::ffi::c_int;
3682}
3683unsafe extern "C" {
3684    pub fn vips_image_write_to_buffer(
3685        in_: *mut VipsImage,
3686        suffix: *const core::ffi::c_char,
3687        buf: *mut *mut core::ffi::c_void,
3688        size: *mut usize,
3689        ...
3690    ) -> core::ffi::c_int;
3691}
3692unsafe extern "C" {
3693    pub fn vips_image_write_to_target(
3694        in_: *mut VipsImage,
3695        suffix: *const core::ffi::c_char,
3696        target: *mut VipsTarget,
3697        ...
3698    ) -> core::ffi::c_int;
3699}
3700unsafe extern "C" {
3701    pub fn vips_image_write_to_memory(
3702        in_: *mut VipsImage,
3703        size: *mut usize,
3704    ) -> *mut core::ffi::c_void;
3705}
3706unsafe extern "C" {
3707    pub fn vips_image_decode_predict(
3708        in_: *mut VipsImage,
3709        bands: *mut core::ffi::c_int,
3710        format: *mut VipsBandFormat,
3711    ) -> core::ffi::c_int;
3712}
3713unsafe extern "C" {
3714    pub fn vips_image_decode(in_: *mut VipsImage, out: *mut *mut VipsImage) -> core::ffi::c_int;
3715}
3716unsafe extern "C" {
3717    pub fn vips_image_encode(
3718        in_: *mut VipsImage,
3719        out: *mut *mut VipsImage,
3720        coding: VipsCoding,
3721    ) -> core::ffi::c_int;
3722}
3723unsafe extern "C" {
3724    pub fn vips_image_isMSBfirst(image: *mut VipsImage) -> gboolean;
3725}
3726unsafe extern "C" {
3727    pub fn vips_image_isfile(image: *mut VipsImage) -> gboolean;
3728}
3729unsafe extern "C" {
3730    pub fn vips_image_ispartial(image: *mut VipsImage) -> gboolean;
3731}
3732unsafe extern "C" {
3733    pub fn vips_image_hasalpha(image: *mut VipsImage) -> gboolean;
3734}
3735unsafe extern "C" {
3736    pub fn vips_image_copy_memory(image: *mut VipsImage) -> *mut VipsImage;
3737}
3738unsafe extern "C" {
3739    pub fn vips_image_wio_input(image: *mut VipsImage) -> core::ffi::c_int;
3740}
3741unsafe extern "C" {
3742    pub fn vips_image_pio_input(image: *mut VipsImage) -> core::ffi::c_int;
3743}
3744unsafe extern "C" {
3745    pub fn vips_image_pio_output(image: *mut VipsImage) -> core::ffi::c_int;
3746}
3747unsafe extern "C" {
3748    pub fn vips_image_inplace(image: *mut VipsImage) -> core::ffi::c_int;
3749}
3750unsafe extern "C" {
3751    pub fn vips_image_write_prepare(image: *mut VipsImage) -> core::ffi::c_int;
3752}
3753unsafe extern "C" {
3754    pub fn vips_image_write_line(
3755        image: *mut VipsImage,
3756        ypos: core::ffi::c_int,
3757        linebuffer: *mut VipsPel,
3758    ) -> core::ffi::c_int;
3759}
3760unsafe extern "C" {
3761    pub fn vips_band_format_isint(format: VipsBandFormat) -> gboolean;
3762}
3763unsafe extern "C" {
3764    pub fn vips_band_format_isuint(format: VipsBandFormat) -> gboolean;
3765}
3766unsafe extern "C" {
3767    pub fn vips_band_format_is8bit(format: VipsBandFormat) -> gboolean;
3768}
3769unsafe extern "C" {
3770    pub fn vips_band_format_isfloat(format: VipsBandFormat) -> gboolean;
3771}
3772unsafe extern "C" {
3773    pub fn vips_band_format_iscomplex(format: VipsBandFormat) -> gboolean;
3774}
3775unsafe extern "C" {
3776    pub fn vips_system(cmd_format: *const core::ffi::c_char, ...) -> core::ffi::c_int;
3777}
3778unsafe extern "C" {
3779    pub fn vips_array_image_new(
3780        array: *mut *mut VipsImage,
3781        n: core::ffi::c_int,
3782    ) -> *mut VipsArrayImage;
3783}
3784unsafe extern "C" {
3785    pub fn vips_array_image_newv(n: core::ffi::c_int, ...) -> *mut VipsArrayImage;
3786}
3787unsafe extern "C" {
3788    pub fn vips_array_image_new_from_string(
3789        string: *const core::ffi::c_char,
3790        flags: VipsAccess,
3791    ) -> *mut VipsArrayImage;
3792}
3793unsafe extern "C" {
3794    pub fn vips_array_image_empty() -> *mut VipsArrayImage;
3795}
3796unsafe extern "C" {
3797    pub fn vips_array_image_append(
3798        array: *mut VipsArrayImage,
3799        image: *mut VipsImage,
3800    ) -> *mut VipsArrayImage;
3801}
3802unsafe extern "C" {
3803    pub fn vips_array_image_get(
3804        array: *mut VipsArrayImage,
3805        n: *mut core::ffi::c_int,
3806    ) -> *mut *mut VipsImage;
3807}
3808unsafe extern "C" {
3809    pub fn vips_value_get_array_image(
3810        value: *const GValue,
3811        n: *mut core::ffi::c_int,
3812    ) -> *mut *mut VipsImage;
3813}
3814unsafe extern "C" {
3815    pub fn vips_value_set_array_image(value: *mut GValue, n: core::ffi::c_int);
3816}
3817unsafe extern "C" {
3818    pub fn vips_reorder_prepare_many(
3819        image: *mut VipsImage,
3820        regions: *mut *mut VipsRegion,
3821        r: *mut VipsRect,
3822    ) -> core::ffi::c_int;
3823}
3824unsafe extern "C" {
3825    pub fn vips_reorder_margin_hint(image: *mut VipsImage, margin: core::ffi::c_int);
3826}
3827unsafe extern "C" {
3828    pub fn vips_image_free_buffer(image: *mut VipsImage, buffer: *mut core::ffi::c_void);
3829}
3830pub type VipsImage_autoptr = *mut VipsImage;
3831pub type VipsImage_listautoptr = *mut GList;
3832pub type VipsImage_slistautoptr = *mut GSList;
3833pub type VipsImage_queueautoptr = *mut GQueue;
3834pub type VipsObject_autoptr = *mut VipsObject;
3835pub type VipsObject_listautoptr = *mut GList;
3836pub type VipsObject_slistautoptr = *mut GSList;
3837pub type VipsObject_queueautoptr = *mut GQueue;
3838pub type VipsRegion_autoptr = *mut VipsRegion;
3839pub type VipsRegion_listautoptr = *mut GList;
3840pub type VipsRegion_slistautoptr = *mut GSList;
3841pub type VipsRegion_queueautoptr = *mut GQueue;
3842pub type VipsConnection_autoptr = *mut VipsConnection;
3843pub type VipsConnection_listautoptr = *mut GList;
3844pub type VipsConnection_slistautoptr = *mut GSList;
3845pub type VipsConnection_queueautoptr = *mut GQueue;
3846pub type VipsSource_autoptr = *mut VipsSource;
3847pub type VipsSource_listautoptr = *mut GList;
3848pub type VipsSource_slistautoptr = *mut GSList;
3849pub type VipsSource_queueautoptr = *mut GQueue;
3850pub type VipsSourceCustom_autoptr = *mut VipsSourceCustom;
3851pub type VipsSourceCustom_listautoptr = *mut GList;
3852pub type VipsSourceCustom_slistautoptr = *mut GSList;
3853pub type VipsSourceCustom_queueautoptr = *mut GQueue;
3854pub type VipsGInputStream_autoptr = *mut VipsGInputStream;
3855pub type VipsGInputStream_listautoptr = *mut GList;
3856pub type VipsGInputStream_slistautoptr = *mut GSList;
3857pub type VipsGInputStream_queueautoptr = *mut GQueue;
3858pub type VipsSourceGInputStream_autoptr = *mut VipsSourceGInputStream;
3859pub type VipsSourceGInputStream_listautoptr = *mut GList;
3860pub type VipsSourceGInputStream_slistautoptr = *mut GSList;
3861pub type VipsSourceGInputStream_queueautoptr = *mut GQueue;
3862pub type VipsTarget_autoptr = *mut VipsTarget;
3863pub type VipsTarget_listautoptr = *mut GList;
3864pub type VipsTarget_slistautoptr = *mut GSList;
3865pub type VipsTarget_queueautoptr = *mut GQueue;
3866pub type VipsTargetCustom_autoptr = *mut VipsTargetCustom;
3867pub type VipsTargetCustom_listautoptr = *mut GList;
3868pub type VipsTargetCustom_slistautoptr = *mut GSList;
3869pub type VipsTargetCustom_queueautoptr = *mut GQueue;
3870pub type VipsSbuf_autoptr = *mut VipsSbuf;
3871pub type VipsSbuf_listautoptr = *mut GList;
3872pub type VipsSbuf_slistautoptr = *mut GSList;
3873pub type VipsSbuf_queueautoptr = *mut GQueue;
3874pub type VipsInterpolate_autoptr = *mut VipsInterpolate;
3875pub type VipsInterpolate_listautoptr = *mut GList;
3876pub type VipsInterpolate_slistautoptr = *mut GSList;
3877pub type VipsInterpolate_queueautoptr = *mut GQueue;
3878pub type VipsOperation_autoptr = *mut VipsOperation;
3879pub type VipsOperation_listautoptr = *mut GList;
3880pub type VipsOperation_slistautoptr = *mut GSList;
3881pub type VipsOperation_queueautoptr = *mut GQueue;
3882pub type VipsArrayDouble_autoptr = *mut VipsArrayDouble;
3883pub type VipsArrayDouble_listautoptr = *mut GList;
3884pub type VipsArrayDouble_slistautoptr = *mut GSList;
3885pub type VipsArrayDouble_queueautoptr = *mut GQueue;
3886pub type VipsArrayImage_autoptr = *mut VipsArrayImage;
3887pub type VipsArrayImage_listautoptr = *mut GList;
3888pub type VipsArrayImage_slistautoptr = *mut GSList;
3889pub type VipsArrayImage_queueautoptr = *mut GQueue;
3890unsafe extern "C" {
3891    pub fn vips_malloc(object: *mut VipsObject, size: usize) -> *mut core::ffi::c_void;
3892}
3893unsafe extern "C" {
3894    pub fn vips_strdup(
3895        object: *mut VipsObject,
3896        str_: *const core::ffi::c_char,
3897    ) -> *mut core::ffi::c_char;
3898}
3899unsafe extern "C" {
3900    pub fn vips_tracked_free(s: *mut core::ffi::c_void);
3901}
3902unsafe extern "C" {
3903    pub fn vips_tracked_aligned_free(s: *mut core::ffi::c_void);
3904}
3905unsafe extern "C" {
3906    pub fn vips_tracked_malloc(size: usize) -> *mut core::ffi::c_void;
3907}
3908unsafe extern "C" {
3909    pub fn vips_tracked_aligned_alloc(size: usize, align: usize) -> *mut core::ffi::c_void;
3910}
3911unsafe extern "C" {
3912    pub fn vips_tracked_get_mem() -> usize;
3913}
3914unsafe extern "C" {
3915    pub fn vips_tracked_get_mem_highwater() -> usize;
3916}
3917unsafe extern "C" {
3918    pub fn vips_tracked_get_allocs() -> core::ffi::c_int;
3919}
3920unsafe extern "C" {
3921    pub fn vips_tracked_open(
3922        pathname: *const core::ffi::c_char,
3923        flags: core::ffi::c_int,
3924        mode: core::ffi::c_int,
3925    ) -> core::ffi::c_int;
3926}
3927unsafe extern "C" {
3928    pub fn vips_tracked_close(fd: core::ffi::c_int) -> core::ffi::c_int;
3929}
3930unsafe extern "C" {
3931    pub fn vips_tracked_get_files() -> core::ffi::c_int;
3932}
3933unsafe extern "C" {
3934    pub fn vips_error_buffer() -> *const core::ffi::c_char;
3935}
3936unsafe extern "C" {
3937    pub fn vips_error_buffer_copy() -> *mut core::ffi::c_char;
3938}
3939unsafe extern "C" {
3940    pub fn vips_error_clear();
3941}
3942unsafe extern "C" {
3943    pub fn vips_error_freeze();
3944}
3945unsafe extern "C" {
3946    pub fn vips_error_thaw();
3947}
3948unsafe extern "C" {
3949    pub fn vips_error(domain: *const core::ffi::c_char, fmt: *const core::ffi::c_char, ...);
3950}
3951unsafe extern "C" {
3952    pub fn vips_verror(
3953        domain: *const core::ffi::c_char,
3954        fmt: *const core::ffi::c_char,
3955        ap: va_list,
3956    );
3957}
3958unsafe extern "C" {
3959    pub fn vips_error_system(
3960        err: core::ffi::c_int,
3961        domain: *const core::ffi::c_char,
3962        fmt: *const core::ffi::c_char,
3963        ...
3964    );
3965}
3966unsafe extern "C" {
3967    pub fn vips_verror_system(
3968        err: core::ffi::c_int,
3969        domain: *const core::ffi::c_char,
3970        fmt: *const core::ffi::c_char,
3971        ap: va_list,
3972    );
3973}
3974unsafe extern "C" {
3975    pub fn vips_error_g(error: *mut *mut GError);
3976}
3977unsafe extern "C" {
3978    pub fn vips_g_error(error: *mut *mut GError);
3979}
3980unsafe extern "C" {
3981    pub fn vips_error_exit(fmt: *const core::ffi::c_char, ...) -> !;
3982}
3983unsafe extern "C" {
3984    pub fn vips_check_uncoded(
3985        domain: *const core::ffi::c_char,
3986        im: *mut VipsImage,
3987    ) -> core::ffi::c_int;
3988}
3989unsafe extern "C" {
3990    pub fn vips_check_coding(
3991        domain: *const core::ffi::c_char,
3992        im: *mut VipsImage,
3993        coding: VipsCoding,
3994    ) -> core::ffi::c_int;
3995}
3996unsafe extern "C" {
3997    pub fn vips_check_coding_known(
3998        domain: *const core::ffi::c_char,
3999        im: *mut VipsImage,
4000    ) -> core::ffi::c_int;
4001}
4002unsafe extern "C" {
4003    pub fn vips_check_coding_noneorlabq(
4004        domain: *const core::ffi::c_char,
4005        im: *mut VipsImage,
4006    ) -> core::ffi::c_int;
4007}
4008unsafe extern "C" {
4009    pub fn vips_check_coding_same(
4010        domain: *const core::ffi::c_char,
4011        im1: *mut VipsImage,
4012        im2: *mut VipsImage,
4013    ) -> core::ffi::c_int;
4014}
4015unsafe extern "C" {
4016    pub fn vips_check_mono(
4017        domain: *const core::ffi::c_char,
4018        im: *mut VipsImage,
4019    ) -> core::ffi::c_int;
4020}
4021unsafe extern "C" {
4022    pub fn vips_check_bands(
4023        domain: *const core::ffi::c_char,
4024        im: *mut VipsImage,
4025        bands: core::ffi::c_int,
4026    ) -> core::ffi::c_int;
4027}
4028unsafe extern "C" {
4029    pub fn vips_check_bands_1or3(
4030        domain: *const core::ffi::c_char,
4031        im: *mut VipsImage,
4032    ) -> core::ffi::c_int;
4033}
4034unsafe extern "C" {
4035    pub fn vips_check_bands_atleast(
4036        domain: *const core::ffi::c_char,
4037        im: *mut VipsImage,
4038        bands: core::ffi::c_int,
4039    ) -> core::ffi::c_int;
4040}
4041unsafe extern "C" {
4042    pub fn vips_check_bands_1orn(
4043        domain: *const core::ffi::c_char,
4044        im1: *mut VipsImage,
4045        im2: *mut VipsImage,
4046    ) -> core::ffi::c_int;
4047}
4048unsafe extern "C" {
4049    pub fn vips_check_bands_1orn_unary(
4050        domain: *const core::ffi::c_char,
4051        im: *mut VipsImage,
4052        n: core::ffi::c_int,
4053    ) -> core::ffi::c_int;
4054}
4055unsafe extern "C" {
4056    pub fn vips_check_bands_same(
4057        domain: *const core::ffi::c_char,
4058        im1: *mut VipsImage,
4059        im2: *mut VipsImage,
4060    ) -> core::ffi::c_int;
4061}
4062unsafe extern "C" {
4063    pub fn vips_check_bandno(
4064        domain: *const core::ffi::c_char,
4065        im: *mut VipsImage,
4066        bandno: core::ffi::c_int,
4067    ) -> core::ffi::c_int;
4068}
4069unsafe extern "C" {
4070    pub fn vips_check_int(domain: *const core::ffi::c_char, im: *mut VipsImage)
4071    -> core::ffi::c_int;
4072}
4073unsafe extern "C" {
4074    pub fn vips_check_uint(
4075        domain: *const core::ffi::c_char,
4076        im: *mut VipsImage,
4077    ) -> core::ffi::c_int;
4078}
4079unsafe extern "C" {
4080    pub fn vips_check_uintorf(
4081        domain: *const core::ffi::c_char,
4082        im: *mut VipsImage,
4083    ) -> core::ffi::c_int;
4084}
4085unsafe extern "C" {
4086    pub fn vips_check_noncomplex(
4087        domain: *const core::ffi::c_char,
4088        im: *mut VipsImage,
4089    ) -> core::ffi::c_int;
4090}
4091unsafe extern "C" {
4092    pub fn vips_check_complex(
4093        domain: *const core::ffi::c_char,
4094        im: *mut VipsImage,
4095    ) -> core::ffi::c_int;
4096}
4097unsafe extern "C" {
4098    pub fn vips_check_twocomponents(
4099        domain: *const core::ffi::c_char,
4100        im: *mut VipsImage,
4101    ) -> core::ffi::c_int;
4102}
4103unsafe extern "C" {
4104    pub fn vips_check_format(
4105        domain: *const core::ffi::c_char,
4106        im: *mut VipsImage,
4107        fmt: VipsBandFormat,
4108    ) -> core::ffi::c_int;
4109}
4110unsafe extern "C" {
4111    pub fn vips_check_u8or16(
4112        domain: *const core::ffi::c_char,
4113        im: *mut VipsImage,
4114    ) -> core::ffi::c_int;
4115}
4116unsafe extern "C" {
4117    pub fn vips_check_8or16(
4118        domain: *const core::ffi::c_char,
4119        im: *mut VipsImage,
4120    ) -> core::ffi::c_int;
4121}
4122unsafe extern "C" {
4123    pub fn vips_check_u8or16orf(
4124        domain: *const core::ffi::c_char,
4125        im: *mut VipsImage,
4126    ) -> core::ffi::c_int;
4127}
4128unsafe extern "C" {
4129    pub fn vips_check_format_same(
4130        domain: *const core::ffi::c_char,
4131        im1: *mut VipsImage,
4132        im2: *mut VipsImage,
4133    ) -> core::ffi::c_int;
4134}
4135unsafe extern "C" {
4136    pub fn vips_check_size_same(
4137        domain: *const core::ffi::c_char,
4138        im1: *mut VipsImage,
4139        im2: *mut VipsImage,
4140    ) -> core::ffi::c_int;
4141}
4142unsafe extern "C" {
4143    pub fn vips_check_oddsquare(
4144        domain: *const core::ffi::c_char,
4145        im: *mut VipsImage,
4146    ) -> core::ffi::c_int;
4147}
4148unsafe extern "C" {
4149    pub fn vips_check_vector_length(
4150        domain: *const core::ffi::c_char,
4151        n: core::ffi::c_int,
4152        len: core::ffi::c_int,
4153    ) -> core::ffi::c_int;
4154}
4155unsafe extern "C" {
4156    pub fn vips_check_vector(
4157        domain: *const core::ffi::c_char,
4158        n: core::ffi::c_int,
4159        im: *mut VipsImage,
4160    ) -> core::ffi::c_int;
4161}
4162unsafe extern "C" {
4163    pub fn vips_check_hist(
4164        domain: *const core::ffi::c_char,
4165        im: *mut VipsImage,
4166    ) -> core::ffi::c_int;
4167}
4168unsafe extern "C" {
4169    pub fn vips_check_matrix(
4170        domain: *const core::ffi::c_char,
4171        im: *mut VipsImage,
4172        out: *mut *mut VipsImage,
4173    ) -> core::ffi::c_int;
4174}
4175unsafe extern "C" {
4176    pub fn vips_check_separable(
4177        domain: *const core::ffi::c_char,
4178        im: *mut VipsImage,
4179    ) -> core::ffi::c_int;
4180}
4181unsafe extern "C" {
4182    pub fn vips_check_precision_intfloat(
4183        domain: *const core::ffi::c_char,
4184        precision: VipsPrecision,
4185    ) -> core::ffi::c_int;
4186}
4187#[repr(u32)]
4188#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
4189pub enum VipsFormatFlags {
4190    VIPS_FORMAT_NONE = 0,
4191    VIPS_FORMAT_PARTIAL = 1,
4192    VIPS_FORMAT_BIGENDIAN = 2,
4193}
4194#[repr(C)]
4195#[derive(Debug, Copy, Clone)]
4196pub struct _VipsFormat {
4197    pub parent_object: VipsObject,
4198}
4199pub type VipsFormat = _VipsFormat;
4200#[repr(C)]
4201#[derive(Debug, Copy, Clone)]
4202pub struct _VipsFormatClass {
4203    pub parent_class: VipsObjectClass,
4204    pub is_a: ::core::option::Option<
4205        unsafe extern "C" fn(filename: *const core::ffi::c_char) -> gboolean,
4206    >,
4207    pub header: ::core::option::Option<
4208        unsafe extern "C" fn(
4209            filename: *const core::ffi::c_char,
4210            image: *mut VipsImage,
4211        ) -> core::ffi::c_int,
4212    >,
4213    pub load: ::core::option::Option<
4214        unsafe extern "C" fn(
4215            filename: *const core::ffi::c_char,
4216            image: *mut VipsImage,
4217        ) -> core::ffi::c_int,
4218    >,
4219    pub save: ::core::option::Option<
4220        unsafe extern "C" fn(
4221            image: *mut VipsImage,
4222            filename: *const core::ffi::c_char,
4223        ) -> core::ffi::c_int,
4224    >,
4225    pub get_flags: ::core::option::Option<
4226        unsafe extern "C" fn(filename: *const core::ffi::c_char) -> VipsFormatFlags,
4227    >,
4228    pub priority: core::ffi::c_int,
4229    pub suffs: *mut *const core::ffi::c_char,
4230}
4231pub type VipsFormatClass = _VipsFormatClass;
4232unsafe extern "C" {
4233    pub fn vips_format_get_type() -> GType;
4234}
4235unsafe extern "C" {
4236    pub fn vips_format_map(
4237        fn_: VipsSListMap2Fn,
4238        a: *mut core::ffi::c_void,
4239        b: *mut core::ffi::c_void,
4240    ) -> *mut core::ffi::c_void;
4241}
4242unsafe extern "C" {
4243    pub fn vips_format_for_file(filename: *const core::ffi::c_char) -> *mut VipsFormatClass;
4244}
4245unsafe extern "C" {
4246    pub fn vips_format_for_name(filename: *const core::ffi::c_char) -> *mut VipsFormatClass;
4247}
4248unsafe extern "C" {
4249    pub fn vips_format_get_flags(
4250        format: *mut VipsFormatClass,
4251        filename: *const core::ffi::c_char,
4252    ) -> VipsFormatFlags;
4253}
4254unsafe extern "C" {
4255    pub fn vips_format_read(
4256        filename: *const core::ffi::c_char,
4257        out: *mut VipsImage,
4258    ) -> core::ffi::c_int;
4259}
4260unsafe extern "C" {
4261    pub fn vips_format_write(
4262        in_: *mut VipsImage,
4263        filename: *const core::ffi::c_char,
4264    ) -> core::ffi::c_int;
4265}
4266pub type VipsRegionWrite = ::core::option::Option<
4267    unsafe extern "C" fn(
4268        region: *mut VipsRegion,
4269        area: *mut VipsRect,
4270        a: *mut core::ffi::c_void,
4271    ) -> core::ffi::c_int,
4272>;
4273unsafe extern "C" {
4274    pub fn vips_sink_disc(
4275        im: *mut VipsImage,
4276        write_fn: VipsRegionWrite,
4277        a: *mut core::ffi::c_void,
4278    ) -> core::ffi::c_int;
4279}
4280unsafe extern "C" {
4281    pub fn vips_sink(
4282        im: *mut VipsImage,
4283        start_fn: VipsStartFn,
4284        generate_fn: VipsGenerateFn,
4285        stop_fn: VipsStopFn,
4286        a: *mut core::ffi::c_void,
4287        b: *mut core::ffi::c_void,
4288    ) -> core::ffi::c_int;
4289}
4290unsafe extern "C" {
4291    pub fn vips_sink_tile(
4292        im: *mut VipsImage,
4293        tile_width: core::ffi::c_int,
4294        tile_height: core::ffi::c_int,
4295        start_fn: VipsStartFn,
4296        generate_fn: VipsGenerateFn,
4297        stop_fn: VipsStopFn,
4298        a: *mut core::ffi::c_void,
4299        b: *mut core::ffi::c_void,
4300    ) -> core::ffi::c_int;
4301}
4302pub type VipsSinkNotify = ::core::option::Option<
4303    unsafe extern "C" fn(im: *mut VipsImage, rect: *mut VipsRect, a: *mut core::ffi::c_void),
4304>;
4305unsafe extern "C" {
4306    pub fn vips_sink_screen(
4307        in_: *mut VipsImage,
4308        out: *mut VipsImage,
4309        mask: *mut VipsImage,
4310        tile_width: core::ffi::c_int,
4311        tile_height: core::ffi::c_int,
4312        max_tiles: core::ffi::c_int,
4313        priority: core::ffi::c_int,
4314        notify_fn: VipsSinkNotify,
4315        a: *mut core::ffi::c_void,
4316    ) -> core::ffi::c_int;
4317}
4318unsafe extern "C" {
4319    pub fn vips_sink_memory(im: *mut VipsImage) -> core::ffi::c_int;
4320}
4321unsafe extern "C" {
4322    pub fn vips_start_one(
4323        out: *mut VipsImage,
4324        a: *mut core::ffi::c_void,
4325        b: *mut core::ffi::c_void,
4326    ) -> *mut core::ffi::c_void;
4327}
4328unsafe extern "C" {
4329    pub fn vips_stop_one(
4330        seq: *mut core::ffi::c_void,
4331        a: *mut core::ffi::c_void,
4332        b: *mut core::ffi::c_void,
4333    ) -> core::ffi::c_int;
4334}
4335unsafe extern "C" {
4336    pub fn vips_start_many(
4337        out: *mut VipsImage,
4338        a: *mut core::ffi::c_void,
4339        b: *mut core::ffi::c_void,
4340    ) -> *mut core::ffi::c_void;
4341}
4342unsafe extern "C" {
4343    pub fn vips_stop_many(
4344        seq: *mut core::ffi::c_void,
4345        a: *mut core::ffi::c_void,
4346        b: *mut core::ffi::c_void,
4347    ) -> core::ffi::c_int;
4348}
4349unsafe extern "C" {
4350    pub fn vips_allocate_input_array(out: *mut VipsImage, ...) -> *mut *mut VipsImage;
4351}
4352unsafe extern "C" {
4353    pub fn vips_image_generate(
4354        image: *mut VipsImage,
4355        start_fn: VipsStartFn,
4356        generate_fn: VipsGenerateFn,
4357        stop_fn: VipsStopFn,
4358        a: *mut core::ffi::c_void,
4359        b: *mut core::ffi::c_void,
4360    ) -> core::ffi::c_int;
4361}
4362unsafe extern "C" {
4363    pub fn vips_image_pipeline_array(
4364        image: *mut VipsImage,
4365        hint: VipsDemandStyle,
4366        in_: *mut *mut VipsImage,
4367    ) -> core::ffi::c_int;
4368}
4369unsafe extern "C" {
4370    pub fn vips_image_pipelinev(
4371        image: *mut VipsImage,
4372        hint: VipsDemandStyle,
4373        ...
4374    ) -> core::ffi::c_int;
4375}
4376#[repr(C)]
4377#[derive(Debug, Copy, Clone)]
4378pub struct _VipsInterpolate {
4379    pub parent_object: VipsObject,
4380}
4381pub type VipsInterpolateMethod = ::core::option::Option<
4382    unsafe extern "C" fn(
4383        interpolate: *mut VipsInterpolate,
4384        out: *mut core::ffi::c_void,
4385        in_: *mut VipsRegion,
4386        x: f64,
4387        y: f64,
4388    ),
4389>;
4390#[repr(C)]
4391#[derive(Debug, Copy, Clone)]
4392pub struct _VipsInterpolateClass {
4393    pub parent_class: VipsObjectClass,
4394    pub interpolate: VipsInterpolateMethod,
4395    pub get_window_size: ::core::option::Option<
4396        unsafe extern "C" fn(interpolate: *mut VipsInterpolate) -> core::ffi::c_int,
4397    >,
4398    pub window_size: core::ffi::c_int,
4399    pub get_window_offset: ::core::option::Option<
4400        unsafe extern "C" fn(interpolate: *mut VipsInterpolate) -> core::ffi::c_int,
4401    >,
4402    pub window_offset: core::ffi::c_int,
4403}
4404pub type VipsInterpolateClass = _VipsInterpolateClass;
4405unsafe extern "C" {
4406    pub fn vips_interpolate_get_type() -> GType;
4407}
4408unsafe extern "C" {
4409    pub fn vips_interpolate(
4410        interpolate: *mut VipsInterpolate,
4411        out: *mut core::ffi::c_void,
4412        in_: *mut VipsRegion,
4413        x: f64,
4414        y: f64,
4415    );
4416}
4417unsafe extern "C" {
4418    pub fn vips_interpolate_get_method(interpolate: *mut VipsInterpolate) -> VipsInterpolateMethod;
4419}
4420unsafe extern "C" {
4421    pub fn vips_interpolate_get_window_size(interpolate: *mut VipsInterpolate) -> core::ffi::c_int;
4422}
4423unsafe extern "C" {
4424    pub fn vips_interpolate_get_window_offset(
4425        interpolate: *mut VipsInterpolate,
4426    ) -> core::ffi::c_int;
4427}
4428unsafe extern "C" {
4429    pub fn vips_interpolate_nearest_static() -> *mut VipsInterpolate;
4430}
4431unsafe extern "C" {
4432    pub fn vips_interpolate_bilinear_static() -> *mut VipsInterpolate;
4433}
4434unsafe extern "C" {
4435    pub fn vips_interpolate_new(nickname: *const core::ffi::c_char) -> *mut VipsInterpolate;
4436}
4437#[repr(C)]
4438#[derive(Copy, Clone)]
4439pub struct VipsSemaphore {
4440    pub name: *mut core::ffi::c_char,
4441    pub v: core::ffi::c_int,
4442    pub mutex: GMutex,
4443    pub cond: GCond,
4444}
4445unsafe extern "C" {
4446    pub fn vips_semaphore_up(s: *mut VipsSemaphore) -> core::ffi::c_int;
4447}
4448unsafe extern "C" {
4449    pub fn vips_semaphore_upn(s: *mut VipsSemaphore, n: core::ffi::c_int) -> core::ffi::c_int;
4450}
4451unsafe extern "C" {
4452    pub fn vips_semaphore_down(s: *mut VipsSemaphore) -> core::ffi::c_int;
4453}
4454unsafe extern "C" {
4455    pub fn vips_semaphore_downn(s: *mut VipsSemaphore, n: core::ffi::c_int) -> core::ffi::c_int;
4456}
4457unsafe extern "C" {
4458    pub fn vips_semaphore_down_timeout(s: *mut VipsSemaphore, timeout: gint64) -> core::ffi::c_int;
4459}
4460unsafe extern "C" {
4461    pub fn vips_semaphore_destroy(s: *mut VipsSemaphore);
4462}
4463unsafe extern "C" {
4464    pub fn vips_semaphore_init(
4465        s: *mut VipsSemaphore,
4466        v: core::ffi::c_int,
4467        name: *mut core::ffi::c_char,
4468    );
4469}
4470unsafe extern "C" {
4471    pub fn vips_g_thread_new(
4472        domain: *const core::ffi::c_char,
4473        func: GThreadFunc,
4474        data: gpointer,
4475    ) -> *mut GThread;
4476}
4477unsafe extern "C" {
4478    pub fn vips_thread_isvips() -> gboolean;
4479}
4480unsafe extern "C" {
4481    pub fn vips_thread_execute(
4482        domain: *const core::ffi::c_char,
4483        func: GFunc,
4484        data: gpointer,
4485    ) -> core::ffi::c_int;
4486}
4487#[repr(C)]
4488#[derive(Debug, Copy, Clone)]
4489pub struct _VipsThreadState {
4490    pub parent_object: VipsObject,
4491    pub im: *mut VipsImage,
4492    pub reg: *mut VipsRegion,
4493    pub pos: VipsRect,
4494    pub x: core::ffi::c_int,
4495    pub y: core::ffi::c_int,
4496    pub stop: gboolean,
4497    pub a: *mut core::ffi::c_void,
4498    pub stall: gboolean,
4499}
4500pub type VipsThreadState = _VipsThreadState;
4501#[repr(C)]
4502#[derive(Debug, Copy, Clone)]
4503pub struct _VipsThreadStateClass {
4504    pub parent_class: VipsObjectClass,
4505}
4506pub type VipsThreadStateClass = _VipsThreadStateClass;
4507unsafe extern "C" {
4508    pub fn vips_thread_state_set(
4509        object: *mut VipsObject,
4510        a: *mut core::ffi::c_void,
4511        b: *mut core::ffi::c_void,
4512    ) -> *mut core::ffi::c_void;
4513}
4514unsafe extern "C" {
4515    pub fn vips_thread_state_get_type() -> GType;
4516}
4517unsafe extern "C" {
4518    pub fn vips_thread_state_new(
4519        im: *mut VipsImage,
4520        a: *mut core::ffi::c_void,
4521    ) -> *mut VipsThreadState;
4522}
4523pub type VipsThreadStartFn = ::core::option::Option<
4524    unsafe extern "C" fn(im: *mut VipsImage, a: *mut core::ffi::c_void) -> *mut VipsThreadState,
4525>;
4526pub type VipsThreadpoolAllocateFn = ::core::option::Option<
4527    unsafe extern "C" fn(
4528        state: *mut VipsThreadState,
4529        a: *mut core::ffi::c_void,
4530        stop: *mut gboolean,
4531    ) -> core::ffi::c_int,
4532>;
4533pub type VipsThreadpoolWorkFn = ::core::option::Option<
4534    unsafe extern "C" fn(
4535        state: *mut VipsThreadState,
4536        a: *mut core::ffi::c_void,
4537    ) -> core::ffi::c_int,
4538>;
4539pub type VipsThreadpoolProgressFn =
4540    ::core::option::Option<unsafe extern "C" fn(a: *mut core::ffi::c_void) -> core::ffi::c_int>;
4541unsafe extern "C" {
4542    pub fn vips_threadpool_run(
4543        im: *mut VipsImage,
4544        start: VipsThreadStartFn,
4545        allocate: VipsThreadpoolAllocateFn,
4546        work: VipsThreadpoolWorkFn,
4547        progress: VipsThreadpoolProgressFn,
4548        a: *mut core::ffi::c_void,
4549    ) -> core::ffi::c_int;
4550}
4551unsafe extern "C" {
4552    pub fn vips_get_tile_size(
4553        im: *mut VipsImage,
4554        tile_width: *mut core::ffi::c_int,
4555        tile_height: *mut core::ffi::c_int,
4556        n_lines: *mut core::ffi::c_int,
4557    );
4558}
4559unsafe extern "C" {
4560    pub fn vips_format_sizeof(format: VipsBandFormat) -> guint64;
4561}
4562unsafe extern "C" {
4563    pub fn vips_format_sizeof_unsafe(format: VipsBandFormat) -> guint64;
4564}
4565unsafe extern "C" {
4566    pub fn vips_interpretation_max_alpha(interpretation: VipsInterpretation) -> f64;
4567}
4568unsafe extern "C" {
4569    pub fn vips_interpretation_bands(interpretation: VipsInterpretation) -> core::ffi::c_int;
4570}
4571unsafe extern "C" {
4572    pub fn vips_image_get_width(image: *const VipsImage) -> core::ffi::c_int;
4573}
4574unsafe extern "C" {
4575    pub fn vips_image_get_height(image: *const VipsImage) -> core::ffi::c_int;
4576}
4577unsafe extern "C" {
4578    pub fn vips_image_get_bands(image: *const VipsImage) -> core::ffi::c_int;
4579}
4580unsafe extern "C" {
4581    pub fn vips_image_get_format(image: *const VipsImage) -> VipsBandFormat;
4582}
4583unsafe extern "C" {
4584    pub fn vips_image_get_format_max(format: VipsBandFormat) -> f64;
4585}
4586unsafe extern "C" {
4587    pub fn vips_image_guess_format(image: *const VipsImage) -> VipsBandFormat;
4588}
4589unsafe extern "C" {
4590    pub fn vips_image_get_coding(image: *const VipsImage) -> VipsCoding;
4591}
4592unsafe extern "C" {
4593    pub fn vips_image_get_interpretation(image: *const VipsImage) -> VipsInterpretation;
4594}
4595unsafe extern "C" {
4596    pub fn vips_image_guess_interpretation(image: *const VipsImage) -> VipsInterpretation;
4597}
4598unsafe extern "C" {
4599    pub fn vips_image_get_xres(image: *const VipsImage) -> f64;
4600}
4601unsafe extern "C" {
4602    pub fn vips_image_get_yres(image: *const VipsImage) -> f64;
4603}
4604unsafe extern "C" {
4605    pub fn vips_image_get_xoffset(image: *const VipsImage) -> core::ffi::c_int;
4606}
4607unsafe extern "C" {
4608    pub fn vips_image_get_yoffset(image: *const VipsImage) -> core::ffi::c_int;
4609}
4610unsafe extern "C" {
4611    pub fn vips_image_get_filename(image: *const VipsImage) -> *const core::ffi::c_char;
4612}
4613unsafe extern "C" {
4614    pub fn vips_image_get_mode(image: *const VipsImage) -> *const core::ffi::c_char;
4615}
4616unsafe extern "C" {
4617    pub fn vips_image_get_scale(image: *const VipsImage) -> f64;
4618}
4619unsafe extern "C" {
4620    pub fn vips_image_get_offset(image: *const VipsImage) -> f64;
4621}
4622unsafe extern "C" {
4623    pub fn vips_image_get_page_height(image: *mut VipsImage) -> core::ffi::c_int;
4624}
4625unsafe extern "C" {
4626    pub fn vips_image_get_n_pages(image: *mut VipsImage) -> core::ffi::c_int;
4627}
4628unsafe extern "C" {
4629    pub fn vips_image_get_n_subifds(image: *mut VipsImage) -> core::ffi::c_int;
4630}
4631unsafe extern "C" {
4632    pub fn vips_image_get_orientation(image: *mut VipsImage) -> core::ffi::c_int;
4633}
4634unsafe extern "C" {
4635    pub fn vips_image_get_orientation_swap(image: *mut VipsImage) -> gboolean;
4636}
4637unsafe extern "C" {
4638    pub fn vips_image_get_concurrency(
4639        image: *mut VipsImage,
4640        default_concurrency: core::ffi::c_int,
4641    ) -> core::ffi::c_int;
4642}
4643unsafe extern "C" {
4644    pub fn vips_image_get_tile_width(image: *mut VipsImage) -> core::ffi::c_int;
4645}
4646unsafe extern "C" {
4647    pub fn vips_image_get_tile_height(image: *mut VipsImage) -> core::ffi::c_int;
4648}
4649unsafe extern "C" {
4650    pub fn vips_image_get_gainmap(image: *mut VipsImage) -> *mut VipsImage;
4651}
4652unsafe extern "C" {
4653    pub fn vips_image_get_data(image: *mut VipsImage) -> *const core::ffi::c_void;
4654}
4655unsafe extern "C" {
4656    pub fn vips_image_init_fields(
4657        image: *mut VipsImage,
4658        xsize: core::ffi::c_int,
4659        ysize: core::ffi::c_int,
4660        bands: core::ffi::c_int,
4661        format: VipsBandFormat,
4662        coding: VipsCoding,
4663        interpretation: VipsInterpretation,
4664        xres: f64,
4665        yres: f64,
4666    );
4667}
4668unsafe extern "C" {
4669    pub fn vips_image_set(
4670        image: *mut VipsImage,
4671        name: *const core::ffi::c_char,
4672        value: *mut GValue,
4673    );
4674}
4675unsafe extern "C" {
4676    pub fn vips_image_get(
4677        image: *const VipsImage,
4678        name: *const core::ffi::c_char,
4679        value_copy: *mut GValue,
4680    ) -> core::ffi::c_int;
4681}
4682unsafe extern "C" {
4683    pub fn vips_image_get_as_string(
4684        image: *const VipsImage,
4685        name: *const core::ffi::c_char,
4686        out: *mut *mut core::ffi::c_char,
4687    ) -> core::ffi::c_int;
4688}
4689unsafe extern "C" {
4690    pub fn vips_image_get_typeof(image: *const VipsImage, name: *const core::ffi::c_char) -> GType;
4691}
4692unsafe extern "C" {
4693    pub fn vips_image_remove(image: *mut VipsImage, name: *const core::ffi::c_char) -> gboolean;
4694}
4695pub type VipsImageMapFn = ::core::option::Option<
4696    unsafe extern "C" fn(
4697        image: *mut VipsImage,
4698        name: *const core::ffi::c_char,
4699        value: *mut GValue,
4700        a: *mut core::ffi::c_void,
4701    ) -> *mut core::ffi::c_void,
4702>;
4703unsafe extern "C" {
4704    pub fn vips_image_map(
4705        image: *mut VipsImage,
4706        fn_: VipsImageMapFn,
4707        a: *mut core::ffi::c_void,
4708    ) -> *mut core::ffi::c_void;
4709}
4710unsafe extern "C" {
4711    pub fn vips_image_get_fields(image: *mut VipsImage) -> *mut *mut gchar;
4712}
4713unsafe extern "C" {
4714    pub fn vips_image_set_area(
4715        image: *mut VipsImage,
4716        name: *const core::ffi::c_char,
4717        free_fn: VipsCallbackFn,
4718        data: *mut core::ffi::c_void,
4719    );
4720}
4721unsafe extern "C" {
4722    pub fn vips_image_get_area(
4723        image: *const VipsImage,
4724        name: *const core::ffi::c_char,
4725        data: *mut *const core::ffi::c_void,
4726    ) -> core::ffi::c_int;
4727}
4728unsafe extern "C" {
4729    pub fn vips_image_set_blob(
4730        image: *mut VipsImage,
4731        name: *const core::ffi::c_char,
4732        free_fn: VipsCallbackFn,
4733        data: *const core::ffi::c_void,
4734        length: usize,
4735    );
4736}
4737unsafe extern "C" {
4738    pub fn vips_image_set_blob_copy(
4739        image: *mut VipsImage,
4740        name: *const core::ffi::c_char,
4741        data: *const core::ffi::c_void,
4742        length: usize,
4743    );
4744}
4745unsafe extern "C" {
4746    pub fn vips_image_get_blob(
4747        image: *const VipsImage,
4748        name: *const core::ffi::c_char,
4749        data: *mut *const core::ffi::c_void,
4750        length: *mut usize,
4751    ) -> core::ffi::c_int;
4752}
4753unsafe extern "C" {
4754    pub fn vips_image_get_int(
4755        image: *const VipsImage,
4756        name: *const core::ffi::c_char,
4757        out: *mut core::ffi::c_int,
4758    ) -> core::ffi::c_int;
4759}
4760unsafe extern "C" {
4761    pub fn vips_image_set_int(
4762        image: *mut VipsImage,
4763        name: *const core::ffi::c_char,
4764        i: core::ffi::c_int,
4765    );
4766}
4767unsafe extern "C" {
4768    pub fn vips_image_get_double(
4769        image: *const VipsImage,
4770        name: *const core::ffi::c_char,
4771        out: *mut f64,
4772    ) -> core::ffi::c_int;
4773}
4774unsafe extern "C" {
4775    pub fn vips_image_set_double(image: *mut VipsImage, name: *const core::ffi::c_char, d: f64);
4776}
4777unsafe extern "C" {
4778    pub fn vips_image_get_string(
4779        image: *const VipsImage,
4780        name: *const core::ffi::c_char,
4781        out: *mut *const core::ffi::c_char,
4782    ) -> core::ffi::c_int;
4783}
4784unsafe extern "C" {
4785    pub fn vips_image_set_string(
4786        image: *mut VipsImage,
4787        name: *const core::ffi::c_char,
4788        str_: *const core::ffi::c_char,
4789    );
4790}
4791unsafe extern "C" {
4792    pub fn vips_image_print_field(image: *const VipsImage, name: *const core::ffi::c_char);
4793}
4794unsafe extern "C" {
4795    pub fn vips_image_get_image(
4796        image: *const VipsImage,
4797        name: *const core::ffi::c_char,
4798        out: *mut *mut VipsImage,
4799    ) -> core::ffi::c_int;
4800}
4801unsafe extern "C" {
4802    pub fn vips_image_set_image(
4803        image: *mut VipsImage,
4804        name: *const core::ffi::c_char,
4805        im: *mut VipsImage,
4806    );
4807}
4808unsafe extern "C" {
4809    pub fn vips_image_set_array_int(
4810        image: *mut VipsImage,
4811        name: *const core::ffi::c_char,
4812        array: *const core::ffi::c_int,
4813        n: core::ffi::c_int,
4814    );
4815}
4816unsafe extern "C" {
4817    pub fn vips_image_get_array_int(
4818        image: *mut VipsImage,
4819        name: *const core::ffi::c_char,
4820        out: *mut *mut core::ffi::c_int,
4821        n: *mut core::ffi::c_int,
4822    ) -> core::ffi::c_int;
4823}
4824unsafe extern "C" {
4825    pub fn vips_image_get_array_double(
4826        image: *mut VipsImage,
4827        name: *const core::ffi::c_char,
4828        out: *mut *mut f64,
4829        n: *mut core::ffi::c_int,
4830    ) -> core::ffi::c_int;
4831}
4832unsafe extern "C" {
4833    pub fn vips_image_set_array_double(
4834        image: *mut VipsImage,
4835        name: *const core::ffi::c_char,
4836        array: *const f64,
4837        n: core::ffi::c_int,
4838    );
4839}
4840unsafe extern "C" {
4841    pub fn vips_image_history_printf(
4842        image: *mut VipsImage,
4843        format: *const core::ffi::c_char,
4844        ...
4845    ) -> core::ffi::c_int;
4846}
4847unsafe extern "C" {
4848    pub fn vips_image_history_args(
4849        image: *mut VipsImage,
4850        name: *const core::ffi::c_char,
4851        argc: core::ffi::c_int,
4852        argv: *mut *mut core::ffi::c_char,
4853    ) -> core::ffi::c_int;
4854}
4855unsafe extern "C" {
4856    pub fn vips_image_get_history(image: *mut VipsImage) -> *const core::ffi::c_char;
4857}
4858#[repr(u32)]
4859#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
4860pub enum VipsOperationFlags {
4861    VIPS_OPERATION_NONE = 0,
4862    VIPS_OPERATION_SEQUENTIAL = 1,
4863    VIPS_OPERATION_SEQUENTIAL_UNBUFFERED = 2,
4864    VIPS_OPERATION_NOCACHE = 4,
4865    VIPS_OPERATION_DEPRECATED = 8,
4866    VIPS_OPERATION_UNTRUSTED = 16,
4867    VIPS_OPERATION_BLOCKED = 32,
4868    VIPS_OPERATION_REVALIDATE = 64,
4869}
4870pub type VipsOperationBuildFn =
4871    ::core::option::Option<unsafe extern "C" fn(object: *mut VipsObject) -> gboolean>;
4872#[repr(C)]
4873#[derive(Debug, Copy, Clone)]
4874pub struct _VipsOperation {
4875    pub parent_instance: VipsObject,
4876    pub hash: guint,
4877    pub found_hash: gboolean,
4878    pub pixels: core::ffi::c_int,
4879}
4880#[repr(C)]
4881#[derive(Debug, Copy, Clone)]
4882pub struct _VipsOperationClass {
4883    pub parent_class: VipsObjectClass,
4884    pub usage: ::core::option::Option<
4885        unsafe extern "C" fn(cls: *mut _VipsOperationClass, buf: *mut VipsBuf),
4886    >,
4887    pub get_flags: ::core::option::Option<
4888        unsafe extern "C" fn(operation: *mut VipsOperation) -> VipsOperationFlags,
4889    >,
4890    pub flags: VipsOperationFlags,
4891    pub invalidate: ::core::option::Option<unsafe extern "C" fn(operation: *mut VipsOperation)>,
4892}
4893pub type VipsOperationClass = _VipsOperationClass;
4894unsafe extern "C" {
4895    pub fn vips_operation_get_type() -> GType;
4896}
4897unsafe extern "C" {
4898    pub fn vips_operation_get_flags(operation: *mut VipsOperation) -> VipsOperationFlags;
4899}
4900unsafe extern "C" {
4901    pub fn vips_operation_class_print_usage(operation_class: *mut VipsOperationClass);
4902}
4903unsafe extern "C" {
4904    pub fn vips_operation_invalidate(operation: *mut VipsOperation);
4905}
4906unsafe extern "C" {
4907    pub fn vips_operation_call_valist(
4908        operation: *mut VipsOperation,
4909        ap: va_list,
4910    ) -> core::ffi::c_int;
4911}
4912unsafe extern "C" {
4913    pub fn vips_operation_new(name: *const core::ffi::c_char) -> *mut VipsOperation;
4914}
4915unsafe extern "C" {
4916    pub fn vips_call_required_optional(
4917        operation: *mut *mut VipsOperation,
4918        required: va_list,
4919        optional: va_list,
4920    ) -> core::ffi::c_int;
4921}
4922unsafe extern "C" {
4923    pub fn vips_call(operation_name: *const core::ffi::c_char, ...) -> core::ffi::c_int;
4924}
4925unsafe extern "C" {
4926    pub fn vips_call_split(
4927        operation_name: *const core::ffi::c_char,
4928        optional: va_list,
4929        ...
4930    ) -> core::ffi::c_int;
4931}
4932unsafe extern "C" {
4933    pub fn vips_call_split_option_string(
4934        operation_name: *const core::ffi::c_char,
4935        option_string: *const core::ffi::c_char,
4936        optional: va_list,
4937        ...
4938    ) -> core::ffi::c_int;
4939}
4940unsafe extern "C" {
4941    pub fn vips_call_options(group: *mut GOptionGroup, operation: *mut VipsOperation);
4942}
4943unsafe extern "C" {
4944    pub fn vips_call_argv(
4945        operation: *mut VipsOperation,
4946        argc: core::ffi::c_int,
4947        argv: *mut *mut core::ffi::c_char,
4948    ) -> core::ffi::c_int;
4949}
4950unsafe extern "C" {
4951    pub fn vips_cache_drop_all();
4952}
4953unsafe extern "C" {
4954    pub fn vips_cache_operation_buildp(operation: *mut *mut VipsOperation) -> core::ffi::c_int;
4955}
4956unsafe extern "C" {
4957    pub fn vips_cache_operation_build(operation: *mut VipsOperation) -> *mut VipsOperation;
4958}
4959unsafe extern "C" {
4960    pub fn vips_cache_print();
4961}
4962unsafe extern "C" {
4963    pub fn vips_cache_set_max(max: core::ffi::c_int);
4964}
4965unsafe extern "C" {
4966    pub fn vips_cache_set_max_mem(max_mem: usize);
4967}
4968unsafe extern "C" {
4969    pub fn vips_cache_get_max() -> core::ffi::c_int;
4970}
4971unsafe extern "C" {
4972    pub fn vips_cache_get_size() -> core::ffi::c_int;
4973}
4974unsafe extern "C" {
4975    pub fn vips_cache_get_max_mem() -> usize;
4976}
4977unsafe extern "C" {
4978    pub fn vips_cache_get_max_files() -> core::ffi::c_int;
4979}
4980unsafe extern "C" {
4981    pub fn vips_cache_set_max_files(max_files: core::ffi::c_int);
4982}
4983unsafe extern "C" {
4984    pub fn vips_cache_set_dump(dump: gboolean);
4985}
4986unsafe extern "C" {
4987    pub fn vips_cache_set_trace(trace: gboolean);
4988}
4989unsafe extern "C" {
4990    pub fn vips_concurrency_set(concurrency: core::ffi::c_int);
4991}
4992unsafe extern "C" {
4993    pub fn vips_concurrency_get() -> core::ffi::c_int;
4994}
4995unsafe extern "C" {
4996    pub fn vips_operation_block_set(name: *const core::ffi::c_char, state: gboolean);
4997}
4998#[repr(C)]
4999#[derive(Debug, Copy, Clone)]
5000pub struct _VipsForeign {
5001    pub parent_object: VipsOperation,
5002}
5003pub type VipsForeign = _VipsForeign;
5004#[repr(C)]
5005#[derive(Debug, Copy, Clone)]
5006pub struct _VipsForeignClass {
5007    pub parent_class: VipsOperationClass,
5008    pub priority: core::ffi::c_int,
5009    pub suffs: *mut *const core::ffi::c_char,
5010}
5011pub type VipsForeignClass = _VipsForeignClass;
5012unsafe extern "C" {
5013    pub fn vips_foreign_get_type() -> GType;
5014}
5015unsafe extern "C" {
5016    pub fn vips_foreign_map(
5017        base: *const core::ffi::c_char,
5018        fn_: VipsSListMap2Fn,
5019        a: *mut core::ffi::c_void,
5020        b: *mut core::ffi::c_void,
5021    ) -> *mut core::ffi::c_void;
5022}
5023#[repr(u32)]
5024#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5025pub enum VipsForeignFlags {
5026    VIPS_FOREIGN_NONE = 0,
5027    VIPS_FOREIGN_PARTIAL = 1,
5028    VIPS_FOREIGN_BIGENDIAN = 2,
5029    VIPS_FOREIGN_SEQUENTIAL = 4,
5030    VIPS_FOREIGN_ALL = 7,
5031}
5032#[repr(u32)]
5033#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5034pub enum VipsFailOn {
5035    VIPS_FAIL_ON_NONE = 0,
5036    VIPS_FAIL_ON_TRUNCATED = 1,
5037    VIPS_FAIL_ON_ERROR = 2,
5038    VIPS_FAIL_ON_WARNING = 3,
5039    VIPS_FAIL_ON_LAST = 4,
5040}
5041#[repr(C)]
5042#[derive(Debug, Copy, Clone)]
5043pub struct _VipsForeignLoad {
5044    pub parent_object: VipsForeign,
5045    pub memory: gboolean,
5046    pub access: VipsAccess,
5047    pub flags: VipsForeignFlags,
5048    pub fail_on: VipsFailOn,
5049    pub fail: gboolean,
5050    pub sequential: gboolean,
5051    pub out: *mut VipsImage,
5052    pub real: *mut VipsImage,
5053    pub nocache: gboolean,
5054    pub disc: gboolean,
5055    pub error: gboolean,
5056    pub revalidate: gboolean,
5057}
5058pub type VipsForeignLoad = _VipsForeignLoad;
5059#[repr(C)]
5060#[derive(Debug, Copy, Clone)]
5061pub struct _VipsForeignLoadClass {
5062    pub parent_class: VipsForeignClass,
5063    pub is_a: ::core::option::Option<
5064        unsafe extern "C" fn(filename: *const core::ffi::c_char) -> gboolean,
5065    >,
5066    pub is_a_buffer: ::core::option::Option<
5067        unsafe extern "C" fn(data: *const core::ffi::c_void, size: usize) -> gboolean,
5068    >,
5069    pub is_a_source:
5070        ::core::option::Option<unsafe extern "C" fn(source: *mut VipsSource) -> gboolean>,
5071    pub get_flags_filename: ::core::option::Option<
5072        unsafe extern "C" fn(filename: *const core::ffi::c_char) -> VipsForeignFlags,
5073    >,
5074    pub get_flags: ::core::option::Option<
5075        unsafe extern "C" fn(load: *mut VipsForeignLoad) -> VipsForeignFlags,
5076    >,
5077    pub header: ::core::option::Option<
5078        unsafe extern "C" fn(load: *mut VipsForeignLoad) -> core::ffi::c_int,
5079    >,
5080    pub load: ::core::option::Option<
5081        unsafe extern "C" fn(load: *mut VipsForeignLoad) -> core::ffi::c_int,
5082    >,
5083}
5084pub type VipsForeignLoadClass = _VipsForeignLoadClass;
5085unsafe extern "C" {
5086    pub fn vips_foreign_load_get_type() -> GType;
5087}
5088unsafe extern "C" {
5089    pub fn vips_foreign_find_load(filename: *const core::ffi::c_char) -> *const core::ffi::c_char;
5090}
5091unsafe extern "C" {
5092    pub fn vips_foreign_find_load_buffer(
5093        data: *const core::ffi::c_void,
5094        size: usize,
5095    ) -> *const core::ffi::c_char;
5096}
5097unsafe extern "C" {
5098    pub fn vips_foreign_find_load_source(source: *mut VipsSource) -> *const core::ffi::c_char;
5099}
5100unsafe extern "C" {
5101    pub fn vips_foreign_flags(
5102        loader: *const core::ffi::c_char,
5103        filename: *const core::ffi::c_char,
5104    ) -> VipsForeignFlags;
5105}
5106unsafe extern "C" {
5107    pub fn vips_foreign_is_a(
5108        loader: *const core::ffi::c_char,
5109        filename: *const core::ffi::c_char,
5110    ) -> gboolean;
5111}
5112unsafe extern "C" {
5113    pub fn vips_foreign_is_a_buffer(
5114        loader: *const core::ffi::c_char,
5115        data: *const core::ffi::c_void,
5116        size: usize,
5117    ) -> gboolean;
5118}
5119unsafe extern "C" {
5120    pub fn vips_foreign_is_a_source(
5121        loader: *const core::ffi::c_char,
5122        source: *mut VipsSource,
5123    ) -> gboolean;
5124}
5125unsafe extern "C" {
5126    pub fn vips_foreign_load_invalidate(image: *mut VipsImage);
5127}
5128#[repr(u32)]
5129#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5130pub enum VipsForeignSaveable {
5131    VIPS_FOREIGN_SAVEABLE_ANY = 0,
5132    VIPS_FOREIGN_SAVEABLE_MONO = 1,
5133    VIPS_FOREIGN_SAVEABLE_RGB = 2,
5134    VIPS_FOREIGN_SAVEABLE_CMYK = 4,
5135    VIPS_FOREIGN_SAVEABLE_ALPHA = 8,
5136    VIPS_FOREIGN_SAVEABLE_ALL = 15,
5137}
5138#[repr(u32)]
5139#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5140pub enum VipsForeignCoding {
5141    VIPS_FOREIGN_CODING_NONE = 1,
5142    VIPS_FOREIGN_CODING_LABQ = 2,
5143    VIPS_FOREIGN_CODING_RAD = 4,
5144    VIPS_FOREIGN_CODING_ALL = 7,
5145}
5146#[repr(u32)]
5147#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5148pub enum VipsForeignKeep {
5149    VIPS_FOREIGN_KEEP_NONE = 0,
5150    VIPS_FOREIGN_KEEP_EXIF = 1,
5151    VIPS_FOREIGN_KEEP_XMP = 2,
5152    VIPS_FOREIGN_KEEP_IPTC = 4,
5153    VIPS_FOREIGN_KEEP_ICC = 8,
5154    VIPS_FOREIGN_KEEP_OTHER = 16,
5155    VIPS_FOREIGN_KEEP_GAINMAP = 32,
5156    VIPS_FOREIGN_KEEP_ALL = 63,
5157}
5158#[repr(C)]
5159#[derive(Debug, Copy, Clone)]
5160pub struct _VipsForeignSave {
5161    pub parent_object: VipsForeign,
5162    pub strip: gboolean,
5163    pub keep: VipsForeignKeep,
5164    pub profile: *mut core::ffi::c_char,
5165    pub background: *mut VipsArrayDouble,
5166    pub page_height: core::ffi::c_int,
5167    pub in_: *mut VipsImage,
5168    pub ready: *mut VipsImage,
5169}
5170pub type VipsForeignSave = _VipsForeignSave;
5171#[repr(C)]
5172#[derive(Debug, Copy, Clone)]
5173pub struct _VipsForeignSaveClass {
5174    pub parent_class: VipsForeignClass,
5175    pub saveable: VipsForeignSaveable,
5176    pub format_table: *mut VipsBandFormat,
5177    pub coding: VipsForeignCoding,
5178}
5179pub type VipsForeignSaveClass = _VipsForeignSaveClass;
5180unsafe extern "C" {
5181    pub fn vips_foreign_save_get_type() -> GType;
5182}
5183unsafe extern "C" {
5184    pub fn vips_foreign_find_save(filename: *const core::ffi::c_char) -> *const core::ffi::c_char;
5185}
5186unsafe extern "C" {
5187    pub fn vips_foreign_get_suffixes() -> *mut *mut gchar;
5188}
5189unsafe extern "C" {
5190    pub fn vips_foreign_find_save_buffer(
5191        suffix: *const core::ffi::c_char,
5192    ) -> *const core::ffi::c_char;
5193}
5194unsafe extern "C" {
5195    pub fn vips_foreign_find_save_target(
5196        suffix: *const core::ffi::c_char,
5197    ) -> *const core::ffi::c_char;
5198}
5199unsafe extern "C" {
5200    pub fn vips_vipsload(
5201        filename: *const core::ffi::c_char,
5202        out: *mut *mut VipsImage,
5203        ...
5204    ) -> core::ffi::c_int;
5205}
5206unsafe extern "C" {
5207    pub fn vips_vipsload_source(
5208        source: *mut VipsSource,
5209        out: *mut *mut VipsImage,
5210        ...
5211    ) -> core::ffi::c_int;
5212}
5213unsafe extern "C" {
5214    pub fn vips_vipssave(
5215        in_: *mut VipsImage,
5216        filename: *const core::ffi::c_char,
5217        ...
5218    ) -> core::ffi::c_int;
5219}
5220unsafe extern "C" {
5221    pub fn vips_vipssave_target(
5222        in_: *mut VipsImage,
5223        target: *mut VipsTarget,
5224        ...
5225    ) -> core::ffi::c_int;
5226}
5227unsafe extern "C" {
5228    pub fn vips_openslideload(
5229        filename: *const core::ffi::c_char,
5230        out: *mut *mut VipsImage,
5231        ...
5232    ) -> core::ffi::c_int;
5233}
5234unsafe extern "C" {
5235    pub fn vips_openslideload_source(
5236        source: *mut VipsSource,
5237        out: *mut *mut VipsImage,
5238        ...
5239    ) -> core::ffi::c_int;
5240}
5241#[repr(u32)]
5242#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5243pub enum VipsForeignSubsample {
5244    VIPS_FOREIGN_SUBSAMPLE_AUTO = 0,
5245    VIPS_FOREIGN_SUBSAMPLE_ON = 1,
5246    VIPS_FOREIGN_SUBSAMPLE_OFF = 2,
5247    VIPS_FOREIGN_SUBSAMPLE_LAST = 3,
5248}
5249unsafe extern "C" {
5250    pub fn vips_jpegload(
5251        filename: *const core::ffi::c_char,
5252        out: *mut *mut VipsImage,
5253        ...
5254    ) -> core::ffi::c_int;
5255}
5256unsafe extern "C" {
5257    pub fn vips_jpegload_buffer(
5258        buf: *mut core::ffi::c_void,
5259        len: usize,
5260        out: *mut *mut VipsImage,
5261        ...
5262    ) -> core::ffi::c_int;
5263}
5264unsafe extern "C" {
5265    pub fn vips_jpegload_source(
5266        source: *mut VipsSource,
5267        out: *mut *mut VipsImage,
5268        ...
5269    ) -> core::ffi::c_int;
5270}
5271unsafe extern "C" {
5272    pub fn vips_jpegsave_target(
5273        in_: *mut VipsImage,
5274        target: *mut VipsTarget,
5275        ...
5276    ) -> core::ffi::c_int;
5277}
5278unsafe extern "C" {
5279    pub fn vips_jpegsave(
5280        in_: *mut VipsImage,
5281        filename: *const core::ffi::c_char,
5282        ...
5283    ) -> core::ffi::c_int;
5284}
5285unsafe extern "C" {
5286    pub fn vips_jpegsave_buffer(
5287        in_: *mut VipsImage,
5288        buf: *mut *mut core::ffi::c_void,
5289        len: *mut usize,
5290        ...
5291    ) -> core::ffi::c_int;
5292}
5293unsafe extern "C" {
5294    pub fn vips_jpegsave_mime(in_: *mut VipsImage, ...) -> core::ffi::c_int;
5295}
5296#[repr(u32)]
5297#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5298pub enum VipsForeignWebpPreset {
5299    VIPS_FOREIGN_WEBP_PRESET_DEFAULT = 0,
5300    VIPS_FOREIGN_WEBP_PRESET_PICTURE = 1,
5301    VIPS_FOREIGN_WEBP_PRESET_PHOTO = 2,
5302    VIPS_FOREIGN_WEBP_PRESET_DRAWING = 3,
5303    VIPS_FOREIGN_WEBP_PRESET_ICON = 4,
5304    VIPS_FOREIGN_WEBP_PRESET_TEXT = 5,
5305    VIPS_FOREIGN_WEBP_PRESET_LAST = 6,
5306}
5307unsafe extern "C" {
5308    pub fn vips_webpload_source(
5309        source: *mut VipsSource,
5310        out: *mut *mut VipsImage,
5311        ...
5312    ) -> core::ffi::c_int;
5313}
5314unsafe extern "C" {
5315    pub fn vips_webpload(
5316        filename: *const core::ffi::c_char,
5317        out: *mut *mut VipsImage,
5318        ...
5319    ) -> core::ffi::c_int;
5320}
5321unsafe extern "C" {
5322    pub fn vips_webpload_buffer(
5323        buf: *mut core::ffi::c_void,
5324        len: usize,
5325        out: *mut *mut VipsImage,
5326        ...
5327    ) -> core::ffi::c_int;
5328}
5329unsafe extern "C" {
5330    pub fn vips_webpsave_target(
5331        in_: *mut VipsImage,
5332        target: *mut VipsTarget,
5333        ...
5334    ) -> core::ffi::c_int;
5335}
5336unsafe extern "C" {
5337    pub fn vips_webpsave(
5338        in_: *mut VipsImage,
5339        filename: *const core::ffi::c_char,
5340        ...
5341    ) -> core::ffi::c_int;
5342}
5343unsafe extern "C" {
5344    pub fn vips_webpsave_buffer(
5345        in_: *mut VipsImage,
5346        buf: *mut *mut core::ffi::c_void,
5347        len: *mut usize,
5348        ...
5349    ) -> core::ffi::c_int;
5350}
5351unsafe extern "C" {
5352    pub fn vips_webpsave_mime(in_: *mut VipsImage, ...) -> core::ffi::c_int;
5353}
5354#[repr(u32)]
5355#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5356pub enum VipsForeignTiffCompression {
5357    VIPS_FOREIGN_TIFF_COMPRESSION_NONE = 0,
5358    VIPS_FOREIGN_TIFF_COMPRESSION_JPEG = 1,
5359    VIPS_FOREIGN_TIFF_COMPRESSION_DEFLATE = 2,
5360    VIPS_FOREIGN_TIFF_COMPRESSION_PACKBITS = 3,
5361    VIPS_FOREIGN_TIFF_COMPRESSION_CCITTFAX4 = 4,
5362    VIPS_FOREIGN_TIFF_COMPRESSION_LZW = 5,
5363    VIPS_FOREIGN_TIFF_COMPRESSION_WEBP = 6,
5364    VIPS_FOREIGN_TIFF_COMPRESSION_ZSTD = 7,
5365    VIPS_FOREIGN_TIFF_COMPRESSION_JP2K = 8,
5366    VIPS_FOREIGN_TIFF_COMPRESSION_LAST = 9,
5367}
5368#[repr(u32)]
5369#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5370pub enum VipsForeignTiffPredictor {
5371    VIPS_FOREIGN_TIFF_PREDICTOR_NONE = 1,
5372    VIPS_FOREIGN_TIFF_PREDICTOR_HORIZONTAL = 2,
5373    VIPS_FOREIGN_TIFF_PREDICTOR_FLOAT = 3,
5374    VIPS_FOREIGN_TIFF_PREDICTOR_LAST = 4,
5375}
5376#[repr(u32)]
5377#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5378pub enum VipsForeignTiffResunit {
5379    VIPS_FOREIGN_TIFF_RESUNIT_CM = 0,
5380    VIPS_FOREIGN_TIFF_RESUNIT_INCH = 1,
5381    VIPS_FOREIGN_TIFF_RESUNIT_LAST = 2,
5382}
5383unsafe extern "C" {
5384    pub fn vips_tiffload(
5385        filename: *const core::ffi::c_char,
5386        out: *mut *mut VipsImage,
5387        ...
5388    ) -> core::ffi::c_int;
5389}
5390unsafe extern "C" {
5391    pub fn vips_tiffload_buffer(
5392        buf: *mut core::ffi::c_void,
5393        len: usize,
5394        out: *mut *mut VipsImage,
5395        ...
5396    ) -> core::ffi::c_int;
5397}
5398unsafe extern "C" {
5399    pub fn vips_tiffload_source(
5400        source: *mut VipsSource,
5401        out: *mut *mut VipsImage,
5402        ...
5403    ) -> core::ffi::c_int;
5404}
5405unsafe extern "C" {
5406    pub fn vips_tiffsave(
5407        in_: *mut VipsImage,
5408        filename: *const core::ffi::c_char,
5409        ...
5410    ) -> core::ffi::c_int;
5411}
5412unsafe extern "C" {
5413    pub fn vips_tiffsave_buffer(
5414        in_: *mut VipsImage,
5415        buf: *mut *mut core::ffi::c_void,
5416        len: *mut usize,
5417        ...
5418    ) -> core::ffi::c_int;
5419}
5420unsafe extern "C" {
5421    pub fn vips_tiffsave_target(
5422        in_: *mut VipsImage,
5423        target: *mut VipsTarget,
5424        ...
5425    ) -> core::ffi::c_int;
5426}
5427unsafe extern "C" {
5428    pub fn vips_openexrload(
5429        filename: *const core::ffi::c_char,
5430        out: *mut *mut VipsImage,
5431        ...
5432    ) -> core::ffi::c_int;
5433}
5434unsafe extern "C" {
5435    pub fn vips_fitsload(
5436        filename: *const core::ffi::c_char,
5437        out: *mut *mut VipsImage,
5438        ...
5439    ) -> core::ffi::c_int;
5440}
5441unsafe extern "C" {
5442    pub fn vips_fitsload_source(
5443        source: *mut VipsSource,
5444        out: *mut *mut VipsImage,
5445        ...
5446    ) -> core::ffi::c_int;
5447}
5448unsafe extern "C" {
5449    pub fn vips_fitssave(
5450        in_: *mut VipsImage,
5451        filename: *const core::ffi::c_char,
5452        ...
5453    ) -> core::ffi::c_int;
5454}
5455unsafe extern "C" {
5456    pub fn vips_analyzeload(
5457        filename: *const core::ffi::c_char,
5458        out: *mut *mut VipsImage,
5459        ...
5460    ) -> core::ffi::c_int;
5461}
5462unsafe extern "C" {
5463    pub fn vips_rawload(
5464        filename: *const core::ffi::c_char,
5465        out: *mut *mut VipsImage,
5466        width: core::ffi::c_int,
5467        height: core::ffi::c_int,
5468        bands: core::ffi::c_int,
5469        ...
5470    ) -> core::ffi::c_int;
5471}
5472unsafe extern "C" {
5473    pub fn vips_rawsave(
5474        in_: *mut VipsImage,
5475        filename: *const core::ffi::c_char,
5476        ...
5477    ) -> core::ffi::c_int;
5478}
5479unsafe extern "C" {
5480    pub fn vips_rawsave_buffer(
5481        in_: *mut VipsImage,
5482        buf: *mut *mut core::ffi::c_void,
5483        len: *mut usize,
5484        ...
5485    ) -> core::ffi::c_int;
5486}
5487unsafe extern "C" {
5488    pub fn vips_rawsave_target(
5489        in_: *mut VipsImage,
5490        target: *mut VipsTarget,
5491        ...
5492    ) -> core::ffi::c_int;
5493}
5494unsafe extern "C" {
5495    pub fn vips_csvload(
5496        filename: *const core::ffi::c_char,
5497        out: *mut *mut VipsImage,
5498        ...
5499    ) -> core::ffi::c_int;
5500}
5501unsafe extern "C" {
5502    pub fn vips_csvload_source(
5503        source: *mut VipsSource,
5504        out: *mut *mut VipsImage,
5505        ...
5506    ) -> core::ffi::c_int;
5507}
5508unsafe extern "C" {
5509    pub fn vips_csvsave(
5510        in_: *mut VipsImage,
5511        filename: *const core::ffi::c_char,
5512        ...
5513    ) -> core::ffi::c_int;
5514}
5515unsafe extern "C" {
5516    pub fn vips_csvsave_target(
5517        in_: *mut VipsImage,
5518        target: *mut VipsTarget,
5519        ...
5520    ) -> core::ffi::c_int;
5521}
5522unsafe extern "C" {
5523    pub fn vips_matrixload(
5524        filename: *const core::ffi::c_char,
5525        out: *mut *mut VipsImage,
5526        ...
5527    ) -> core::ffi::c_int;
5528}
5529unsafe extern "C" {
5530    pub fn vips_matrixload_source(
5531        source: *mut VipsSource,
5532        out: *mut *mut VipsImage,
5533        ...
5534    ) -> core::ffi::c_int;
5535}
5536unsafe extern "C" {
5537    pub fn vips_matrixsave(
5538        in_: *mut VipsImage,
5539        filename: *const core::ffi::c_char,
5540        ...
5541    ) -> core::ffi::c_int;
5542}
5543unsafe extern "C" {
5544    pub fn vips_matrixsave_target(
5545        in_: *mut VipsImage,
5546        target: *mut VipsTarget,
5547        ...
5548    ) -> core::ffi::c_int;
5549}
5550unsafe extern "C" {
5551    pub fn vips_matrixprint(in_: *mut VipsImage, ...) -> core::ffi::c_int;
5552}
5553unsafe extern "C" {
5554    pub fn vips_magickload(
5555        filename: *const core::ffi::c_char,
5556        out: *mut *mut VipsImage,
5557        ...
5558    ) -> core::ffi::c_int;
5559}
5560unsafe extern "C" {
5561    pub fn vips_magickload_buffer(
5562        buf: *mut core::ffi::c_void,
5563        len: usize,
5564        out: *mut *mut VipsImage,
5565        ...
5566    ) -> core::ffi::c_int;
5567}
5568unsafe extern "C" {
5569    pub fn vips_magickload_source(
5570        source: *mut VipsSource,
5571        out: *mut *mut VipsImage,
5572        ...
5573    ) -> core::ffi::c_int;
5574}
5575unsafe extern "C" {
5576    pub fn vips_magicksave(
5577        in_: *mut VipsImage,
5578        filename: *const core::ffi::c_char,
5579        ...
5580    ) -> core::ffi::c_int;
5581}
5582unsafe extern "C" {
5583    pub fn vips_magicksave_buffer(
5584        in_: *mut VipsImage,
5585        buf: *mut *mut core::ffi::c_void,
5586        len: *mut usize,
5587        ...
5588    ) -> core::ffi::c_int;
5589}
5590#[repr(u32)]
5591#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5592pub enum VipsForeignPngFilter {
5593    VIPS_FOREIGN_PNG_FILTER_NONE = 8,
5594    VIPS_FOREIGN_PNG_FILTER_SUB = 16,
5595    VIPS_FOREIGN_PNG_FILTER_UP = 32,
5596    VIPS_FOREIGN_PNG_FILTER_AVG = 64,
5597    VIPS_FOREIGN_PNG_FILTER_PAETH = 128,
5598    VIPS_FOREIGN_PNG_FILTER_ALL = 248,
5599}
5600unsafe extern "C" {
5601    pub fn vips_pngload_source(
5602        source: *mut VipsSource,
5603        out: *mut *mut VipsImage,
5604        ...
5605    ) -> core::ffi::c_int;
5606}
5607unsafe extern "C" {
5608    pub fn vips_pngload(
5609        filename: *const core::ffi::c_char,
5610        out: *mut *mut VipsImage,
5611        ...
5612    ) -> core::ffi::c_int;
5613}
5614unsafe extern "C" {
5615    pub fn vips_pngload_buffer(
5616        buf: *mut core::ffi::c_void,
5617        len: usize,
5618        out: *mut *mut VipsImage,
5619        ...
5620    ) -> core::ffi::c_int;
5621}
5622unsafe extern "C" {
5623    pub fn vips_pngsave_target(
5624        in_: *mut VipsImage,
5625        target: *mut VipsTarget,
5626        ...
5627    ) -> core::ffi::c_int;
5628}
5629unsafe extern "C" {
5630    pub fn vips_pngsave(
5631        in_: *mut VipsImage,
5632        filename: *const core::ffi::c_char,
5633        ...
5634    ) -> core::ffi::c_int;
5635}
5636unsafe extern "C" {
5637    pub fn vips_pngsave_buffer(
5638        in_: *mut VipsImage,
5639        buf: *mut *mut core::ffi::c_void,
5640        len: *mut usize,
5641        ...
5642    ) -> core::ffi::c_int;
5643}
5644#[repr(u32)]
5645#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5646pub enum VipsForeignPpmFormat {
5647    VIPS_FOREIGN_PPM_FORMAT_PBM = 0,
5648    VIPS_FOREIGN_PPM_FORMAT_PGM = 1,
5649    VIPS_FOREIGN_PPM_FORMAT_PPM = 2,
5650    VIPS_FOREIGN_PPM_FORMAT_PFM = 3,
5651    VIPS_FOREIGN_PPM_FORMAT_PNM = 4,
5652    VIPS_FOREIGN_PPM_FORMAT_LAST = 5,
5653}
5654unsafe extern "C" {
5655    pub fn vips_ppmload(
5656        filename: *const core::ffi::c_char,
5657        out: *mut *mut VipsImage,
5658        ...
5659    ) -> core::ffi::c_int;
5660}
5661unsafe extern "C" {
5662    pub fn vips_ppmload_buffer(
5663        buf: *mut core::ffi::c_void,
5664        len: usize,
5665        out: *mut *mut VipsImage,
5666        ...
5667    ) -> core::ffi::c_int;
5668}
5669unsafe extern "C" {
5670    pub fn vips_ppmload_source(
5671        source: *mut VipsSource,
5672        out: *mut *mut VipsImage,
5673        ...
5674    ) -> core::ffi::c_int;
5675}
5676unsafe extern "C" {
5677    pub fn vips_ppmsave(
5678        in_: *mut VipsImage,
5679        filename: *const core::ffi::c_char,
5680        ...
5681    ) -> core::ffi::c_int;
5682}
5683unsafe extern "C" {
5684    pub fn vips_ppmsave_target(
5685        in_: *mut VipsImage,
5686        target: *mut VipsTarget,
5687        ...
5688    ) -> core::ffi::c_int;
5689}
5690unsafe extern "C" {
5691    pub fn vips_matload(
5692        filename: *const core::ffi::c_char,
5693        out: *mut *mut VipsImage,
5694        ...
5695    ) -> core::ffi::c_int;
5696}
5697unsafe extern "C" {
5698    pub fn vips_radload_source(
5699        source: *mut VipsSource,
5700        out: *mut *mut VipsImage,
5701        ...
5702    ) -> core::ffi::c_int;
5703}
5704unsafe extern "C" {
5705    pub fn vips_radload(
5706        filename: *const core::ffi::c_char,
5707        out: *mut *mut VipsImage,
5708        ...
5709    ) -> core::ffi::c_int;
5710}
5711unsafe extern "C" {
5712    pub fn vips_radload_buffer(
5713        buf: *mut core::ffi::c_void,
5714        len: usize,
5715        out: *mut *mut VipsImage,
5716        ...
5717    ) -> core::ffi::c_int;
5718}
5719unsafe extern "C" {
5720    pub fn vips_radsave(
5721        in_: *mut VipsImage,
5722        filename: *const core::ffi::c_char,
5723        ...
5724    ) -> core::ffi::c_int;
5725}
5726unsafe extern "C" {
5727    pub fn vips_radsave_buffer(
5728        in_: *mut VipsImage,
5729        buf: *mut *mut core::ffi::c_void,
5730        len: *mut usize,
5731        ...
5732    ) -> core::ffi::c_int;
5733}
5734unsafe extern "C" {
5735    pub fn vips_radsave_target(
5736        in_: *mut VipsImage,
5737        target: *mut VipsTarget,
5738        ...
5739    ) -> core::ffi::c_int;
5740}
5741#[repr(u32)]
5742#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
5743pub enum VipsForeignPdfPageBox {
5744    VIPS_FOREIGN_PDF_PAGE_BOX_MEDIA = 0,
5745    VIPS_FOREIGN_PDF_PAGE_BOX_CROP = 1,
5746    VIPS_FOREIGN_PDF_PAGE_BOX_TRIM = 2,
5747    VIPS_FOREIGN_PDF_PAGE_BOX_BLEED = 3,
5748    VIPS_FOREIGN_PDF_PAGE_BOX_ART = 4,
5749    VIPS_FOREIGN_PDF_PAGE_BOX_LAST = 5,
5750}
5751unsafe extern "C" {
5752    pub fn vips_pdfload(
5753        filename: *const core::ffi::c_char,
5754        out: *mut *mut VipsImage,
5755        ...
5756    ) -> core::ffi::c_int;
5757}
5758unsafe extern "C" {
5759    pub fn vips_pdfload_buffer(
5760        buf: *mut core::ffi::c_void,
5761        len: usize,
5762        out: *mut *mut VipsImage,
5763        ...
5764    ) -> core::ffi::c_int;
5765}
5766unsafe extern "C" {
5767    pub fn vips_pdfload_source(
5768        source: *mut VipsSource,
5769        out: *mut *mut VipsImage,
5770        ...
5771    ) -> core::ffi::c_int;
5772}
5773unsafe extern "C" {
5774    pub fn vips_svgload(
5775        filename: *const core::ffi::c_char,
5776        out: *mut *mut VipsImage,
5777        ...
5778    ) -> core::ffi::c_int;
5779}
5780unsafe extern "C" {
5781    pub fn vips_svgload_buffer(
5782        buf: *mut core::ffi::c_void,
5783        len: usize,
5784        out: *mut *mut VipsImage,
5785        ...
5786    ) -> core::ffi::c_int;
5787}
5788unsafe extern "C" {
5789    pub fn vips_svgload_string(
5790        str_: *const core::ffi::c_char,
5791        out: *mut *mut VipsImage,
5792        ...
5793    ) -> core::ffi::c_int;
5794}
5795unsafe extern "C" {
5796    pub fn vips_svgload_source(
5797        source: *mut VipsSource,
5798        out: *mut *mut VipsImage,
5799        ...
5800    ) -> core::ffi::c_int;
5801}
5802unsafe extern "C" {
5803    pub fn vips_gifload(
5804        filename: *const core::ffi::c_char,
5805        out: *mut *mut VipsImage,
5806        ...
5807    ) -> core::ffi::c_int;
5808}
5809unsafe extern "C" {
5810    pub fn vips_gifload_buffer(
5811        buf: *mut core::ffi::c_void,
5812        len: usize,
5813        out: *mut *mut VipsImage,
5814        ...
5815    ) -> core::ffi::c_int;
5816}
5817unsafe extern "C" {
5818    pub fn vips_gifload_source(
5819        source: *mut VipsSource,
5820        out: *mut *mut VipsImage,
5821        ...
5822    ) -> core::ffi::c_int;
5823}
5824unsafe extern "C" {
5825    pub fn vips_gifsave(
5826        in_: *mut VipsImage,
5827        filename: *const core::ffi::c_char,
5828        ...
5829    ) -> core::ffi::c_int;
5830}
5831unsafe extern "C" {
5832    pub fn vips_gifsave_buffer(
5833        in_: *mut VipsImage,
5834        buf: *mut *mut core::ffi::c_void,
5835        len: *mut usize,
5836        ...
5837    ) -> core::ffi::c_int;
5838}
5839unsafe extern "C" {
5840    pub fn vips_gifsave_target(
5841        in_: *mut VipsImage,
5842        target: *mut VipsTarget,
5843        ...
5844    ) -> core::ffi::c_int;
5845}
5846unsafe extern "C" {
5847    pub fn vips_dcrawload(
5848        filename: *const core::ffi::c_char,
5849        out: *mut *mut VipsImage,
5850        ...
5851    ) -> core::ffi::c_int;
5852}
5853unsafe extern "C" {
5854    pub fn vips_dcrawload_buffer(
5855        buf: *mut core::ffi::c_void,
5856        len: usize,
5857        out: *mut *mut VipsImage,
5858        ...
5859    ) -> core::ffi::c_int;
5860}
5861unsafe extern "C" {
5862    pub fn vips_dcrawload_source(
5863        source: *mut VipsSource,
5864        out: *mut *mut VipsImage,
5865        ...
5866    ) -> core::ffi::c_int;
5867}
5868unsafe extern "C" {
5869    pub fn vips_uhdrload(
5870        filename: *const core::ffi::c_char,
5871        out: *mut *mut VipsImage,
5872        ...
5873    ) -> core::ffi::c_int;
5874}
5875unsafe extern "C" {
5876    pub fn vips_uhdrload_buffer(
5877        buf: *mut core::ffi::c_void,
5878        len: usize,
5879        out: *mut *mut VipsImage,
5880        ...
5881    ) -> core::ffi::c_int;
5882}
5883unsafe extern "C" {
5884    pub fn vips_uhdrload_source(
5885        source: *mut VipsSource,
5886        out: *mut *mut VipsImage,
5887        ...
5888    ) -> core::ffi::c_int;
5889}
5890unsafe extern "C" {
5891    pub fn vips_uhdrsave(
5892        in_: *mut VipsImage,
5893        filename: *const core::ffi::c_char,
5894        ...
5895    ) -> core::ffi::c_int;
5896}
5897unsafe extern "C" {
5898    pub fn vips_uhdrsave_buffer(
5899        in_: *mut VipsImage,
5900        buf: *mut *mut core::ffi::c_void,
5901        len: *mut usize,
5902        ...
5903    ) -> core::ffi::c_int;
5904}
5905unsafe extern "C" {
5906    pub fn vips_uhdrsave_target(
5907        in_: *mut VipsImage,
5908        target: *mut VipsTarget,
5909        ...
5910    ) -> core::ffi::c_int;
5911}
5912unsafe extern "C" {
5913    pub fn vips_heifload(
5914        filename: *const core::ffi::c_char,
5915        out: *mut *mut VipsImage,
5916        ...
5917    ) -> core::ffi::c_int;
5918}
5919unsafe extern "C" {
5920    pub fn vips_heifload_buffer(
5921        buf: *mut core::ffi::c_void,
5922        len: usize,
5923        out: *mut *mut VipsImage,
5924        ...
5925    ) -> core::ffi::c_int;
5926}
5927unsafe extern "C" {
5928    pub fn vips_heifload_source(
5929        source: *mut VipsSource,
5930        out: *mut *mut VipsImage,
5931        ...
5932    ) -> core::ffi::c_int;
5933}
5934unsafe extern "C" {
5935    pub fn vips_heifsave(
5936        in_: *mut VipsImage,
5937        filename: *const core::ffi::c_char,
5938        ...
5939    ) -> core::ffi::c_int;
5940}
5941unsafe extern "C" {
5942    pub fn vips_heifsave_buffer(
5943        in_: *mut VipsImage,
5944        buf: *mut *mut core::ffi::c_void,
5945        len: *mut usize,
5946        ...
5947    ) -> core::ffi::c_int;
5948}
5949unsafe extern "C" {
5950    pub fn vips_heifsave_target(
5951        in_: *mut VipsImage,
5952        target: *mut VipsTarget,
5953        ...
5954    ) -> core::ffi::c_int;
5955}
5956unsafe extern "C" {
5957    pub fn vips_niftiload(
5958        filename: *const core::ffi::c_char,
5959        out: *mut *mut VipsImage,
5960        ...
5961    ) -> core::ffi::c_int;
5962}
5963unsafe extern "C" {
5964    pub fn vips_niftiload_source(
5965        source: *mut VipsSource,
5966        out: *mut *mut VipsImage,
5967        ...
5968    ) -> core::ffi::c_int;
5969}
5970unsafe extern "C" {
5971    pub fn vips_niftisave(
5972        in_: *mut VipsImage,
5973        filename: *const core::ffi::c_char,
5974        ...
5975    ) -> core::ffi::c_int;
5976}
5977unsafe extern "C" {
5978    pub fn vips_jp2kload(
5979        filename: *const core::ffi::c_char,
5980        out: *mut *mut VipsImage,
5981        ...
5982    ) -> core::ffi::c_int;
5983}
5984unsafe extern "C" {
5985    pub fn vips_jp2kload_buffer(
5986        buf: *mut core::ffi::c_void,
5987        len: usize,
5988        out: *mut *mut VipsImage,
5989        ...
5990    ) -> core::ffi::c_int;
5991}
5992unsafe extern "C" {
5993    pub fn vips_jp2kload_source(
5994        source: *mut VipsSource,
5995        out: *mut *mut VipsImage,
5996        ...
5997    ) -> core::ffi::c_int;
5998}
5999unsafe extern "C" {
6000    pub fn vips_jp2ksave(
6001        in_: *mut VipsImage,
6002        filename: *const core::ffi::c_char,
6003        ...
6004    ) -> core::ffi::c_int;
6005}
6006unsafe extern "C" {
6007    pub fn vips_jp2ksave_buffer(
6008        in_: *mut VipsImage,
6009        buf: *mut *mut core::ffi::c_void,
6010        len: *mut usize,
6011        ...
6012    ) -> core::ffi::c_int;
6013}
6014unsafe extern "C" {
6015    pub fn vips_jp2ksave_target(
6016        in_: *mut VipsImage,
6017        target: *mut VipsTarget,
6018        ...
6019    ) -> core::ffi::c_int;
6020}
6021unsafe extern "C" {
6022    pub fn vips_jxlload_source(
6023        source: *mut VipsSource,
6024        out: *mut *mut VipsImage,
6025        ...
6026    ) -> core::ffi::c_int;
6027}
6028unsafe extern "C" {
6029    pub fn vips_jxlload_buffer(
6030        buf: *mut core::ffi::c_void,
6031        len: usize,
6032        out: *mut *mut VipsImage,
6033        ...
6034    ) -> core::ffi::c_int;
6035}
6036unsafe extern "C" {
6037    pub fn vips_jxlload(
6038        filename: *const core::ffi::c_char,
6039        out: *mut *mut VipsImage,
6040        ...
6041    ) -> core::ffi::c_int;
6042}
6043unsafe extern "C" {
6044    pub fn vips_jxlsave(
6045        in_: *mut VipsImage,
6046        filename: *const core::ffi::c_char,
6047        ...
6048    ) -> core::ffi::c_int;
6049}
6050unsafe extern "C" {
6051    pub fn vips_jxlsave_buffer(
6052        in_: *mut VipsImage,
6053        buf: *mut *mut core::ffi::c_void,
6054        len: *mut usize,
6055        ...
6056    ) -> core::ffi::c_int;
6057}
6058unsafe extern "C" {
6059    pub fn vips_jxlsave_target(
6060        in_: *mut VipsImage,
6061        target: *mut VipsTarget,
6062        ...
6063    ) -> core::ffi::c_int;
6064}
6065#[repr(u32)]
6066#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6067pub enum VipsForeignDzLayout {
6068    VIPS_FOREIGN_DZ_LAYOUT_DZ = 0,
6069    VIPS_FOREIGN_DZ_LAYOUT_ZOOMIFY = 1,
6070    VIPS_FOREIGN_DZ_LAYOUT_GOOGLE = 2,
6071    VIPS_FOREIGN_DZ_LAYOUT_IIIF = 3,
6072    VIPS_FOREIGN_DZ_LAYOUT_IIIF3 = 4,
6073    VIPS_FOREIGN_DZ_LAYOUT_LAST = 5,
6074}
6075#[repr(u32)]
6076#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6077pub enum VipsForeignDzDepth {
6078    VIPS_FOREIGN_DZ_DEPTH_ONEPIXEL = 0,
6079    VIPS_FOREIGN_DZ_DEPTH_ONETILE = 1,
6080    VIPS_FOREIGN_DZ_DEPTH_ONE = 2,
6081    VIPS_FOREIGN_DZ_DEPTH_LAST = 3,
6082}
6083#[repr(u32)]
6084#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6085pub enum VipsForeignDzContainer {
6086    VIPS_FOREIGN_DZ_CONTAINER_FS = 0,
6087    VIPS_FOREIGN_DZ_CONTAINER_ZIP = 1,
6088    VIPS_FOREIGN_DZ_CONTAINER_SZI = 2,
6089    VIPS_FOREIGN_DZ_CONTAINER_LAST = 3,
6090}
6091unsafe extern "C" {
6092    pub fn vips_dzsave(
6093        in_: *mut VipsImage,
6094        name: *const core::ffi::c_char,
6095        ...
6096    ) -> core::ffi::c_int;
6097}
6098unsafe extern "C" {
6099    pub fn vips_dzsave_buffer(
6100        in_: *mut VipsImage,
6101        buf: *mut *mut core::ffi::c_void,
6102        len: *mut usize,
6103        ...
6104    ) -> core::ffi::c_int;
6105}
6106unsafe extern "C" {
6107    pub fn vips_dzsave_target(
6108        in_: *mut VipsImage,
6109        target: *mut VipsTarget,
6110        ...
6111    ) -> core::ffi::c_int;
6112}
6113#[repr(u32)]
6114#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6115pub enum VipsForeignHeifCompression {
6116    VIPS_FOREIGN_HEIF_COMPRESSION_HEVC = 1,
6117    VIPS_FOREIGN_HEIF_COMPRESSION_AVC = 2,
6118    VIPS_FOREIGN_HEIF_COMPRESSION_JPEG = 3,
6119    VIPS_FOREIGN_HEIF_COMPRESSION_AV1 = 4,
6120    VIPS_FOREIGN_HEIF_COMPRESSION_LAST = 5,
6121}
6122#[repr(u32)]
6123#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6124pub enum VipsForeignHeifEncoder {
6125    VIPS_FOREIGN_HEIF_ENCODER_AUTO = 0,
6126    VIPS_FOREIGN_HEIF_ENCODER_AOM = 1,
6127    VIPS_FOREIGN_HEIF_ENCODER_RAV1E = 2,
6128    VIPS_FOREIGN_HEIF_ENCODER_SVT = 3,
6129    VIPS_FOREIGN_HEIF_ENCODER_X265 = 4,
6130    VIPS_FOREIGN_HEIF_ENCODER_LAST = 5,
6131}
6132#[repr(u32)]
6133#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6134pub enum VipsOperationMath {
6135    VIPS_OPERATION_MATH_SIN = 0,
6136    VIPS_OPERATION_MATH_COS = 1,
6137    VIPS_OPERATION_MATH_TAN = 2,
6138    VIPS_OPERATION_MATH_ASIN = 3,
6139    VIPS_OPERATION_MATH_ACOS = 4,
6140    VIPS_OPERATION_MATH_ATAN = 5,
6141    VIPS_OPERATION_MATH_LOG = 6,
6142    VIPS_OPERATION_MATH_LOG10 = 7,
6143    VIPS_OPERATION_MATH_EXP = 8,
6144    VIPS_OPERATION_MATH_EXP10 = 9,
6145    VIPS_OPERATION_MATH_SINH = 10,
6146    VIPS_OPERATION_MATH_COSH = 11,
6147    VIPS_OPERATION_MATH_TANH = 12,
6148    VIPS_OPERATION_MATH_ASINH = 13,
6149    VIPS_OPERATION_MATH_ACOSH = 14,
6150    VIPS_OPERATION_MATH_ATANH = 15,
6151    VIPS_OPERATION_MATH_LAST = 16,
6152}
6153#[repr(u32)]
6154#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6155pub enum VipsOperationMath2 {
6156    VIPS_OPERATION_MATH2_POW = 0,
6157    VIPS_OPERATION_MATH2_WOP = 1,
6158    VIPS_OPERATION_MATH2_ATAN2 = 2,
6159    VIPS_OPERATION_MATH2_LAST = 3,
6160}
6161#[repr(u32)]
6162#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6163pub enum VipsOperationRound {
6164    VIPS_OPERATION_ROUND_RINT = 0,
6165    VIPS_OPERATION_ROUND_CEIL = 1,
6166    VIPS_OPERATION_ROUND_FLOOR = 2,
6167    VIPS_OPERATION_ROUND_LAST = 3,
6168}
6169#[repr(u32)]
6170#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6171pub enum VipsOperationRelational {
6172    VIPS_OPERATION_RELATIONAL_EQUAL = 0,
6173    VIPS_OPERATION_RELATIONAL_NOTEQ = 1,
6174    VIPS_OPERATION_RELATIONAL_LESS = 2,
6175    VIPS_OPERATION_RELATIONAL_LESSEQ = 3,
6176    VIPS_OPERATION_RELATIONAL_MORE = 4,
6177    VIPS_OPERATION_RELATIONAL_MOREEQ = 5,
6178    VIPS_OPERATION_RELATIONAL_LAST = 6,
6179}
6180#[repr(u32)]
6181#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6182pub enum VipsOperationBoolean {
6183    VIPS_OPERATION_BOOLEAN_AND = 0,
6184    VIPS_OPERATION_BOOLEAN_OR = 1,
6185    VIPS_OPERATION_BOOLEAN_EOR = 2,
6186    VIPS_OPERATION_BOOLEAN_LSHIFT = 3,
6187    VIPS_OPERATION_BOOLEAN_RSHIFT = 4,
6188    VIPS_OPERATION_BOOLEAN_LAST = 5,
6189}
6190#[repr(u32)]
6191#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6192pub enum VipsOperationComplex {
6193    VIPS_OPERATION_COMPLEX_POLAR = 0,
6194    VIPS_OPERATION_COMPLEX_RECT = 1,
6195    VIPS_OPERATION_COMPLEX_CONJ = 2,
6196    VIPS_OPERATION_COMPLEX_LAST = 3,
6197}
6198#[repr(u32)]
6199#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6200pub enum VipsOperationComplex2 {
6201    VIPS_OPERATION_COMPLEX2_CROSS_PHASE = 0,
6202    VIPS_OPERATION_COMPLEX2_LAST = 1,
6203}
6204#[repr(u32)]
6205#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6206pub enum VipsOperationComplexget {
6207    VIPS_OPERATION_COMPLEXGET_REAL = 0,
6208    VIPS_OPERATION_COMPLEXGET_IMAG = 1,
6209    VIPS_OPERATION_COMPLEXGET_LAST = 2,
6210}
6211unsafe extern "C" {
6212    pub fn vips_add(
6213        left: *mut VipsImage,
6214        right: *mut VipsImage,
6215        out: *mut *mut VipsImage,
6216        ...
6217    ) -> core::ffi::c_int;
6218}
6219unsafe extern "C" {
6220    pub fn vips_sum(
6221        in_: *mut *mut VipsImage,
6222        out: *mut *mut VipsImage,
6223        n: core::ffi::c_int,
6224        ...
6225    ) -> core::ffi::c_int;
6226}
6227unsafe extern "C" {
6228    pub fn vips_subtract(
6229        in1: *mut VipsImage,
6230        in2: *mut VipsImage,
6231        out: *mut *mut VipsImage,
6232        ...
6233    ) -> core::ffi::c_int;
6234}
6235unsafe extern "C" {
6236    pub fn vips_multiply(
6237        left: *mut VipsImage,
6238        right: *mut VipsImage,
6239        out: *mut *mut VipsImage,
6240        ...
6241    ) -> core::ffi::c_int;
6242}
6243unsafe extern "C" {
6244    pub fn vips_divide(
6245        left: *mut VipsImage,
6246        right: *mut VipsImage,
6247        out: *mut *mut VipsImage,
6248        ...
6249    ) -> core::ffi::c_int;
6250}
6251unsafe extern "C" {
6252    pub fn vips_linear(
6253        in_: *mut VipsImage,
6254        out: *mut *mut VipsImage,
6255        a: *const f64,
6256        b: *const f64,
6257        n: core::ffi::c_int,
6258        ...
6259    ) -> core::ffi::c_int;
6260}
6261unsafe extern "C" {
6262    pub fn vips_linear1(
6263        in_: *mut VipsImage,
6264        out: *mut *mut VipsImage,
6265        a: f64,
6266        b: f64,
6267        ...
6268    ) -> core::ffi::c_int;
6269}
6270unsafe extern "C" {
6271    pub fn vips_remainder(
6272        left: *mut VipsImage,
6273        right: *mut VipsImage,
6274        out: *mut *mut VipsImage,
6275        ...
6276    ) -> core::ffi::c_int;
6277}
6278unsafe extern "C" {
6279    pub fn vips_remainder_const(
6280        in_: *mut VipsImage,
6281        out: *mut *mut VipsImage,
6282        c: *const f64,
6283        n: core::ffi::c_int,
6284        ...
6285    ) -> core::ffi::c_int;
6286}
6287unsafe extern "C" {
6288    pub fn vips_remainder_const1(
6289        in_: *mut VipsImage,
6290        out: *mut *mut VipsImage,
6291        c: f64,
6292        ...
6293    ) -> core::ffi::c_int;
6294}
6295unsafe extern "C" {
6296    pub fn vips_invert(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6297}
6298unsafe extern "C" {
6299    pub fn vips_abs(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6300}
6301unsafe extern "C" {
6302    pub fn vips_sign(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6303}
6304unsafe extern "C" {
6305    pub fn vips_clamp(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6306}
6307unsafe extern "C" {
6308    pub fn vips_maxpair(
6309        left: *mut VipsImage,
6310        right: *mut VipsImage,
6311        out: *mut *mut VipsImage,
6312        ...
6313    ) -> core::ffi::c_int;
6314}
6315unsafe extern "C" {
6316    pub fn vips_minpair(
6317        left: *mut VipsImage,
6318        right: *mut VipsImage,
6319        out: *mut *mut VipsImage,
6320        ...
6321    ) -> core::ffi::c_int;
6322}
6323unsafe extern "C" {
6324    pub fn vips_round(
6325        in_: *mut VipsImage,
6326        out: *mut *mut VipsImage,
6327        round: VipsOperationRound,
6328        ...
6329    ) -> core::ffi::c_int;
6330}
6331unsafe extern "C" {
6332    pub fn vips_floor(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6333}
6334unsafe extern "C" {
6335    pub fn vips_ceil(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6336}
6337unsafe extern "C" {
6338    pub fn vips_rint(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6339}
6340unsafe extern "C" {
6341    pub fn vips_math(
6342        in_: *mut VipsImage,
6343        out: *mut *mut VipsImage,
6344        math: VipsOperationMath,
6345        ...
6346    ) -> core::ffi::c_int;
6347}
6348unsafe extern "C" {
6349    pub fn vips_sin(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6350}
6351unsafe extern "C" {
6352    pub fn vips_cos(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6353}
6354unsafe extern "C" {
6355    pub fn vips_tan(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6356}
6357unsafe extern "C" {
6358    pub fn vips_asin(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6359}
6360unsafe extern "C" {
6361    pub fn vips_acos(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6362}
6363unsafe extern "C" {
6364    pub fn vips_atan(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6365}
6366unsafe extern "C" {
6367    pub fn vips_exp(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6368}
6369unsafe extern "C" {
6370    pub fn vips_exp10(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6371}
6372unsafe extern "C" {
6373    pub fn vips_log(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6374}
6375unsafe extern "C" {
6376    pub fn vips_log10(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6377}
6378unsafe extern "C" {
6379    pub fn vips_sinh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6380}
6381unsafe extern "C" {
6382    pub fn vips_cosh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6383}
6384unsafe extern "C" {
6385    pub fn vips_tanh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6386}
6387unsafe extern "C" {
6388    pub fn vips_asinh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6389}
6390unsafe extern "C" {
6391    pub fn vips_acosh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6392}
6393unsafe extern "C" {
6394    pub fn vips_atanh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6395}
6396unsafe extern "C" {
6397    pub fn vips_complex(
6398        in_: *mut VipsImage,
6399        out: *mut *mut VipsImage,
6400        cmplx: VipsOperationComplex,
6401        ...
6402    ) -> core::ffi::c_int;
6403}
6404unsafe extern "C" {
6405    pub fn vips_polar(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6406}
6407unsafe extern "C" {
6408    pub fn vips_rect(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6409}
6410unsafe extern "C" {
6411    pub fn vips_conj(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6412}
6413unsafe extern "C" {
6414    pub fn vips_complex2(
6415        left: *mut VipsImage,
6416        right: *mut VipsImage,
6417        out: *mut *mut VipsImage,
6418        cmplx: VipsOperationComplex2,
6419        ...
6420    ) -> core::ffi::c_int;
6421}
6422unsafe extern "C" {
6423    pub fn vips_cross_phase(
6424        left: *mut VipsImage,
6425        right: *mut VipsImage,
6426        out: *mut *mut VipsImage,
6427        ...
6428    ) -> core::ffi::c_int;
6429}
6430unsafe extern "C" {
6431    pub fn vips_complexget(
6432        in_: *mut VipsImage,
6433        out: *mut *mut VipsImage,
6434        get: VipsOperationComplexget,
6435        ...
6436    ) -> core::ffi::c_int;
6437}
6438unsafe extern "C" {
6439    pub fn vips_real(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6440}
6441unsafe extern "C" {
6442    pub fn vips_imag(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6443}
6444unsafe extern "C" {
6445    pub fn vips_complexform(
6446        left: *mut VipsImage,
6447        right: *mut VipsImage,
6448        out: *mut *mut VipsImage,
6449        ...
6450    ) -> core::ffi::c_int;
6451}
6452unsafe extern "C" {
6453    pub fn vips_relational(
6454        left: *mut VipsImage,
6455        right: *mut VipsImage,
6456        out: *mut *mut VipsImage,
6457        relational: VipsOperationRelational,
6458        ...
6459    ) -> core::ffi::c_int;
6460}
6461unsafe extern "C" {
6462    pub fn vips_equal(
6463        left: *mut VipsImage,
6464        right: *mut VipsImage,
6465        out: *mut *mut VipsImage,
6466        ...
6467    ) -> core::ffi::c_int;
6468}
6469unsafe extern "C" {
6470    pub fn vips_notequal(
6471        left: *mut VipsImage,
6472        right: *mut VipsImage,
6473        out: *mut *mut VipsImage,
6474        ...
6475    ) -> core::ffi::c_int;
6476}
6477unsafe extern "C" {
6478    pub fn vips_less(
6479        left: *mut VipsImage,
6480        right: *mut VipsImage,
6481        out: *mut *mut VipsImage,
6482        ...
6483    ) -> core::ffi::c_int;
6484}
6485unsafe extern "C" {
6486    pub fn vips_lesseq(
6487        left: *mut VipsImage,
6488        right: *mut VipsImage,
6489        out: *mut *mut VipsImage,
6490        ...
6491    ) -> core::ffi::c_int;
6492}
6493unsafe extern "C" {
6494    pub fn vips_more(
6495        left: *mut VipsImage,
6496        right: *mut VipsImage,
6497        out: *mut *mut VipsImage,
6498        ...
6499    ) -> core::ffi::c_int;
6500}
6501unsafe extern "C" {
6502    pub fn vips_moreeq(
6503        left: *mut VipsImage,
6504        right: *mut VipsImage,
6505        out: *mut *mut VipsImage,
6506        ...
6507    ) -> core::ffi::c_int;
6508}
6509unsafe extern "C" {
6510    pub fn vips_relational_const(
6511        in_: *mut VipsImage,
6512        out: *mut *mut VipsImage,
6513        relational: VipsOperationRelational,
6514        c: *const f64,
6515        n: core::ffi::c_int,
6516        ...
6517    ) -> core::ffi::c_int;
6518}
6519unsafe extern "C" {
6520    pub fn vips_equal_const(
6521        in_: *mut VipsImage,
6522        out: *mut *mut VipsImage,
6523        c: *const f64,
6524        n: core::ffi::c_int,
6525        ...
6526    ) -> core::ffi::c_int;
6527}
6528unsafe extern "C" {
6529    pub fn vips_notequal_const(
6530        in_: *mut VipsImage,
6531        out: *mut *mut VipsImage,
6532        c: *const f64,
6533        n: core::ffi::c_int,
6534        ...
6535    ) -> core::ffi::c_int;
6536}
6537unsafe extern "C" {
6538    pub fn vips_less_const(
6539        in_: *mut VipsImage,
6540        out: *mut *mut VipsImage,
6541        c: *const f64,
6542        n: core::ffi::c_int,
6543        ...
6544    ) -> core::ffi::c_int;
6545}
6546unsafe extern "C" {
6547    pub fn vips_lesseq_const(
6548        in_: *mut VipsImage,
6549        out: *mut *mut VipsImage,
6550        c: *const f64,
6551        n: core::ffi::c_int,
6552        ...
6553    ) -> core::ffi::c_int;
6554}
6555unsafe extern "C" {
6556    pub fn vips_more_const(
6557        in_: *mut VipsImage,
6558        out: *mut *mut VipsImage,
6559        c: *const f64,
6560        n: core::ffi::c_int,
6561        ...
6562    ) -> core::ffi::c_int;
6563}
6564unsafe extern "C" {
6565    pub fn vips_moreeq_const(
6566        in_: *mut VipsImage,
6567        out: *mut *mut VipsImage,
6568        c: *const f64,
6569        n: core::ffi::c_int,
6570        ...
6571    ) -> core::ffi::c_int;
6572}
6573unsafe extern "C" {
6574    pub fn vips_relational_const1(
6575        in_: *mut VipsImage,
6576        out: *mut *mut VipsImage,
6577        relational: VipsOperationRelational,
6578        c: f64,
6579        ...
6580    ) -> core::ffi::c_int;
6581}
6582unsafe extern "C" {
6583    pub fn vips_equal_const1(
6584        in_: *mut VipsImage,
6585        out: *mut *mut VipsImage,
6586        c: f64,
6587        ...
6588    ) -> core::ffi::c_int;
6589}
6590unsafe extern "C" {
6591    pub fn vips_notequal_const1(
6592        in_: *mut VipsImage,
6593        out: *mut *mut VipsImage,
6594        c: f64,
6595        ...
6596    ) -> core::ffi::c_int;
6597}
6598unsafe extern "C" {
6599    pub fn vips_less_const1(
6600        in_: *mut VipsImage,
6601        out: *mut *mut VipsImage,
6602        c: f64,
6603        ...
6604    ) -> core::ffi::c_int;
6605}
6606unsafe extern "C" {
6607    pub fn vips_lesseq_const1(
6608        in_: *mut VipsImage,
6609        out: *mut *mut VipsImage,
6610        c: f64,
6611        ...
6612    ) -> core::ffi::c_int;
6613}
6614unsafe extern "C" {
6615    pub fn vips_more_const1(
6616        in_: *mut VipsImage,
6617        out: *mut *mut VipsImage,
6618        c: f64,
6619        ...
6620    ) -> core::ffi::c_int;
6621}
6622unsafe extern "C" {
6623    pub fn vips_moreeq_const1(
6624        in_: *mut VipsImage,
6625        out: *mut *mut VipsImage,
6626        c: f64,
6627        ...
6628    ) -> core::ffi::c_int;
6629}
6630unsafe extern "C" {
6631    pub fn vips_boolean(
6632        left: *mut VipsImage,
6633        right: *mut VipsImage,
6634        out: *mut *mut VipsImage,
6635        boolean: VipsOperationBoolean,
6636        ...
6637    ) -> core::ffi::c_int;
6638}
6639unsafe extern "C" {
6640    pub fn vips_andimage(
6641        left: *mut VipsImage,
6642        right: *mut VipsImage,
6643        out: *mut *mut VipsImage,
6644        ...
6645    ) -> core::ffi::c_int;
6646}
6647unsafe extern "C" {
6648    pub fn vips_orimage(
6649        left: *mut VipsImage,
6650        right: *mut VipsImage,
6651        out: *mut *mut VipsImage,
6652        ...
6653    ) -> core::ffi::c_int;
6654}
6655unsafe extern "C" {
6656    pub fn vips_eorimage(
6657        left: *mut VipsImage,
6658        right: *mut VipsImage,
6659        out: *mut *mut VipsImage,
6660        ...
6661    ) -> core::ffi::c_int;
6662}
6663unsafe extern "C" {
6664    pub fn vips_lshift(
6665        left: *mut VipsImage,
6666        right: *mut VipsImage,
6667        out: *mut *mut VipsImage,
6668        ...
6669    ) -> core::ffi::c_int;
6670}
6671unsafe extern "C" {
6672    pub fn vips_rshift(
6673        left: *mut VipsImage,
6674        right: *mut VipsImage,
6675        out: *mut *mut VipsImage,
6676        ...
6677    ) -> core::ffi::c_int;
6678}
6679unsafe extern "C" {
6680    pub fn vips_boolean_const(
6681        in_: *mut VipsImage,
6682        out: *mut *mut VipsImage,
6683        boolean: VipsOperationBoolean,
6684        c: *const f64,
6685        n: core::ffi::c_int,
6686        ...
6687    ) -> core::ffi::c_int;
6688}
6689unsafe extern "C" {
6690    pub fn vips_andimage_const(
6691        in_: *mut VipsImage,
6692        out: *mut *mut VipsImage,
6693        c: *const f64,
6694        n: core::ffi::c_int,
6695        ...
6696    ) -> core::ffi::c_int;
6697}
6698unsafe extern "C" {
6699    pub fn vips_orimage_const(
6700        in_: *mut VipsImage,
6701        out: *mut *mut VipsImage,
6702        c: *const f64,
6703        n: core::ffi::c_int,
6704        ...
6705    ) -> core::ffi::c_int;
6706}
6707unsafe extern "C" {
6708    pub fn vips_eorimage_const(
6709        in_: *mut VipsImage,
6710        out: *mut *mut VipsImage,
6711        c: *const f64,
6712        n: core::ffi::c_int,
6713        ...
6714    ) -> core::ffi::c_int;
6715}
6716unsafe extern "C" {
6717    pub fn vips_lshift_const(
6718        in_: *mut VipsImage,
6719        out: *mut *mut VipsImage,
6720        c: *const f64,
6721        n: core::ffi::c_int,
6722        ...
6723    ) -> core::ffi::c_int;
6724}
6725unsafe extern "C" {
6726    pub fn vips_rshift_const(
6727        in_: *mut VipsImage,
6728        out: *mut *mut VipsImage,
6729        c: *const f64,
6730        n: core::ffi::c_int,
6731        ...
6732    ) -> core::ffi::c_int;
6733}
6734unsafe extern "C" {
6735    pub fn vips_boolean_const1(
6736        in_: *mut VipsImage,
6737        out: *mut *mut VipsImage,
6738        boolean: VipsOperationBoolean,
6739        c: f64,
6740        ...
6741    ) -> core::ffi::c_int;
6742}
6743unsafe extern "C" {
6744    pub fn vips_andimage_const1(
6745        in_: *mut VipsImage,
6746        out: *mut *mut VipsImage,
6747        c: f64,
6748        ...
6749    ) -> core::ffi::c_int;
6750}
6751unsafe extern "C" {
6752    pub fn vips_orimage_const1(
6753        in_: *mut VipsImage,
6754        out: *mut *mut VipsImage,
6755        c: f64,
6756        ...
6757    ) -> core::ffi::c_int;
6758}
6759unsafe extern "C" {
6760    pub fn vips_eorimage_const1(
6761        in_: *mut VipsImage,
6762        out: *mut *mut VipsImage,
6763        c: f64,
6764        ...
6765    ) -> core::ffi::c_int;
6766}
6767unsafe extern "C" {
6768    pub fn vips_lshift_const1(
6769        in_: *mut VipsImage,
6770        out: *mut *mut VipsImage,
6771        c: f64,
6772        ...
6773    ) -> core::ffi::c_int;
6774}
6775unsafe extern "C" {
6776    pub fn vips_rshift_const1(
6777        in_: *mut VipsImage,
6778        out: *mut *mut VipsImage,
6779        c: f64,
6780        ...
6781    ) -> core::ffi::c_int;
6782}
6783unsafe extern "C" {
6784    pub fn vips_math2(
6785        left: *mut VipsImage,
6786        right: *mut VipsImage,
6787        out: *mut *mut VipsImage,
6788        math2: VipsOperationMath2,
6789        ...
6790    ) -> core::ffi::c_int;
6791}
6792unsafe extern "C" {
6793    pub fn vips_pow(
6794        left: *mut VipsImage,
6795        right: *mut VipsImage,
6796        out: *mut *mut VipsImage,
6797        ...
6798    ) -> core::ffi::c_int;
6799}
6800unsafe extern "C" {
6801    pub fn vips_wop(
6802        left: *mut VipsImage,
6803        right: *mut VipsImage,
6804        out: *mut *mut VipsImage,
6805        ...
6806    ) -> core::ffi::c_int;
6807}
6808unsafe extern "C" {
6809    pub fn vips_atan2(
6810        left: *mut VipsImage,
6811        right: *mut VipsImage,
6812        out: *mut *mut VipsImage,
6813        ...
6814    ) -> core::ffi::c_int;
6815}
6816unsafe extern "C" {
6817    pub fn vips_math2_const(
6818        in_: *mut VipsImage,
6819        out: *mut *mut VipsImage,
6820        math2: VipsOperationMath2,
6821        c: *const f64,
6822        n: core::ffi::c_int,
6823        ...
6824    ) -> core::ffi::c_int;
6825}
6826unsafe extern "C" {
6827    pub fn vips_pow_const(
6828        in_: *mut VipsImage,
6829        out: *mut *mut VipsImage,
6830        c: *const f64,
6831        n: core::ffi::c_int,
6832        ...
6833    ) -> core::ffi::c_int;
6834}
6835unsafe extern "C" {
6836    pub fn vips_wop_const(
6837        in_: *mut VipsImage,
6838        out: *mut *mut VipsImage,
6839        c: *const f64,
6840        n: core::ffi::c_int,
6841        ...
6842    ) -> core::ffi::c_int;
6843}
6844unsafe extern "C" {
6845    pub fn vips_atan2_const(
6846        in_: *mut VipsImage,
6847        out: *mut *mut VipsImage,
6848        c: *const f64,
6849        n: core::ffi::c_int,
6850        ...
6851    ) -> core::ffi::c_int;
6852}
6853unsafe extern "C" {
6854    pub fn vips_math2_const1(
6855        in_: *mut VipsImage,
6856        out: *mut *mut VipsImage,
6857        math2: VipsOperationMath2,
6858        c: f64,
6859        ...
6860    ) -> core::ffi::c_int;
6861}
6862unsafe extern "C" {
6863    pub fn vips_pow_const1(
6864        in_: *mut VipsImage,
6865        out: *mut *mut VipsImage,
6866        c: f64,
6867        ...
6868    ) -> core::ffi::c_int;
6869}
6870unsafe extern "C" {
6871    pub fn vips_wop_const1(
6872        in_: *mut VipsImage,
6873        out: *mut *mut VipsImage,
6874        c: f64,
6875        ...
6876    ) -> core::ffi::c_int;
6877}
6878unsafe extern "C" {
6879    pub fn vips_atan2_const1(
6880        in_: *mut VipsImage,
6881        out: *mut *mut VipsImage,
6882        c: f64,
6883        ...
6884    ) -> core::ffi::c_int;
6885}
6886unsafe extern "C" {
6887    pub fn vips_avg(in_: *mut VipsImage, out: *mut f64, ...) -> core::ffi::c_int;
6888}
6889unsafe extern "C" {
6890    pub fn vips_deviate(in_: *mut VipsImage, out: *mut f64, ...) -> core::ffi::c_int;
6891}
6892unsafe extern "C" {
6893    pub fn vips_min(in_: *mut VipsImage, out: *mut f64, ...) -> core::ffi::c_int;
6894}
6895unsafe extern "C" {
6896    pub fn vips_max(in_: *mut VipsImage, out: *mut f64, ...) -> core::ffi::c_int;
6897}
6898unsafe extern "C" {
6899    pub fn vips_stats(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6900}
6901unsafe extern "C" {
6902    pub fn vips_measure(
6903        in_: *mut VipsImage,
6904        out: *mut *mut VipsImage,
6905        h: core::ffi::c_int,
6906        v: core::ffi::c_int,
6907        ...
6908    ) -> core::ffi::c_int;
6909}
6910unsafe extern "C" {
6911    pub fn vips_find_trim(
6912        in_: *mut VipsImage,
6913        left: *mut core::ffi::c_int,
6914        top: *mut core::ffi::c_int,
6915        width: *mut core::ffi::c_int,
6916        height: *mut core::ffi::c_int,
6917        ...
6918    ) -> core::ffi::c_int;
6919}
6920unsafe extern "C" {
6921    pub fn vips_getpoint(
6922        in_: *mut VipsImage,
6923        vector: *mut *mut f64,
6924        n: *mut core::ffi::c_int,
6925        x: core::ffi::c_int,
6926        y: core::ffi::c_int,
6927        ...
6928    ) -> core::ffi::c_int;
6929}
6930unsafe extern "C" {
6931    pub fn vips_hist_find(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6932}
6933unsafe extern "C" {
6934    pub fn vips_hist_find_ndim(
6935        in_: *mut VipsImage,
6936        out: *mut *mut VipsImage,
6937        ...
6938    ) -> core::ffi::c_int;
6939}
6940unsafe extern "C" {
6941    pub fn vips_hist_find_indexed(
6942        in_: *mut VipsImage,
6943        index: *mut VipsImage,
6944        out: *mut *mut VipsImage,
6945        ...
6946    ) -> core::ffi::c_int;
6947}
6948unsafe extern "C" {
6949    pub fn vips_hough_line(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6950}
6951unsafe extern "C" {
6952    pub fn vips_hough_circle(
6953        in_: *mut VipsImage,
6954        out: *mut *mut VipsImage,
6955        ...
6956    ) -> core::ffi::c_int;
6957}
6958unsafe extern "C" {
6959    pub fn vips_project(
6960        in_: *mut VipsImage,
6961        columns: *mut *mut VipsImage,
6962        rows: *mut *mut VipsImage,
6963        ...
6964    ) -> core::ffi::c_int;
6965}
6966unsafe extern "C" {
6967    pub fn vips_profile(
6968        in_: *mut VipsImage,
6969        columns: *mut *mut VipsImage,
6970        rows: *mut *mut VipsImage,
6971        ...
6972    ) -> core::ffi::c_int;
6973}
6974#[repr(u32)]
6975#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6976pub enum VipsExtend {
6977    VIPS_EXTEND_BLACK = 0,
6978    VIPS_EXTEND_COPY = 1,
6979    VIPS_EXTEND_REPEAT = 2,
6980    VIPS_EXTEND_MIRROR = 3,
6981    VIPS_EXTEND_WHITE = 4,
6982    VIPS_EXTEND_BACKGROUND = 5,
6983    VIPS_EXTEND_LAST = 6,
6984}
6985#[repr(u32)]
6986#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6987pub enum VipsCompassDirection {
6988    VIPS_COMPASS_DIRECTION_CENTRE = 0,
6989    VIPS_COMPASS_DIRECTION_NORTH = 1,
6990    VIPS_COMPASS_DIRECTION_EAST = 2,
6991    VIPS_COMPASS_DIRECTION_SOUTH = 3,
6992    VIPS_COMPASS_DIRECTION_WEST = 4,
6993    VIPS_COMPASS_DIRECTION_NORTH_EAST = 5,
6994    VIPS_COMPASS_DIRECTION_SOUTH_EAST = 6,
6995    VIPS_COMPASS_DIRECTION_SOUTH_WEST = 7,
6996    VIPS_COMPASS_DIRECTION_NORTH_WEST = 8,
6997    VIPS_COMPASS_DIRECTION_LAST = 9,
6998}
6999#[repr(u32)]
7000#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7001pub enum VipsDirection {
7002    VIPS_DIRECTION_HORIZONTAL = 0,
7003    VIPS_DIRECTION_VERTICAL = 1,
7004    VIPS_DIRECTION_LAST = 2,
7005}
7006#[repr(u32)]
7007#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7008pub enum VipsAlign {
7009    VIPS_ALIGN_LOW = 0,
7010    VIPS_ALIGN_CENTRE = 1,
7011    VIPS_ALIGN_HIGH = 2,
7012    VIPS_ALIGN_LAST = 3,
7013}
7014#[repr(u32)]
7015#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7016pub enum VipsAngle {
7017    VIPS_ANGLE_D0 = 0,
7018    VIPS_ANGLE_D90 = 1,
7019    VIPS_ANGLE_D180 = 2,
7020    VIPS_ANGLE_D270 = 3,
7021    VIPS_ANGLE_LAST = 4,
7022}
7023#[repr(u32)]
7024#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7025pub enum VipsAngle45 {
7026    VIPS_ANGLE45_D0 = 0,
7027    VIPS_ANGLE45_D45 = 1,
7028    VIPS_ANGLE45_D90 = 2,
7029    VIPS_ANGLE45_D135 = 3,
7030    VIPS_ANGLE45_D180 = 4,
7031    VIPS_ANGLE45_D225 = 5,
7032    VIPS_ANGLE45_D270 = 6,
7033    VIPS_ANGLE45_D315 = 7,
7034    VIPS_ANGLE45_LAST = 8,
7035}
7036#[repr(u32)]
7037#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7038pub enum VipsInteresting {
7039    VIPS_INTERESTING_NONE = 0,
7040    VIPS_INTERESTING_CENTRE = 1,
7041    VIPS_INTERESTING_ENTROPY = 2,
7042    VIPS_INTERESTING_ATTENTION = 3,
7043    VIPS_INTERESTING_LOW = 4,
7044    VIPS_INTERESTING_HIGH = 5,
7045    VIPS_INTERESTING_ALL = 6,
7046    VIPS_INTERESTING_LAST = 7,
7047}
7048#[repr(u32)]
7049#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7050pub enum VipsBlendMode {
7051    VIPS_BLEND_MODE_CLEAR = 0,
7052    VIPS_BLEND_MODE_SOURCE = 1,
7053    VIPS_BLEND_MODE_OVER = 2,
7054    VIPS_BLEND_MODE_IN = 3,
7055    VIPS_BLEND_MODE_OUT = 4,
7056    VIPS_BLEND_MODE_ATOP = 5,
7057    VIPS_BLEND_MODE_DEST = 6,
7058    VIPS_BLEND_MODE_DEST_OVER = 7,
7059    VIPS_BLEND_MODE_DEST_IN = 8,
7060    VIPS_BLEND_MODE_DEST_OUT = 9,
7061    VIPS_BLEND_MODE_DEST_ATOP = 10,
7062    VIPS_BLEND_MODE_XOR = 11,
7063    VIPS_BLEND_MODE_ADD = 12,
7064    VIPS_BLEND_MODE_SATURATE = 13,
7065    VIPS_BLEND_MODE_MULTIPLY = 14,
7066    VIPS_BLEND_MODE_SCREEN = 15,
7067    VIPS_BLEND_MODE_OVERLAY = 16,
7068    VIPS_BLEND_MODE_DARKEN = 17,
7069    VIPS_BLEND_MODE_LIGHTEN = 18,
7070    VIPS_BLEND_MODE_COLOUR_DODGE = 19,
7071    VIPS_BLEND_MODE_COLOUR_BURN = 20,
7072    VIPS_BLEND_MODE_HARD_LIGHT = 21,
7073    VIPS_BLEND_MODE_SOFT_LIGHT = 22,
7074    VIPS_BLEND_MODE_DIFFERENCE = 23,
7075    VIPS_BLEND_MODE_EXCLUSION = 24,
7076    VIPS_BLEND_MODE_LAST = 25,
7077}
7078unsafe extern "C" {
7079    pub fn vips_copy(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7080}
7081unsafe extern "C" {
7082    pub fn vips_tilecache(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7083}
7084unsafe extern "C" {
7085    pub fn vips_linecache(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7086}
7087unsafe extern "C" {
7088    pub fn vips_sequential(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7089}
7090unsafe extern "C" {
7091    pub fn vips_copy_file(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7092}
7093unsafe extern "C" {
7094    pub fn vips_embed(
7095        in_: *mut VipsImage,
7096        out: *mut *mut VipsImage,
7097        x: core::ffi::c_int,
7098        y: core::ffi::c_int,
7099        width: core::ffi::c_int,
7100        height: core::ffi::c_int,
7101        ...
7102    ) -> core::ffi::c_int;
7103}
7104unsafe extern "C" {
7105    pub fn vips_gravity(
7106        in_: *mut VipsImage,
7107        out: *mut *mut VipsImage,
7108        direction: VipsCompassDirection,
7109        width: core::ffi::c_int,
7110        height: core::ffi::c_int,
7111        ...
7112    ) -> core::ffi::c_int;
7113}
7114unsafe extern "C" {
7115    pub fn vips_flip(
7116        in_: *mut VipsImage,
7117        out: *mut *mut VipsImage,
7118        direction: VipsDirection,
7119        ...
7120    ) -> core::ffi::c_int;
7121}
7122unsafe extern "C" {
7123    pub fn vips_insert(
7124        main: *mut VipsImage,
7125        sub: *mut VipsImage,
7126        out: *mut *mut VipsImage,
7127        x: core::ffi::c_int,
7128        y: core::ffi::c_int,
7129        ...
7130    ) -> core::ffi::c_int;
7131}
7132unsafe extern "C" {
7133    pub fn vips_join(
7134        in1: *mut VipsImage,
7135        in2: *mut VipsImage,
7136        out: *mut *mut VipsImage,
7137        direction: VipsDirection,
7138        ...
7139    ) -> core::ffi::c_int;
7140}
7141unsafe extern "C" {
7142    pub fn vips_arrayjoin(
7143        in_: *mut *mut VipsImage,
7144        out: *mut *mut VipsImage,
7145        n: core::ffi::c_int,
7146        ...
7147    ) -> core::ffi::c_int;
7148}
7149unsafe extern "C" {
7150    pub fn vips_extract_area(
7151        in_: *mut VipsImage,
7152        out: *mut *mut VipsImage,
7153        left: core::ffi::c_int,
7154        top: core::ffi::c_int,
7155        width: core::ffi::c_int,
7156        height: core::ffi::c_int,
7157        ...
7158    ) -> core::ffi::c_int;
7159}
7160unsafe extern "C" {
7161    pub fn vips_crop(
7162        in_: *mut VipsImage,
7163        out: *mut *mut VipsImage,
7164        left: core::ffi::c_int,
7165        top: core::ffi::c_int,
7166        width: core::ffi::c_int,
7167        height: core::ffi::c_int,
7168        ...
7169    ) -> core::ffi::c_int;
7170}
7171unsafe extern "C" {
7172    pub fn vips_smartcrop(
7173        in_: *mut VipsImage,
7174        out: *mut *mut VipsImage,
7175        width: core::ffi::c_int,
7176        height: core::ffi::c_int,
7177        ...
7178    ) -> core::ffi::c_int;
7179}
7180unsafe extern "C" {
7181    pub fn vips_extract_band(
7182        in_: *mut VipsImage,
7183        out: *mut *mut VipsImage,
7184        band: core::ffi::c_int,
7185        ...
7186    ) -> core::ffi::c_int;
7187}
7188unsafe extern "C" {
7189    pub fn vips_replicate(
7190        in_: *mut VipsImage,
7191        out: *mut *mut VipsImage,
7192        across: core::ffi::c_int,
7193        down: core::ffi::c_int,
7194        ...
7195    ) -> core::ffi::c_int;
7196}
7197unsafe extern "C" {
7198    pub fn vips_grid(
7199        in_: *mut VipsImage,
7200        out: *mut *mut VipsImage,
7201        tile_height: core::ffi::c_int,
7202        across: core::ffi::c_int,
7203        down: core::ffi::c_int,
7204        ...
7205    ) -> core::ffi::c_int;
7206}
7207unsafe extern "C" {
7208    pub fn vips_transpose3d(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
7209    -> core::ffi::c_int;
7210}
7211unsafe extern "C" {
7212    pub fn vips_wrap(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7213}
7214unsafe extern "C" {
7215    pub fn vips_rot(
7216        in_: *mut VipsImage,
7217        out: *mut *mut VipsImage,
7218        angle: VipsAngle,
7219        ...
7220    ) -> core::ffi::c_int;
7221}
7222unsafe extern "C" {
7223    pub fn vips_rot90(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7224}
7225unsafe extern "C" {
7226    pub fn vips_rot180(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7227}
7228unsafe extern "C" {
7229    pub fn vips_rot270(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7230}
7231unsafe extern "C" {
7232    pub fn vips_rot45(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7233}
7234unsafe extern "C" {
7235    pub fn vips_autorot_remove_angle(image: *mut VipsImage);
7236}
7237unsafe extern "C" {
7238    pub fn vips_autorot(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7239}
7240unsafe extern "C" {
7241    pub fn vips_zoom(
7242        in_: *mut VipsImage,
7243        out: *mut *mut VipsImage,
7244        xfac: core::ffi::c_int,
7245        yfac: core::ffi::c_int,
7246        ...
7247    ) -> core::ffi::c_int;
7248}
7249unsafe extern "C" {
7250    pub fn vips_subsample(
7251        in_: *mut VipsImage,
7252        out: *mut *mut VipsImage,
7253        xfac: core::ffi::c_int,
7254        yfac: core::ffi::c_int,
7255        ...
7256    ) -> core::ffi::c_int;
7257}
7258unsafe extern "C" {
7259    pub fn vips_cast(
7260        in_: *mut VipsImage,
7261        out: *mut *mut VipsImage,
7262        format: VipsBandFormat,
7263        ...
7264    ) -> core::ffi::c_int;
7265}
7266unsafe extern "C" {
7267    pub fn vips_cast_uchar(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7268}
7269unsafe extern "C" {
7270    pub fn vips_cast_char(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7271}
7272unsafe extern "C" {
7273    pub fn vips_cast_ushort(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
7274    -> core::ffi::c_int;
7275}
7276unsafe extern "C" {
7277    pub fn vips_cast_short(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7278}
7279unsafe extern "C" {
7280    pub fn vips_cast_uint(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7281}
7282unsafe extern "C" {
7283    pub fn vips_cast_int(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7284}
7285unsafe extern "C" {
7286    pub fn vips_cast_float(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7287}
7288unsafe extern "C" {
7289    pub fn vips_cast_double(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
7290    -> core::ffi::c_int;
7291}
7292unsafe extern "C" {
7293    pub fn vips_cast_complex(
7294        in_: *mut VipsImage,
7295        out: *mut *mut VipsImage,
7296        ...
7297    ) -> core::ffi::c_int;
7298}
7299unsafe extern "C" {
7300    pub fn vips_cast_dpcomplex(
7301        in_: *mut VipsImage,
7302        out: *mut *mut VipsImage,
7303        ...
7304    ) -> core::ffi::c_int;
7305}
7306unsafe extern "C" {
7307    pub fn vips_scale(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7308}
7309unsafe extern "C" {
7310    pub fn vips_msb(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7311}
7312unsafe extern "C" {
7313    pub fn vips_byteswap(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7314}
7315unsafe extern "C" {
7316    pub fn vips_bandjoin(
7317        in_: *mut *mut VipsImage,
7318        out: *mut *mut VipsImage,
7319        n: core::ffi::c_int,
7320        ...
7321    ) -> core::ffi::c_int;
7322}
7323unsafe extern "C" {
7324    pub fn vips_bandjoin2(
7325        in1: *mut VipsImage,
7326        in2: *mut VipsImage,
7327        out: *mut *mut VipsImage,
7328        ...
7329    ) -> core::ffi::c_int;
7330}
7331unsafe extern "C" {
7332    pub fn vips_bandjoin_const(
7333        in_: *mut VipsImage,
7334        out: *mut *mut VipsImage,
7335        c: *mut f64,
7336        n: core::ffi::c_int,
7337        ...
7338    ) -> core::ffi::c_int;
7339}
7340unsafe extern "C" {
7341    pub fn vips_bandjoin_const1(
7342        in_: *mut VipsImage,
7343        out: *mut *mut VipsImage,
7344        c: f64,
7345        ...
7346    ) -> core::ffi::c_int;
7347}
7348unsafe extern "C" {
7349    pub fn vips_bandrank(
7350        in_: *mut *mut VipsImage,
7351        out: *mut *mut VipsImage,
7352        n: core::ffi::c_int,
7353        ...
7354    ) -> core::ffi::c_int;
7355}
7356unsafe extern "C" {
7357    pub fn vips_bandfold(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7358}
7359unsafe extern "C" {
7360    pub fn vips_bandunfold(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7361}
7362unsafe extern "C" {
7363    pub fn vips_bandbool(
7364        in_: *mut VipsImage,
7365        out: *mut *mut VipsImage,
7366        boolean: VipsOperationBoolean,
7367        ...
7368    ) -> core::ffi::c_int;
7369}
7370unsafe extern "C" {
7371    pub fn vips_bandand(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7372}
7373unsafe extern "C" {
7374    pub fn vips_bandor(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7375}
7376unsafe extern "C" {
7377    pub fn vips_bandeor(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7378}
7379unsafe extern "C" {
7380    pub fn vips_bandmean(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7381}
7382unsafe extern "C" {
7383    pub fn vips_recomb(
7384        in_: *mut VipsImage,
7385        out: *mut *mut VipsImage,
7386        m: *mut VipsImage,
7387        ...
7388    ) -> core::ffi::c_int;
7389}
7390unsafe extern "C" {
7391    pub fn vips_ifthenelse(
7392        cond: *mut VipsImage,
7393        in1: *mut VipsImage,
7394        in2: *mut VipsImage,
7395        out: *mut *mut VipsImage,
7396        ...
7397    ) -> core::ffi::c_int;
7398}
7399unsafe extern "C" {
7400    pub fn vips_switch(
7401        tests: *mut *mut VipsImage,
7402        out: *mut *mut VipsImage,
7403        n: core::ffi::c_int,
7404        ...
7405    ) -> core::ffi::c_int;
7406}
7407unsafe extern "C" {
7408    pub fn vips_flatten(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7409}
7410unsafe extern "C" {
7411    pub fn vips_addalpha(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7412}
7413unsafe extern "C" {
7414    pub fn vips_premultiply(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
7415    -> core::ffi::c_int;
7416}
7417unsafe extern "C" {
7418    pub fn vips_unpremultiply(
7419        in_: *mut VipsImage,
7420        out: *mut *mut VipsImage,
7421        ...
7422    ) -> core::ffi::c_int;
7423}
7424unsafe extern "C" {
7425    pub fn vips_composite(
7426        in_: *mut *mut VipsImage,
7427        out: *mut *mut VipsImage,
7428        n: core::ffi::c_int,
7429        mode: *mut core::ffi::c_int,
7430        ...
7431    ) -> core::ffi::c_int;
7432}
7433unsafe extern "C" {
7434    pub fn vips_composite2(
7435        base: *mut VipsImage,
7436        overlay: *mut VipsImage,
7437        out: *mut *mut VipsImage,
7438        mode: VipsBlendMode,
7439        ...
7440    ) -> core::ffi::c_int;
7441}
7442unsafe extern "C" {
7443    pub fn vips_falsecolour(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
7444    -> core::ffi::c_int;
7445}
7446unsafe extern "C" {
7447    pub fn vips_gamma(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7448}
7449#[repr(u32)]
7450#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7451pub enum VipsCombine {
7452    VIPS_COMBINE_MAX = 0,
7453    VIPS_COMBINE_SUM = 1,
7454    VIPS_COMBINE_MIN = 2,
7455    VIPS_COMBINE_LAST = 3,
7456}
7457unsafe extern "C" {
7458    pub fn vips_conv(
7459        in_: *mut VipsImage,
7460        out: *mut *mut VipsImage,
7461        mask: *mut VipsImage,
7462        ...
7463    ) -> core::ffi::c_int;
7464}
7465unsafe extern "C" {
7466    pub fn vips_convf(
7467        in_: *mut VipsImage,
7468        out: *mut *mut VipsImage,
7469        mask: *mut VipsImage,
7470        ...
7471    ) -> core::ffi::c_int;
7472}
7473unsafe extern "C" {
7474    pub fn vips_convi(
7475        in_: *mut VipsImage,
7476        out: *mut *mut VipsImage,
7477        mask: *mut VipsImage,
7478        ...
7479    ) -> core::ffi::c_int;
7480}
7481unsafe extern "C" {
7482    pub fn vips_conva(
7483        in_: *mut VipsImage,
7484        out: *mut *mut VipsImage,
7485        mask: *mut VipsImage,
7486        ...
7487    ) -> core::ffi::c_int;
7488}
7489unsafe extern "C" {
7490    pub fn vips_convsep(
7491        in_: *mut VipsImage,
7492        out: *mut *mut VipsImage,
7493        mask: *mut VipsImage,
7494        ...
7495    ) -> core::ffi::c_int;
7496}
7497unsafe extern "C" {
7498    pub fn vips_convasep(
7499        in_: *mut VipsImage,
7500        out: *mut *mut VipsImage,
7501        mask: *mut VipsImage,
7502        ...
7503    ) -> core::ffi::c_int;
7504}
7505unsafe extern "C" {
7506    pub fn vips_compass(
7507        in_: *mut VipsImage,
7508        out: *mut *mut VipsImage,
7509        mask: *mut VipsImage,
7510        ...
7511    ) -> core::ffi::c_int;
7512}
7513unsafe extern "C" {
7514    pub fn vips_gaussblur(
7515        in_: *mut VipsImage,
7516        out: *mut *mut VipsImage,
7517        sigma: f64,
7518        ...
7519    ) -> core::ffi::c_int;
7520}
7521unsafe extern "C" {
7522    pub fn vips_sharpen(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7523}
7524unsafe extern "C" {
7525    pub fn vips_spcor(
7526        in_: *mut VipsImage,
7527        ref_: *mut VipsImage,
7528        out: *mut *mut VipsImage,
7529        ...
7530    ) -> core::ffi::c_int;
7531}
7532unsafe extern "C" {
7533    pub fn vips_fastcor(
7534        in_: *mut VipsImage,
7535        ref_: *mut VipsImage,
7536        out: *mut *mut VipsImage,
7537        ...
7538    ) -> core::ffi::c_int;
7539}
7540unsafe extern "C" {
7541    pub fn vips_sobel(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7542}
7543unsafe extern "C" {
7544    pub fn vips_scharr(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7545}
7546unsafe extern "C" {
7547    pub fn vips_prewitt(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7548}
7549unsafe extern "C" {
7550    pub fn vips_canny(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7551}
7552#[repr(u32)]
7553#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7554pub enum VipsOperationMorphology {
7555    VIPS_OPERATION_MORPHOLOGY_ERODE = 0,
7556    VIPS_OPERATION_MORPHOLOGY_DILATE = 1,
7557    VIPS_OPERATION_MORPHOLOGY_LAST = 2,
7558}
7559unsafe extern "C" {
7560    pub fn vips_morph(
7561        in_: *mut VipsImage,
7562        out: *mut *mut VipsImage,
7563        mask: *mut VipsImage,
7564        morph: VipsOperationMorphology,
7565        ...
7566    ) -> core::ffi::c_int;
7567}
7568unsafe extern "C" {
7569    pub fn vips_rank(
7570        in_: *mut VipsImage,
7571        out: *mut *mut VipsImage,
7572        width: core::ffi::c_int,
7573        height: core::ffi::c_int,
7574        index: core::ffi::c_int,
7575        ...
7576    ) -> core::ffi::c_int;
7577}
7578unsafe extern "C" {
7579    pub fn vips_median(
7580        in_: *mut VipsImage,
7581        out: *mut *mut VipsImage,
7582        size: core::ffi::c_int,
7583        ...
7584    ) -> core::ffi::c_int;
7585}
7586unsafe extern "C" {
7587    pub fn vips_countlines(
7588        in_: *mut VipsImage,
7589        nolines: *mut f64,
7590        direction: VipsDirection,
7591        ...
7592    ) -> core::ffi::c_int;
7593}
7594unsafe extern "C" {
7595    pub fn vips_labelregions(
7596        in_: *mut VipsImage,
7597        mask: *mut *mut VipsImage,
7598        ...
7599    ) -> core::ffi::c_int;
7600}
7601unsafe extern "C" {
7602    pub fn vips_fill_nearest(
7603        in_: *mut VipsImage,
7604        out: *mut *mut VipsImage,
7605        ...
7606    ) -> core::ffi::c_int;
7607}
7608unsafe extern "C" {
7609    pub fn vips_merge(
7610        ref_: *mut VipsImage,
7611        sec: *mut VipsImage,
7612        out: *mut *mut VipsImage,
7613        direction: VipsDirection,
7614        dx: core::ffi::c_int,
7615        dy: core::ffi::c_int,
7616        ...
7617    ) -> core::ffi::c_int;
7618}
7619unsafe extern "C" {
7620    pub fn vips_mosaic(
7621        ref_: *mut VipsImage,
7622        sec: *mut VipsImage,
7623        out: *mut *mut VipsImage,
7624        direction: VipsDirection,
7625        xref: core::ffi::c_int,
7626        yref: core::ffi::c_int,
7627        xsec: core::ffi::c_int,
7628        ysec: core::ffi::c_int,
7629        ...
7630    ) -> core::ffi::c_int;
7631}
7632unsafe extern "C" {
7633    pub fn vips_mosaic1(
7634        ref_: *mut VipsImage,
7635        sec: *mut VipsImage,
7636        out: *mut *mut VipsImage,
7637        direction: VipsDirection,
7638        xr1: core::ffi::c_int,
7639        yr1: core::ffi::c_int,
7640        xs1: core::ffi::c_int,
7641        ys1: core::ffi::c_int,
7642        xr2: core::ffi::c_int,
7643        yr2: core::ffi::c_int,
7644        xs2: core::ffi::c_int,
7645        ys2: core::ffi::c_int,
7646        ...
7647    ) -> core::ffi::c_int;
7648}
7649unsafe extern "C" {
7650    pub fn vips_match(
7651        ref_: *mut VipsImage,
7652        sec: *mut VipsImage,
7653        out: *mut *mut VipsImage,
7654        xr1: core::ffi::c_int,
7655        yr1: core::ffi::c_int,
7656        xs1: core::ffi::c_int,
7657        ys1: core::ffi::c_int,
7658        xr2: core::ffi::c_int,
7659        yr2: core::ffi::c_int,
7660        xs2: core::ffi::c_int,
7661        ys2: core::ffi::c_int,
7662        ...
7663    ) -> core::ffi::c_int;
7664}
7665unsafe extern "C" {
7666    pub fn vips_globalbalance(
7667        in_: *mut VipsImage,
7668        out: *mut *mut VipsImage,
7669        ...
7670    ) -> core::ffi::c_int;
7671}
7672unsafe extern "C" {
7673    pub fn vips_remosaic(
7674        in_: *mut VipsImage,
7675        out: *mut *mut VipsImage,
7676        old_str: *const core::ffi::c_char,
7677        new_str: *const core::ffi::c_char,
7678        ...
7679    ) -> core::ffi::c_int;
7680}
7681unsafe extern "C" {
7682    pub fn vips_matrixinvert(m: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7683}
7684unsafe extern "C" {
7685    pub fn vips_matrixmultiply(
7686        left: *mut VipsImage,
7687        right: *mut VipsImage,
7688        out: *mut *mut VipsImage,
7689        ...
7690    ) -> core::ffi::c_int;
7691}
7692unsafe extern "C" {
7693    pub fn vips_maplut(
7694        in_: *mut VipsImage,
7695        out: *mut *mut VipsImage,
7696        lut: *mut VipsImage,
7697        ...
7698    ) -> core::ffi::c_int;
7699}
7700unsafe extern "C" {
7701    pub fn vips_percent(
7702        in_: *mut VipsImage,
7703        percent: f64,
7704        threshold: *mut core::ffi::c_int,
7705        ...
7706    ) -> core::ffi::c_int;
7707}
7708unsafe extern "C" {
7709    pub fn vips_stdif(
7710        in_: *mut VipsImage,
7711        out: *mut *mut VipsImage,
7712        width: core::ffi::c_int,
7713        height: core::ffi::c_int,
7714        ...
7715    ) -> core::ffi::c_int;
7716}
7717unsafe extern "C" {
7718    pub fn vips_hist_cum(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7719}
7720unsafe extern "C" {
7721    pub fn vips_hist_norm(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7722}
7723unsafe extern "C" {
7724    pub fn vips_hist_equal(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7725}
7726unsafe extern "C" {
7727    pub fn vips_hist_plot(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7728}
7729unsafe extern "C" {
7730    pub fn vips_hist_match(
7731        in_: *mut VipsImage,
7732        ref_: *mut VipsImage,
7733        out: *mut *mut VipsImage,
7734        ...
7735    ) -> core::ffi::c_int;
7736}
7737unsafe extern "C" {
7738    pub fn vips_hist_local(
7739        in_: *mut VipsImage,
7740        out: *mut *mut VipsImage,
7741        width: core::ffi::c_int,
7742        height: core::ffi::c_int,
7743        ...
7744    ) -> core::ffi::c_int;
7745}
7746unsafe extern "C" {
7747    pub fn vips_hist_ismonotonic(in_: *mut VipsImage, out: *mut gboolean, ...) -> core::ffi::c_int;
7748}
7749unsafe extern "C" {
7750    pub fn vips_hist_entropy(in_: *mut VipsImage, out: *mut f64, ...) -> core::ffi::c_int;
7751}
7752unsafe extern "C" {
7753    pub fn vips_case(
7754        index: *mut VipsImage,
7755        cases: *mut *mut VipsImage,
7756        out: *mut *mut VipsImage,
7757        n: core::ffi::c_int,
7758        ...
7759    ) -> core::ffi::c_int;
7760}
7761unsafe extern "C" {
7762    pub fn vips_fwfft(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7763}
7764unsafe extern "C" {
7765    pub fn vips_invfft(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7766}
7767unsafe extern "C" {
7768    pub fn vips_freqmult(
7769        in_: *mut VipsImage,
7770        mask: *mut VipsImage,
7771        out: *mut *mut VipsImage,
7772        ...
7773    ) -> core::ffi::c_int;
7774}
7775unsafe extern "C" {
7776    pub fn vips_spectrum(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7777}
7778unsafe extern "C" {
7779    pub fn vips_phasecor(
7780        in1: *mut VipsImage,
7781        in2: *mut VipsImage,
7782        out: *mut *mut VipsImage,
7783        ...
7784    ) -> core::ffi::c_int;
7785}
7786#[repr(u32)]
7787#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7788pub enum VipsKernel {
7789    VIPS_KERNEL_NEAREST = 0,
7790    VIPS_KERNEL_LINEAR = 1,
7791    VIPS_KERNEL_CUBIC = 2,
7792    VIPS_KERNEL_MITCHELL = 3,
7793    VIPS_KERNEL_LANCZOS2 = 4,
7794    VIPS_KERNEL_LANCZOS3 = 5,
7795    VIPS_KERNEL_MKS2013 = 6,
7796    VIPS_KERNEL_MKS2021 = 7,
7797    VIPS_KERNEL_LAST = 8,
7798}
7799#[repr(u32)]
7800#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7801pub enum VipsSize {
7802    VIPS_SIZE_BOTH = 0,
7803    VIPS_SIZE_UP = 1,
7804    VIPS_SIZE_DOWN = 2,
7805    VIPS_SIZE_FORCE = 3,
7806    VIPS_SIZE_LAST = 4,
7807}
7808unsafe extern "C" {
7809    pub fn vips_shrink(
7810        in_: *mut VipsImage,
7811        out: *mut *mut VipsImage,
7812        hshrink: f64,
7813        vshrink: f64,
7814        ...
7815    ) -> core::ffi::c_int;
7816}
7817unsafe extern "C" {
7818    pub fn vips_shrinkh(
7819        in_: *mut VipsImage,
7820        out: *mut *mut VipsImage,
7821        hshrink: core::ffi::c_int,
7822        ...
7823    ) -> core::ffi::c_int;
7824}
7825unsafe extern "C" {
7826    pub fn vips_shrinkv(
7827        in_: *mut VipsImage,
7828        out: *mut *mut VipsImage,
7829        vshrink: core::ffi::c_int,
7830        ...
7831    ) -> core::ffi::c_int;
7832}
7833unsafe extern "C" {
7834    pub fn vips_reduce(
7835        in_: *mut VipsImage,
7836        out: *mut *mut VipsImage,
7837        hshrink: f64,
7838        vshrink: f64,
7839        ...
7840    ) -> core::ffi::c_int;
7841}
7842unsafe extern "C" {
7843    pub fn vips_reduceh(
7844        in_: *mut VipsImage,
7845        out: *mut *mut VipsImage,
7846        hshrink: f64,
7847        ...
7848    ) -> core::ffi::c_int;
7849}
7850unsafe extern "C" {
7851    pub fn vips_reducev(
7852        in_: *mut VipsImage,
7853        out: *mut *mut VipsImage,
7854        vshrink: f64,
7855        ...
7856    ) -> core::ffi::c_int;
7857}
7858unsafe extern "C" {
7859    pub fn vips_thumbnail(
7860        filename: *const core::ffi::c_char,
7861        out: *mut *mut VipsImage,
7862        width: core::ffi::c_int,
7863        ...
7864    ) -> core::ffi::c_int;
7865}
7866unsafe extern "C" {
7867    pub fn vips_thumbnail_buffer(
7868        buf: *mut core::ffi::c_void,
7869        len: usize,
7870        out: *mut *mut VipsImage,
7871        width: core::ffi::c_int,
7872        ...
7873    ) -> core::ffi::c_int;
7874}
7875unsafe extern "C" {
7876    pub fn vips_thumbnail_image(
7877        in_: *mut VipsImage,
7878        out: *mut *mut VipsImage,
7879        width: core::ffi::c_int,
7880        ...
7881    ) -> core::ffi::c_int;
7882}
7883unsafe extern "C" {
7884    pub fn vips_thumbnail_source(
7885        source: *mut VipsSource,
7886        out: *mut *mut VipsImage,
7887        width: core::ffi::c_int,
7888        ...
7889    ) -> core::ffi::c_int;
7890}
7891unsafe extern "C" {
7892    pub fn vips_similarity(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7893}
7894unsafe extern "C" {
7895    pub fn vips_rotate(
7896        in_: *mut VipsImage,
7897        out: *mut *mut VipsImage,
7898        angle: f64,
7899        ...
7900    ) -> core::ffi::c_int;
7901}
7902unsafe extern "C" {
7903    pub fn vips_affine(
7904        in_: *mut VipsImage,
7905        out: *mut *mut VipsImage,
7906        a: f64,
7907        b: f64,
7908        c: f64,
7909        d: f64,
7910        ...
7911    ) -> core::ffi::c_int;
7912}
7913unsafe extern "C" {
7914    pub fn vips_resize(
7915        in_: *mut VipsImage,
7916        out: *mut *mut VipsImage,
7917        scale: f64,
7918        ...
7919    ) -> core::ffi::c_int;
7920}
7921unsafe extern "C" {
7922    pub fn vips_mapim(
7923        in_: *mut VipsImage,
7924        out: *mut *mut VipsImage,
7925        index: *mut VipsImage,
7926        ...
7927    ) -> core::ffi::c_int;
7928}
7929unsafe extern "C" {
7930    pub fn vips_quadratic(
7931        in_: *mut VipsImage,
7932        out: *mut *mut VipsImage,
7933        coeff: *mut VipsImage,
7934        ...
7935    ) -> core::ffi::c_int;
7936}
7937#[repr(u32)]
7938#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7939pub enum VipsIntent {
7940    VIPS_INTENT_PERCEPTUAL = 0,
7941    VIPS_INTENT_RELATIVE = 1,
7942    VIPS_INTENT_SATURATION = 2,
7943    VIPS_INTENT_ABSOLUTE = 3,
7944    VIPS_INTENT_AUTO = 32,
7945    VIPS_INTENT_LAST = 33,
7946}
7947#[repr(u32)]
7948#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7949pub enum VipsPCS {
7950    VIPS_PCS_LAB = 0,
7951    VIPS_PCS_XYZ = 1,
7952    VIPS_PCS_LAST = 2,
7953}
7954unsafe extern "C" {
7955    pub fn vips_colourspace_issupported(image: *const VipsImage) -> gboolean;
7956}
7957unsafe extern "C" {
7958    pub fn vips_colourspace(
7959        in_: *mut VipsImage,
7960        out: *mut *mut VipsImage,
7961        space: VipsInterpretation,
7962        ...
7963    ) -> core::ffi::c_int;
7964}
7965unsafe extern "C" {
7966    pub fn vips_LabQ2sRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7967}
7968unsafe extern "C" {
7969    pub fn vips_rad2float(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7970}
7971unsafe extern "C" {
7972    pub fn vips_float2rad(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7973}
7974unsafe extern "C" {
7975    pub fn vips_LabS2LabQ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7976}
7977unsafe extern "C" {
7978    pub fn vips_LabQ2LabS(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7979}
7980unsafe extern "C" {
7981    pub fn vips_LabQ2Lab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7982}
7983unsafe extern "C" {
7984    pub fn vips_Lab2LabQ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7985}
7986unsafe extern "C" {
7987    pub fn vips_LCh2Lab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7988}
7989unsafe extern "C" {
7990    pub fn vips_Lab2LCh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7991}
7992unsafe extern "C" {
7993    pub fn vips_Lab2XYZ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7994}
7995unsafe extern "C" {
7996    pub fn vips_XYZ2Lab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7997}
7998unsafe extern "C" {
7999    pub fn vips_XYZ2scRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8000}
8001unsafe extern "C" {
8002    pub fn vips_scRGB2sRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8003}
8004unsafe extern "C" {
8005    pub fn vips_scRGB2BW(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8006}
8007unsafe extern "C" {
8008    pub fn vips_sRGB2scRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8009}
8010unsafe extern "C" {
8011    pub fn vips_scRGB2XYZ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8012}
8013unsafe extern "C" {
8014    pub fn vips_HSV2sRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8015}
8016unsafe extern "C" {
8017    pub fn vips_sRGB2HSV(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8018}
8019unsafe extern "C" {
8020    pub fn vips_LCh2CMC(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8021}
8022unsafe extern "C" {
8023    pub fn vips_CMC2LCh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8024}
8025unsafe extern "C" {
8026    pub fn vips_XYZ2Yxy(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8027}
8028unsafe extern "C" {
8029    pub fn vips_Yxy2XYZ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8030}
8031unsafe extern "C" {
8032    pub fn vips_LabS2Lab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8033}
8034unsafe extern "C" {
8035    pub fn vips_Lab2LabS(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8036}
8037unsafe extern "C" {
8038    pub fn vips_CMYK2XYZ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8039}
8040unsafe extern "C" {
8041    pub fn vips_XYZ2CMYK(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8042}
8043unsafe extern "C" {
8044    pub fn vips_Oklab2XYZ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8045}
8046unsafe extern "C" {
8047    pub fn vips_XYZ2Oklab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8048}
8049unsafe extern "C" {
8050    pub fn vips_Oklch2Oklab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
8051    -> core::ffi::c_int;
8052}
8053unsafe extern "C" {
8054    pub fn vips_Oklab2Oklch(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
8055    -> core::ffi::c_int;
8056}
8057unsafe extern "C" {
8058    pub fn vips_uhdr2scRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8059}
8060unsafe extern "C" {
8061    pub fn vips_profile_load(
8062        name: *const core::ffi::c_char,
8063        profile: *mut *mut VipsBlob,
8064        ...
8065    ) -> core::ffi::c_int;
8066}
8067unsafe extern "C" {
8068    pub fn vips_icc_present() -> core::ffi::c_int;
8069}
8070unsafe extern "C" {
8071    pub fn vips_icc_transform(
8072        in_: *mut VipsImage,
8073        out: *mut *mut VipsImage,
8074        output_profile: *const core::ffi::c_char,
8075        ...
8076    ) -> core::ffi::c_int;
8077}
8078unsafe extern "C" {
8079    pub fn vips_icc_import(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8080}
8081unsafe extern "C" {
8082    pub fn vips_icc_export(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8083}
8084unsafe extern "C" {
8085    pub fn vips_icc_ac2rc(
8086        in_: *mut VipsImage,
8087        out: *mut *mut VipsImage,
8088        profile_filename: *const core::ffi::c_char,
8089    ) -> core::ffi::c_int;
8090}
8091unsafe extern "C" {
8092    pub fn vips_icc_is_compatible_profile(
8093        image: *mut VipsImage,
8094        data: *const core::ffi::c_void,
8095        data_length: usize,
8096    ) -> gboolean;
8097}
8098unsafe extern "C" {
8099    pub fn vips_dE76(
8100        left: *mut VipsImage,
8101        right: *mut VipsImage,
8102        out: *mut *mut VipsImage,
8103        ...
8104    ) -> core::ffi::c_int;
8105}
8106unsafe extern "C" {
8107    pub fn vips_dE00(
8108        left: *mut VipsImage,
8109        right: *mut VipsImage,
8110        out: *mut *mut VipsImage,
8111        ...
8112    ) -> core::ffi::c_int;
8113}
8114unsafe extern "C" {
8115    pub fn vips_dECMC(
8116        left: *mut VipsImage,
8117        right: *mut VipsImage,
8118        out: *mut *mut VipsImage,
8119        ...
8120    ) -> core::ffi::c_int;
8121}
8122unsafe extern "C" {
8123    pub fn vips_col_Lab2XYZ(L: f32, a: f32, b: f32, X: *mut f32, Y: *mut f32, Z: *mut f32);
8124}
8125unsafe extern "C" {
8126    pub fn vips_col_XYZ2Lab(X: f32, Y: f32, Z: f32, L: *mut f32, a: *mut f32, b: *mut f32);
8127}
8128unsafe extern "C" {
8129    pub fn vips_col_ab2h(a: f64, b: f64) -> f64;
8130}
8131unsafe extern "C" {
8132    pub fn vips_col_ab2Ch(a: f32, b: f32, C: *mut f32, h: *mut f32);
8133}
8134unsafe extern "C" {
8135    pub fn vips_col_Ch2ab(C: f32, h: f32, a: *mut f32, b: *mut f32);
8136}
8137unsafe extern "C" {
8138    pub fn vips_col_L2Lcmc(L: f32) -> f32;
8139}
8140unsafe extern "C" {
8141    pub fn vips_col_C2Ccmc(C: f32) -> f32;
8142}
8143unsafe extern "C" {
8144    pub fn vips_col_Ch2hcmc(C: f32, h: f32) -> f32;
8145}
8146unsafe extern "C" {
8147    pub fn vips_col_make_tables_CMC();
8148}
8149unsafe extern "C" {
8150    pub fn vips_col_Lcmc2L(Lcmc: f32) -> f32;
8151}
8152unsafe extern "C" {
8153    pub fn vips_col_Ccmc2C(Ccmc: f32) -> f32;
8154}
8155unsafe extern "C" {
8156    pub fn vips_col_Chcmc2h(C: f32, hcmc: f32) -> f32;
8157}
8158unsafe extern "C" {
8159    pub fn vips_col_sRGB2scRGB_8(
8160        r: core::ffi::c_int,
8161        g: core::ffi::c_int,
8162        b: core::ffi::c_int,
8163        R: *mut f32,
8164        G: *mut f32,
8165        B: *mut f32,
8166    ) -> core::ffi::c_int;
8167}
8168unsafe extern "C" {
8169    pub fn vips_col_sRGB2scRGB_16(
8170        r: core::ffi::c_int,
8171        g: core::ffi::c_int,
8172        b: core::ffi::c_int,
8173        R: *mut f32,
8174        G: *mut f32,
8175        B: *mut f32,
8176    ) -> core::ffi::c_int;
8177}
8178unsafe extern "C" {
8179    pub fn vips_col_sRGB2scRGB_8_noclip(
8180        r: core::ffi::c_int,
8181        g: core::ffi::c_int,
8182        b: core::ffi::c_int,
8183        R: *mut f32,
8184        G: *mut f32,
8185        B: *mut f32,
8186    ) -> core::ffi::c_int;
8187}
8188unsafe extern "C" {
8189    pub fn vips_col_sRGB2scRGB_16_noclip(
8190        r: core::ffi::c_int,
8191        g: core::ffi::c_int,
8192        b: core::ffi::c_int,
8193        R: *mut f32,
8194        G: *mut f32,
8195        B: *mut f32,
8196    ) -> core::ffi::c_int;
8197}
8198unsafe extern "C" {
8199    pub fn vips_col_scRGB2XYZ(
8200        R: f32,
8201        G: f32,
8202        B: f32,
8203        X: *mut f32,
8204        Y: *mut f32,
8205        Z: *mut f32,
8206    ) -> core::ffi::c_int;
8207}
8208unsafe extern "C" {
8209    pub fn vips_col_XYZ2scRGB(
8210        X: f32,
8211        Y: f32,
8212        Z: f32,
8213        R: *mut f32,
8214        G: *mut f32,
8215        B: *mut f32,
8216    ) -> core::ffi::c_int;
8217}
8218unsafe extern "C" {
8219    pub fn vips_col_scRGB2sRGB_8(
8220        R: f32,
8221        G: f32,
8222        B: f32,
8223        r: *mut core::ffi::c_int,
8224        g: *mut core::ffi::c_int,
8225        b: *mut core::ffi::c_int,
8226        og: *mut core::ffi::c_int,
8227    ) -> core::ffi::c_int;
8228}
8229unsafe extern "C" {
8230    pub fn vips_col_scRGB2sRGB_16(
8231        R: f32,
8232        G: f32,
8233        B: f32,
8234        r: *mut core::ffi::c_int,
8235        g: *mut core::ffi::c_int,
8236        b: *mut core::ffi::c_int,
8237        og: *mut core::ffi::c_int,
8238    ) -> core::ffi::c_int;
8239}
8240unsafe extern "C" {
8241    pub fn vips_col_scRGB2BW_16(
8242        R: f32,
8243        G: f32,
8244        B: f32,
8245        g: *mut core::ffi::c_int,
8246        og: *mut core::ffi::c_int,
8247    ) -> core::ffi::c_int;
8248}
8249unsafe extern "C" {
8250    pub fn vips_col_scRGB2BW_8(
8251        R: f32,
8252        G: f32,
8253        B: f32,
8254        g: *mut core::ffi::c_int,
8255        og: *mut core::ffi::c_int,
8256    ) -> core::ffi::c_int;
8257}
8258unsafe extern "C" {
8259    pub fn vips_pythagoras(L1: f32, a1: f32, b1: f32, L2: f32, a2: f32, b2: f32) -> f32;
8260}
8261unsafe extern "C" {
8262    pub fn vips_col_dE00(L1: f32, a1: f32, b1: f32, L2: f32, a2: f32, b2: f32) -> f32;
8263}
8264#[repr(u32)]
8265#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8266pub enum VipsCombineMode {
8267    VIPS_COMBINE_MODE_SET = 0,
8268    VIPS_COMBINE_MODE_ADD = 1,
8269    VIPS_COMBINE_MODE_LAST = 2,
8270}
8271unsafe extern "C" {
8272    pub fn vips_draw_rect(
8273        image: *mut VipsImage,
8274        ink: *mut f64,
8275        n: core::ffi::c_int,
8276        left: core::ffi::c_int,
8277        top: core::ffi::c_int,
8278        width: core::ffi::c_int,
8279        height: core::ffi::c_int,
8280        ...
8281    ) -> core::ffi::c_int;
8282}
8283unsafe extern "C" {
8284    pub fn vips_draw_rect1(
8285        image: *mut VipsImage,
8286        ink: f64,
8287        left: core::ffi::c_int,
8288        top: core::ffi::c_int,
8289        width: core::ffi::c_int,
8290        height: core::ffi::c_int,
8291        ...
8292    ) -> core::ffi::c_int;
8293}
8294unsafe extern "C" {
8295    pub fn vips_draw_point(
8296        image: *mut VipsImage,
8297        ink: *mut f64,
8298        n: core::ffi::c_int,
8299        x: core::ffi::c_int,
8300        y: core::ffi::c_int,
8301        ...
8302    ) -> core::ffi::c_int;
8303}
8304unsafe extern "C" {
8305    pub fn vips_draw_point1(
8306        image: *mut VipsImage,
8307        ink: f64,
8308        x: core::ffi::c_int,
8309        y: core::ffi::c_int,
8310        ...
8311    ) -> core::ffi::c_int;
8312}
8313unsafe extern "C" {
8314    pub fn vips_draw_image(
8315        image: *mut VipsImage,
8316        sub: *mut VipsImage,
8317        x: core::ffi::c_int,
8318        y: core::ffi::c_int,
8319        ...
8320    ) -> core::ffi::c_int;
8321}
8322unsafe extern "C" {
8323    pub fn vips_draw_mask(
8324        image: *mut VipsImage,
8325        ink: *mut f64,
8326        n: core::ffi::c_int,
8327        mask: *mut VipsImage,
8328        x: core::ffi::c_int,
8329        y: core::ffi::c_int,
8330        ...
8331    ) -> core::ffi::c_int;
8332}
8333unsafe extern "C" {
8334    pub fn vips_draw_mask1(
8335        image: *mut VipsImage,
8336        ink: f64,
8337        mask: *mut VipsImage,
8338        x: core::ffi::c_int,
8339        y: core::ffi::c_int,
8340        ...
8341    ) -> core::ffi::c_int;
8342}
8343unsafe extern "C" {
8344    pub fn vips_draw_line(
8345        image: *mut VipsImage,
8346        ink: *mut f64,
8347        n: core::ffi::c_int,
8348        x1: core::ffi::c_int,
8349        y1: core::ffi::c_int,
8350        x2: core::ffi::c_int,
8351        y2: core::ffi::c_int,
8352        ...
8353    ) -> core::ffi::c_int;
8354}
8355unsafe extern "C" {
8356    pub fn vips_draw_line1(
8357        image: *mut VipsImage,
8358        ink: f64,
8359        x1: core::ffi::c_int,
8360        y1: core::ffi::c_int,
8361        x2: core::ffi::c_int,
8362        y2: core::ffi::c_int,
8363        ...
8364    ) -> core::ffi::c_int;
8365}
8366unsafe extern "C" {
8367    pub fn vips_draw_circle(
8368        image: *mut VipsImage,
8369        ink: *mut f64,
8370        n: core::ffi::c_int,
8371        cx: core::ffi::c_int,
8372        cy: core::ffi::c_int,
8373        radius: core::ffi::c_int,
8374        ...
8375    ) -> core::ffi::c_int;
8376}
8377unsafe extern "C" {
8378    pub fn vips_draw_circle1(
8379        image: *mut VipsImage,
8380        ink: f64,
8381        cx: core::ffi::c_int,
8382        cy: core::ffi::c_int,
8383        radius: core::ffi::c_int,
8384        ...
8385    ) -> core::ffi::c_int;
8386}
8387unsafe extern "C" {
8388    pub fn vips_draw_flood(
8389        image: *mut VipsImage,
8390        ink: *mut f64,
8391        n: core::ffi::c_int,
8392        x: core::ffi::c_int,
8393        y: core::ffi::c_int,
8394        ...
8395    ) -> core::ffi::c_int;
8396}
8397unsafe extern "C" {
8398    pub fn vips_draw_flood1(
8399        image: *mut VipsImage,
8400        ink: f64,
8401        x: core::ffi::c_int,
8402        y: core::ffi::c_int,
8403        ...
8404    ) -> core::ffi::c_int;
8405}
8406unsafe extern "C" {
8407    pub fn vips_draw_smudge(
8408        image: *mut VipsImage,
8409        left: core::ffi::c_int,
8410        top: core::ffi::c_int,
8411        width: core::ffi::c_int,
8412        height: core::ffi::c_int,
8413        ...
8414    ) -> core::ffi::c_int;
8415}
8416#[repr(u32)]
8417#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8418pub enum VipsTextWrap {
8419    VIPS_TEXT_WRAP_WORD = 0,
8420    VIPS_TEXT_WRAP_CHAR = 1,
8421    VIPS_TEXT_WRAP_WORD_CHAR = 2,
8422    VIPS_TEXT_WRAP_NONE = 3,
8423    VIPS_TEXT_WRAP_LAST = 4,
8424}
8425#[repr(u32)]
8426#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8427pub enum VipsSdfShape {
8428    VIPS_SDF_SHAPE_CIRCLE = 0,
8429    VIPS_SDF_SHAPE_BOX = 1,
8430    VIPS_SDF_SHAPE_ROUNDED_BOX = 2,
8431    VIPS_SDF_SHAPE_LINE = 3,
8432    VIPS_SDF_SHAPE_LAST = 4,
8433}
8434unsafe extern "C" {
8435    pub fn vips_black(
8436        out: *mut *mut VipsImage,
8437        width: core::ffi::c_int,
8438        height: core::ffi::c_int,
8439        ...
8440    ) -> core::ffi::c_int;
8441}
8442unsafe extern "C" {
8443    pub fn vips_xyz(
8444        out: *mut *mut VipsImage,
8445        width: core::ffi::c_int,
8446        height: core::ffi::c_int,
8447        ...
8448    ) -> core::ffi::c_int;
8449}
8450unsafe extern "C" {
8451    pub fn vips_grey(
8452        out: *mut *mut VipsImage,
8453        width: core::ffi::c_int,
8454        height: core::ffi::c_int,
8455        ...
8456    ) -> core::ffi::c_int;
8457}
8458unsafe extern "C" {
8459    pub fn vips_gaussmat(
8460        out: *mut *mut VipsImage,
8461        sigma: f64,
8462        min_ampl: f64,
8463        ...
8464    ) -> core::ffi::c_int;
8465}
8466unsafe extern "C" {
8467    pub fn vips_logmat(
8468        out: *mut *mut VipsImage,
8469        sigma: f64,
8470        min_ampl: f64,
8471        ...
8472    ) -> core::ffi::c_int;
8473}
8474unsafe extern "C" {
8475    pub fn vips_text(
8476        out: *mut *mut VipsImage,
8477        text: *const core::ffi::c_char,
8478        ...
8479    ) -> core::ffi::c_int;
8480}
8481unsafe extern "C" {
8482    pub fn vips_gaussnoise(
8483        out: *mut *mut VipsImage,
8484        width: core::ffi::c_int,
8485        height: core::ffi::c_int,
8486        ...
8487    ) -> core::ffi::c_int;
8488}
8489unsafe extern "C" {
8490    pub fn vips_eye(
8491        out: *mut *mut VipsImage,
8492        width: core::ffi::c_int,
8493        height: core::ffi::c_int,
8494        ...
8495    ) -> core::ffi::c_int;
8496}
8497unsafe extern "C" {
8498    pub fn vips_sines(
8499        out: *mut *mut VipsImage,
8500        width: core::ffi::c_int,
8501        height: core::ffi::c_int,
8502        ...
8503    ) -> core::ffi::c_int;
8504}
8505unsafe extern "C" {
8506    pub fn vips_zone(
8507        out: *mut *mut VipsImage,
8508        width: core::ffi::c_int,
8509        height: core::ffi::c_int,
8510        ...
8511    ) -> core::ffi::c_int;
8512}
8513unsafe extern "C" {
8514    pub fn vips_sdf(
8515        out: *mut *mut VipsImage,
8516        width: core::ffi::c_int,
8517        height: core::ffi::c_int,
8518        shape: VipsSdfShape,
8519        ...
8520    ) -> core::ffi::c_int;
8521}
8522unsafe extern "C" {
8523    pub fn vips_identity(out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8524}
8525unsafe extern "C" {
8526    pub fn vips_buildlut(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8527}
8528unsafe extern "C" {
8529    pub fn vips_invertlut(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8530}
8531unsafe extern "C" {
8532    pub fn vips_tonelut(out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8533}
8534unsafe extern "C" {
8535    pub fn vips_mask_ideal(
8536        out: *mut *mut VipsImage,
8537        width: core::ffi::c_int,
8538        height: core::ffi::c_int,
8539        frequency_cutoff: f64,
8540        ...
8541    ) -> core::ffi::c_int;
8542}
8543unsafe extern "C" {
8544    pub fn vips_mask_ideal_ring(
8545        out: *mut *mut VipsImage,
8546        width: core::ffi::c_int,
8547        height: core::ffi::c_int,
8548        frequency_cutoff: f64,
8549        ringwidth: f64,
8550        ...
8551    ) -> core::ffi::c_int;
8552}
8553unsafe extern "C" {
8554    pub fn vips_mask_ideal_band(
8555        out: *mut *mut VipsImage,
8556        width: core::ffi::c_int,
8557        height: core::ffi::c_int,
8558        frequency_cutoff_x: f64,
8559        frequency_cutoff_y: f64,
8560        radius: f64,
8561        ...
8562    ) -> core::ffi::c_int;
8563}
8564unsafe extern "C" {
8565    pub fn vips_mask_butterworth(
8566        out: *mut *mut VipsImage,
8567        width: core::ffi::c_int,
8568        height: core::ffi::c_int,
8569        order: f64,
8570        frequency_cutoff: f64,
8571        amplitude_cutoff: f64,
8572        ...
8573    ) -> core::ffi::c_int;
8574}
8575unsafe extern "C" {
8576    pub fn vips_mask_butterworth_ring(
8577        out: *mut *mut VipsImage,
8578        width: core::ffi::c_int,
8579        height: core::ffi::c_int,
8580        order: f64,
8581        frequency_cutoff: f64,
8582        amplitude_cutoff: f64,
8583        ringwidth: f64,
8584        ...
8585    ) -> core::ffi::c_int;
8586}
8587unsafe extern "C" {
8588    pub fn vips_mask_butterworth_band(
8589        out: *mut *mut VipsImage,
8590        width: core::ffi::c_int,
8591        height: core::ffi::c_int,
8592        order: f64,
8593        frequency_cutoff_x: f64,
8594        frequency_cutoff_y: f64,
8595        radius: f64,
8596        amplitude_cutoff: f64,
8597        ...
8598    ) -> core::ffi::c_int;
8599}
8600unsafe extern "C" {
8601    pub fn vips_mask_gaussian(
8602        out: *mut *mut VipsImage,
8603        width: core::ffi::c_int,
8604        height: core::ffi::c_int,
8605        frequency_cutoff: f64,
8606        amplitude_cutoff: f64,
8607        ...
8608    ) -> core::ffi::c_int;
8609}
8610unsafe extern "C" {
8611    pub fn vips_mask_gaussian_ring(
8612        out: *mut *mut VipsImage,
8613        width: core::ffi::c_int,
8614        height: core::ffi::c_int,
8615        frequency_cutoff: f64,
8616        amplitude_cutoff: f64,
8617        ringwidth: f64,
8618        ...
8619    ) -> core::ffi::c_int;
8620}
8621unsafe extern "C" {
8622    pub fn vips_mask_gaussian_band(
8623        out: *mut *mut VipsImage,
8624        width: core::ffi::c_int,
8625        height: core::ffi::c_int,
8626        frequency_cutoff_x: f64,
8627        frequency_cutoff_y: f64,
8628        radius: f64,
8629        amplitude_cutoff: f64,
8630        ...
8631    ) -> core::ffi::c_int;
8632}
8633unsafe extern "C" {
8634    pub fn vips_mask_fractal(
8635        out: *mut *mut VipsImage,
8636        width: core::ffi::c_int,
8637        height: core::ffi::c_int,
8638        fractal_dimension: f64,
8639        ...
8640    ) -> core::ffi::c_int;
8641}
8642unsafe extern "C" {
8643    pub fn vips_fractsurf(
8644        out: *mut *mut VipsImage,
8645        width: core::ffi::c_int,
8646        height: core::ffi::c_int,
8647        fractal_dimension: f64,
8648        ...
8649    ) -> core::ffi::c_int;
8650}
8651unsafe extern "C" {
8652    pub fn vips_worley(
8653        out: *mut *mut VipsImage,
8654        width: core::ffi::c_int,
8655        height: core::ffi::c_int,
8656        ...
8657    ) -> core::ffi::c_int;
8658}
8659unsafe extern "C" {
8660    pub fn vips_perlin(
8661        out: *mut *mut VipsImage,
8662        width: core::ffi::c_int,
8663        height: core::ffi::c_int,
8664        ...
8665    ) -> core::ffi::c_int;
8666}
8667#[repr(C)]
8668#[derive(Debug, Copy, Clone)]
8669pub struct im__INTMASK {
8670    pub xsize: core::ffi::c_int,
8671    pub ysize: core::ffi::c_int,
8672    pub scale: core::ffi::c_int,
8673    pub offset: core::ffi::c_int,
8674    pub coeff: *mut core::ffi::c_int,
8675    pub filename: *mut core::ffi::c_char,
8676}
8677pub type INTMASK = im__INTMASK;
8678#[repr(C)]
8679#[derive(Debug, Copy, Clone)]
8680pub struct im__DOUBLEMASK {
8681    pub xsize: core::ffi::c_int,
8682    pub ysize: core::ffi::c_int,
8683    pub scale: f64,
8684    pub offset: f64,
8685    pub coeff: *mut f64,
8686    pub filename: *mut core::ffi::c_char,
8687}
8688pub type DOUBLEMASK = im__DOUBLEMASK;
8689unsafe extern "C" {
8690    pub fn vips_image_new_mode(
8691        filename: *const core::ffi::c_char,
8692        mode: *const core::ffi::c_char,
8693    ) -> *mut VipsImage;
8694}
8695unsafe extern "C" {
8696    pub fn vips_image_open_input(image: *mut VipsImage) -> core::ffi::c_int;
8697}
8698unsafe extern "C" {
8699    pub fn vips_image_open_output(image: *mut VipsImage) -> core::ffi::c_int;
8700}
8701unsafe extern "C" {
8702    pub fn vips_mapfile(image: *mut VipsImage) -> core::ffi::c_int;
8703}
8704unsafe extern "C" {
8705    pub fn vips_mapfilerw(image: *mut VipsImage) -> core::ffi::c_int;
8706}
8707unsafe extern "C" {
8708    pub fn vips_remapfilerw(image: *mut VipsImage) -> core::ffi::c_int;
8709}
8710pub type VipsPlotFn = ::core::option::Option<
8711    unsafe extern "C" fn(
8712        image: *mut VipsImage,
8713        x: core::ffi::c_int,
8714        y: core::ffi::c_int,
8715        a: *mut core::ffi::c_void,
8716        b: *mut core::ffi::c_void,
8717        c: *mut core::ffi::c_void,
8718    ) -> core::ffi::c_int,
8719>;
8720unsafe extern "C" {
8721    pub fn vips__deprecated_open_read(
8722        filename: *const core::ffi::c_char,
8723        sequential: gboolean,
8724    ) -> *mut VipsImage;
8725}
8726unsafe extern "C" {
8727    pub fn vips__deprecated_open_write(filename: *const core::ffi::c_char) -> *mut VipsImage;
8728}
8729unsafe extern "C" {
8730    pub fn vips__find_lroverlap(
8731        ref_in: *mut VipsImage,
8732        sec_in: *mut VipsImage,
8733        out: *mut VipsImage,
8734        bandno_in: core::ffi::c_int,
8735        xref: core::ffi::c_int,
8736        yref: core::ffi::c_int,
8737        xsec: core::ffi::c_int,
8738        ysec: core::ffi::c_int,
8739        halfcorrelation: core::ffi::c_int,
8740        halfarea: core::ffi::c_int,
8741        dx0: *mut core::ffi::c_int,
8742        dy0: *mut core::ffi::c_int,
8743        scale1: *mut f64,
8744        angle1: *mut f64,
8745        dx1: *mut f64,
8746        dy1: *mut f64,
8747    ) -> core::ffi::c_int;
8748}
8749unsafe extern "C" {
8750    pub fn vips__find_tboverlap(
8751        ref_in: *mut VipsImage,
8752        sec_in: *mut VipsImage,
8753        out: *mut VipsImage,
8754        bandno_in: core::ffi::c_int,
8755        xref: core::ffi::c_int,
8756        yref: core::ffi::c_int,
8757        xsec: core::ffi::c_int,
8758        ysec: core::ffi::c_int,
8759        halfcorrelation: core::ffi::c_int,
8760        halfarea: core::ffi::c_int,
8761        dx0: *mut core::ffi::c_int,
8762        dy0: *mut core::ffi::c_int,
8763        scale1: *mut f64,
8764        angle1: *mut f64,
8765        dx1: *mut f64,
8766        dy1: *mut f64,
8767    ) -> core::ffi::c_int;
8768}
8769unsafe extern "C" {
8770    pub fn vips_check_imask(
8771        domain: *const core::ffi::c_char,
8772        mask: *mut INTMASK,
8773    ) -> core::ffi::c_int;
8774}
8775unsafe extern "C" {
8776    pub fn vips_check_dmask(
8777        domain: *const core::ffi::c_char,
8778        mask: *mut DOUBLEMASK,
8779    ) -> core::ffi::c_int;
8780}
8781unsafe extern "C" {
8782    pub fn vips_check_dmask_1d(
8783        domain: *const core::ffi::c_char,
8784        mask: *mut DOUBLEMASK,
8785    ) -> core::ffi::c_int;
8786}
8787unsafe extern "C" {
8788    pub fn vips_get_option_group() -> *mut GOptionGroup;
8789}
8790unsafe extern "C" {
8791    pub fn vips_window_ref(
8792        im: *mut VipsImage,
8793        top: core::ffi::c_int,
8794        height: core::ffi::c_int,
8795    ) -> *mut VipsWindow;
8796}
8797unsafe extern "C" {
8798    pub fn vips_popenf(
8799        fmt: *const core::ffi::c_char,
8800        mode: *const core::ffi::c_char,
8801        ...
8802    ) -> *mut FILE;
8803}
8804unsafe extern "C" {
8805    pub fn vips__ink_to_vector(
8806        domain: *const core::ffi::c_char,
8807        im: *mut VipsImage,
8808        ink: *mut VipsPel,
8809        n: *mut core::ffi::c_int,
8810    ) -> *mut f64;
8811}
8812unsafe extern "C" {
8813    pub fn vips__init(argv0: *const core::ffi::c_char) -> core::ffi::c_int;
8814}
8815unsafe extern "C" {
8816    pub fn vips__get_sizeof_vipsobject() -> usize;
8817}
8818#[repr(C)]
8819#[derive(Debug, Copy, Clone)]
8820pub struct VipsVector {
8821    pub name: *const core::ffi::c_char,
8822    pub unique_name: *mut core::ffi::c_char,
8823    pub n_temp: core::ffi::c_int,
8824    pub n_scanline: core::ffi::c_int,
8825    pub n_source: core::ffi::c_int,
8826    pub n_destination: core::ffi::c_int,
8827    pub n_constant: core::ffi::c_int,
8828    pub n_parameter: core::ffi::c_int,
8829    pub n_instruction: core::ffi::c_int,
8830    pub sl: [core::ffi::c_int; 10usize],
8831    pub line: [core::ffi::c_int; 10usize],
8832    pub s: [core::ffi::c_int; 10usize],
8833    pub d1: core::ffi::c_int,
8834    pub compiled: gboolean,
8835}
8836#[repr(C)]
8837#[derive(Debug, Copy, Clone)]
8838pub struct VipsExecutor {
8839    pub vector: *mut VipsVector,
8840}
8841unsafe extern "C" {
8842    pub fn vips_vector_init();
8843}
8844unsafe extern "C" {
8845    pub fn vips_vector_free(vector: *mut VipsVector);
8846}
8847unsafe extern "C" {
8848    pub fn vips_vector_new(
8849        name: *const core::ffi::c_char,
8850        dsize: core::ffi::c_int,
8851    ) -> *mut VipsVector;
8852}
8853unsafe extern "C" {
8854    pub fn vips_vector_constant(
8855        vector: *mut VipsVector,
8856        name: *mut core::ffi::c_char,
8857        value: core::ffi::c_int,
8858        size: core::ffi::c_int,
8859    );
8860}
8861unsafe extern "C" {
8862    pub fn vips_vector_source_scanline(
8863        vector: *mut VipsVector,
8864        name: *mut core::ffi::c_char,
8865        line: core::ffi::c_int,
8866        size: core::ffi::c_int,
8867    );
8868}
8869unsafe extern "C" {
8870    pub fn vips_vector_source_name(
8871        vector: *mut VipsVector,
8872        name: *const core::ffi::c_char,
8873        size: core::ffi::c_int,
8874    ) -> core::ffi::c_int;
8875}
8876unsafe extern "C" {
8877    pub fn vips_vector_temporary(
8878        vector: *mut VipsVector,
8879        name: *const core::ffi::c_char,
8880        size: core::ffi::c_int,
8881    );
8882}
8883unsafe extern "C" {
8884    pub fn vips_vector_parameter(
8885        vector: *mut VipsVector,
8886        name: *const core::ffi::c_char,
8887        size: core::ffi::c_int,
8888    ) -> core::ffi::c_int;
8889}
8890unsafe extern "C" {
8891    pub fn vips_vector_destination(
8892        vector: *mut VipsVector,
8893        name: *const core::ffi::c_char,
8894        size: core::ffi::c_int,
8895    ) -> core::ffi::c_int;
8896}
8897unsafe extern "C" {
8898    pub fn vips_vector_asm2(
8899        vector: *mut VipsVector,
8900        op: *const core::ffi::c_char,
8901        a: *const core::ffi::c_char,
8902        b: *const core::ffi::c_char,
8903    );
8904}
8905unsafe extern "C" {
8906    pub fn vips_vector_asm3(
8907        vector: *mut VipsVector,
8908        op: *const core::ffi::c_char,
8909        a: *const core::ffi::c_char,
8910        b: *const core::ffi::c_char,
8911        c: *const core::ffi::c_char,
8912    );
8913}
8914unsafe extern "C" {
8915    pub fn vips_vector_full(vector: *mut VipsVector) -> gboolean;
8916}
8917unsafe extern "C" {
8918    pub fn vips_vector_compile(vector: *mut VipsVector) -> gboolean;
8919}
8920unsafe extern "C" {
8921    pub fn vips_vector_print(vector: *mut VipsVector);
8922}
8923unsafe extern "C" {
8924    pub fn vips_executor_set_program(
8925        executor: *mut VipsExecutor,
8926        vector: *mut VipsVector,
8927        n: core::ffi::c_int,
8928    );
8929}
8930unsafe extern "C" {
8931    pub fn vips_executor_set_scanline(
8932        executor: *mut VipsExecutor,
8933        ir: *mut VipsRegion,
8934        x: core::ffi::c_int,
8935        y: core::ffi::c_int,
8936    );
8937}
8938unsafe extern "C" {
8939    pub fn vips_executor_set_destination(
8940        executor: *mut VipsExecutor,
8941        value: *mut core::ffi::c_void,
8942    );
8943}
8944unsafe extern "C" {
8945    pub fn vips_executor_set_parameter(
8946        executor: *mut VipsExecutor,
8947        var: core::ffi::c_int,
8948        value: core::ffi::c_int,
8949    );
8950}
8951unsafe extern "C" {
8952    pub fn vips_executor_set_array(
8953        executor: *mut VipsExecutor,
8954        var: core::ffi::c_int,
8955        value: *mut core::ffi::c_void,
8956    );
8957}
8958unsafe extern "C" {
8959    pub fn vips_executor_run(executor: *mut VipsExecutor);
8960}
8961unsafe extern "C" {
8962    pub fn vips_vector_to_fixed_point(
8963        in_: *mut f64,
8964        out: *mut core::ffi::c_int,
8965        n: core::ffi::c_int,
8966        scale: core::ffi::c_int,
8967    );
8968}
8969pub type im_object = *mut core::ffi::c_void;
8970unsafe extern "C" {
8971    pub fn vips__input_interpolate_init(
8972        obj: *mut im_object,
8973        str_: *mut core::ffi::c_char,
8974    ) -> core::ffi::c_int;
8975}
8976impl VipsBBits {
8977    pub const IM_BBITS_FLOAT: VipsBBits = VipsBBits::IM_BBITS_INT;
8978}
8979impl VipsBBits {
8980    pub const IM_BBITS_DOUBLE: VipsBBits = VipsBBits::IM_BBITS_COMPLEX;
8981}
8982#[repr(u32)]
8983#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8984pub enum VipsBBits {
8985    IM_BBITS_BYTE = 8,
8986    IM_BBITS_SHORT = 16,
8987    IM_BBITS_INT = 32,
8988    IM_BBITS_COMPLEX = 64,
8989    IM_BBITS_DPCOMPLEX = 128,
8990}
8991unsafe extern "C" {
8992    pub fn vips_g_mutex_new() -> *mut GMutex;
8993}
8994unsafe extern "C" {
8995    pub fn vips_g_mutex_free(arg1: *mut GMutex);
8996}
8997unsafe extern "C" {
8998    pub fn vips_g_cond_new() -> *mut GCond;
8999}
9000unsafe extern "C" {
9001    pub fn vips_g_cond_free(arg1: *mut GCond);
9002}
9003unsafe extern "C" {
9004    pub fn vips_g_thread_join(thread: *mut GThread) -> *mut core::ffi::c_void;
9005}
9006unsafe extern "C" {
9007    pub fn vips_cache(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
9008}
9009#[repr(u32)]
9010#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
9011pub enum VipsForeignJpegSubsample {
9012    VIPS_FOREIGN_JPEG_SUBSAMPLE_AUTO = 0,
9013    VIPS_FOREIGN_JPEG_SUBSAMPLE_ON = 1,
9014    VIPS_FOREIGN_JPEG_SUBSAMPLE_OFF = 2,
9015    VIPS_FOREIGN_JPEG_SUBSAMPLE_LAST = 3,
9016}
9017unsafe extern "C" {
9018    pub fn vips_rawsave_fd(in_: *mut VipsImage, fd: core::ffi::c_int, ...) -> core::ffi::c_int;
9019}
9020unsafe extern "C" {
9021    pub fn vips_warn(domain: *const core::ffi::c_char, fmt: *const core::ffi::c_char, ...);
9022}
9023unsafe extern "C" {
9024    pub fn vips_vwarn(domain: *const core::ffi::c_char, fmt: *const core::ffi::c_char, ap: va_list);
9025}
9026unsafe extern "C" {
9027    pub fn vips_info_set(info: gboolean);
9028}
9029unsafe extern "C" {
9030    pub fn vips_info(domain: *const core::ffi::c_char, fmt: *const core::ffi::c_char, ...);
9031}
9032unsafe extern "C" {
9033    pub fn vips_vinfo(domain: *const core::ffi::c_char, fmt: *const core::ffi::c_char, ap: va_list);
9034}
9035unsafe extern "C" {
9036    pub fn vips_autorot_get_angle(image: *mut VipsImage) -> VipsAngle;
9037}
9038unsafe extern "C" {
9039    pub fn vips_thread_isworker() -> gboolean;
9040}
9041unsafe extern "C" {
9042    pub fn vips_free(buf: *mut core::ffi::c_void) -> core::ffi::c_int;
9043}
9044unsafe extern "C" {
9045    pub fn vips_target_finish(target: *mut VipsTarget);
9046}
9047unsafe extern "C" {
9048    pub fn vips_cache_operation_lookup(operation: *mut VipsOperation) -> *mut VipsOperation;
9049}
9050unsafe extern "C" {
9051    pub fn vips_cache_operation_add(operation: *mut VipsOperation);
9052}
9053unsafe extern "C" {
9054    pub fn vips_strncpy(
9055        dest: *mut core::ffi::c_char,
9056        src: *const core::ffi::c_char,
9057        n: core::ffi::c_int,
9058    ) -> *mut core::ffi::c_char;
9059}
9060unsafe extern "C" {
9061    pub fn vips_strrstr(
9062        haystack: *const core::ffi::c_char,
9063        needle: *const core::ffi::c_char,
9064    ) -> *mut core::ffi::c_char;
9065}
9066unsafe extern "C" {
9067    pub fn vips_ispostfix(a: *const core::ffi::c_char, b: *const core::ffi::c_char) -> gboolean;
9068}
9069unsafe extern "C" {
9070    pub fn vips_vsnprintf(
9071        str_: *mut core::ffi::c_char,
9072        size: usize,
9073        format: *const core::ffi::c_char,
9074        ap: va_list,
9075    ) -> core::ffi::c_int;
9076}
9077unsafe extern "C" {
9078    pub fn vips_snprintf(
9079        str_: *mut core::ffi::c_char,
9080        size: usize,
9081        format: *const core::ffi::c_char,
9082        ...
9083    ) -> core::ffi::c_int;
9084}
9085unsafe extern "C" {
9086    pub fn vips_max_coord_get() -> core::ffi::c_int;
9087}
9088unsafe extern "C" {
9089    pub fn vips_init(argv0: *const core::ffi::c_char) -> core::ffi::c_int;
9090}
9091unsafe extern "C" {
9092    pub fn vips_get_argv0() -> *const core::ffi::c_char;
9093}
9094unsafe extern "C" {
9095    pub fn vips_get_prgname() -> *const core::ffi::c_char;
9096}
9097unsafe extern "C" {
9098    pub fn vips_shutdown();
9099}
9100unsafe extern "C" {
9101    pub fn vips_thread_shutdown();
9102}
9103unsafe extern "C" {
9104    pub fn vips_add_option_entries(option_group: *mut GOptionGroup);
9105}
9106unsafe extern "C" {
9107    pub fn vips_leak_set(leak: gboolean);
9108}
9109unsafe extern "C" {
9110    pub fn vips_block_untrusted_set(state: gboolean);
9111}
9112unsafe extern "C" {
9113    pub fn vips_version_string() -> *const core::ffi::c_char;
9114}
9115unsafe extern "C" {
9116    pub fn vips_version(flag: core::ffi::c_int) -> core::ffi::c_int;
9117}
9118unsafe extern "C" {
9119    pub fn vips_guess_prefix(
9120        argv0: *const core::ffi::c_char,
9121        env_name: *const core::ffi::c_char,
9122    ) -> *const core::ffi::c_char;
9123}
9124unsafe extern "C" {
9125    pub fn vips_guess_libdir(
9126        argv0: *const core::ffi::c_char,
9127        env_name: *const core::ffi::c_char,
9128    ) -> *const core::ffi::c_char;
9129}
9130pub type __builtin_va_list = *mut core::ffi::c_char;