2009-08-16 17:00:08 +02:00
|
|
|
/* Declarations only used internally to vips. See private.h for declarations
|
|
|
|
* which are not public, but which have to be publically visible.
|
|
|
|
*
|
|
|
|
* 11/9/06
|
|
|
|
* - cut from proto.h
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
This file is part of VIPS.
|
|
|
|
|
|
|
|
VIPS is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU Lesser General Public License as published by
|
|
|
|
the Free Software Foundation; either version 2 of the License, or
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU Lesser General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU Lesser General Public License
|
|
|
|
along with this program; if not, write to the Free Software
|
2013-03-07 06:40:19 +01:00
|
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
|
|
02110-1301 USA
|
2009-08-16 17:00:08 +02:00
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
|
|
|
These files are distributed with VIPS - http://www.vips.ecs.soton.ac.uk
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
2011-03-28 18:18:06 +02:00
|
|
|
#ifndef VIPS_INTERNAL_H
|
|
|
|
#define VIPS_INTERNAL_H
|
2009-08-16 17:00:08 +02:00
|
|
|
|
|
|
|
#ifdef __cplusplus
|
|
|
|
extern "C" {
|
|
|
|
#endif /*__cplusplus*/
|
|
|
|
|
2021-10-27 12:37:51 +02:00
|
|
|
/* Try to make an O_BINARY and O_NOINHERIT ... sometimes need the leading '_'.
|
|
|
|
*/
|
|
|
|
#if defined(G_PLATFORM_WIN32) || defined(G_WITH_CYGWIN)
|
|
|
|
# ifndef O_BINARY
|
|
|
|
# ifdef _O_BINARY
|
|
|
|
# define O_BINARY _O_BINARY
|
|
|
|
# endif /*_O_BINARY*/
|
|
|
|
# endif /*!O_BINARY*/
|
|
|
|
# ifndef O_NOINHERIT
|
|
|
|
# ifdef _O_NOINHERIT
|
|
|
|
# define O_NOINHERIT _O_NOINHERIT
|
|
|
|
# endif /*_O_NOINHERIT*/
|
|
|
|
# endif /*!O_NOINHERIT*/
|
|
|
|
#endif /*defined(G_PLATFORM_WIN32) || defined(G_WITH_CYGWIN)*/
|
|
|
|
|
|
|
|
/* If we have O_BINARY, add it to a mode flags set.
|
|
|
|
*/
|
|
|
|
#ifdef O_BINARY
|
|
|
|
# define BINARYIZE(M) ((M) | O_BINARY)
|
|
|
|
#else /*!O_BINARY*/
|
|
|
|
# define BINARYIZE(M) (M)
|
|
|
|
#endif /*O_BINARY*/
|
|
|
|
|
|
|
|
/* If we have O_CLOEXEC or O_NOINHERIT, add it to a mode flags set.
|
|
|
|
*/
|
|
|
|
#ifdef O_CLOEXEC
|
|
|
|
# define CLOEXEC(M) ((M) | O_CLOEXEC)
|
|
|
|
#elif defined(O_NOINHERIT)
|
|
|
|
# define CLOEXEC(M) ((M) | O_NOINHERIT)
|
|
|
|
#else /*!O_CLOEXEC && !O_NOINHERIT*/
|
|
|
|
# define CLOEXEC(M) (M)
|
|
|
|
#endif /*O_CLOEXEC*/
|
|
|
|
|
2019-08-02 06:35:18 +02:00
|
|
|
/* << on an int is undefined in C if the int is negative. Imagine a machine
|
|
|
|
* that uses 1s complement, for example.
|
|
|
|
*
|
|
|
|
* Fuzzers find and warn about this, so we must use this macro instead. Cast
|
|
|
|
* to uint, shift, and cast back.
|
|
|
|
*/
|
|
|
|
#define VIPS_LSHIFT_INT( I, N ) ((int) ((unsigned int) (I) << (N)))
|
|
|
|
|
2009-08-16 17:00:08 +02:00
|
|
|
/* What we store in the Meta hash table. We can't just use GHashTable's
|
|
|
|
* key/value pairs, since we need to iterate over meta in Meta_traverse order.
|
|
|
|
*
|
|
|
|
* We don't refcount at this level ... large meta values are refcounted by
|
|
|
|
* their GValue implementation, see eg. MetaArea.
|
|
|
|
*/
|
2011-03-27 23:03:38 +02:00
|
|
|
typedef struct _VipsMeta {
|
2011-02-16 15:40:31 +01:00
|
|
|
VipsImage *im;
|
2009-08-16 17:00:08 +02:00
|
|
|
|
2016-10-20 13:41:32 +02:00
|
|
|
char *name; /* strdup() of field name */
|
2009-08-16 17:00:08 +02:00
|
|
|
GValue value; /* copy of value */
|
2011-03-27 23:03:38 +02:00
|
|
|
} VipsMeta;
|
2009-08-16 17:00:08 +02:00
|
|
|
|
2022-04-16 11:58:55 +02:00
|
|
|
/* TODO(kleisauke): VIPS_API is required by the magick module.
|
|
|
|
*/
|
|
|
|
VIPS_API
|
2017-11-27 16:15:21 +01:00
|
|
|
int vips__exif_parse( VipsImage *image );
|
2022-04-16 11:58:55 +02:00
|
|
|
/* TODO(kleisauke): VIPS_API is required by the heif module.
|
|
|
|
*/
|
|
|
|
VIPS_API
|
2017-11-27 16:15:21 +01:00
|
|
|
int vips__exif_update( VipsImage *image );
|
|
|
|
|
2014-08-18 16:53:17 +02:00
|
|
|
void vips_check_init( void );
|
|
|
|
|
2011-03-27 23:03:38 +02:00
|
|
|
void vips__meta_init_types( void );
|
|
|
|
void vips__meta_destroy( VipsImage *im );
|
|
|
|
int vips__meta_cp( VipsImage *, const VipsImage * );
|
2009-08-16 17:00:08 +02:00
|
|
|
|
|
|
|
/* Default tile geometry.
|
|
|
|
*/
|
2011-03-28 18:18:06 +02:00
|
|
|
extern int vips__tile_width;
|
|
|
|
extern int vips__tile_height;
|
|
|
|
extern int vips__fatstrip_height;
|
|
|
|
extern int vips__thinstrip_height;
|
2009-08-16 17:00:08 +02:00
|
|
|
|
|
|
|
/* Default n threads.
|
|
|
|
*/
|
2011-03-28 18:18:06 +02:00
|
|
|
extern int vips__concurrency;
|
2009-08-16 17:00:08 +02:00
|
|
|
|
2012-07-21 18:01:17 +02:00
|
|
|
/* abort() on any error.
|
|
|
|
*/
|
|
|
|
extern int vips__fatal;
|
|
|
|
|
2013-07-16 12:37:01 +02:00
|
|
|
/* Enable leak check.
|
|
|
|
*/
|
|
|
|
extern int vips__leak;
|
|
|
|
|
2009-08-16 17:00:08 +02:00
|
|
|
/* Give progress feedback.
|
|
|
|
*/
|
2011-03-28 18:18:06 +02:00
|
|
|
extern int vips__progress;
|
2009-08-16 17:00:08 +02:00
|
|
|
|
2013-08-07 10:22:24 +02:00
|
|
|
/* Show info messages. Handy for debugging.
|
|
|
|
*/
|
|
|
|
extern int vips__info;
|
|
|
|
|
2010-07-29 23:08:30 +02:00
|
|
|
/* A string giving the image size (in bytes of uncompressed image) above which
|
|
|
|
* we decompress to disc on open.
|
|
|
|
*/
|
2011-03-28 18:18:06 +02:00
|
|
|
extern char *vips__disc_threshold;
|
2010-07-29 23:08:30 +02:00
|
|
|
|
2012-01-06 10:36:04 +01:00
|
|
|
extern gboolean vips__cache_dump;
|
|
|
|
extern gboolean vips__cache_trace;
|
2011-09-22 18:53:23 +02:00
|
|
|
|
2016-10-28 17:25:31 +02:00
|
|
|
void vips__threadpool_init( void );
|
2021-03-18 16:53:00 +01:00
|
|
|
void vips__threadpool_shutdown( void );
|
2021-05-17 09:42:39 +02:00
|
|
|
int vips__thread_execute( const char *name, GFunc func, gpointer data );
|
2016-10-28 17:25:31 +02:00
|
|
|
|
2012-07-08 11:37:35 +02:00
|
|
|
void vips__cache_init( void );
|
|
|
|
|
2021-02-08 12:25:56 +01:00
|
|
|
int vips__print_renders( void );
|
|
|
|
int vips__type_leak( void );
|
|
|
|
int vips__object_leak( void );
|
2013-07-15 23:01:00 +02:00
|
|
|
|
2009-08-16 17:00:08 +02:00
|
|
|
/* iofuncs
|
|
|
|
*/
|
2011-03-23 19:28:48 +01:00
|
|
|
int vips__open_image_read( const char *filename );
|
2011-12-15 11:59:05 +01:00
|
|
|
int vips__open_image_write( const char *filename, gboolean temp );
|
2022-04-16 11:58:55 +02:00
|
|
|
|
|
|
|
/* im_image_open_input() needs to have this visible.
|
|
|
|
*/
|
|
|
|
#if VIPS_ENABLE_DEPRECATED
|
|
|
|
VIPS_API
|
|
|
|
#endif
|
2011-03-01 15:49:16 +01:00
|
|
|
int vips_image_open_input( VipsImage *image );
|
2022-04-16 11:58:55 +02:00
|
|
|
|
|
|
|
/* im_image_open_output() needs to have this visible.
|
|
|
|
*/
|
|
|
|
#if VIPS_ENABLE_DEPRECATED
|
|
|
|
VIPS_API
|
|
|
|
#endif
|
2011-03-23 19:07:51 +01:00
|
|
|
int vips_image_open_output( VipsImage *image );
|
|
|
|
|
2011-03-28 18:18:06 +02:00
|
|
|
void vips__link_break_all( VipsImage *im );
|
2012-06-23 12:51:57 +02:00
|
|
|
void *vips__link_map( VipsImage *image, gboolean upstream,
|
|
|
|
VipsSListMap2Fn fn, void *a, void *b );
|
2011-03-28 18:18:06 +02:00
|
|
|
|
2019-10-15 11:09:24 +02:00
|
|
|
gboolean vips__mmap_supported( int fd );
|
2011-03-28 18:18:06 +02:00
|
|
|
void *vips__mmap( int fd, int writeable, size_t length, gint64 offset );
|
2015-10-23 12:45:11 +02:00
|
|
|
int vips__munmap( const void *start, size_t length );
|
2022-04-16 11:58:55 +02:00
|
|
|
|
|
|
|
/* im_mapfile() needs to have this visible.
|
|
|
|
*/
|
|
|
|
#if VIPS_ENABLE_DEPRECATED
|
|
|
|
VIPS_API
|
|
|
|
#endif
|
|
|
|
int vips_mapfile( VipsImage *image );
|
|
|
|
|
|
|
|
/* im_mapfilerw() needs to have this visible.
|
|
|
|
*/
|
|
|
|
#if VIPS_ENABLE_DEPRECATED
|
|
|
|
VIPS_API
|
|
|
|
#endif
|
|
|
|
int vips_mapfilerw( VipsImage *image );
|
|
|
|
|
|
|
|
/* im_remapfilerw() needs to have this visible.
|
|
|
|
*/
|
|
|
|
#if VIPS_ENABLE_DEPRECATED
|
|
|
|
VIPS_API
|
|
|
|
#endif
|
|
|
|
int vips_remapfilerw( VipsImage *image );
|
2011-03-28 18:18:06 +02:00
|
|
|
|
|
|
|
void vips__buffer_init( void );
|
2020-06-08 17:37:40 +02:00
|
|
|
void vips__buffer_shutdown( void );
|
2011-03-28 18:18:06 +02:00
|
|
|
|
2011-12-01 19:03:41 +01:00
|
|
|
void vips__copy_4byte( int swap, unsigned char *to, unsigned char *from );
|
|
|
|
void vips__copy_2byte( gboolean swap, unsigned char *to, unsigned char *from );
|
|
|
|
|
2011-11-26 13:41:54 +01:00
|
|
|
guint32 vips__file_magic( const char *filename );
|
2022-04-16 11:58:55 +02:00
|
|
|
/* TODO(kleisauke): VIPS_API is required by vipsheader.
|
|
|
|
*/
|
|
|
|
VIPS_API
|
2011-03-28 15:57:43 +02:00
|
|
|
int vips__has_extension_block( VipsImage *im );
|
2022-04-16 11:58:55 +02:00
|
|
|
/* TODO(kleisauke): VIPS_API is required by vipsheader.
|
|
|
|
*/
|
|
|
|
VIPS_API
|
2011-03-28 15:57:43 +02:00
|
|
|
void *vips__read_extension_block( VipsImage *im, int *size );
|
2022-04-16 11:58:55 +02:00
|
|
|
/* TODO(kleisauke): VIPS_API is required by vipsedit.
|
|
|
|
*/
|
|
|
|
VIPS_API
|
2011-03-28 15:57:43 +02:00
|
|
|
int vips__write_extension_block( VipsImage *im, void *buf, int size );
|
|
|
|
int vips__writehist( VipsImage *image );
|
2022-04-16 11:58:55 +02:00
|
|
|
/* TODO(kleisauke): VIPS_API is required by vipsedit.
|
|
|
|
*/
|
|
|
|
VIPS_API
|
2011-03-28 15:57:43 +02:00
|
|
|
int vips__read_header_bytes( VipsImage *im, unsigned char *from );
|
2022-04-16 11:58:55 +02:00
|
|
|
/* TODO(kleisauke): VIPS_API is required by vipsedit.
|
|
|
|
*/
|
|
|
|
VIPS_API
|
2011-03-28 15:57:43 +02:00
|
|
|
int vips__write_header_bytes( VipsImage *im, unsigned char *to );
|
2020-11-11 11:02:46 +01:00
|
|
|
int vips__image_meta_copy( VipsImage *dst, const VipsImage *src );
|
2009-08-16 17:00:08 +02:00
|
|
|
|
2011-03-28 18:18:06 +02:00
|
|
|
extern GMutex *vips__global_lock;
|
2009-08-16 17:00:08 +02:00
|
|
|
|
2014-06-15 12:52:06 +02:00
|
|
|
int vips_image_written( VipsImage *image );
|
|
|
|
void vips_image_preeval( VipsImage *image );
|
|
|
|
void vips_image_eval( VipsImage *image, guint64 processed );
|
|
|
|
void vips_image_posteval( VipsImage *image );
|
2022-04-16 11:58:55 +02:00
|
|
|
|
|
|
|
/* im_openout() needs to have this visible.
|
|
|
|
*/
|
|
|
|
#if VIPS_ENABLE_DEPRECATED
|
|
|
|
VIPS_API
|
|
|
|
#endif
|
2014-06-16 15:28:00 +02:00
|
|
|
VipsImage *vips_image_new_mode( const char *filename, const char *mode );
|
2014-06-15 12:52:06 +02:00
|
|
|
|
2011-10-22 14:10:47 +02:00
|
|
|
int vips__formatalike_vec( VipsImage **in, VipsImage **out, int n );
|
|
|
|
int vips__sizealike_vec( VipsImage **in, VipsImage **out, int n );
|
2011-10-28 18:36:20 +02:00
|
|
|
int vips__bandup( const char *domain, VipsImage *in, VipsImage **out, int n );
|
2011-10-22 14:10:47 +02:00
|
|
|
int vips__bandalike_vec( const char *domain,
|
2011-10-31 15:25:27 +01:00
|
|
|
VipsImage **in, VipsImage **out, int n, int base_bands );
|
2011-10-28 18:36:20 +02:00
|
|
|
|
|
|
|
int vips__formatalike( VipsImage *in1, VipsImage *in2,
|
|
|
|
VipsImage **out1, VipsImage **out2 );
|
|
|
|
int vips__sizealike( VipsImage *in1, VipsImage *in2,
|
|
|
|
VipsImage **out1, VipsImage **out2 );
|
2011-10-22 14:10:47 +02:00
|
|
|
int vips__bandalike( const char *domain,
|
2011-10-28 18:36:20 +02:00
|
|
|
VipsImage *in1, VipsImage *in2, VipsImage **out1, VipsImage **out2 );
|
2011-10-22 14:10:47 +02:00
|
|
|
|
2014-02-14 11:29:09 +01:00
|
|
|
/* draw
|
2010-08-25 13:15:36 +02:00
|
|
|
*/
|
2015-11-07 19:47:02 +01:00
|
|
|
VipsPel *vips__vector_to_pels( const char *domain,
|
|
|
|
int bands, VipsBandFormat format, VipsCoding coding,
|
|
|
|
double *real, double *imag, int n );
|
2022-04-16 11:58:55 +02:00
|
|
|
/* TODO(kleisauke): VIPS_API is required by the poppler module.
|
|
|
|
*/
|
|
|
|
VIPS_API
|
2012-06-18 15:49:39 +02:00
|
|
|
VipsPel *vips__vector_to_ink( const char *domain,
|
2014-02-22 17:26:42 +01:00
|
|
|
VipsImage *im, double *real, double *imag, int n );
|
2014-02-14 11:29:09 +01:00
|
|
|
|
|
|
|
int vips__draw_flood_direct( VipsImage *image, VipsImage *test,
|
|
|
|
int serial, int x, int y );
|
2014-03-29 18:16:37 +01:00
|
|
|
int vips__draw_mask_direct( VipsImage *image, VipsImage *mask,
|
|
|
|
VipsPel *ink, int x, int y );
|
2010-08-25 13:15:36 +02:00
|
|
|
|
2014-03-31 15:56:33 +02:00
|
|
|
typedef void (*VipsDrawPoint)( VipsImage *image,
|
|
|
|
int x, int y, void *client );
|
|
|
|
typedef void (*VipsDrawScanline)( VipsImage *image,
|
2017-11-01 12:57:50 +01:00
|
|
|
int y, int x1, int x2, int quadrant, void *client );
|
2014-03-31 15:56:33 +02:00
|
|
|
|
|
|
|
void vips__draw_line_direct( VipsImage *image, int x1, int y1, int x2, int y2,
|
|
|
|
VipsDrawPoint draw_point, void *client );
|
|
|
|
void vips__draw_circle_direct( VipsImage *image, int cx, int cy, int r,
|
|
|
|
VipsDrawScanline draw_scanline, void *client );
|
|
|
|
|
2015-12-11 16:14:08 +01:00
|
|
|
int vips__insert_just_one( VipsRegion *out, VipsRegion *in, int x, int y );
|
|
|
|
int vips__insert_paste_region( VipsRegion *out, VipsRegion *in, VipsRect *pos );
|
|
|
|
|
2011-02-02 15:24:58 +01:00
|
|
|
/* Register base vips interpolators, called during startup.
|
|
|
|
*/
|
|
|
|
void vips__interpolate_init( void );
|
|
|
|
|
2011-09-29 14:34:14 +02:00
|
|
|
/* Start up various packages.
|
|
|
|
*/
|
|
|
|
void vips_arithmetic_operation_init( void );
|
|
|
|
void vips_conversion_operation_init( void );
|
2012-06-13 10:31:05 +02:00
|
|
|
void vips_resample_operation_init( void );
|
|
|
|
void vips_foreign_operation_init( void );
|
2012-09-18 15:52:21 +02:00
|
|
|
void vips_colour_operation_init( void );
|
2013-07-31 23:00:36 +02:00
|
|
|
void vips_histogram_operation_init( void );
|
2014-01-03 17:23:44 +01:00
|
|
|
void vips_freqfilt_operation_init( void );
|
2014-01-03 18:03:06 +01:00
|
|
|
void vips_create_operation_init( void );
|
2014-01-17 12:18:05 +01:00
|
|
|
void vips_morphology_operation_init( void );
|
|
|
|
void vips_convolution_operation_init( void );
|
2014-01-21 20:35:13 +01:00
|
|
|
void vips_draw_operation_init( void );
|
2014-05-22 15:53:18 +02:00
|
|
|
void vips_mosaicing_operation_init( void );
|
2014-10-07 15:54:53 +02:00
|
|
|
void vips_cimg_operation_init( void );
|
2011-09-29 14:34:14 +02:00
|
|
|
|
2011-12-11 23:01:39 +01:00
|
|
|
guint64 vips__parse_size( const char *size_string );
|
2022-04-16 11:58:55 +02:00
|
|
|
/* TODO(kleisauke): VIPS_API is required by vipsthumbnail.
|
|
|
|
*/
|
|
|
|
VIPS_API
|
2014-09-27 12:37:28 +02:00
|
|
|
int vips__substitute( char *buf, size_t len, char *sub );
|
2011-09-22 18:53:23 +02:00
|
|
|
|
2014-07-25 19:06:52 +02:00
|
|
|
int vips_check_coding_labq( const char *domain, VipsImage *im );
|
|
|
|
int vips_check_coding_rad( const char *domain, VipsImage *im );
|
|
|
|
int vips_check_bands_3ormore( const char *domain, VipsImage *im );
|
2012-08-06 17:06:17 +02:00
|
|
|
|
2015-06-05 14:56:26 +02:00
|
|
|
int vips__byteswap_bool( VipsImage *in, VipsImage **out, gboolean swap );
|
|
|
|
|
2017-02-25 19:10:42 +01:00
|
|
|
char *vips__xml_properties( VipsImage *image );
|
2015-12-21 15:43:59 +01:00
|
|
|
|
2022-04-16 11:58:55 +02:00
|
|
|
/* TODO(kleisauke): VIPS_API is required by the poppler module.
|
|
|
|
*/
|
|
|
|
VIPS_API
|
2020-10-17 14:42:57 +02:00
|
|
|
void vips__premultiplied_bgra2rgba( guint32 * restrict p, int n );
|
2022-05-16 15:28:53 +02:00
|
|
|
VIPS_API
|
|
|
|
void vips__rgba2bgra_premultiplied( guint32 * restrict p, int n );
|
2020-10-17 14:42:57 +02:00
|
|
|
void vips__bgra2rgba( guint32 * restrict p, int n );
|
2018-05-16 16:08:21 +02:00
|
|
|
void vips__Lab2LabQ_vec( VipsPel *out, float *in, int width );
|
|
|
|
void vips__LabQ2Lab_vec( float *out, VipsPel *in, int width );
|
2016-02-11 10:06:09 +01:00
|
|
|
|
2016-03-22 13:26:45 +01:00
|
|
|
#ifdef DEBUG_LEAK
|
|
|
|
extern GQuark vips__image_pixels_quark;
|
|
|
|
#endif /*DEBUG_LEAK*/
|
|
|
|
|
|
|
|
/* With DEBUG_LEAK, hang one of these off each image and count pixels
|
|
|
|
* calculated.
|
|
|
|
*/
|
|
|
|
typedef struct _VipsImagePixels {
|
|
|
|
const char *nickname;
|
|
|
|
gint64 tpels; /* Number of pels we expect to calculate */
|
|
|
|
gint64 npels; /* Number of pels calculated so far */
|
|
|
|
} VipsImagePixels;
|
|
|
|
|
2016-07-06 15:56:28 +02:00
|
|
|
int vips__foreign_convert_saveable( VipsImage *in, VipsImage **ready,
|
2016-05-31 23:04:07 +02:00
|
|
|
VipsSaveable saveable, VipsBandFormat *format, VipsCoding *coding,
|
|
|
|
VipsArrayDouble *background );
|
|
|
|
|
2018-05-16 16:08:21 +02:00
|
|
|
int vips_foreign_load( const char *filename, VipsImage **out, ... )
|
|
|
|
__attribute__((sentinel));
|
|
|
|
int vips_foreign_save( VipsImage *in, const char *filename, ... )
|
|
|
|
__attribute__((sentinel));
|
|
|
|
|
2016-07-06 15:56:28 +02:00
|
|
|
int vips__image_intize( VipsImage *in, VipsImage **out );
|
|
|
|
|
2017-01-12 10:15:10 +01:00
|
|
|
void vips__reorder_init( void );
|
2017-01-12 15:06:54 +01:00
|
|
|
int vips__reorder_set_input( VipsImage *image, VipsImage **in );
|
2017-10-11 11:02:42 +02:00
|
|
|
void vips__reorder_clear( VipsImage *image );
|
2016-05-05 16:00:40 +02:00
|
|
|
|
2018-01-12 12:56:17 +01:00
|
|
|
/* Window manager API.
|
|
|
|
*/
|
|
|
|
VipsWindow *vips_window_take( VipsWindow *window,
|
|
|
|
VipsImage *im, int top, int height );
|
|
|
|
|
2019-01-10 23:48:21 +01:00
|
|
|
int vips__profile_set( VipsImage *image, const char *name );
|
|
|
|
|
2020-07-02 13:35:37 +02:00
|
|
|
int vips__lrmosaic( VipsImage *ref, VipsImage *sec, VipsImage *out,
|
2020-06-30 13:32:07 +02:00
|
|
|
int bandno,
|
|
|
|
int xref, int yref, int xsec, int ysec,
|
|
|
|
int hwindowsize, int hsearchsize,
|
|
|
|
int mwidth );
|
|
|
|
|
2020-07-02 13:35:37 +02:00
|
|
|
int vips__tbmosaic( VipsImage *ref, VipsImage *sec, VipsImage *out,
|
2020-06-30 13:32:07 +02:00
|
|
|
int bandno,
|
|
|
|
int xref, int yref, int xsec, int ysec,
|
|
|
|
int hwindowsize, int hsearchsize,
|
|
|
|
int mwidth );
|
|
|
|
|
2020-07-02 13:35:37 +02:00
|
|
|
int vips__correl( VipsImage *ref, VipsImage *sec,
|
|
|
|
int xref, int yref, int xsec, int ysec,
|
|
|
|
int hwindowsize, int hsearchsize,
|
|
|
|
double *correlation, int *x, int *y );
|
|
|
|
|
2009-08-16 17:00:08 +02:00
|
|
|
#ifdef __cplusplus
|
|
|
|
}
|
|
|
|
#endif /*__cplusplus*/
|
|
|
|
|
2011-03-28 18:18:06 +02:00
|
|
|
#endif /*VIPS_INTERNAL_H*/
|