Skip to main content

vips_sys/bindings/
prebuilt.rs

1/* automatically generated by rust-bindgen (vips-sys)
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.7\0";
506pub const VIPS_VERSION_STRING: &[u8; 7] = b"8.18.7\0";
507pub const VIPS_MAJOR_VERSION: u32 = 8;
508pub const VIPS_MINOR_VERSION: u32 = 18;
509pub const VIPS_MICRO_VERSION: u32 = 7;
510pub const VIPS_LIBRARY_CURRENT: u32 = 62;
511pub const VIPS_LIBRARY_REVISION: u32 = 7;
512pub const VIPS_LIBRARY_AGE: u32 = 20;
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 = isize;
585pub type gsize = usize;
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}
6132unsafe extern "C" {
6133    pub fn vips_foreign_jpeg_subsample_get_type() -> GType;
6134}
6135unsafe extern "C" {
6136    pub fn vips_operation_math_get_type() -> GType;
6137}
6138unsafe extern "C" {
6139    pub fn vips_operation_math2_get_type() -> GType;
6140}
6141unsafe extern "C" {
6142    pub fn vips_operation_round_get_type() -> GType;
6143}
6144unsafe extern "C" {
6145    pub fn vips_operation_relational_get_type() -> GType;
6146}
6147unsafe extern "C" {
6148    pub fn vips_operation_boolean_get_type() -> GType;
6149}
6150unsafe extern "C" {
6151    pub fn vips_operation_complex_get_type() -> GType;
6152}
6153unsafe extern "C" {
6154    pub fn vips_operation_complex2_get_type() -> GType;
6155}
6156unsafe extern "C" {
6157    pub fn vips_operation_complexget_get_type() -> GType;
6158}
6159unsafe extern "C" {
6160    pub fn vips_precision_get_type() -> GType;
6161}
6162unsafe extern "C" {
6163    pub fn vips_intent_get_type() -> GType;
6164}
6165unsafe extern "C" {
6166    pub fn vips_pcs_get_type() -> GType;
6167}
6168unsafe extern "C" {
6169    pub fn vips_extend_get_type() -> GType;
6170}
6171unsafe extern "C" {
6172    pub fn vips_compass_direction_get_type() -> GType;
6173}
6174unsafe extern "C" {
6175    pub fn vips_direction_get_type() -> GType;
6176}
6177unsafe extern "C" {
6178    pub fn vips_align_get_type() -> GType;
6179}
6180unsafe extern "C" {
6181    pub fn vips_angle_get_type() -> GType;
6182}
6183unsafe extern "C" {
6184    pub fn vips_angle45_get_type() -> GType;
6185}
6186unsafe extern "C" {
6187    pub fn vips_interesting_get_type() -> GType;
6188}
6189unsafe extern "C" {
6190    pub fn vips_blend_mode_get_type() -> GType;
6191}
6192unsafe extern "C" {
6193    pub fn vips_combine_get_type() -> GType;
6194}
6195unsafe extern "C" {
6196    pub fn vips_text_wrap_get_type() -> GType;
6197}
6198unsafe extern "C" {
6199    pub fn vips_sdf_shape_get_type() -> GType;
6200}
6201unsafe extern "C" {
6202    pub fn vips_combine_mode_get_type() -> GType;
6203}
6204unsafe extern "C" {
6205    pub fn vips_foreign_flags_get_type() -> GType;
6206}
6207unsafe extern "C" {
6208    pub fn vips_fail_on_get_type() -> GType;
6209}
6210unsafe extern "C" {
6211    pub fn vips_foreign_saveable_get_type() -> GType;
6212}
6213unsafe extern "C" {
6214    pub fn vips_foreign_coding_get_type() -> GType;
6215}
6216unsafe extern "C" {
6217    pub fn vips_foreign_keep_get_type() -> GType;
6218}
6219unsafe extern "C" {
6220    pub fn vips_foreign_subsample_get_type() -> GType;
6221}
6222unsafe extern "C" {
6223    pub fn vips_foreign_webp_preset_get_type() -> GType;
6224}
6225unsafe extern "C" {
6226    pub fn vips_foreign_tiff_compression_get_type() -> GType;
6227}
6228unsafe extern "C" {
6229    pub fn vips_foreign_tiff_predictor_get_type() -> GType;
6230}
6231unsafe extern "C" {
6232    pub fn vips_foreign_tiff_resunit_get_type() -> GType;
6233}
6234unsafe extern "C" {
6235    pub fn vips_foreign_png_filter_get_type() -> GType;
6236}
6237unsafe extern "C" {
6238    pub fn vips_foreign_ppm_format_get_type() -> GType;
6239}
6240unsafe extern "C" {
6241    pub fn vips_foreign_pdf_page_box_get_type() -> GType;
6242}
6243unsafe extern "C" {
6244    pub fn vips_foreign_dz_layout_get_type() -> GType;
6245}
6246unsafe extern "C" {
6247    pub fn vips_foreign_dz_depth_get_type() -> GType;
6248}
6249unsafe extern "C" {
6250    pub fn vips_foreign_dz_container_get_type() -> GType;
6251}
6252unsafe extern "C" {
6253    pub fn vips_foreign_heif_compression_get_type() -> GType;
6254}
6255unsafe extern "C" {
6256    pub fn vips_foreign_heif_encoder_get_type() -> GType;
6257}
6258unsafe extern "C" {
6259    pub fn vips_demand_style_get_type() -> GType;
6260}
6261unsafe extern "C" {
6262    pub fn vips_image_type_get_type() -> GType;
6263}
6264unsafe extern "C" {
6265    pub fn vips_interpretation_get_type() -> GType;
6266}
6267unsafe extern "C" {
6268    pub fn vips_band_format_get_type() -> GType;
6269}
6270unsafe extern "C" {
6271    pub fn vips_coding_get_type() -> GType;
6272}
6273unsafe extern "C" {
6274    pub fn vips_access_get_type() -> GType;
6275}
6276unsafe extern "C" {
6277    pub fn vips_operation_morphology_get_type() -> GType;
6278}
6279unsafe extern "C" {
6280    pub fn vips_argument_flags_get_type() -> GType;
6281}
6282unsafe extern "C" {
6283    pub fn vips_operation_flags_get_type() -> GType;
6284}
6285unsafe extern "C" {
6286    pub fn vips_region_shrink_get_type() -> GType;
6287}
6288unsafe extern "C" {
6289    pub fn vips_kernel_get_type() -> GType;
6290}
6291unsafe extern "C" {
6292    pub fn vips_size_get_type() -> GType;
6293}
6294unsafe extern "C" {
6295    pub fn vips_token_get_type() -> GType;
6296}
6297unsafe extern "C" {
6298    pub fn vips_saveable_get_type() -> GType;
6299}
6300#[repr(u32)]
6301#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6302pub enum VipsOperationMath {
6303    VIPS_OPERATION_MATH_SIN = 0,
6304    VIPS_OPERATION_MATH_COS = 1,
6305    VIPS_OPERATION_MATH_TAN = 2,
6306    VIPS_OPERATION_MATH_ASIN = 3,
6307    VIPS_OPERATION_MATH_ACOS = 4,
6308    VIPS_OPERATION_MATH_ATAN = 5,
6309    VIPS_OPERATION_MATH_LOG = 6,
6310    VIPS_OPERATION_MATH_LOG10 = 7,
6311    VIPS_OPERATION_MATH_EXP = 8,
6312    VIPS_OPERATION_MATH_EXP10 = 9,
6313    VIPS_OPERATION_MATH_SINH = 10,
6314    VIPS_OPERATION_MATH_COSH = 11,
6315    VIPS_OPERATION_MATH_TANH = 12,
6316    VIPS_OPERATION_MATH_ASINH = 13,
6317    VIPS_OPERATION_MATH_ACOSH = 14,
6318    VIPS_OPERATION_MATH_ATANH = 15,
6319    VIPS_OPERATION_MATH_LAST = 16,
6320}
6321#[repr(u32)]
6322#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6323pub enum VipsOperationMath2 {
6324    VIPS_OPERATION_MATH2_POW = 0,
6325    VIPS_OPERATION_MATH2_WOP = 1,
6326    VIPS_OPERATION_MATH2_ATAN2 = 2,
6327    VIPS_OPERATION_MATH2_LAST = 3,
6328}
6329#[repr(u32)]
6330#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6331pub enum VipsOperationRound {
6332    VIPS_OPERATION_ROUND_RINT = 0,
6333    VIPS_OPERATION_ROUND_CEIL = 1,
6334    VIPS_OPERATION_ROUND_FLOOR = 2,
6335    VIPS_OPERATION_ROUND_LAST = 3,
6336}
6337#[repr(u32)]
6338#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6339pub enum VipsOperationRelational {
6340    VIPS_OPERATION_RELATIONAL_EQUAL = 0,
6341    VIPS_OPERATION_RELATIONAL_NOTEQ = 1,
6342    VIPS_OPERATION_RELATIONAL_LESS = 2,
6343    VIPS_OPERATION_RELATIONAL_LESSEQ = 3,
6344    VIPS_OPERATION_RELATIONAL_MORE = 4,
6345    VIPS_OPERATION_RELATIONAL_MOREEQ = 5,
6346    VIPS_OPERATION_RELATIONAL_LAST = 6,
6347}
6348#[repr(u32)]
6349#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6350pub enum VipsOperationBoolean {
6351    VIPS_OPERATION_BOOLEAN_AND = 0,
6352    VIPS_OPERATION_BOOLEAN_OR = 1,
6353    VIPS_OPERATION_BOOLEAN_EOR = 2,
6354    VIPS_OPERATION_BOOLEAN_LSHIFT = 3,
6355    VIPS_OPERATION_BOOLEAN_RSHIFT = 4,
6356    VIPS_OPERATION_BOOLEAN_LAST = 5,
6357}
6358#[repr(u32)]
6359#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6360pub enum VipsOperationComplex {
6361    VIPS_OPERATION_COMPLEX_POLAR = 0,
6362    VIPS_OPERATION_COMPLEX_RECT = 1,
6363    VIPS_OPERATION_COMPLEX_CONJ = 2,
6364    VIPS_OPERATION_COMPLEX_LAST = 3,
6365}
6366#[repr(u32)]
6367#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6368pub enum VipsOperationComplex2 {
6369    VIPS_OPERATION_COMPLEX2_CROSS_PHASE = 0,
6370    VIPS_OPERATION_COMPLEX2_LAST = 1,
6371}
6372#[repr(u32)]
6373#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
6374pub enum VipsOperationComplexget {
6375    VIPS_OPERATION_COMPLEXGET_REAL = 0,
6376    VIPS_OPERATION_COMPLEXGET_IMAG = 1,
6377    VIPS_OPERATION_COMPLEXGET_LAST = 2,
6378}
6379unsafe extern "C" {
6380    pub fn vips_add(
6381        left: *mut VipsImage,
6382        right: *mut VipsImage,
6383        out: *mut *mut VipsImage,
6384        ...
6385    ) -> core::ffi::c_int;
6386}
6387unsafe extern "C" {
6388    pub fn vips_sum(
6389        in_: *mut *mut VipsImage,
6390        out: *mut *mut VipsImage,
6391        n: core::ffi::c_int,
6392        ...
6393    ) -> core::ffi::c_int;
6394}
6395unsafe extern "C" {
6396    pub fn vips_subtract(
6397        in1: *mut VipsImage,
6398        in2: *mut VipsImage,
6399        out: *mut *mut VipsImage,
6400        ...
6401    ) -> core::ffi::c_int;
6402}
6403unsafe extern "C" {
6404    pub fn vips_multiply(
6405        left: *mut VipsImage,
6406        right: *mut VipsImage,
6407        out: *mut *mut VipsImage,
6408        ...
6409    ) -> core::ffi::c_int;
6410}
6411unsafe extern "C" {
6412    pub fn vips_divide(
6413        left: *mut VipsImage,
6414        right: *mut VipsImage,
6415        out: *mut *mut VipsImage,
6416        ...
6417    ) -> core::ffi::c_int;
6418}
6419unsafe extern "C" {
6420    pub fn vips_linear(
6421        in_: *mut VipsImage,
6422        out: *mut *mut VipsImage,
6423        a: *const f64,
6424        b: *const f64,
6425        n: core::ffi::c_int,
6426        ...
6427    ) -> core::ffi::c_int;
6428}
6429unsafe extern "C" {
6430    pub fn vips_linear1(
6431        in_: *mut VipsImage,
6432        out: *mut *mut VipsImage,
6433        a: f64,
6434        b: f64,
6435        ...
6436    ) -> core::ffi::c_int;
6437}
6438unsafe extern "C" {
6439    pub fn vips_remainder(
6440        left: *mut VipsImage,
6441        right: *mut VipsImage,
6442        out: *mut *mut VipsImage,
6443        ...
6444    ) -> core::ffi::c_int;
6445}
6446unsafe extern "C" {
6447    pub fn vips_remainder_const(
6448        in_: *mut VipsImage,
6449        out: *mut *mut VipsImage,
6450        c: *const f64,
6451        n: core::ffi::c_int,
6452        ...
6453    ) -> core::ffi::c_int;
6454}
6455unsafe extern "C" {
6456    pub fn vips_remainder_const1(
6457        in_: *mut VipsImage,
6458        out: *mut *mut VipsImage,
6459        c: f64,
6460        ...
6461    ) -> core::ffi::c_int;
6462}
6463unsafe extern "C" {
6464    pub fn vips_invert(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6465}
6466unsafe extern "C" {
6467    pub fn vips_abs(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6468}
6469unsafe extern "C" {
6470    pub fn vips_sign(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6471}
6472unsafe extern "C" {
6473    pub fn vips_clamp(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6474}
6475unsafe extern "C" {
6476    pub fn vips_maxpair(
6477        left: *mut VipsImage,
6478        right: *mut VipsImage,
6479        out: *mut *mut VipsImage,
6480        ...
6481    ) -> core::ffi::c_int;
6482}
6483unsafe extern "C" {
6484    pub fn vips_minpair(
6485        left: *mut VipsImage,
6486        right: *mut VipsImage,
6487        out: *mut *mut VipsImage,
6488        ...
6489    ) -> core::ffi::c_int;
6490}
6491unsafe extern "C" {
6492    pub fn vips_round(
6493        in_: *mut VipsImage,
6494        out: *mut *mut VipsImage,
6495        round: VipsOperationRound,
6496        ...
6497    ) -> core::ffi::c_int;
6498}
6499unsafe extern "C" {
6500    pub fn vips_floor(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6501}
6502unsafe extern "C" {
6503    pub fn vips_ceil(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6504}
6505unsafe extern "C" {
6506    pub fn vips_rint(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6507}
6508unsafe extern "C" {
6509    pub fn vips_math(
6510        in_: *mut VipsImage,
6511        out: *mut *mut VipsImage,
6512        math: VipsOperationMath,
6513        ...
6514    ) -> core::ffi::c_int;
6515}
6516unsafe extern "C" {
6517    pub fn vips_sin(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6518}
6519unsafe extern "C" {
6520    pub fn vips_cos(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6521}
6522unsafe extern "C" {
6523    pub fn vips_tan(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6524}
6525unsafe extern "C" {
6526    pub fn vips_asin(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6527}
6528unsafe extern "C" {
6529    pub fn vips_acos(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6530}
6531unsafe extern "C" {
6532    pub fn vips_atan(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6533}
6534unsafe extern "C" {
6535    pub fn vips_exp(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6536}
6537unsafe extern "C" {
6538    pub fn vips_exp10(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6539}
6540unsafe extern "C" {
6541    pub fn vips_log(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6542}
6543unsafe extern "C" {
6544    pub fn vips_log10(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6545}
6546unsafe extern "C" {
6547    pub fn vips_sinh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6548}
6549unsafe extern "C" {
6550    pub fn vips_cosh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6551}
6552unsafe extern "C" {
6553    pub fn vips_tanh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6554}
6555unsafe extern "C" {
6556    pub fn vips_asinh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6557}
6558unsafe extern "C" {
6559    pub fn vips_acosh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6560}
6561unsafe extern "C" {
6562    pub fn vips_atanh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6563}
6564unsafe extern "C" {
6565    pub fn vips_complex(
6566        in_: *mut VipsImage,
6567        out: *mut *mut VipsImage,
6568        cmplx: VipsOperationComplex,
6569        ...
6570    ) -> core::ffi::c_int;
6571}
6572unsafe extern "C" {
6573    pub fn vips_polar(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6574}
6575unsafe extern "C" {
6576    pub fn vips_rect(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6577}
6578unsafe extern "C" {
6579    pub fn vips_conj(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6580}
6581unsafe extern "C" {
6582    pub fn vips_complex2(
6583        left: *mut VipsImage,
6584        right: *mut VipsImage,
6585        out: *mut *mut VipsImage,
6586        cmplx: VipsOperationComplex2,
6587        ...
6588    ) -> core::ffi::c_int;
6589}
6590unsafe extern "C" {
6591    pub fn vips_cross_phase(
6592        left: *mut VipsImage,
6593        right: *mut VipsImage,
6594        out: *mut *mut VipsImage,
6595        ...
6596    ) -> core::ffi::c_int;
6597}
6598unsafe extern "C" {
6599    pub fn vips_complexget(
6600        in_: *mut VipsImage,
6601        out: *mut *mut VipsImage,
6602        get: VipsOperationComplexget,
6603        ...
6604    ) -> core::ffi::c_int;
6605}
6606unsafe extern "C" {
6607    pub fn vips_real(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6608}
6609unsafe extern "C" {
6610    pub fn vips_imag(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
6611}
6612unsafe extern "C" {
6613    pub fn vips_complexform(
6614        left: *mut VipsImage,
6615        right: *mut VipsImage,
6616        out: *mut *mut VipsImage,
6617        ...
6618    ) -> core::ffi::c_int;
6619}
6620unsafe extern "C" {
6621    pub fn vips_relational(
6622        left: *mut VipsImage,
6623        right: *mut VipsImage,
6624        out: *mut *mut VipsImage,
6625        relational: VipsOperationRelational,
6626        ...
6627    ) -> core::ffi::c_int;
6628}
6629unsafe extern "C" {
6630    pub fn vips_equal(
6631        left: *mut VipsImage,
6632        right: *mut VipsImage,
6633        out: *mut *mut VipsImage,
6634        ...
6635    ) -> core::ffi::c_int;
6636}
6637unsafe extern "C" {
6638    pub fn vips_notequal(
6639        left: *mut VipsImage,
6640        right: *mut VipsImage,
6641        out: *mut *mut VipsImage,
6642        ...
6643    ) -> core::ffi::c_int;
6644}
6645unsafe extern "C" {
6646    pub fn vips_less(
6647        left: *mut VipsImage,
6648        right: *mut VipsImage,
6649        out: *mut *mut VipsImage,
6650        ...
6651    ) -> core::ffi::c_int;
6652}
6653unsafe extern "C" {
6654    pub fn vips_lesseq(
6655        left: *mut VipsImage,
6656        right: *mut VipsImage,
6657        out: *mut *mut VipsImage,
6658        ...
6659    ) -> core::ffi::c_int;
6660}
6661unsafe extern "C" {
6662    pub fn vips_more(
6663        left: *mut VipsImage,
6664        right: *mut VipsImage,
6665        out: *mut *mut VipsImage,
6666        ...
6667    ) -> core::ffi::c_int;
6668}
6669unsafe extern "C" {
6670    pub fn vips_moreeq(
6671        left: *mut VipsImage,
6672        right: *mut VipsImage,
6673        out: *mut *mut VipsImage,
6674        ...
6675    ) -> core::ffi::c_int;
6676}
6677unsafe extern "C" {
6678    pub fn vips_relational_const(
6679        in_: *mut VipsImage,
6680        out: *mut *mut VipsImage,
6681        relational: VipsOperationRelational,
6682        c: *const f64,
6683        n: core::ffi::c_int,
6684        ...
6685    ) -> core::ffi::c_int;
6686}
6687unsafe extern "C" {
6688    pub fn vips_equal_const(
6689        in_: *mut VipsImage,
6690        out: *mut *mut VipsImage,
6691        c: *const f64,
6692        n: core::ffi::c_int,
6693        ...
6694    ) -> core::ffi::c_int;
6695}
6696unsafe extern "C" {
6697    pub fn vips_notequal_const(
6698        in_: *mut VipsImage,
6699        out: *mut *mut VipsImage,
6700        c: *const f64,
6701        n: core::ffi::c_int,
6702        ...
6703    ) -> core::ffi::c_int;
6704}
6705unsafe extern "C" {
6706    pub fn vips_less_const(
6707        in_: *mut VipsImage,
6708        out: *mut *mut VipsImage,
6709        c: *const f64,
6710        n: core::ffi::c_int,
6711        ...
6712    ) -> core::ffi::c_int;
6713}
6714unsafe extern "C" {
6715    pub fn vips_lesseq_const(
6716        in_: *mut VipsImage,
6717        out: *mut *mut VipsImage,
6718        c: *const f64,
6719        n: core::ffi::c_int,
6720        ...
6721    ) -> core::ffi::c_int;
6722}
6723unsafe extern "C" {
6724    pub fn vips_more_const(
6725        in_: *mut VipsImage,
6726        out: *mut *mut VipsImage,
6727        c: *const f64,
6728        n: core::ffi::c_int,
6729        ...
6730    ) -> core::ffi::c_int;
6731}
6732unsafe extern "C" {
6733    pub fn vips_moreeq_const(
6734        in_: *mut VipsImage,
6735        out: *mut *mut VipsImage,
6736        c: *const f64,
6737        n: core::ffi::c_int,
6738        ...
6739    ) -> core::ffi::c_int;
6740}
6741unsafe extern "C" {
6742    pub fn vips_relational_const1(
6743        in_: *mut VipsImage,
6744        out: *mut *mut VipsImage,
6745        relational: VipsOperationRelational,
6746        c: f64,
6747        ...
6748    ) -> core::ffi::c_int;
6749}
6750unsafe extern "C" {
6751    pub fn vips_equal_const1(
6752        in_: *mut VipsImage,
6753        out: *mut *mut VipsImage,
6754        c: f64,
6755        ...
6756    ) -> core::ffi::c_int;
6757}
6758unsafe extern "C" {
6759    pub fn vips_notequal_const1(
6760        in_: *mut VipsImage,
6761        out: *mut *mut VipsImage,
6762        c: f64,
6763        ...
6764    ) -> core::ffi::c_int;
6765}
6766unsafe extern "C" {
6767    pub fn vips_less_const1(
6768        in_: *mut VipsImage,
6769        out: *mut *mut VipsImage,
6770        c: f64,
6771        ...
6772    ) -> core::ffi::c_int;
6773}
6774unsafe extern "C" {
6775    pub fn vips_lesseq_const1(
6776        in_: *mut VipsImage,
6777        out: *mut *mut VipsImage,
6778        c: f64,
6779        ...
6780    ) -> core::ffi::c_int;
6781}
6782unsafe extern "C" {
6783    pub fn vips_more_const1(
6784        in_: *mut VipsImage,
6785        out: *mut *mut VipsImage,
6786        c: f64,
6787        ...
6788    ) -> core::ffi::c_int;
6789}
6790unsafe extern "C" {
6791    pub fn vips_moreeq_const1(
6792        in_: *mut VipsImage,
6793        out: *mut *mut VipsImage,
6794        c: f64,
6795        ...
6796    ) -> core::ffi::c_int;
6797}
6798unsafe extern "C" {
6799    pub fn vips_boolean(
6800        left: *mut VipsImage,
6801        right: *mut VipsImage,
6802        out: *mut *mut VipsImage,
6803        boolean: VipsOperationBoolean,
6804        ...
6805    ) -> core::ffi::c_int;
6806}
6807unsafe extern "C" {
6808    pub fn vips_andimage(
6809        left: *mut VipsImage,
6810        right: *mut VipsImage,
6811        out: *mut *mut VipsImage,
6812        ...
6813    ) -> core::ffi::c_int;
6814}
6815unsafe extern "C" {
6816    pub fn vips_orimage(
6817        left: *mut VipsImage,
6818        right: *mut VipsImage,
6819        out: *mut *mut VipsImage,
6820        ...
6821    ) -> core::ffi::c_int;
6822}
6823unsafe extern "C" {
6824    pub fn vips_eorimage(
6825        left: *mut VipsImage,
6826        right: *mut VipsImage,
6827        out: *mut *mut VipsImage,
6828        ...
6829    ) -> core::ffi::c_int;
6830}
6831unsafe extern "C" {
6832    pub fn vips_lshift(
6833        left: *mut VipsImage,
6834        right: *mut VipsImage,
6835        out: *mut *mut VipsImage,
6836        ...
6837    ) -> core::ffi::c_int;
6838}
6839unsafe extern "C" {
6840    pub fn vips_rshift(
6841        left: *mut VipsImage,
6842        right: *mut VipsImage,
6843        out: *mut *mut VipsImage,
6844        ...
6845    ) -> core::ffi::c_int;
6846}
6847unsafe extern "C" {
6848    pub fn vips_boolean_const(
6849        in_: *mut VipsImage,
6850        out: *mut *mut VipsImage,
6851        boolean: VipsOperationBoolean,
6852        c: *const f64,
6853        n: core::ffi::c_int,
6854        ...
6855    ) -> core::ffi::c_int;
6856}
6857unsafe extern "C" {
6858    pub fn vips_andimage_const(
6859        in_: *mut VipsImage,
6860        out: *mut *mut VipsImage,
6861        c: *const f64,
6862        n: core::ffi::c_int,
6863        ...
6864    ) -> core::ffi::c_int;
6865}
6866unsafe extern "C" {
6867    pub fn vips_orimage_const(
6868        in_: *mut VipsImage,
6869        out: *mut *mut VipsImage,
6870        c: *const f64,
6871        n: core::ffi::c_int,
6872        ...
6873    ) -> core::ffi::c_int;
6874}
6875unsafe extern "C" {
6876    pub fn vips_eorimage_const(
6877        in_: *mut VipsImage,
6878        out: *mut *mut VipsImage,
6879        c: *const f64,
6880        n: core::ffi::c_int,
6881        ...
6882    ) -> core::ffi::c_int;
6883}
6884unsafe extern "C" {
6885    pub fn vips_lshift_const(
6886        in_: *mut VipsImage,
6887        out: *mut *mut VipsImage,
6888        c: *const f64,
6889        n: core::ffi::c_int,
6890        ...
6891    ) -> core::ffi::c_int;
6892}
6893unsafe extern "C" {
6894    pub fn vips_rshift_const(
6895        in_: *mut VipsImage,
6896        out: *mut *mut VipsImage,
6897        c: *const f64,
6898        n: core::ffi::c_int,
6899        ...
6900    ) -> core::ffi::c_int;
6901}
6902unsafe extern "C" {
6903    pub fn vips_boolean_const1(
6904        in_: *mut VipsImage,
6905        out: *mut *mut VipsImage,
6906        boolean: VipsOperationBoolean,
6907        c: f64,
6908        ...
6909    ) -> core::ffi::c_int;
6910}
6911unsafe extern "C" {
6912    pub fn vips_andimage_const1(
6913        in_: *mut VipsImage,
6914        out: *mut *mut VipsImage,
6915        c: f64,
6916        ...
6917    ) -> core::ffi::c_int;
6918}
6919unsafe extern "C" {
6920    pub fn vips_orimage_const1(
6921        in_: *mut VipsImage,
6922        out: *mut *mut VipsImage,
6923        c: f64,
6924        ...
6925    ) -> core::ffi::c_int;
6926}
6927unsafe extern "C" {
6928    pub fn vips_eorimage_const1(
6929        in_: *mut VipsImage,
6930        out: *mut *mut VipsImage,
6931        c: f64,
6932        ...
6933    ) -> core::ffi::c_int;
6934}
6935unsafe extern "C" {
6936    pub fn vips_lshift_const1(
6937        in_: *mut VipsImage,
6938        out: *mut *mut VipsImage,
6939        c: f64,
6940        ...
6941    ) -> core::ffi::c_int;
6942}
6943unsafe extern "C" {
6944    pub fn vips_rshift_const1(
6945        in_: *mut VipsImage,
6946        out: *mut *mut VipsImage,
6947        c: f64,
6948        ...
6949    ) -> core::ffi::c_int;
6950}
6951unsafe extern "C" {
6952    pub fn vips_math2(
6953        left: *mut VipsImage,
6954        right: *mut VipsImage,
6955        out: *mut *mut VipsImage,
6956        math2: VipsOperationMath2,
6957        ...
6958    ) -> core::ffi::c_int;
6959}
6960unsafe extern "C" {
6961    pub fn vips_pow(
6962        left: *mut VipsImage,
6963        right: *mut VipsImage,
6964        out: *mut *mut VipsImage,
6965        ...
6966    ) -> core::ffi::c_int;
6967}
6968unsafe extern "C" {
6969    pub fn vips_wop(
6970        left: *mut VipsImage,
6971        right: *mut VipsImage,
6972        out: *mut *mut VipsImage,
6973        ...
6974    ) -> core::ffi::c_int;
6975}
6976unsafe extern "C" {
6977    pub fn vips_atan2(
6978        left: *mut VipsImage,
6979        right: *mut VipsImage,
6980        out: *mut *mut VipsImage,
6981        ...
6982    ) -> core::ffi::c_int;
6983}
6984unsafe extern "C" {
6985    pub fn vips_math2_const(
6986        in_: *mut VipsImage,
6987        out: *mut *mut VipsImage,
6988        math2: VipsOperationMath2,
6989        c: *const f64,
6990        n: core::ffi::c_int,
6991        ...
6992    ) -> core::ffi::c_int;
6993}
6994unsafe extern "C" {
6995    pub fn vips_pow_const(
6996        in_: *mut VipsImage,
6997        out: *mut *mut VipsImage,
6998        c: *const f64,
6999        n: core::ffi::c_int,
7000        ...
7001    ) -> core::ffi::c_int;
7002}
7003unsafe extern "C" {
7004    pub fn vips_wop_const(
7005        in_: *mut VipsImage,
7006        out: *mut *mut VipsImage,
7007        c: *const f64,
7008        n: core::ffi::c_int,
7009        ...
7010    ) -> core::ffi::c_int;
7011}
7012unsafe extern "C" {
7013    pub fn vips_atan2_const(
7014        in_: *mut VipsImage,
7015        out: *mut *mut VipsImage,
7016        c: *const f64,
7017        n: core::ffi::c_int,
7018        ...
7019    ) -> core::ffi::c_int;
7020}
7021unsafe extern "C" {
7022    pub fn vips_math2_const1(
7023        in_: *mut VipsImage,
7024        out: *mut *mut VipsImage,
7025        math2: VipsOperationMath2,
7026        c: f64,
7027        ...
7028    ) -> core::ffi::c_int;
7029}
7030unsafe extern "C" {
7031    pub fn vips_pow_const1(
7032        in_: *mut VipsImage,
7033        out: *mut *mut VipsImage,
7034        c: f64,
7035        ...
7036    ) -> core::ffi::c_int;
7037}
7038unsafe extern "C" {
7039    pub fn vips_wop_const1(
7040        in_: *mut VipsImage,
7041        out: *mut *mut VipsImage,
7042        c: f64,
7043        ...
7044    ) -> core::ffi::c_int;
7045}
7046unsafe extern "C" {
7047    pub fn vips_atan2_const1(
7048        in_: *mut VipsImage,
7049        out: *mut *mut VipsImage,
7050        c: f64,
7051        ...
7052    ) -> core::ffi::c_int;
7053}
7054unsafe extern "C" {
7055    pub fn vips_avg(in_: *mut VipsImage, out: *mut f64, ...) -> core::ffi::c_int;
7056}
7057unsafe extern "C" {
7058    pub fn vips_deviate(in_: *mut VipsImage, out: *mut f64, ...) -> core::ffi::c_int;
7059}
7060unsafe extern "C" {
7061    pub fn vips_min(in_: *mut VipsImage, out: *mut f64, ...) -> core::ffi::c_int;
7062}
7063unsafe extern "C" {
7064    pub fn vips_max(in_: *mut VipsImage, out: *mut f64, ...) -> core::ffi::c_int;
7065}
7066unsafe extern "C" {
7067    pub fn vips_stats(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7068}
7069unsafe extern "C" {
7070    pub fn vips_measure(
7071        in_: *mut VipsImage,
7072        out: *mut *mut VipsImage,
7073        h: core::ffi::c_int,
7074        v: core::ffi::c_int,
7075        ...
7076    ) -> core::ffi::c_int;
7077}
7078unsafe extern "C" {
7079    pub fn vips_find_trim(
7080        in_: *mut VipsImage,
7081        left: *mut core::ffi::c_int,
7082        top: *mut core::ffi::c_int,
7083        width: *mut core::ffi::c_int,
7084        height: *mut core::ffi::c_int,
7085        ...
7086    ) -> core::ffi::c_int;
7087}
7088unsafe extern "C" {
7089    pub fn vips_getpoint(
7090        in_: *mut VipsImage,
7091        vector: *mut *mut f64,
7092        n: *mut core::ffi::c_int,
7093        x: core::ffi::c_int,
7094        y: core::ffi::c_int,
7095        ...
7096    ) -> core::ffi::c_int;
7097}
7098unsafe extern "C" {
7099    pub fn vips_hist_find(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7100}
7101unsafe extern "C" {
7102    pub fn vips_hist_find_ndim(
7103        in_: *mut VipsImage,
7104        out: *mut *mut VipsImage,
7105        ...
7106    ) -> core::ffi::c_int;
7107}
7108unsafe extern "C" {
7109    pub fn vips_hist_find_indexed(
7110        in_: *mut VipsImage,
7111        index: *mut VipsImage,
7112        out: *mut *mut VipsImage,
7113        ...
7114    ) -> core::ffi::c_int;
7115}
7116unsafe extern "C" {
7117    pub fn vips_hough_line(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7118}
7119unsafe extern "C" {
7120    pub fn vips_hough_circle(
7121        in_: *mut VipsImage,
7122        out: *mut *mut VipsImage,
7123        ...
7124    ) -> core::ffi::c_int;
7125}
7126unsafe extern "C" {
7127    pub fn vips_project(
7128        in_: *mut VipsImage,
7129        columns: *mut *mut VipsImage,
7130        rows: *mut *mut VipsImage,
7131        ...
7132    ) -> core::ffi::c_int;
7133}
7134unsafe extern "C" {
7135    pub fn vips_profile(
7136        in_: *mut VipsImage,
7137        columns: *mut *mut VipsImage,
7138        rows: *mut *mut VipsImage,
7139        ...
7140    ) -> core::ffi::c_int;
7141}
7142#[repr(u32)]
7143#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7144pub enum VipsExtend {
7145    VIPS_EXTEND_BLACK = 0,
7146    VIPS_EXTEND_COPY = 1,
7147    VIPS_EXTEND_REPEAT = 2,
7148    VIPS_EXTEND_MIRROR = 3,
7149    VIPS_EXTEND_WHITE = 4,
7150    VIPS_EXTEND_BACKGROUND = 5,
7151    VIPS_EXTEND_LAST = 6,
7152}
7153#[repr(u32)]
7154#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7155pub enum VipsCompassDirection {
7156    VIPS_COMPASS_DIRECTION_CENTRE = 0,
7157    VIPS_COMPASS_DIRECTION_NORTH = 1,
7158    VIPS_COMPASS_DIRECTION_EAST = 2,
7159    VIPS_COMPASS_DIRECTION_SOUTH = 3,
7160    VIPS_COMPASS_DIRECTION_WEST = 4,
7161    VIPS_COMPASS_DIRECTION_NORTH_EAST = 5,
7162    VIPS_COMPASS_DIRECTION_SOUTH_EAST = 6,
7163    VIPS_COMPASS_DIRECTION_SOUTH_WEST = 7,
7164    VIPS_COMPASS_DIRECTION_NORTH_WEST = 8,
7165    VIPS_COMPASS_DIRECTION_LAST = 9,
7166}
7167#[repr(u32)]
7168#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7169pub enum VipsDirection {
7170    VIPS_DIRECTION_HORIZONTAL = 0,
7171    VIPS_DIRECTION_VERTICAL = 1,
7172    VIPS_DIRECTION_LAST = 2,
7173}
7174#[repr(u32)]
7175#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7176pub enum VipsAlign {
7177    VIPS_ALIGN_LOW = 0,
7178    VIPS_ALIGN_CENTRE = 1,
7179    VIPS_ALIGN_HIGH = 2,
7180    VIPS_ALIGN_LAST = 3,
7181}
7182#[repr(u32)]
7183#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7184pub enum VipsAngle {
7185    VIPS_ANGLE_D0 = 0,
7186    VIPS_ANGLE_D90 = 1,
7187    VIPS_ANGLE_D180 = 2,
7188    VIPS_ANGLE_D270 = 3,
7189    VIPS_ANGLE_LAST = 4,
7190}
7191#[repr(u32)]
7192#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7193pub enum VipsAngle45 {
7194    VIPS_ANGLE45_D0 = 0,
7195    VIPS_ANGLE45_D45 = 1,
7196    VIPS_ANGLE45_D90 = 2,
7197    VIPS_ANGLE45_D135 = 3,
7198    VIPS_ANGLE45_D180 = 4,
7199    VIPS_ANGLE45_D225 = 5,
7200    VIPS_ANGLE45_D270 = 6,
7201    VIPS_ANGLE45_D315 = 7,
7202    VIPS_ANGLE45_LAST = 8,
7203}
7204#[repr(u32)]
7205#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7206pub enum VipsInteresting {
7207    VIPS_INTERESTING_NONE = 0,
7208    VIPS_INTERESTING_CENTRE = 1,
7209    VIPS_INTERESTING_ENTROPY = 2,
7210    VIPS_INTERESTING_ATTENTION = 3,
7211    VIPS_INTERESTING_LOW = 4,
7212    VIPS_INTERESTING_HIGH = 5,
7213    VIPS_INTERESTING_ALL = 6,
7214    VIPS_INTERESTING_LAST = 7,
7215}
7216#[repr(u32)]
7217#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7218pub enum VipsBlendMode {
7219    VIPS_BLEND_MODE_CLEAR = 0,
7220    VIPS_BLEND_MODE_SOURCE = 1,
7221    VIPS_BLEND_MODE_OVER = 2,
7222    VIPS_BLEND_MODE_IN = 3,
7223    VIPS_BLEND_MODE_OUT = 4,
7224    VIPS_BLEND_MODE_ATOP = 5,
7225    VIPS_BLEND_MODE_DEST = 6,
7226    VIPS_BLEND_MODE_DEST_OVER = 7,
7227    VIPS_BLEND_MODE_DEST_IN = 8,
7228    VIPS_BLEND_MODE_DEST_OUT = 9,
7229    VIPS_BLEND_MODE_DEST_ATOP = 10,
7230    VIPS_BLEND_MODE_XOR = 11,
7231    VIPS_BLEND_MODE_ADD = 12,
7232    VIPS_BLEND_MODE_SATURATE = 13,
7233    VIPS_BLEND_MODE_MULTIPLY = 14,
7234    VIPS_BLEND_MODE_SCREEN = 15,
7235    VIPS_BLEND_MODE_OVERLAY = 16,
7236    VIPS_BLEND_MODE_DARKEN = 17,
7237    VIPS_BLEND_MODE_LIGHTEN = 18,
7238    VIPS_BLEND_MODE_COLOUR_DODGE = 19,
7239    VIPS_BLEND_MODE_COLOUR_BURN = 20,
7240    VIPS_BLEND_MODE_HARD_LIGHT = 21,
7241    VIPS_BLEND_MODE_SOFT_LIGHT = 22,
7242    VIPS_BLEND_MODE_DIFFERENCE = 23,
7243    VIPS_BLEND_MODE_EXCLUSION = 24,
7244    VIPS_BLEND_MODE_LAST = 25,
7245}
7246unsafe extern "C" {
7247    pub fn vips_copy(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7248}
7249unsafe extern "C" {
7250    pub fn vips_tilecache(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7251}
7252unsafe extern "C" {
7253    pub fn vips_linecache(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7254}
7255unsafe extern "C" {
7256    pub fn vips_sequential(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7257}
7258unsafe extern "C" {
7259    pub fn vips_copy_file(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7260}
7261unsafe extern "C" {
7262    pub fn vips_embed(
7263        in_: *mut VipsImage,
7264        out: *mut *mut VipsImage,
7265        x: core::ffi::c_int,
7266        y: core::ffi::c_int,
7267        width: core::ffi::c_int,
7268        height: core::ffi::c_int,
7269        ...
7270    ) -> core::ffi::c_int;
7271}
7272unsafe extern "C" {
7273    pub fn vips_gravity(
7274        in_: *mut VipsImage,
7275        out: *mut *mut VipsImage,
7276        direction: VipsCompassDirection,
7277        width: core::ffi::c_int,
7278        height: core::ffi::c_int,
7279        ...
7280    ) -> core::ffi::c_int;
7281}
7282unsafe extern "C" {
7283    pub fn vips_flip(
7284        in_: *mut VipsImage,
7285        out: *mut *mut VipsImage,
7286        direction: VipsDirection,
7287        ...
7288    ) -> core::ffi::c_int;
7289}
7290unsafe extern "C" {
7291    pub fn vips_insert(
7292        main: *mut VipsImage,
7293        sub: *mut VipsImage,
7294        out: *mut *mut VipsImage,
7295        x: core::ffi::c_int,
7296        y: core::ffi::c_int,
7297        ...
7298    ) -> core::ffi::c_int;
7299}
7300unsafe extern "C" {
7301    pub fn vips_join(
7302        in1: *mut VipsImage,
7303        in2: *mut VipsImage,
7304        out: *mut *mut VipsImage,
7305        direction: VipsDirection,
7306        ...
7307    ) -> core::ffi::c_int;
7308}
7309unsafe extern "C" {
7310    pub fn vips_arrayjoin(
7311        in_: *mut *mut VipsImage,
7312        out: *mut *mut VipsImage,
7313        n: core::ffi::c_int,
7314        ...
7315    ) -> core::ffi::c_int;
7316}
7317unsafe extern "C" {
7318    pub fn vips_extract_area(
7319        in_: *mut VipsImage,
7320        out: *mut *mut VipsImage,
7321        left: core::ffi::c_int,
7322        top: core::ffi::c_int,
7323        width: core::ffi::c_int,
7324        height: core::ffi::c_int,
7325        ...
7326    ) -> core::ffi::c_int;
7327}
7328unsafe extern "C" {
7329    pub fn vips_crop(
7330        in_: *mut VipsImage,
7331        out: *mut *mut VipsImage,
7332        left: core::ffi::c_int,
7333        top: core::ffi::c_int,
7334        width: core::ffi::c_int,
7335        height: core::ffi::c_int,
7336        ...
7337    ) -> core::ffi::c_int;
7338}
7339unsafe extern "C" {
7340    pub fn vips_smartcrop(
7341        in_: *mut VipsImage,
7342        out: *mut *mut VipsImage,
7343        width: core::ffi::c_int,
7344        height: core::ffi::c_int,
7345        ...
7346    ) -> core::ffi::c_int;
7347}
7348unsafe extern "C" {
7349    pub fn vips_extract_band(
7350        in_: *mut VipsImage,
7351        out: *mut *mut VipsImage,
7352        band: core::ffi::c_int,
7353        ...
7354    ) -> core::ffi::c_int;
7355}
7356unsafe extern "C" {
7357    pub fn vips_replicate(
7358        in_: *mut VipsImage,
7359        out: *mut *mut VipsImage,
7360        across: core::ffi::c_int,
7361        down: core::ffi::c_int,
7362        ...
7363    ) -> core::ffi::c_int;
7364}
7365unsafe extern "C" {
7366    pub fn vips_grid(
7367        in_: *mut VipsImage,
7368        out: *mut *mut VipsImage,
7369        tile_height: core::ffi::c_int,
7370        across: core::ffi::c_int,
7371        down: core::ffi::c_int,
7372        ...
7373    ) -> core::ffi::c_int;
7374}
7375unsafe extern "C" {
7376    pub fn vips_transpose3d(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
7377    -> core::ffi::c_int;
7378}
7379unsafe extern "C" {
7380    pub fn vips_wrap(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7381}
7382unsafe extern "C" {
7383    pub fn vips_rot(
7384        in_: *mut VipsImage,
7385        out: *mut *mut VipsImage,
7386        angle: VipsAngle,
7387        ...
7388    ) -> core::ffi::c_int;
7389}
7390unsafe extern "C" {
7391    pub fn vips_rot90(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7392}
7393unsafe extern "C" {
7394    pub fn vips_rot180(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7395}
7396unsafe extern "C" {
7397    pub fn vips_rot270(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7398}
7399unsafe extern "C" {
7400    pub fn vips_rot45(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7401}
7402unsafe extern "C" {
7403    pub fn vips_autorot_remove_angle(image: *mut VipsImage);
7404}
7405unsafe extern "C" {
7406    pub fn vips_autorot(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7407}
7408unsafe extern "C" {
7409    pub fn vips_zoom(
7410        in_: *mut VipsImage,
7411        out: *mut *mut VipsImage,
7412        xfac: core::ffi::c_int,
7413        yfac: core::ffi::c_int,
7414        ...
7415    ) -> core::ffi::c_int;
7416}
7417unsafe extern "C" {
7418    pub fn vips_subsample(
7419        in_: *mut VipsImage,
7420        out: *mut *mut VipsImage,
7421        xfac: core::ffi::c_int,
7422        yfac: core::ffi::c_int,
7423        ...
7424    ) -> core::ffi::c_int;
7425}
7426unsafe extern "C" {
7427    pub fn vips_cast(
7428        in_: *mut VipsImage,
7429        out: *mut *mut VipsImage,
7430        format: VipsBandFormat,
7431        ...
7432    ) -> core::ffi::c_int;
7433}
7434unsafe extern "C" {
7435    pub fn vips_cast_uchar(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7436}
7437unsafe extern "C" {
7438    pub fn vips_cast_char(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7439}
7440unsafe extern "C" {
7441    pub fn vips_cast_ushort(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
7442    -> core::ffi::c_int;
7443}
7444unsafe extern "C" {
7445    pub fn vips_cast_short(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7446}
7447unsafe extern "C" {
7448    pub fn vips_cast_uint(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7449}
7450unsafe extern "C" {
7451    pub fn vips_cast_int(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7452}
7453unsafe extern "C" {
7454    pub fn vips_cast_float(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7455}
7456unsafe extern "C" {
7457    pub fn vips_cast_double(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
7458    -> core::ffi::c_int;
7459}
7460unsafe extern "C" {
7461    pub fn vips_cast_complex(
7462        in_: *mut VipsImage,
7463        out: *mut *mut VipsImage,
7464        ...
7465    ) -> core::ffi::c_int;
7466}
7467unsafe extern "C" {
7468    pub fn vips_cast_dpcomplex(
7469        in_: *mut VipsImage,
7470        out: *mut *mut VipsImage,
7471        ...
7472    ) -> core::ffi::c_int;
7473}
7474unsafe extern "C" {
7475    pub fn vips_scale(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7476}
7477unsafe extern "C" {
7478    pub fn vips_msb(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7479}
7480unsafe extern "C" {
7481    pub fn vips_byteswap(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7482}
7483unsafe extern "C" {
7484    pub fn vips_bandjoin(
7485        in_: *mut *mut VipsImage,
7486        out: *mut *mut VipsImage,
7487        n: core::ffi::c_int,
7488        ...
7489    ) -> core::ffi::c_int;
7490}
7491unsafe extern "C" {
7492    pub fn vips_bandjoin2(
7493        in1: *mut VipsImage,
7494        in2: *mut VipsImage,
7495        out: *mut *mut VipsImage,
7496        ...
7497    ) -> core::ffi::c_int;
7498}
7499unsafe extern "C" {
7500    pub fn vips_bandjoin_const(
7501        in_: *mut VipsImage,
7502        out: *mut *mut VipsImage,
7503        c: *mut f64,
7504        n: core::ffi::c_int,
7505        ...
7506    ) -> core::ffi::c_int;
7507}
7508unsafe extern "C" {
7509    pub fn vips_bandjoin_const1(
7510        in_: *mut VipsImage,
7511        out: *mut *mut VipsImage,
7512        c: f64,
7513        ...
7514    ) -> core::ffi::c_int;
7515}
7516unsafe extern "C" {
7517    pub fn vips_bandrank(
7518        in_: *mut *mut VipsImage,
7519        out: *mut *mut VipsImage,
7520        n: core::ffi::c_int,
7521        ...
7522    ) -> core::ffi::c_int;
7523}
7524unsafe extern "C" {
7525    pub fn vips_bandfold(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7526}
7527unsafe extern "C" {
7528    pub fn vips_bandunfold(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7529}
7530unsafe extern "C" {
7531    pub fn vips_bandbool(
7532        in_: *mut VipsImage,
7533        out: *mut *mut VipsImage,
7534        boolean: VipsOperationBoolean,
7535        ...
7536    ) -> core::ffi::c_int;
7537}
7538unsafe extern "C" {
7539    pub fn vips_bandand(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7540}
7541unsafe extern "C" {
7542    pub fn vips_bandor(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7543}
7544unsafe extern "C" {
7545    pub fn vips_bandeor(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7546}
7547unsafe extern "C" {
7548    pub fn vips_bandmean(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7549}
7550unsafe extern "C" {
7551    pub fn vips_recomb(
7552        in_: *mut VipsImage,
7553        out: *mut *mut VipsImage,
7554        m: *mut VipsImage,
7555        ...
7556    ) -> core::ffi::c_int;
7557}
7558unsafe extern "C" {
7559    pub fn vips_ifthenelse(
7560        cond: *mut VipsImage,
7561        in1: *mut VipsImage,
7562        in2: *mut VipsImage,
7563        out: *mut *mut VipsImage,
7564        ...
7565    ) -> core::ffi::c_int;
7566}
7567unsafe extern "C" {
7568    pub fn vips_switch(
7569        tests: *mut *mut VipsImage,
7570        out: *mut *mut VipsImage,
7571        n: core::ffi::c_int,
7572        ...
7573    ) -> core::ffi::c_int;
7574}
7575unsafe extern "C" {
7576    pub fn vips_flatten(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7577}
7578unsafe extern "C" {
7579    pub fn vips_addalpha(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7580}
7581unsafe extern "C" {
7582    pub fn vips_premultiply(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
7583    -> core::ffi::c_int;
7584}
7585unsafe extern "C" {
7586    pub fn vips_unpremultiply(
7587        in_: *mut VipsImage,
7588        out: *mut *mut VipsImage,
7589        ...
7590    ) -> core::ffi::c_int;
7591}
7592unsafe extern "C" {
7593    pub fn vips_composite(
7594        in_: *mut *mut VipsImage,
7595        out: *mut *mut VipsImage,
7596        n: core::ffi::c_int,
7597        mode: *mut core::ffi::c_int,
7598        ...
7599    ) -> core::ffi::c_int;
7600}
7601unsafe extern "C" {
7602    pub fn vips_composite2(
7603        base: *mut VipsImage,
7604        overlay: *mut VipsImage,
7605        out: *mut *mut VipsImage,
7606        mode: VipsBlendMode,
7607        ...
7608    ) -> core::ffi::c_int;
7609}
7610unsafe extern "C" {
7611    pub fn vips_falsecolour(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
7612    -> core::ffi::c_int;
7613}
7614unsafe extern "C" {
7615    pub fn vips_gamma(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7616}
7617#[repr(u32)]
7618#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7619pub enum VipsCombine {
7620    VIPS_COMBINE_MAX = 0,
7621    VIPS_COMBINE_SUM = 1,
7622    VIPS_COMBINE_MIN = 2,
7623    VIPS_COMBINE_LAST = 3,
7624}
7625unsafe extern "C" {
7626    pub fn vips_conv(
7627        in_: *mut VipsImage,
7628        out: *mut *mut VipsImage,
7629        mask: *mut VipsImage,
7630        ...
7631    ) -> core::ffi::c_int;
7632}
7633unsafe extern "C" {
7634    pub fn vips_convf(
7635        in_: *mut VipsImage,
7636        out: *mut *mut VipsImage,
7637        mask: *mut VipsImage,
7638        ...
7639    ) -> core::ffi::c_int;
7640}
7641unsafe extern "C" {
7642    pub fn vips_convi(
7643        in_: *mut VipsImage,
7644        out: *mut *mut VipsImage,
7645        mask: *mut VipsImage,
7646        ...
7647    ) -> core::ffi::c_int;
7648}
7649unsafe extern "C" {
7650    pub fn vips_conva(
7651        in_: *mut VipsImage,
7652        out: *mut *mut VipsImage,
7653        mask: *mut VipsImage,
7654        ...
7655    ) -> core::ffi::c_int;
7656}
7657unsafe extern "C" {
7658    pub fn vips_convsep(
7659        in_: *mut VipsImage,
7660        out: *mut *mut VipsImage,
7661        mask: *mut VipsImage,
7662        ...
7663    ) -> core::ffi::c_int;
7664}
7665unsafe extern "C" {
7666    pub fn vips_convasep(
7667        in_: *mut VipsImage,
7668        out: *mut *mut VipsImage,
7669        mask: *mut VipsImage,
7670        ...
7671    ) -> core::ffi::c_int;
7672}
7673unsafe extern "C" {
7674    pub fn vips_compass(
7675        in_: *mut VipsImage,
7676        out: *mut *mut VipsImage,
7677        mask: *mut VipsImage,
7678        ...
7679    ) -> core::ffi::c_int;
7680}
7681unsafe extern "C" {
7682    pub fn vips_gaussblur(
7683        in_: *mut VipsImage,
7684        out: *mut *mut VipsImage,
7685        sigma: f64,
7686        ...
7687    ) -> core::ffi::c_int;
7688}
7689unsafe extern "C" {
7690    pub fn vips_sharpen(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7691}
7692unsafe extern "C" {
7693    pub fn vips_spcor(
7694        in_: *mut VipsImage,
7695        ref_: *mut VipsImage,
7696        out: *mut *mut VipsImage,
7697        ...
7698    ) -> core::ffi::c_int;
7699}
7700unsafe extern "C" {
7701    pub fn vips_fastcor(
7702        in_: *mut VipsImage,
7703        ref_: *mut VipsImage,
7704        out: *mut *mut VipsImage,
7705        ...
7706    ) -> core::ffi::c_int;
7707}
7708unsafe extern "C" {
7709    pub fn vips_sobel(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7710}
7711unsafe extern "C" {
7712    pub fn vips_scharr(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7713}
7714unsafe extern "C" {
7715    pub fn vips_prewitt(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7716}
7717unsafe extern "C" {
7718    pub fn vips_canny(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7719}
7720#[repr(u32)]
7721#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7722pub enum VipsOperationMorphology {
7723    VIPS_OPERATION_MORPHOLOGY_ERODE = 0,
7724    VIPS_OPERATION_MORPHOLOGY_DILATE = 1,
7725    VIPS_OPERATION_MORPHOLOGY_LAST = 2,
7726}
7727unsafe extern "C" {
7728    pub fn vips_morph(
7729        in_: *mut VipsImage,
7730        out: *mut *mut VipsImage,
7731        mask: *mut VipsImage,
7732        morph: VipsOperationMorphology,
7733        ...
7734    ) -> core::ffi::c_int;
7735}
7736unsafe extern "C" {
7737    pub fn vips_rank(
7738        in_: *mut VipsImage,
7739        out: *mut *mut VipsImage,
7740        width: core::ffi::c_int,
7741        height: core::ffi::c_int,
7742        index: core::ffi::c_int,
7743        ...
7744    ) -> core::ffi::c_int;
7745}
7746unsafe extern "C" {
7747    pub fn vips_median(
7748        in_: *mut VipsImage,
7749        out: *mut *mut VipsImage,
7750        size: core::ffi::c_int,
7751        ...
7752    ) -> core::ffi::c_int;
7753}
7754unsafe extern "C" {
7755    pub fn vips_countlines(
7756        in_: *mut VipsImage,
7757        nolines: *mut f64,
7758        direction: VipsDirection,
7759        ...
7760    ) -> core::ffi::c_int;
7761}
7762unsafe extern "C" {
7763    pub fn vips_labelregions(
7764        in_: *mut VipsImage,
7765        mask: *mut *mut VipsImage,
7766        ...
7767    ) -> core::ffi::c_int;
7768}
7769unsafe extern "C" {
7770    pub fn vips_fill_nearest(
7771        in_: *mut VipsImage,
7772        out: *mut *mut VipsImage,
7773        ...
7774    ) -> core::ffi::c_int;
7775}
7776unsafe extern "C" {
7777    pub fn vips_merge(
7778        ref_: *mut VipsImage,
7779        sec: *mut VipsImage,
7780        out: *mut *mut VipsImage,
7781        direction: VipsDirection,
7782        dx: core::ffi::c_int,
7783        dy: core::ffi::c_int,
7784        ...
7785    ) -> core::ffi::c_int;
7786}
7787unsafe extern "C" {
7788    pub fn vips_mosaic(
7789        ref_: *mut VipsImage,
7790        sec: *mut VipsImage,
7791        out: *mut *mut VipsImage,
7792        direction: VipsDirection,
7793        xref: core::ffi::c_int,
7794        yref: core::ffi::c_int,
7795        xsec: core::ffi::c_int,
7796        ysec: core::ffi::c_int,
7797        ...
7798    ) -> core::ffi::c_int;
7799}
7800unsafe extern "C" {
7801    pub fn vips_mosaic1(
7802        ref_: *mut VipsImage,
7803        sec: *mut VipsImage,
7804        out: *mut *mut VipsImage,
7805        direction: VipsDirection,
7806        xr1: core::ffi::c_int,
7807        yr1: core::ffi::c_int,
7808        xs1: core::ffi::c_int,
7809        ys1: core::ffi::c_int,
7810        xr2: core::ffi::c_int,
7811        yr2: core::ffi::c_int,
7812        xs2: core::ffi::c_int,
7813        ys2: core::ffi::c_int,
7814        ...
7815    ) -> core::ffi::c_int;
7816}
7817unsafe extern "C" {
7818    pub fn vips_match(
7819        ref_: *mut VipsImage,
7820        sec: *mut VipsImage,
7821        out: *mut *mut VipsImage,
7822        xr1: core::ffi::c_int,
7823        yr1: core::ffi::c_int,
7824        xs1: core::ffi::c_int,
7825        ys1: core::ffi::c_int,
7826        xr2: core::ffi::c_int,
7827        yr2: core::ffi::c_int,
7828        xs2: core::ffi::c_int,
7829        ys2: core::ffi::c_int,
7830        ...
7831    ) -> core::ffi::c_int;
7832}
7833unsafe extern "C" {
7834    pub fn vips_globalbalance(
7835        in_: *mut VipsImage,
7836        out: *mut *mut VipsImage,
7837        ...
7838    ) -> core::ffi::c_int;
7839}
7840unsafe extern "C" {
7841    pub fn vips_remosaic(
7842        in_: *mut VipsImage,
7843        out: *mut *mut VipsImage,
7844        old_str: *const core::ffi::c_char,
7845        new_str: *const core::ffi::c_char,
7846        ...
7847    ) -> core::ffi::c_int;
7848}
7849unsafe extern "C" {
7850    pub fn vips_matrixinvert(m: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7851}
7852unsafe extern "C" {
7853    pub fn vips_matrixmultiply(
7854        left: *mut VipsImage,
7855        right: *mut VipsImage,
7856        out: *mut *mut VipsImage,
7857        ...
7858    ) -> core::ffi::c_int;
7859}
7860unsafe extern "C" {
7861    pub fn vips_maplut(
7862        in_: *mut VipsImage,
7863        out: *mut *mut VipsImage,
7864        lut: *mut VipsImage,
7865        ...
7866    ) -> core::ffi::c_int;
7867}
7868unsafe extern "C" {
7869    pub fn vips_percent(
7870        in_: *mut VipsImage,
7871        percent: f64,
7872        threshold: *mut core::ffi::c_int,
7873        ...
7874    ) -> core::ffi::c_int;
7875}
7876unsafe extern "C" {
7877    pub fn vips_stdif(
7878        in_: *mut VipsImage,
7879        out: *mut *mut VipsImage,
7880        width: core::ffi::c_int,
7881        height: core::ffi::c_int,
7882        ...
7883    ) -> core::ffi::c_int;
7884}
7885unsafe extern "C" {
7886    pub fn vips_hist_cum(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7887}
7888unsafe extern "C" {
7889    pub fn vips_hist_norm(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7890}
7891unsafe extern "C" {
7892    pub fn vips_hist_equal(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7893}
7894unsafe extern "C" {
7895    pub fn vips_hist_plot(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7896}
7897unsafe extern "C" {
7898    pub fn vips_hist_match(
7899        in_: *mut VipsImage,
7900        ref_: *mut VipsImage,
7901        out: *mut *mut VipsImage,
7902        ...
7903    ) -> core::ffi::c_int;
7904}
7905unsafe extern "C" {
7906    pub fn vips_hist_local(
7907        in_: *mut VipsImage,
7908        out: *mut *mut VipsImage,
7909        width: core::ffi::c_int,
7910        height: core::ffi::c_int,
7911        ...
7912    ) -> core::ffi::c_int;
7913}
7914unsafe extern "C" {
7915    pub fn vips_hist_ismonotonic(in_: *mut VipsImage, out: *mut gboolean, ...) -> core::ffi::c_int;
7916}
7917unsafe extern "C" {
7918    pub fn vips_hist_entropy(in_: *mut VipsImage, out: *mut f64, ...) -> core::ffi::c_int;
7919}
7920unsafe extern "C" {
7921    pub fn vips_case(
7922        index: *mut VipsImage,
7923        cases: *mut *mut VipsImage,
7924        out: *mut *mut VipsImage,
7925        n: core::ffi::c_int,
7926        ...
7927    ) -> core::ffi::c_int;
7928}
7929unsafe extern "C" {
7930    pub fn vips_fwfft(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7931}
7932unsafe extern "C" {
7933    pub fn vips_invfft(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7934}
7935unsafe extern "C" {
7936    pub fn vips_freqmult(
7937        in_: *mut VipsImage,
7938        mask: *mut VipsImage,
7939        out: *mut *mut VipsImage,
7940        ...
7941    ) -> core::ffi::c_int;
7942}
7943unsafe extern "C" {
7944    pub fn vips_spectrum(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
7945}
7946unsafe extern "C" {
7947    pub fn vips_phasecor(
7948        in1: *mut VipsImage,
7949        in2: *mut VipsImage,
7950        out: *mut *mut VipsImage,
7951        ...
7952    ) -> core::ffi::c_int;
7953}
7954#[repr(u32)]
7955#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7956pub enum VipsKernel {
7957    VIPS_KERNEL_NEAREST = 0,
7958    VIPS_KERNEL_LINEAR = 1,
7959    VIPS_KERNEL_CUBIC = 2,
7960    VIPS_KERNEL_MITCHELL = 3,
7961    VIPS_KERNEL_LANCZOS2 = 4,
7962    VIPS_KERNEL_LANCZOS3 = 5,
7963    VIPS_KERNEL_MKS2013 = 6,
7964    VIPS_KERNEL_MKS2021 = 7,
7965    VIPS_KERNEL_LAST = 8,
7966}
7967#[repr(u32)]
7968#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
7969pub enum VipsSize {
7970    VIPS_SIZE_BOTH = 0,
7971    VIPS_SIZE_UP = 1,
7972    VIPS_SIZE_DOWN = 2,
7973    VIPS_SIZE_FORCE = 3,
7974    VIPS_SIZE_LAST = 4,
7975}
7976unsafe extern "C" {
7977    pub fn vips_shrink(
7978        in_: *mut VipsImage,
7979        out: *mut *mut VipsImage,
7980        hshrink: f64,
7981        vshrink: f64,
7982        ...
7983    ) -> core::ffi::c_int;
7984}
7985unsafe extern "C" {
7986    pub fn vips_shrinkh(
7987        in_: *mut VipsImage,
7988        out: *mut *mut VipsImage,
7989        hshrink: core::ffi::c_int,
7990        ...
7991    ) -> core::ffi::c_int;
7992}
7993unsafe extern "C" {
7994    pub fn vips_shrinkv(
7995        in_: *mut VipsImage,
7996        out: *mut *mut VipsImage,
7997        vshrink: core::ffi::c_int,
7998        ...
7999    ) -> core::ffi::c_int;
8000}
8001unsafe extern "C" {
8002    pub fn vips_reduce(
8003        in_: *mut VipsImage,
8004        out: *mut *mut VipsImage,
8005        hshrink: f64,
8006        vshrink: f64,
8007        ...
8008    ) -> core::ffi::c_int;
8009}
8010unsafe extern "C" {
8011    pub fn vips_reduceh(
8012        in_: *mut VipsImage,
8013        out: *mut *mut VipsImage,
8014        hshrink: f64,
8015        ...
8016    ) -> core::ffi::c_int;
8017}
8018unsafe extern "C" {
8019    pub fn vips_reducev(
8020        in_: *mut VipsImage,
8021        out: *mut *mut VipsImage,
8022        vshrink: f64,
8023        ...
8024    ) -> core::ffi::c_int;
8025}
8026unsafe extern "C" {
8027    pub fn vips_thumbnail(
8028        filename: *const core::ffi::c_char,
8029        out: *mut *mut VipsImage,
8030        width: core::ffi::c_int,
8031        ...
8032    ) -> core::ffi::c_int;
8033}
8034unsafe extern "C" {
8035    pub fn vips_thumbnail_buffer(
8036        buf: *mut core::ffi::c_void,
8037        len: usize,
8038        out: *mut *mut VipsImage,
8039        width: core::ffi::c_int,
8040        ...
8041    ) -> core::ffi::c_int;
8042}
8043unsafe extern "C" {
8044    pub fn vips_thumbnail_image(
8045        in_: *mut VipsImage,
8046        out: *mut *mut VipsImage,
8047        width: core::ffi::c_int,
8048        ...
8049    ) -> core::ffi::c_int;
8050}
8051unsafe extern "C" {
8052    pub fn vips_thumbnail_source(
8053        source: *mut VipsSource,
8054        out: *mut *mut VipsImage,
8055        width: core::ffi::c_int,
8056        ...
8057    ) -> core::ffi::c_int;
8058}
8059unsafe extern "C" {
8060    pub fn vips_similarity(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8061}
8062unsafe extern "C" {
8063    pub fn vips_rotate(
8064        in_: *mut VipsImage,
8065        out: *mut *mut VipsImage,
8066        angle: f64,
8067        ...
8068    ) -> core::ffi::c_int;
8069}
8070unsafe extern "C" {
8071    pub fn vips_affine(
8072        in_: *mut VipsImage,
8073        out: *mut *mut VipsImage,
8074        a: f64,
8075        b: f64,
8076        c: f64,
8077        d: f64,
8078        ...
8079    ) -> core::ffi::c_int;
8080}
8081unsafe extern "C" {
8082    pub fn vips_resize(
8083        in_: *mut VipsImage,
8084        out: *mut *mut VipsImage,
8085        scale: f64,
8086        ...
8087    ) -> core::ffi::c_int;
8088}
8089unsafe extern "C" {
8090    pub fn vips_mapim(
8091        in_: *mut VipsImage,
8092        out: *mut *mut VipsImage,
8093        index: *mut VipsImage,
8094        ...
8095    ) -> core::ffi::c_int;
8096}
8097unsafe extern "C" {
8098    pub fn vips_quadratic(
8099        in_: *mut VipsImage,
8100        out: *mut *mut VipsImage,
8101        coeff: *mut VipsImage,
8102        ...
8103    ) -> core::ffi::c_int;
8104}
8105#[repr(u32)]
8106#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8107pub enum VipsIntent {
8108    VIPS_INTENT_PERCEPTUAL = 0,
8109    VIPS_INTENT_RELATIVE = 1,
8110    VIPS_INTENT_SATURATION = 2,
8111    VIPS_INTENT_ABSOLUTE = 3,
8112    VIPS_INTENT_AUTO = 32,
8113    VIPS_INTENT_LAST = 33,
8114}
8115#[repr(u32)]
8116#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8117pub enum VipsPCS {
8118    VIPS_PCS_LAB = 0,
8119    VIPS_PCS_XYZ = 1,
8120    VIPS_PCS_LAST = 2,
8121}
8122unsafe extern "C" {
8123    pub fn vips_colourspace_issupported(image: *const VipsImage) -> gboolean;
8124}
8125unsafe extern "C" {
8126    pub fn vips_colourspace(
8127        in_: *mut VipsImage,
8128        out: *mut *mut VipsImage,
8129        space: VipsInterpretation,
8130        ...
8131    ) -> core::ffi::c_int;
8132}
8133unsafe extern "C" {
8134    pub fn vips_LabQ2sRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8135}
8136unsafe extern "C" {
8137    pub fn vips_rad2float(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8138}
8139unsafe extern "C" {
8140    pub fn vips_float2rad(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8141}
8142unsafe extern "C" {
8143    pub fn vips_LabS2LabQ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8144}
8145unsafe extern "C" {
8146    pub fn vips_LabQ2LabS(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8147}
8148unsafe extern "C" {
8149    pub fn vips_LabQ2Lab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8150}
8151unsafe extern "C" {
8152    pub fn vips_Lab2LabQ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8153}
8154unsafe extern "C" {
8155    pub fn vips_LCh2Lab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8156}
8157unsafe extern "C" {
8158    pub fn vips_Lab2LCh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8159}
8160unsafe extern "C" {
8161    pub fn vips_Lab2XYZ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8162}
8163unsafe extern "C" {
8164    pub fn vips_XYZ2Lab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8165}
8166unsafe extern "C" {
8167    pub fn vips_XYZ2scRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8168}
8169unsafe extern "C" {
8170    pub fn vips_scRGB2sRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8171}
8172unsafe extern "C" {
8173    pub fn vips_scRGB2BW(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8174}
8175unsafe extern "C" {
8176    pub fn vips_sRGB2scRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8177}
8178unsafe extern "C" {
8179    pub fn vips_scRGB2XYZ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8180}
8181unsafe extern "C" {
8182    pub fn vips_HSV2sRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8183}
8184unsafe extern "C" {
8185    pub fn vips_sRGB2HSV(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8186}
8187unsafe extern "C" {
8188    pub fn vips_LCh2CMC(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8189}
8190unsafe extern "C" {
8191    pub fn vips_CMC2LCh(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8192}
8193unsafe extern "C" {
8194    pub fn vips_XYZ2Yxy(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8195}
8196unsafe extern "C" {
8197    pub fn vips_Yxy2XYZ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8198}
8199unsafe extern "C" {
8200    pub fn vips_LabS2Lab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8201}
8202unsafe extern "C" {
8203    pub fn vips_Lab2LabS(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8204}
8205unsafe extern "C" {
8206    pub fn vips_CMYK2XYZ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8207}
8208unsafe extern "C" {
8209    pub fn vips_XYZ2CMYK(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8210}
8211unsafe extern "C" {
8212    pub fn vips_Oklab2XYZ(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8213}
8214unsafe extern "C" {
8215    pub fn vips_XYZ2Oklab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8216}
8217unsafe extern "C" {
8218    pub fn vips_Oklch2Oklab(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
8219    -> core::ffi::c_int;
8220}
8221unsafe extern "C" {
8222    pub fn vips_Oklab2Oklch(in_: *mut VipsImage, out: *mut *mut VipsImage, ...)
8223    -> core::ffi::c_int;
8224}
8225unsafe extern "C" {
8226    pub fn vips_uhdr2scRGB(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8227}
8228unsafe extern "C" {
8229    pub fn vips_profile_load(
8230        name: *const core::ffi::c_char,
8231        profile: *mut *mut VipsBlob,
8232        ...
8233    ) -> core::ffi::c_int;
8234}
8235unsafe extern "C" {
8236    pub fn vips_icc_present() -> core::ffi::c_int;
8237}
8238unsafe extern "C" {
8239    pub fn vips_icc_transform(
8240        in_: *mut VipsImage,
8241        out: *mut *mut VipsImage,
8242        output_profile: *const core::ffi::c_char,
8243        ...
8244    ) -> core::ffi::c_int;
8245}
8246unsafe extern "C" {
8247    pub fn vips_icc_import(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8248}
8249unsafe extern "C" {
8250    pub fn vips_icc_export(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8251}
8252unsafe extern "C" {
8253    pub fn vips_icc_ac2rc(
8254        in_: *mut VipsImage,
8255        out: *mut *mut VipsImage,
8256        profile_filename: *const core::ffi::c_char,
8257    ) -> core::ffi::c_int;
8258}
8259unsafe extern "C" {
8260    pub fn vips_icc_is_compatible_profile(
8261        image: *mut VipsImage,
8262        data: *const core::ffi::c_void,
8263        data_length: usize,
8264    ) -> gboolean;
8265}
8266unsafe extern "C" {
8267    pub fn vips_dE76(
8268        left: *mut VipsImage,
8269        right: *mut VipsImage,
8270        out: *mut *mut VipsImage,
8271        ...
8272    ) -> core::ffi::c_int;
8273}
8274unsafe extern "C" {
8275    pub fn vips_dE00(
8276        left: *mut VipsImage,
8277        right: *mut VipsImage,
8278        out: *mut *mut VipsImage,
8279        ...
8280    ) -> core::ffi::c_int;
8281}
8282unsafe extern "C" {
8283    pub fn vips_dECMC(
8284        left: *mut VipsImage,
8285        right: *mut VipsImage,
8286        out: *mut *mut VipsImage,
8287        ...
8288    ) -> core::ffi::c_int;
8289}
8290unsafe extern "C" {
8291    pub fn vips_col_Lab2XYZ(L: f32, a: f32, b: f32, X: *mut f32, Y: *mut f32, Z: *mut f32);
8292}
8293unsafe extern "C" {
8294    pub fn vips_col_XYZ2Lab(X: f32, Y: f32, Z: f32, L: *mut f32, a: *mut f32, b: *mut f32);
8295}
8296unsafe extern "C" {
8297    pub fn vips_col_ab2h(a: f64, b: f64) -> f64;
8298}
8299unsafe extern "C" {
8300    pub fn vips_col_ab2Ch(a: f32, b: f32, C: *mut f32, h: *mut f32);
8301}
8302unsafe extern "C" {
8303    pub fn vips_col_Ch2ab(C: f32, h: f32, a: *mut f32, b: *mut f32);
8304}
8305unsafe extern "C" {
8306    pub fn vips_col_L2Lcmc(L: f32) -> f32;
8307}
8308unsafe extern "C" {
8309    pub fn vips_col_C2Ccmc(C: f32) -> f32;
8310}
8311unsafe extern "C" {
8312    pub fn vips_col_Ch2hcmc(C: f32, h: f32) -> f32;
8313}
8314unsafe extern "C" {
8315    pub fn vips_col_make_tables_CMC();
8316}
8317unsafe extern "C" {
8318    pub fn vips_col_Lcmc2L(Lcmc: f32) -> f32;
8319}
8320unsafe extern "C" {
8321    pub fn vips_col_Ccmc2C(Ccmc: f32) -> f32;
8322}
8323unsafe extern "C" {
8324    pub fn vips_col_Chcmc2h(C: f32, hcmc: f32) -> f32;
8325}
8326unsafe extern "C" {
8327    pub fn vips_col_sRGB2scRGB_8(
8328        r: core::ffi::c_int,
8329        g: core::ffi::c_int,
8330        b: core::ffi::c_int,
8331        R: *mut f32,
8332        G: *mut f32,
8333        B: *mut f32,
8334    ) -> core::ffi::c_int;
8335}
8336unsafe extern "C" {
8337    pub fn vips_col_sRGB2scRGB_16(
8338        r: core::ffi::c_int,
8339        g: core::ffi::c_int,
8340        b: core::ffi::c_int,
8341        R: *mut f32,
8342        G: *mut f32,
8343        B: *mut f32,
8344    ) -> core::ffi::c_int;
8345}
8346unsafe extern "C" {
8347    pub fn vips_col_sRGB2scRGB_8_noclip(
8348        r: core::ffi::c_int,
8349        g: core::ffi::c_int,
8350        b: core::ffi::c_int,
8351        R: *mut f32,
8352        G: *mut f32,
8353        B: *mut f32,
8354    ) -> core::ffi::c_int;
8355}
8356unsafe extern "C" {
8357    pub fn vips_col_sRGB2scRGB_16_noclip(
8358        r: core::ffi::c_int,
8359        g: core::ffi::c_int,
8360        b: core::ffi::c_int,
8361        R: *mut f32,
8362        G: *mut f32,
8363        B: *mut f32,
8364    ) -> core::ffi::c_int;
8365}
8366unsafe extern "C" {
8367    pub fn vips_col_scRGB2XYZ(
8368        R: f32,
8369        G: f32,
8370        B: f32,
8371        X: *mut f32,
8372        Y: *mut f32,
8373        Z: *mut f32,
8374    ) -> core::ffi::c_int;
8375}
8376unsafe extern "C" {
8377    pub fn vips_col_XYZ2scRGB(
8378        X: f32,
8379        Y: f32,
8380        Z: f32,
8381        R: *mut f32,
8382        G: *mut f32,
8383        B: *mut f32,
8384    ) -> core::ffi::c_int;
8385}
8386unsafe extern "C" {
8387    pub fn vips_col_scRGB2sRGB_8(
8388        R: f32,
8389        G: f32,
8390        B: f32,
8391        r: *mut core::ffi::c_int,
8392        g: *mut core::ffi::c_int,
8393        b: *mut core::ffi::c_int,
8394        og: *mut core::ffi::c_int,
8395    ) -> core::ffi::c_int;
8396}
8397unsafe extern "C" {
8398    pub fn vips_col_scRGB2sRGB_16(
8399        R: f32,
8400        G: f32,
8401        B: f32,
8402        r: *mut core::ffi::c_int,
8403        g: *mut core::ffi::c_int,
8404        b: *mut core::ffi::c_int,
8405        og: *mut core::ffi::c_int,
8406    ) -> core::ffi::c_int;
8407}
8408unsafe extern "C" {
8409    pub fn vips_col_scRGB2BW_16(
8410        R: f32,
8411        G: f32,
8412        B: f32,
8413        g: *mut core::ffi::c_int,
8414        og: *mut core::ffi::c_int,
8415    ) -> core::ffi::c_int;
8416}
8417unsafe extern "C" {
8418    pub fn vips_col_scRGB2BW_8(
8419        R: f32,
8420        G: f32,
8421        B: f32,
8422        g: *mut core::ffi::c_int,
8423        og: *mut core::ffi::c_int,
8424    ) -> core::ffi::c_int;
8425}
8426unsafe extern "C" {
8427    pub fn vips_pythagoras(L1: f32, a1: f32, b1: f32, L2: f32, a2: f32, b2: f32) -> f32;
8428}
8429unsafe extern "C" {
8430    pub fn vips_col_dE00(L1: f32, a1: f32, b1: f32, L2: f32, a2: f32, b2: f32) -> f32;
8431}
8432#[repr(u32)]
8433#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8434pub enum VipsCombineMode {
8435    VIPS_COMBINE_MODE_SET = 0,
8436    VIPS_COMBINE_MODE_ADD = 1,
8437    VIPS_COMBINE_MODE_LAST = 2,
8438}
8439unsafe extern "C" {
8440    pub fn vips_draw_rect(
8441        image: *mut VipsImage,
8442        ink: *mut f64,
8443        n: core::ffi::c_int,
8444        left: core::ffi::c_int,
8445        top: core::ffi::c_int,
8446        width: core::ffi::c_int,
8447        height: core::ffi::c_int,
8448        ...
8449    ) -> core::ffi::c_int;
8450}
8451unsafe extern "C" {
8452    pub fn vips_draw_rect1(
8453        image: *mut VipsImage,
8454        ink: f64,
8455        left: core::ffi::c_int,
8456        top: core::ffi::c_int,
8457        width: core::ffi::c_int,
8458        height: core::ffi::c_int,
8459        ...
8460    ) -> core::ffi::c_int;
8461}
8462unsafe extern "C" {
8463    pub fn vips_draw_point(
8464        image: *mut VipsImage,
8465        ink: *mut f64,
8466        n: core::ffi::c_int,
8467        x: core::ffi::c_int,
8468        y: core::ffi::c_int,
8469        ...
8470    ) -> core::ffi::c_int;
8471}
8472unsafe extern "C" {
8473    pub fn vips_draw_point1(
8474        image: *mut VipsImage,
8475        ink: f64,
8476        x: core::ffi::c_int,
8477        y: core::ffi::c_int,
8478        ...
8479    ) -> core::ffi::c_int;
8480}
8481unsafe extern "C" {
8482    pub fn vips_draw_image(
8483        image: *mut VipsImage,
8484        sub: *mut VipsImage,
8485        x: core::ffi::c_int,
8486        y: core::ffi::c_int,
8487        ...
8488    ) -> core::ffi::c_int;
8489}
8490unsafe extern "C" {
8491    pub fn vips_draw_mask(
8492        image: *mut VipsImage,
8493        ink: *mut f64,
8494        n: core::ffi::c_int,
8495        mask: *mut VipsImage,
8496        x: core::ffi::c_int,
8497        y: core::ffi::c_int,
8498        ...
8499    ) -> core::ffi::c_int;
8500}
8501unsafe extern "C" {
8502    pub fn vips_draw_mask1(
8503        image: *mut VipsImage,
8504        ink: f64,
8505        mask: *mut VipsImage,
8506        x: core::ffi::c_int,
8507        y: core::ffi::c_int,
8508        ...
8509    ) -> core::ffi::c_int;
8510}
8511unsafe extern "C" {
8512    pub fn vips_draw_line(
8513        image: *mut VipsImage,
8514        ink: *mut f64,
8515        n: core::ffi::c_int,
8516        x1: core::ffi::c_int,
8517        y1: core::ffi::c_int,
8518        x2: core::ffi::c_int,
8519        y2: core::ffi::c_int,
8520        ...
8521    ) -> core::ffi::c_int;
8522}
8523unsafe extern "C" {
8524    pub fn vips_draw_line1(
8525        image: *mut VipsImage,
8526        ink: f64,
8527        x1: core::ffi::c_int,
8528        y1: core::ffi::c_int,
8529        x2: core::ffi::c_int,
8530        y2: core::ffi::c_int,
8531        ...
8532    ) -> core::ffi::c_int;
8533}
8534unsafe extern "C" {
8535    pub fn vips_draw_circle(
8536        image: *mut VipsImage,
8537        ink: *mut f64,
8538        n: core::ffi::c_int,
8539        cx: core::ffi::c_int,
8540        cy: core::ffi::c_int,
8541        radius: core::ffi::c_int,
8542        ...
8543    ) -> core::ffi::c_int;
8544}
8545unsafe extern "C" {
8546    pub fn vips_draw_circle1(
8547        image: *mut VipsImage,
8548        ink: f64,
8549        cx: core::ffi::c_int,
8550        cy: core::ffi::c_int,
8551        radius: core::ffi::c_int,
8552        ...
8553    ) -> core::ffi::c_int;
8554}
8555unsafe extern "C" {
8556    pub fn vips_draw_flood(
8557        image: *mut VipsImage,
8558        ink: *mut f64,
8559        n: core::ffi::c_int,
8560        x: core::ffi::c_int,
8561        y: core::ffi::c_int,
8562        ...
8563    ) -> core::ffi::c_int;
8564}
8565unsafe extern "C" {
8566    pub fn vips_draw_flood1(
8567        image: *mut VipsImage,
8568        ink: f64,
8569        x: core::ffi::c_int,
8570        y: core::ffi::c_int,
8571        ...
8572    ) -> core::ffi::c_int;
8573}
8574unsafe extern "C" {
8575    pub fn vips_draw_smudge(
8576        image: *mut VipsImage,
8577        left: core::ffi::c_int,
8578        top: core::ffi::c_int,
8579        width: core::ffi::c_int,
8580        height: core::ffi::c_int,
8581        ...
8582    ) -> core::ffi::c_int;
8583}
8584#[repr(u32)]
8585#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8586pub enum VipsTextWrap {
8587    VIPS_TEXT_WRAP_WORD = 0,
8588    VIPS_TEXT_WRAP_CHAR = 1,
8589    VIPS_TEXT_WRAP_WORD_CHAR = 2,
8590    VIPS_TEXT_WRAP_NONE = 3,
8591    VIPS_TEXT_WRAP_LAST = 4,
8592}
8593#[repr(u32)]
8594#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
8595pub enum VipsSdfShape {
8596    VIPS_SDF_SHAPE_CIRCLE = 0,
8597    VIPS_SDF_SHAPE_BOX = 1,
8598    VIPS_SDF_SHAPE_ROUNDED_BOX = 2,
8599    VIPS_SDF_SHAPE_LINE = 3,
8600    VIPS_SDF_SHAPE_LAST = 4,
8601}
8602unsafe extern "C" {
8603    pub fn vips_black(
8604        out: *mut *mut VipsImage,
8605        width: core::ffi::c_int,
8606        height: core::ffi::c_int,
8607        ...
8608    ) -> core::ffi::c_int;
8609}
8610unsafe extern "C" {
8611    pub fn vips_xyz(
8612        out: *mut *mut VipsImage,
8613        width: core::ffi::c_int,
8614        height: core::ffi::c_int,
8615        ...
8616    ) -> core::ffi::c_int;
8617}
8618unsafe extern "C" {
8619    pub fn vips_grey(
8620        out: *mut *mut VipsImage,
8621        width: core::ffi::c_int,
8622        height: core::ffi::c_int,
8623        ...
8624    ) -> core::ffi::c_int;
8625}
8626unsafe extern "C" {
8627    pub fn vips_gaussmat(
8628        out: *mut *mut VipsImage,
8629        sigma: f64,
8630        min_ampl: f64,
8631        ...
8632    ) -> core::ffi::c_int;
8633}
8634unsafe extern "C" {
8635    pub fn vips_logmat(
8636        out: *mut *mut VipsImage,
8637        sigma: f64,
8638        min_ampl: f64,
8639        ...
8640    ) -> core::ffi::c_int;
8641}
8642unsafe extern "C" {
8643    pub fn vips_text(
8644        out: *mut *mut VipsImage,
8645        text: *const core::ffi::c_char,
8646        ...
8647    ) -> core::ffi::c_int;
8648}
8649unsafe extern "C" {
8650    pub fn vips_gaussnoise(
8651        out: *mut *mut VipsImage,
8652        width: core::ffi::c_int,
8653        height: core::ffi::c_int,
8654        ...
8655    ) -> core::ffi::c_int;
8656}
8657unsafe extern "C" {
8658    pub fn vips_eye(
8659        out: *mut *mut VipsImage,
8660        width: core::ffi::c_int,
8661        height: core::ffi::c_int,
8662        ...
8663    ) -> core::ffi::c_int;
8664}
8665unsafe extern "C" {
8666    pub fn vips_sines(
8667        out: *mut *mut VipsImage,
8668        width: core::ffi::c_int,
8669        height: core::ffi::c_int,
8670        ...
8671    ) -> core::ffi::c_int;
8672}
8673unsafe extern "C" {
8674    pub fn vips_zone(
8675        out: *mut *mut VipsImage,
8676        width: core::ffi::c_int,
8677        height: core::ffi::c_int,
8678        ...
8679    ) -> core::ffi::c_int;
8680}
8681unsafe extern "C" {
8682    pub fn vips_sdf(
8683        out: *mut *mut VipsImage,
8684        width: core::ffi::c_int,
8685        height: core::ffi::c_int,
8686        shape: VipsSdfShape,
8687        ...
8688    ) -> core::ffi::c_int;
8689}
8690unsafe extern "C" {
8691    pub fn vips_identity(out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8692}
8693unsafe extern "C" {
8694    pub fn vips_buildlut(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8695}
8696unsafe extern "C" {
8697    pub fn vips_invertlut(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8698}
8699unsafe extern "C" {
8700    pub fn vips_tonelut(out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
8701}
8702unsafe extern "C" {
8703    pub fn vips_mask_ideal(
8704        out: *mut *mut VipsImage,
8705        width: core::ffi::c_int,
8706        height: core::ffi::c_int,
8707        frequency_cutoff: f64,
8708        ...
8709    ) -> core::ffi::c_int;
8710}
8711unsafe extern "C" {
8712    pub fn vips_mask_ideal_ring(
8713        out: *mut *mut VipsImage,
8714        width: core::ffi::c_int,
8715        height: core::ffi::c_int,
8716        frequency_cutoff: f64,
8717        ringwidth: f64,
8718        ...
8719    ) -> core::ffi::c_int;
8720}
8721unsafe extern "C" {
8722    pub fn vips_mask_ideal_band(
8723        out: *mut *mut VipsImage,
8724        width: core::ffi::c_int,
8725        height: core::ffi::c_int,
8726        frequency_cutoff_x: f64,
8727        frequency_cutoff_y: f64,
8728        radius: f64,
8729        ...
8730    ) -> core::ffi::c_int;
8731}
8732unsafe extern "C" {
8733    pub fn vips_mask_butterworth(
8734        out: *mut *mut VipsImage,
8735        width: core::ffi::c_int,
8736        height: core::ffi::c_int,
8737        order: f64,
8738        frequency_cutoff: f64,
8739        amplitude_cutoff: f64,
8740        ...
8741    ) -> core::ffi::c_int;
8742}
8743unsafe extern "C" {
8744    pub fn vips_mask_butterworth_ring(
8745        out: *mut *mut VipsImage,
8746        width: core::ffi::c_int,
8747        height: core::ffi::c_int,
8748        order: f64,
8749        frequency_cutoff: f64,
8750        amplitude_cutoff: f64,
8751        ringwidth: f64,
8752        ...
8753    ) -> core::ffi::c_int;
8754}
8755unsafe extern "C" {
8756    pub fn vips_mask_butterworth_band(
8757        out: *mut *mut VipsImage,
8758        width: core::ffi::c_int,
8759        height: core::ffi::c_int,
8760        order: f64,
8761        frequency_cutoff_x: f64,
8762        frequency_cutoff_y: f64,
8763        radius: f64,
8764        amplitude_cutoff: f64,
8765        ...
8766    ) -> core::ffi::c_int;
8767}
8768unsafe extern "C" {
8769    pub fn vips_mask_gaussian(
8770        out: *mut *mut VipsImage,
8771        width: core::ffi::c_int,
8772        height: core::ffi::c_int,
8773        frequency_cutoff: f64,
8774        amplitude_cutoff: f64,
8775        ...
8776    ) -> core::ffi::c_int;
8777}
8778unsafe extern "C" {
8779    pub fn vips_mask_gaussian_ring(
8780        out: *mut *mut VipsImage,
8781        width: core::ffi::c_int,
8782        height: core::ffi::c_int,
8783        frequency_cutoff: f64,
8784        amplitude_cutoff: f64,
8785        ringwidth: f64,
8786        ...
8787    ) -> core::ffi::c_int;
8788}
8789unsafe extern "C" {
8790    pub fn vips_mask_gaussian_band(
8791        out: *mut *mut VipsImage,
8792        width: core::ffi::c_int,
8793        height: core::ffi::c_int,
8794        frequency_cutoff_x: f64,
8795        frequency_cutoff_y: f64,
8796        radius: f64,
8797        amplitude_cutoff: f64,
8798        ...
8799    ) -> core::ffi::c_int;
8800}
8801unsafe extern "C" {
8802    pub fn vips_mask_fractal(
8803        out: *mut *mut VipsImage,
8804        width: core::ffi::c_int,
8805        height: core::ffi::c_int,
8806        fractal_dimension: f64,
8807        ...
8808    ) -> core::ffi::c_int;
8809}
8810unsafe extern "C" {
8811    pub fn vips_fractsurf(
8812        out: *mut *mut VipsImage,
8813        width: core::ffi::c_int,
8814        height: core::ffi::c_int,
8815        fractal_dimension: f64,
8816        ...
8817    ) -> core::ffi::c_int;
8818}
8819unsafe extern "C" {
8820    pub fn vips_worley(
8821        out: *mut *mut VipsImage,
8822        width: core::ffi::c_int,
8823        height: core::ffi::c_int,
8824        ...
8825    ) -> core::ffi::c_int;
8826}
8827unsafe extern "C" {
8828    pub fn vips_perlin(
8829        out: *mut *mut VipsImage,
8830        width: core::ffi::c_int,
8831        height: core::ffi::c_int,
8832        ...
8833    ) -> core::ffi::c_int;
8834}
8835#[repr(C)]
8836#[derive(Debug, Copy, Clone)]
8837pub struct im__INTMASK {
8838    pub xsize: core::ffi::c_int,
8839    pub ysize: core::ffi::c_int,
8840    pub scale: core::ffi::c_int,
8841    pub offset: core::ffi::c_int,
8842    pub coeff: *mut core::ffi::c_int,
8843    pub filename: *mut core::ffi::c_char,
8844}
8845pub type INTMASK = im__INTMASK;
8846#[repr(C)]
8847#[derive(Debug, Copy, Clone)]
8848pub struct im__DOUBLEMASK {
8849    pub xsize: core::ffi::c_int,
8850    pub ysize: core::ffi::c_int,
8851    pub scale: f64,
8852    pub offset: f64,
8853    pub coeff: *mut f64,
8854    pub filename: *mut core::ffi::c_char,
8855}
8856pub type DOUBLEMASK = im__DOUBLEMASK;
8857unsafe extern "C" {
8858    pub fn vips_image_new_mode(
8859        filename: *const core::ffi::c_char,
8860        mode: *const core::ffi::c_char,
8861    ) -> *mut VipsImage;
8862}
8863unsafe extern "C" {
8864    pub fn vips_image_open_input(image: *mut VipsImage) -> core::ffi::c_int;
8865}
8866unsafe extern "C" {
8867    pub fn vips_image_open_output(image: *mut VipsImage) -> core::ffi::c_int;
8868}
8869unsafe extern "C" {
8870    pub fn vips_mapfile(image: *mut VipsImage) -> core::ffi::c_int;
8871}
8872unsafe extern "C" {
8873    pub fn vips_mapfilerw(image: *mut VipsImage) -> core::ffi::c_int;
8874}
8875unsafe extern "C" {
8876    pub fn vips_remapfilerw(image: *mut VipsImage) -> core::ffi::c_int;
8877}
8878pub type VipsPlotFn = ::core::option::Option<
8879    unsafe extern "C" fn(
8880        image: *mut VipsImage,
8881        x: core::ffi::c_int,
8882        y: core::ffi::c_int,
8883        a: *mut core::ffi::c_void,
8884        b: *mut core::ffi::c_void,
8885        c: *mut core::ffi::c_void,
8886    ) -> core::ffi::c_int,
8887>;
8888unsafe extern "C" {
8889    pub fn vips__deprecated_open_read(
8890        filename: *const core::ffi::c_char,
8891        sequential: gboolean,
8892    ) -> *mut VipsImage;
8893}
8894unsafe extern "C" {
8895    pub fn vips__deprecated_open_write(filename: *const core::ffi::c_char) -> *mut VipsImage;
8896}
8897unsafe extern "C" {
8898    pub fn vips__find_lroverlap(
8899        ref_in: *mut VipsImage,
8900        sec_in: *mut VipsImage,
8901        out: *mut VipsImage,
8902        bandno_in: core::ffi::c_int,
8903        xref: core::ffi::c_int,
8904        yref: core::ffi::c_int,
8905        xsec: core::ffi::c_int,
8906        ysec: core::ffi::c_int,
8907        halfcorrelation: core::ffi::c_int,
8908        halfarea: core::ffi::c_int,
8909        dx0: *mut core::ffi::c_int,
8910        dy0: *mut core::ffi::c_int,
8911        scale1: *mut f64,
8912        angle1: *mut f64,
8913        dx1: *mut f64,
8914        dy1: *mut f64,
8915    ) -> core::ffi::c_int;
8916}
8917unsafe extern "C" {
8918    pub fn vips__find_tboverlap(
8919        ref_in: *mut VipsImage,
8920        sec_in: *mut VipsImage,
8921        out: *mut VipsImage,
8922        bandno_in: core::ffi::c_int,
8923        xref: core::ffi::c_int,
8924        yref: core::ffi::c_int,
8925        xsec: core::ffi::c_int,
8926        ysec: core::ffi::c_int,
8927        halfcorrelation: core::ffi::c_int,
8928        halfarea: core::ffi::c_int,
8929        dx0: *mut core::ffi::c_int,
8930        dy0: *mut core::ffi::c_int,
8931        scale1: *mut f64,
8932        angle1: *mut f64,
8933        dx1: *mut f64,
8934        dy1: *mut f64,
8935    ) -> core::ffi::c_int;
8936}
8937unsafe extern "C" {
8938    pub fn vips_check_imask(
8939        domain: *const core::ffi::c_char,
8940        mask: *mut INTMASK,
8941    ) -> core::ffi::c_int;
8942}
8943unsafe extern "C" {
8944    pub fn vips_check_dmask(
8945        domain: *const core::ffi::c_char,
8946        mask: *mut DOUBLEMASK,
8947    ) -> core::ffi::c_int;
8948}
8949unsafe extern "C" {
8950    pub fn vips_check_dmask_1d(
8951        domain: *const core::ffi::c_char,
8952        mask: *mut DOUBLEMASK,
8953    ) -> core::ffi::c_int;
8954}
8955unsafe extern "C" {
8956    pub fn vips_get_option_group() -> *mut GOptionGroup;
8957}
8958unsafe extern "C" {
8959    pub fn vips_window_ref(
8960        im: *mut VipsImage,
8961        top: core::ffi::c_int,
8962        height: core::ffi::c_int,
8963    ) -> *mut VipsWindow;
8964}
8965unsafe extern "C" {
8966    pub fn vips_popenf(
8967        fmt: *const core::ffi::c_char,
8968        mode: *const core::ffi::c_char,
8969        ...
8970    ) -> *mut FILE;
8971}
8972unsafe extern "C" {
8973    pub fn vips__ink_to_vector(
8974        domain: *const core::ffi::c_char,
8975        im: *mut VipsImage,
8976        ink: *mut VipsPel,
8977        n: *mut core::ffi::c_int,
8978    ) -> *mut f64;
8979}
8980unsafe extern "C" {
8981    pub fn vips__init(argv0: *const core::ffi::c_char) -> core::ffi::c_int;
8982}
8983unsafe extern "C" {
8984    pub fn vips__get_sizeof_vipsobject() -> usize;
8985}
8986#[repr(C)]
8987#[derive(Debug, Copy, Clone)]
8988pub struct VipsVector {
8989    pub name: *const core::ffi::c_char,
8990    pub unique_name: *mut core::ffi::c_char,
8991    pub n_temp: core::ffi::c_int,
8992    pub n_scanline: core::ffi::c_int,
8993    pub n_source: core::ffi::c_int,
8994    pub n_destination: core::ffi::c_int,
8995    pub n_constant: core::ffi::c_int,
8996    pub n_parameter: core::ffi::c_int,
8997    pub n_instruction: core::ffi::c_int,
8998    pub sl: [core::ffi::c_int; 10usize],
8999    pub line: [core::ffi::c_int; 10usize],
9000    pub s: [core::ffi::c_int; 10usize],
9001    pub d1: core::ffi::c_int,
9002    pub compiled: gboolean,
9003}
9004#[repr(C)]
9005#[derive(Debug, Copy, Clone)]
9006pub struct VipsExecutor {
9007    pub vector: *mut VipsVector,
9008}
9009unsafe extern "C" {
9010    pub fn vips_vector_init();
9011}
9012unsafe extern "C" {
9013    pub fn vips_vector_free(vector: *mut VipsVector);
9014}
9015unsafe extern "C" {
9016    pub fn vips_vector_new(
9017        name: *const core::ffi::c_char,
9018        dsize: core::ffi::c_int,
9019    ) -> *mut VipsVector;
9020}
9021unsafe extern "C" {
9022    pub fn vips_vector_constant(
9023        vector: *mut VipsVector,
9024        name: *mut core::ffi::c_char,
9025        value: core::ffi::c_int,
9026        size: core::ffi::c_int,
9027    );
9028}
9029unsafe extern "C" {
9030    pub fn vips_vector_source_scanline(
9031        vector: *mut VipsVector,
9032        name: *mut core::ffi::c_char,
9033        line: core::ffi::c_int,
9034        size: core::ffi::c_int,
9035    );
9036}
9037unsafe extern "C" {
9038    pub fn vips_vector_source_name(
9039        vector: *mut VipsVector,
9040        name: *const core::ffi::c_char,
9041        size: core::ffi::c_int,
9042    ) -> core::ffi::c_int;
9043}
9044unsafe extern "C" {
9045    pub fn vips_vector_temporary(
9046        vector: *mut VipsVector,
9047        name: *const core::ffi::c_char,
9048        size: core::ffi::c_int,
9049    );
9050}
9051unsafe extern "C" {
9052    pub fn vips_vector_parameter(
9053        vector: *mut VipsVector,
9054        name: *const core::ffi::c_char,
9055        size: core::ffi::c_int,
9056    ) -> core::ffi::c_int;
9057}
9058unsafe extern "C" {
9059    pub fn vips_vector_destination(
9060        vector: *mut VipsVector,
9061        name: *const core::ffi::c_char,
9062        size: core::ffi::c_int,
9063    ) -> core::ffi::c_int;
9064}
9065unsafe extern "C" {
9066    pub fn vips_vector_asm2(
9067        vector: *mut VipsVector,
9068        op: *const core::ffi::c_char,
9069        a: *const core::ffi::c_char,
9070        b: *const core::ffi::c_char,
9071    );
9072}
9073unsafe extern "C" {
9074    pub fn vips_vector_asm3(
9075        vector: *mut VipsVector,
9076        op: *const core::ffi::c_char,
9077        a: *const core::ffi::c_char,
9078        b: *const core::ffi::c_char,
9079        c: *const core::ffi::c_char,
9080    );
9081}
9082unsafe extern "C" {
9083    pub fn vips_vector_full(vector: *mut VipsVector) -> gboolean;
9084}
9085unsafe extern "C" {
9086    pub fn vips_vector_compile(vector: *mut VipsVector) -> gboolean;
9087}
9088unsafe extern "C" {
9089    pub fn vips_vector_print(vector: *mut VipsVector);
9090}
9091unsafe extern "C" {
9092    pub fn vips_executor_set_program(
9093        executor: *mut VipsExecutor,
9094        vector: *mut VipsVector,
9095        n: core::ffi::c_int,
9096    );
9097}
9098unsafe extern "C" {
9099    pub fn vips_executor_set_scanline(
9100        executor: *mut VipsExecutor,
9101        ir: *mut VipsRegion,
9102        x: core::ffi::c_int,
9103        y: core::ffi::c_int,
9104    );
9105}
9106unsafe extern "C" {
9107    pub fn vips_executor_set_destination(
9108        executor: *mut VipsExecutor,
9109        value: *mut core::ffi::c_void,
9110    );
9111}
9112unsafe extern "C" {
9113    pub fn vips_executor_set_parameter(
9114        executor: *mut VipsExecutor,
9115        var: core::ffi::c_int,
9116        value: core::ffi::c_int,
9117    );
9118}
9119unsafe extern "C" {
9120    pub fn vips_executor_set_array(
9121        executor: *mut VipsExecutor,
9122        var: core::ffi::c_int,
9123        value: *mut core::ffi::c_void,
9124    );
9125}
9126unsafe extern "C" {
9127    pub fn vips_executor_run(executor: *mut VipsExecutor);
9128}
9129unsafe extern "C" {
9130    pub fn vips_vector_to_fixed_point(
9131        in_: *mut f64,
9132        out: *mut core::ffi::c_int,
9133        n: core::ffi::c_int,
9134        scale: core::ffi::c_int,
9135    );
9136}
9137pub type im_object = *mut core::ffi::c_void;
9138unsafe extern "C" {
9139    pub fn vips__input_interpolate_init(
9140        obj: *mut im_object,
9141        str_: *mut core::ffi::c_char,
9142    ) -> core::ffi::c_int;
9143}
9144impl VipsBBits {
9145    pub const IM_BBITS_FLOAT: VipsBBits = VipsBBits::IM_BBITS_INT;
9146}
9147impl VipsBBits {
9148    pub const IM_BBITS_DOUBLE: VipsBBits = VipsBBits::IM_BBITS_COMPLEX;
9149}
9150#[repr(u32)]
9151#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
9152pub enum VipsBBits {
9153    IM_BBITS_BYTE = 8,
9154    IM_BBITS_SHORT = 16,
9155    IM_BBITS_INT = 32,
9156    IM_BBITS_COMPLEX = 64,
9157    IM_BBITS_DPCOMPLEX = 128,
9158}
9159unsafe extern "C" {
9160    pub fn vips_g_mutex_new() -> *mut GMutex;
9161}
9162unsafe extern "C" {
9163    pub fn vips_g_mutex_free(arg1: *mut GMutex);
9164}
9165unsafe extern "C" {
9166    pub fn vips_g_cond_new() -> *mut GCond;
9167}
9168unsafe extern "C" {
9169    pub fn vips_g_cond_free(arg1: *mut GCond);
9170}
9171unsafe extern "C" {
9172    pub fn vips_g_thread_join(thread: *mut GThread) -> *mut core::ffi::c_void;
9173}
9174unsafe extern "C" {
9175    pub fn vips_cache(in_: *mut VipsImage, out: *mut *mut VipsImage, ...) -> core::ffi::c_int;
9176}
9177#[repr(u32)]
9178#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
9179pub enum VipsForeignJpegSubsample {
9180    VIPS_FOREIGN_JPEG_SUBSAMPLE_AUTO = 0,
9181    VIPS_FOREIGN_JPEG_SUBSAMPLE_ON = 1,
9182    VIPS_FOREIGN_JPEG_SUBSAMPLE_OFF = 2,
9183    VIPS_FOREIGN_JPEG_SUBSAMPLE_LAST = 3,
9184}
9185unsafe extern "C" {
9186    pub fn vips_rawsave_fd(in_: *mut VipsImage, fd: core::ffi::c_int, ...) -> core::ffi::c_int;
9187}
9188unsafe extern "C" {
9189    pub fn vips_warn(domain: *const core::ffi::c_char, fmt: *const core::ffi::c_char, ...);
9190}
9191unsafe extern "C" {
9192    pub fn vips_vwarn(domain: *const core::ffi::c_char, fmt: *const core::ffi::c_char, ap: va_list);
9193}
9194unsafe extern "C" {
9195    pub fn vips_info_set(info: gboolean);
9196}
9197unsafe extern "C" {
9198    pub fn vips_info(domain: *const core::ffi::c_char, fmt: *const core::ffi::c_char, ...);
9199}
9200unsafe extern "C" {
9201    pub fn vips_vinfo(domain: *const core::ffi::c_char, fmt: *const core::ffi::c_char, ap: va_list);
9202}
9203unsafe extern "C" {
9204    pub fn vips_autorot_get_angle(image: *mut VipsImage) -> VipsAngle;
9205}
9206unsafe extern "C" {
9207    pub fn vips_thread_isworker() -> gboolean;
9208}
9209unsafe extern "C" {
9210    pub fn vips_free(buf: *mut core::ffi::c_void) -> core::ffi::c_int;
9211}
9212unsafe extern "C" {
9213    pub fn vips_target_finish(target: *mut VipsTarget);
9214}
9215unsafe extern "C" {
9216    pub fn vips_cache_operation_lookup(operation: *mut VipsOperation) -> *mut VipsOperation;
9217}
9218unsafe extern "C" {
9219    pub fn vips_cache_operation_add(operation: *mut VipsOperation);
9220}
9221unsafe extern "C" {
9222    pub fn vips_strncpy(
9223        dest: *mut core::ffi::c_char,
9224        src: *const core::ffi::c_char,
9225        n: core::ffi::c_int,
9226    ) -> *mut core::ffi::c_char;
9227}
9228unsafe extern "C" {
9229    pub fn vips_strrstr(
9230        haystack: *const core::ffi::c_char,
9231        needle: *const core::ffi::c_char,
9232    ) -> *mut core::ffi::c_char;
9233}
9234unsafe extern "C" {
9235    pub fn vips_ispostfix(a: *const core::ffi::c_char, b: *const core::ffi::c_char) -> gboolean;
9236}
9237unsafe extern "C" {
9238    pub fn vips_vsnprintf(
9239        str_: *mut core::ffi::c_char,
9240        size: usize,
9241        format: *const core::ffi::c_char,
9242        ap: va_list,
9243    ) -> core::ffi::c_int;
9244}
9245unsafe extern "C" {
9246    pub fn vips_snprintf(
9247        str_: *mut core::ffi::c_char,
9248        size: usize,
9249        format: *const core::ffi::c_char,
9250        ...
9251    ) -> core::ffi::c_int;
9252}
9253unsafe extern "C" {
9254    pub fn vips_max_coord_get() -> core::ffi::c_int;
9255}
9256unsafe extern "C" {
9257    pub fn vips_init(argv0: *const core::ffi::c_char) -> core::ffi::c_int;
9258}
9259unsafe extern "C" {
9260    pub fn vips_get_argv0() -> *const core::ffi::c_char;
9261}
9262unsafe extern "C" {
9263    pub fn vips_get_prgname() -> *const core::ffi::c_char;
9264}
9265unsafe extern "C" {
9266    pub fn vips_shutdown();
9267}
9268unsafe extern "C" {
9269    pub fn vips_thread_shutdown();
9270}
9271unsafe extern "C" {
9272    pub fn vips_add_option_entries(option_group: *mut GOptionGroup);
9273}
9274unsafe extern "C" {
9275    pub fn vips_leak_set(leak: gboolean);
9276}
9277unsafe extern "C" {
9278    pub fn vips_block_untrusted_set(state: gboolean);
9279}
9280unsafe extern "C" {
9281    pub fn vips_version_string() -> *const core::ffi::c_char;
9282}
9283unsafe extern "C" {
9284    pub fn vips_version(flag: core::ffi::c_int) -> core::ffi::c_int;
9285}
9286unsafe extern "C" {
9287    pub fn vips_guess_prefix(
9288        argv0: *const core::ffi::c_char,
9289        env_name: *const core::ffi::c_char,
9290    ) -> *const core::ffi::c_char;
9291}
9292unsafe extern "C" {
9293    pub fn vips_guess_libdir(
9294        argv0: *const core::ffi::c_char,
9295        env_name: *const core::ffi::c_char,
9296    ) -> *const core::ffi::c_char;
9297}
9298pub type __builtin_va_list = *mut core::ffi::c_char;