From 7e23a140c49332a5674e2458fd45286419d8fde1 Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Fri, 24 Nov 2017 19:20:29 +0000 Subject: [PATCH 01/14] ~10% speedup by matching clipped alpha type with IN/OUT Improves unpremultiply precision for float/double input --- libvips/conversion/premultiply.c | 4 ++-- libvips/conversion/unpremultiply.c | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/libvips/conversion/premultiply.c b/libvips/conversion/premultiply.c index 897c97c3..f4a771ac 100644 --- a/libvips/conversion/premultiply.c +++ b/libvips/conversion/premultiply.c @@ -78,7 +78,7 @@ G_DEFINE_TYPE( VipsPremultiply, vips_premultiply, VIPS_TYPE_CONVERSION ); for( x = 0; x < width; x++ ) { \ IN alpha = p[bands - 1]; \ IN clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ - double nalpha = (double) clip_alpha / max_alpha; \ + OUT nalpha = (OUT) clip_alpha / max_alpha; \ \ for( i = 0; i < bands - 1; i++ ) \ q[i] = p[i] * nalpha; \ @@ -98,7 +98,7 @@ G_DEFINE_TYPE( VipsPremultiply, vips_premultiply, VIPS_TYPE_CONVERSION ); for( x = 0; x < width; x++ ) { \ IN alpha = p[3]; \ IN clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ - double nalpha = (double) clip_alpha / max_alpha; \ + OUT nalpha = (OUT) clip_alpha / max_alpha; \ \ q[0] = p[0] * nalpha; \ q[1] = p[1] * nalpha; \ diff --git a/libvips/conversion/unpremultiply.c b/libvips/conversion/unpremultiply.c index db118c1a..c2522f44 100644 --- a/libvips/conversion/unpremultiply.c +++ b/libvips/conversion/unpremultiply.c @@ -75,8 +75,8 @@ G_DEFINE_TYPE( VipsUnpremultiply, vips_unpremultiply, VIPS_TYPE_CONVERSION ); \ for( x = 0; x < width; x++ ) { \ IN alpha = p[bands - 1]; \ - int clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ - double nalpha = (double) clip_alpha / max_alpha; \ + IN clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ + OUT nalpha = (OUT) clip_alpha / max_alpha; \ \ if( clip_alpha == 0 ) \ for( i = 0; i < bands - 1; i++ ) \ @@ -99,8 +99,8 @@ G_DEFINE_TYPE( VipsUnpremultiply, vips_unpremultiply, VIPS_TYPE_CONVERSION ); \ for( x = 0; x < width; x++ ) { \ IN alpha = p[3]; \ - int clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ - double nalpha = (double) clip_alpha / max_alpha; \ + IN clip_alpha = VIPS_CLIP( 0, alpha, max_alpha ); \ + OUT nalpha = (OUT) clip_alpha / max_alpha; \ \ if( clip_alpha == 0 ) { \ q[0] = 0; \ From cac1b5b9c6ce7e688bc4c180fbbfdc8f76a6a9f8 Mon Sep 17 00:00:00 2001 From: Lovell Fuller Date: Fri, 24 Nov 2017 21:45:00 +0000 Subject: [PATCH 02/14] ~20% sRGB to scRGB speedup for common 3 and 4 band images --- libvips/colour/sRGB2scRGB.c | 148 ++++++++++++++++++++++++------------ 1 file changed, 101 insertions(+), 47 deletions(-) diff --git a/libvips/colour/sRGB2scRGB.c b/libvips/colour/sRGB2scRGB.c index 0b0e877e..7840bc2b 100644 --- a/libvips/colour/sRGB2scRGB.c +++ b/libvips/colour/sRGB2scRGB.c @@ -73,6 +73,24 @@ typedef VipsOperationClass VipssRGB2scRGBClass; G_DEFINE_TYPE( VipssRGB2scRGB, vips_sRGB2scRGB, VIPS_TYPE_OPERATION ); +/* Convert an 8-bit pixel. + */ +static void +vips_sRGB2scRGB_pel_rgb_8( float * restrict q, + VipsPel * restrict p ) +{ + const int r = p[0]; + const int g = p[1]; + const int b = p[2]; + + float R, G, B; + vips_col_sRGB2scRGB_8( r, g, b, &R, &G, &B ); + + q[0] = R; + q[1] = G; + q[2] = B; +} + /* Convert a buffer of 8-bit pixels. */ static void @@ -81,28 +99,51 @@ vips_sRGB2scRGB_line_8( float * restrict q, VipsPel * restrict p, { int i, j; - for( i = 0; i < width; i++ ) { - int r = p[0]; - int g = p[1]; - int b = p[2]; - - float R, G, B; - - p += 3; - - vips_col_sRGB2scRGB_8( r, g, b, &R, &G, &B ); - - q[0] = R; - q[1] = G; - q[2] = B; - - q += 3; - - for( j = 0; j < extra_bands; j++ ) - q[j] = p[j]; - p += extra_bands; - q += extra_bands; + if( extra_bands == 0 ) { + for( i = 0; i < width; i++ ) { + vips_sRGB2scRGB_pel_rgb_8(q, p); + p += 3; + q += 3; + } } + else if( extra_bands == 1 ) { + for( i = 0; i < width; i++ ) { + vips_sRGB2scRGB_pel_rgb_8(q, p); + q[3] = p[3]; + p += 4; + q += 4; + } + } + else { + for( i = 0; i < width; i++ ) { + vips_sRGB2scRGB_pel_rgb_8(q, p); + p += 3; + q += 3; + + for( j = 0; j < extra_bands; j++ ) + q[j] = p[j]; + p += extra_bands; + q += extra_bands; + } + } +} + +/* Convert a 16-bit pixel. + */ +static void +vips_sRGB2scRGB_pel_rgb_16( float * restrict q, + unsigned short * restrict p ) +{ + const int r = p[0]; + const int g = p[1]; + const int b = p[2]; + + float R, G, B; + vips_col_sRGB2scRGB_16( r, g, b, &R, &G, &B ); + + q[0] = R; + q[1] = G; + q[2] = B; } /* Convert a buffer of 16-bit pixels. @@ -113,27 +154,32 @@ vips_sRGB2scRGB_line_16( float * restrict q, unsigned short * restrict p, { int i, j; - for( i = 0; i < width; i++ ) { - int r = p[0]; - int g = p[1]; - int b = p[2]; + if( extra_bands == 0 ) { + for( i = 0; i < width; i++ ) { + vips_sRGB2scRGB_pel_rgb_16(q, p); + p += 3; + q += 3; + } + } + else if( extra_bands == 1 ) { + for( i = 0; i < width; i++ ) { + vips_sRGB2scRGB_pel_rgb_16(q, p); + q[3] = p[3] / 256.0; + p += 4; + q += 4; + } + } + else { + for( i = 0; i < width; i++ ) { + vips_sRGB2scRGB_pel_rgb_16(q, p); + p += 3; + q += 3; - float R, G, B; - - p += 3; - - vips_col_sRGB2scRGB_16( r, g, b, &R, &G, &B ); - - q[0] = R; - q[1] = G; - q[2] = B; - - q += 3; - - for( j = 0; j < extra_bands; j++ ) - q[j] = p[j] / 256.0; - p += extra_bands; - q += extra_bands; + for( j = 0; j < extra_bands; j++ ) + q[j] = p[j] / 256.0; + p += extra_bands; + q += extra_bands; + } } } @@ -152,17 +198,25 @@ vips_sRGB2scRGB_gen( VipsRegion *or, VIPS_GATE_START( "vips_sRGB2scRGB_gen: work" ); - for( y = 0; y < r->height; y++ ) { - VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); - float *q = (float *) - VIPS_REGION_ADDR( or, r->left, r->top + y ); + if( in->BandFmt == VIPS_FORMAT_UCHAR ) { + for( y = 0; y < r->height; y++ ) { + VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); + float *q = (float *) + VIPS_REGION_ADDR( or, r->left, r->top + y ); - if( in->BandFmt == VIPS_FORMAT_UCHAR ) vips_sRGB2scRGB_line_8( q, p, in->Bands - 3, r->width ); - else + } + } + else { + for( y = 0; y < r->height; y++ ) { + VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); + float *q = (float *) + VIPS_REGION_ADDR( or, r->left, r->top + y ); + vips_sRGB2scRGB_line_16( q, (unsigned short *) p, in->Bands - 3, r->width ); + } } VIPS_GATE_STOP( "vips_sRGB2scRGB_gen: work" ); From bb81113312840832c280aa835bacaa8fea1c0ef2 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Fri, 24 Nov 2017 22:12:41 +0000 Subject: [PATCH 03/14] add credits --- libvips/colour/sRGB2scRGB.c | 2 ++ libvips/conversion/premultiply.c | 2 ++ libvips/conversion/unpremultiply.c | 2 ++ 3 files changed, 6 insertions(+) diff --git a/libvips/colour/sRGB2scRGB.c b/libvips/colour/sRGB2scRGB.c index 7840bc2b..96d97409 100644 --- a/libvips/colour/sRGB2scRGB.c +++ b/libvips/colour/sRGB2scRGB.c @@ -17,6 +17,8 @@ * - add 16-bit alpha handling * 26/2/16 * - look for RGB16 tag, not just ushort, for the 16-bit path + * 24/11/17 lovell + * - special path for 3 and 4 band images */ /* diff --git a/libvips/conversion/premultiply.c b/libvips/conversion/premultiply.c index f4a771ac..d233de58 100644 --- a/libvips/conversion/premultiply.c +++ b/libvips/conversion/premultiply.c @@ -7,6 +7,8 @@ * - fix RGBA path * 25/5/16 * - max_alpha defaults to 65535 for RGB16/GREY16 + * 24/11/17 lovell + * - match normalised alpha to output type */ /* diff --git a/libvips/conversion/unpremultiply.c b/libvips/conversion/unpremultiply.c index c2522f44..f994809b 100644 --- a/libvips/conversion/unpremultiply.c +++ b/libvips/conversion/unpremultiply.c @@ -5,6 +5,8 @@ * * 25/5/16 * - max_alpha defaults to 65535 for RGB16/GREY16 + * 24/11/17 lovell + * - match normalised alpha to output type */ /* From cb128eb2580df07697589361545b8ae93e6c56a6 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Sat, 25 Nov 2017 12:09:01 +0000 Subject: [PATCH 04/14] apply --centre to upsize as well as down we were just using the --centre flag in resize to influence downsize behaviour -- use it to set upsize as well see https://github.com/jcupitt/libvips/issues/705 --- libvips/resample/resize.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/libvips/resample/resize.c b/libvips/resample/resize.c index 64a849ab..891ca5b8 100644 --- a/libvips/resample/resize.c +++ b/libvips/resample/resize.c @@ -26,6 +26,8 @@ * - moved the cache to shrinkv * 15/10/17 * - make LINEAR and CUBIC adaptive + * 25/11/17 + * - apply --centre to upsize as well, thanks tback */ /* @@ -235,6 +237,12 @@ vips_resize_build( VipsObject *object ) if( hscale > 1.0 || vscale > 1.0 ) { const char *nickname = vips_resize_interpolate( resize->kernel ); + + /* Input displacement. For centre sampling, shift by 0.5 down + * and right. + */ + double id = resize->centre ? 0.5 : 0.0; + VipsInterpolate *interpolate; if( !(interpolate = vips_interpolate_new( nickname )) ) @@ -257,6 +265,8 @@ vips_resize_build( VipsObject *object ) if( vips_affine( in, &t[4], hscale, 0.0, 0.0, vscale, "interpolate", interpolate, + "idx", id, + "idy", id, NULL ) ) return( -1 ); in = t[4]; @@ -265,6 +275,8 @@ vips_resize_build( VipsObject *object ) g_info( "residual scale %g", hscale ); if( vips_affine( in, &t[4], hscale, 0.0, 0.0, 1.0, "interpolate", interpolate, + "idx", id, + "idy", id, NULL ) ) return( -1 ); in = t[4]; @@ -273,6 +285,8 @@ vips_resize_build( VipsObject *object ) g_info( "residual scale %g", vscale ); if( vips_affine( in, &t[4], 1.0, 0.0, 0.0, vscale, "interpolate", interpolate, + "idx", id, + "idy", id, NULL ) ) return( -1 ); in = t[4]; From 7db13412e553e5f9e59e24f0fe3cfc074be51032 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Sat, 25 Nov 2017 14:22:20 +0000 Subject: [PATCH 05/14] deprecate centre option to resize it's now centre on upsize, corner on downsize see https://github.com/jcupitt/libvips/issues/705 --- ChangeLog | 1 + libvips/resample/resize.c | 31 +++++++++++++++---------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/ChangeLog b/ChangeLog index f3bdbdfa..06657cb3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -39,6 +39,7 @@ - fix nasty jaggies on the edges of affine output, thanks chregu - add gif-delay, gif-comment and gif-loop metadata - add dispose handling to gifload +- deprecate the "centre" option for vips_resize(): it's now automatic 29/8/17 started 8.5.9 - make --fail stop jpeg read on any libjpeg warning, thanks @mceachen diff --git a/libvips/resample/resize.c b/libvips/resample/resize.c index 891ca5b8..dee4fb33 100644 --- a/libvips/resample/resize.c +++ b/libvips/resample/resize.c @@ -27,7 +27,7 @@ * 15/10/17 * - make LINEAR and CUBIC adaptive * 25/11/17 - * - apply --centre to upsize as well, thanks tback + * - deprecate --centre ... it's now automatic, thanks tback */ /* @@ -86,13 +86,13 @@ typedef struct _VipsResize { double scale; double vscale; VipsKernel kernel; - gboolean centre; /* Deprecated. */ VipsInterpolate *interpolate; double idx; double idy; + gboolean centre; } VipsResize; @@ -215,7 +215,6 @@ vips_resize_build( VipsObject *object ) g_info( "residual reducev by %g", vscale ); if( vips_reducev( in, &t[2], 1.0 / vscale, "kernel", resize->kernel, - "centre", resize->centre, NULL ) ) return( -1 ); in = t[2]; @@ -226,7 +225,6 @@ vips_resize_build( VipsObject *object ) hscale ); if( vips_reduceh( in, &t[3], 1.0 / hscale, "kernel", resize->kernel, - "centre", resize->centre, NULL ) ) return( -1 ); in = t[3]; @@ -241,7 +239,7 @@ vips_resize_build( VipsObject *object ) /* Input displacement. For centre sampling, shift by 0.5 down * and right. */ - double id = resize->centre ? 0.5 : 0.0; + const double id = 0.5; VipsInterpolate *interpolate; @@ -338,13 +336,6 @@ vips_resize_class_init( VipsResizeClass *class ) G_STRUCT_OFFSET( VipsResize, kernel ), VIPS_TYPE_KERNEL, VIPS_KERNEL_LANCZOS3 ); - VIPS_ARG_BOOL( class, "centre", 7, - _( "Centre" ), - _( "Use centre sampling convention" ), - VIPS_ARGUMENT_OPTIONAL_INPUT, - G_STRUCT_OFFSET( VipsResize, centre ), - FALSE ); - /* We used to let people set the input offset so you could pick centre * or corner interpolation, but it's not clear this was useful. */ @@ -370,6 +361,15 @@ vips_resize_class_init( VipsResizeClass *class ) VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, G_STRUCT_OFFSET( VipsResize, interpolate ) ); + /* We used to let people pick centre or corner, but it's automatic now. + */ + VIPS_ARG_BOOL( class, "centre", 7, + _( "Centre" ), + _( "Use centre sampling convention" ), + VIPS_ARGUMENT_OPTIONAL_INPUT | VIPS_ARGUMENT_DEPRECATED, + G_STRUCT_OFFSET( VipsResize, centre ), + FALSE ); + } static void @@ -389,7 +389,6 @@ vips_resize_init( VipsResize *resize ) * * * @vscale: %gdouble vertical scale factor * * @kernel: #VipsKernel to reduce with - * * @centre: %gboolean use centre rather than corner sampling convention * * Resize an image. * @@ -399,12 +398,12 @@ vips_resize_init( VipsResize *resize ) * target size with vips_reduce(). How much is done by vips_shrink() vs. * vips_reduce() varies with the @kernel setting. * + * This operation uses corner convention for doansampling, and centre + * convention for upsampling. + * * vips_resize() normally uses #VIPS_KERNEL_LANCZOS3 for the final reduce, you * can change this with @kernel. * - * Set @centre to use centre rather than corner sampling convention. Centre - * convention can be useful to match the behaviour of other systems. - * * When upsizing (@scale > 1), the operation uses vips_affine() with * a #VipsInterpolate selected depending on @kernel. It will use * #VipsInterpolateBicubic for #VIPS_KERNEL_CUBIC and above. From ee4186ae8f09b8149ed42be683ef62c66b37c6af Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Sat, 25 Nov 2017 15:13:20 +0000 Subject: [PATCH 06/14] revise resize docs --- libvips/resample/resize.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/libvips/resample/resize.c b/libvips/resample/resize.c index dee4fb33..7b67a915 100644 --- a/libvips/resample/resize.c +++ b/libvips/resample/resize.c @@ -396,17 +396,16 @@ vips_resize_init( VipsResize *resize ) * image is block-shrunk with vips_shrink(), * then the image is shrunk again to the * target size with vips_reduce(). How much is done by vips_shrink() vs. - * vips_reduce() varies with the @kernel setting. - * - * This operation uses corner convention for doansampling, and centre - * convention for upsampling. + * vips_reduce() varies with the @kernel setting. Downsizing is done with + * corner convention. * * vips_resize() normally uses #VIPS_KERNEL_LANCZOS3 for the final reduce, you * can change this with @kernel. * * When upsizing (@scale > 1), the operation uses vips_affine() with * a #VipsInterpolate selected depending on @kernel. It will use - * #VipsInterpolateBicubic for #VIPS_KERNEL_CUBIC and above. + * #VipsInterpolateBicubic for #VIPS_KERNEL_CUBIC and above. It adds a + * 0.5 pixel displacement to the input pixels to get centre convention scaling. * * vips_resize() normally maintains the image aspect ratio. If you set * @vscale, that factor is used for the vertical scale and @scale for the From 0363ac6ab97f5b0836bac71983a3b14e033584ad Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Sat, 25 Nov 2017 21:23:10 +0000 Subject: [PATCH 07/14] fix indexed hist combine mode it now tracks which bins have been inited, so min works --- libvips/arithmetic/hist_find_indexed.c | 58 +++++++++++++++++++++----- 1 file changed, 48 insertions(+), 10 deletions(-) diff --git a/libvips/arithmetic/hist_find_indexed.c b/libvips/arithmetic/hist_find_indexed.c index bb5e6a89..03268562 100644 --- a/libvips/arithmetic/hist_find_indexed.c +++ b/libvips/arithmetic/hist_find_indexed.c @@ -62,6 +62,7 @@ typedef struct { int size; /* Length of bins */ int mx; /* Maximum value we have seen */ double *bins; /* All the bins! */ + int *init; /* TRUE for bin has been initialised */ } Histogram; typedef struct _VipsHistFindIndexed { @@ -108,12 +109,15 @@ histogram_new( VipsHistFindIndexed *indexed ) 256 : 65536; hist->mx = 0; hist->bins = NULL; + hist->init = NULL; if( !(hist->bins = VIPS_ARRAY( indexed, bands * hist->size, double )) || + !(hist->init = VIPS_ARRAY( indexed, hist->size, int )) || !(hist->reg = vips_region_new( indexed->index_ready )) ) return( NULL ); memset( hist->bins, 0, bands * hist->size * sizeof( double ) ); + memset( hist->init, 0, hist->size * sizeof( int ) ); return( hist ); } @@ -233,13 +237,34 @@ vips_hist_find_indexed_stop( VipsStatistic *statistic, void *seq ) Histogram *hist = indexed->hist; int bands = statistic->ready->Bands; - int i; + int i, j; + double *bins; + double *sub_bins; + int *init; + int *sub_init; - /* Add on sub-data. - */ hist->mx = VIPS_MAX( hist->mx, sub_hist->mx ); - for( i = 0; i < bands * hist->size; i++ ) - COMBINE( indexed->combine, hist->bins[i], sub_hist->bins[i] ); + + bins = hist->bins; + sub_bins = sub_hist->bins; + init = hist->init; + sub_init = sub_hist->init; + for( i = 0; i <= sub_hist->mx; i++ ) { + if( sub_init[i] ) { + if( init[i] ) + for( j = 0; j < bands; j++ ) + COMBINE( indexed->combine, + bins[j], sub_bins[j] ); + else { + for( j = 0; j < bands; j++ ) + bins[j] = sub_bins[j]; + init[i] = TRUE; + } + } + + bins += bands; + sub_bins += bands; + } VIPS_UNREF( sub_hist->reg ); @@ -253,10 +278,17 @@ vips_hist_find_indexed_stop( VipsStatistic *statistic, void *seq ) TYPE *tv = (TYPE *) in; \ \ for( x = 0; x < n; x++ ) { \ - double *bin = hist->bins + i[x] * bands; \ + int ix = i[x]; \ + double *bin = hist->bins + ix * bands; \ \ - for( z = 0; z < bands; z++ ) \ - COMBINE( indexed->combine, bin[z], tv[z] ); \ + if( hist->init[ix] ) \ + for( z = 0; z < bands; z++ ) \ + COMBINE( indexed->combine, bin[z], tv[z] ); \ + else { \ + for( z = 0; z < bands; z++ ) \ + bin[z] = tv[z]; \ + hist->init[ix] = TRUE; \ + } \ \ tv += bands; \ } \ @@ -312,8 +344,14 @@ vips_hist_find_indexed_uchar_scan( VipsHistFindIndexed *indexed, if( ix > mx ) \ mx = ix; \ \ - for( z = 0; z < bands; z++ ) \ - COMBINE( indexed->combine, bin[z], tv[z] ); \ + if( hist->init[ix] ) \ + for( z = 0; z < bands; z++ ) \ + COMBINE( indexed->combine, bin[z], tv[z] ); \ + else { \ + for( z = 0; z < bands; z++ ) \ + bin[z] = tv[z]; \ + hist->init[ix] = TRUE; \ + } \ \ tv += bands; \ } \ From 3754ddb947b9ac470effc2bc04a03c5562a77423 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Sun, 26 Nov 2017 12:01:30 +0000 Subject: [PATCH 08/14] remove centre from resize in thumbnail thanks kleis --- libvips/resample/thumbnail.c | 3 --- 1 file changed, 3 deletions(-) diff --git a/libvips/resample/thumbnail.c b/libvips/resample/thumbnail.c index 211d09d1..babf8233 100644 --- a/libvips/resample/thumbnail.c +++ b/libvips/resample/thumbnail.c @@ -416,11 +416,8 @@ vips_thumbnail_build( VipsObject *object ) vips_thumbnail_calculate_shrink( thumbnail, in->Xsize, in->Ysize, &hshrink, &vshrink ); - /* Use centre convention to better match imagemagick. - */ if( vips_resize( in, &t[4], 1.0 / hshrink, "vscale", 1.0 / vshrink, - "centre", TRUE, NULL ) ) return( -1 ); in = t[4]; From 406e228c9b79ff1421c1e1cc30bc49bd2a38e6a8 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Sun, 26 Nov 2017 15:24:40 +0000 Subject: [PATCH 09/14] vips_resize() is always centre convention it was corner for downsize, but should be centre to match imagemagick --- ChangeLog | 2 +- libvips/resample/resize.c | 6 ++++-- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 06657cb3..8152e23d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -39,7 +39,7 @@ - fix nasty jaggies on the edges of affine output, thanks chregu - add gif-delay, gif-comment and gif-loop metadata - add dispose handling to gifload -- deprecate the "centre" option for vips_resize(): it's now automatic +- deprecate the "centre" option for vips_resize(): it's now always on 29/8/17 started 8.5.9 - make --fail stop jpeg read on any libjpeg warning, thanks @mceachen diff --git a/libvips/resample/resize.c b/libvips/resample/resize.c index 7b67a915..5865d484 100644 --- a/libvips/resample/resize.c +++ b/libvips/resample/resize.c @@ -27,7 +27,7 @@ * 15/10/17 * - make LINEAR and CUBIC adaptive * 25/11/17 - * - deprecate --centre ... it's now automatic, thanks tback + * - deprecate --centre ... it's now always on, thanks tback */ /* @@ -215,6 +215,7 @@ vips_resize_build( VipsObject *object ) g_info( "residual reducev by %g", vscale ); if( vips_reducev( in, &t[2], 1.0 / vscale, "kernel", resize->kernel, + "centre", TRUE, NULL ) ) return( -1 ); in = t[2]; @@ -225,6 +226,7 @@ vips_resize_build( VipsObject *object ) hscale ); if( vips_reduceh( in, &t[3], 1.0 / hscale, "kernel", resize->kernel, + "centre", TRUE, NULL ) ) return( -1 ); in = t[3]; @@ -397,7 +399,7 @@ vips_resize_init( VipsResize *resize ) * then the image is shrunk again to the * target size with vips_reduce(). How much is done by vips_shrink() vs. * vips_reduce() varies with the @kernel setting. Downsizing is done with - * corner convention. + * centre convention. * * vips_resize() normally uses #VIPS_KERNEL_LANCZOS3 for the final reduce, you * can change this with @kernel. From 955a5a97ccd6b4fbd5203bca3758ea6f85f09bfe Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Sun, 26 Nov 2017 16:47:24 +0000 Subject: [PATCH 10/14] sRGB2scRGB uses the colour luts directly rather than going via a function that clips ... about 2x faster --- libvips/colour/LabQ2sRGB.c | 12 +++--- libvips/colour/pcolour.h | 11 ++++++ libvips/colour/sRGB2scRGB.c | 73 ++++++++++++++--------------------- libvips/include/vips/colour.h | 4 ++ 4 files changed, 50 insertions(+), 50 deletions(-) diff --git a/libvips/colour/LabQ2sRGB.c b/libvips/colour/LabQ2sRGB.c index f53e409a..80cfa49d 100644 --- a/libvips/colour/LabQ2sRGB.c +++ b/libvips/colour/LabQ2sRGB.c @@ -75,21 +75,21 @@ G_DEFINE_TYPE( VipsLabQ2sRGB, vips_LabQ2sRGB, VIPS_TYPE_COLOUR_CODE ); * * There's an extra element at the end to let us do a +1 for interpolation. */ -static int vips_Y2v_8[256 + 1]; +int vips_Y2v_8[256 + 1]; /* 8-bit sRGB -> linear lut. */ -static float vips_v2Y_8[256]; +float vips_v2Y_8[256]; /* 16-bit linear -> sRGB lut. * * There's an extra element at the end to let us do a +1 for interpolation. */ -static int vips_Y2v_16[65536 + 1]; +int vips_Y2v_16[65536 + 1]; /* 16-bit sRGB -> linear lut. */ -static float vips_v2Y_16[65536]; +float vips_v2Y_16[65536]; /* Do our own indexing of the arrays below to make sure we get efficient mults. */ @@ -166,7 +166,7 @@ calcul_tables_8( void *client ) return( NULL ); } -static void +void vips_col_make_tables_RGB_8( void ) { static GOnce once = G_ONCE_INIT; @@ -190,7 +190,7 @@ calcul_tables_16( void *client ) return( NULL ); } -static void +void vips_col_make_tables_RGB_16( void ) { static GOnce once = G_ONCE_INIT; diff --git a/libvips/colour/pcolour.h b/libvips/colour/pcolour.h index 07b14967..876a2305 100644 --- a/libvips/colour/pcolour.h +++ b/libvips/colour/pcolour.h @@ -205,6 +205,17 @@ GType vips_colour_difference_get_type( void ); void vips__pythagoras_line( VipsColour *colour, VipsPel *out, VipsPel **in, int width ); +/* Colour tables for Y<->v conversion. Call vips_col_make_tables_RGB_8() and + * vips_col_make_tables_RGB_16() before use to initialize. + */ +extern int vips_Y2v_8[256 + 1]; +extern float vips_v2Y_8[256]; +extern int vips_Y2v_16[65536 + 1]; +extern float vips_v2Y_16[65536]; + +void vips_col_make_tables_RGB_8( void ); +void vips_col_make_tables_RGB_16( void ); + #ifdef __cplusplus } #endif /*__cplusplus*/ diff --git a/libvips/colour/sRGB2scRGB.c b/libvips/colour/sRGB2scRGB.c index 96d97409..8d025319 100644 --- a/libvips/colour/sRGB2scRGB.c +++ b/libvips/colour/sRGB2scRGB.c @@ -75,24 +75,6 @@ typedef VipsOperationClass VipssRGB2scRGBClass; G_DEFINE_TYPE( VipssRGB2scRGB, vips_sRGB2scRGB, VIPS_TYPE_OPERATION ); -/* Convert an 8-bit pixel. - */ -static void -vips_sRGB2scRGB_pel_rgb_8( float * restrict q, - VipsPel * restrict p ) -{ - const int r = p[0]; - const int g = p[1]; - const int b = p[2]; - - float R, G, B; - vips_col_sRGB2scRGB_8( r, g, b, &R, &G, &B ); - - q[0] = R; - q[1] = G; - q[2] = B; -} - /* Convert a buffer of 8-bit pixels. */ static void @@ -103,22 +85,31 @@ vips_sRGB2scRGB_line_8( float * restrict q, VipsPel * restrict p, if( extra_bands == 0 ) { for( i = 0; i < width; i++ ) { - vips_sRGB2scRGB_pel_rgb_8(q, p); + q[0] = vips_v2Y_8[p[0]]; + q[1] = vips_v2Y_8[p[1]]; + q[2] = vips_v2Y_8[p[2]]; + p += 3; q += 3; } } else if( extra_bands == 1 ) { for( i = 0; i < width; i++ ) { - vips_sRGB2scRGB_pel_rgb_8(q, p); + q[0] = vips_v2Y_8[p[0]]; + q[1] = vips_v2Y_8[p[1]]; + q[2] = vips_v2Y_8[p[2]]; q[3] = p[3]; + p += 4; q += 4; } } else { for( i = 0; i < width; i++ ) { - vips_sRGB2scRGB_pel_rgb_8(q, p); + q[0] = vips_v2Y_8[p[0]]; + q[1] = vips_v2Y_8[p[1]]; + q[2] = vips_v2Y_8[p[2]]; + p += 3; q += 3; @@ -130,24 +121,6 @@ vips_sRGB2scRGB_line_8( float * restrict q, VipsPel * restrict p, } } -/* Convert a 16-bit pixel. - */ -static void -vips_sRGB2scRGB_pel_rgb_16( float * restrict q, - unsigned short * restrict p ) -{ - const int r = p[0]; - const int g = p[1]; - const int b = p[2]; - - float R, G, B; - vips_col_sRGB2scRGB_16( r, g, b, &R, &G, &B ); - - q[0] = R; - q[1] = G; - q[2] = B; -} - /* Convert a buffer of 16-bit pixels. */ static void @@ -158,22 +131,31 @@ vips_sRGB2scRGB_line_16( float * restrict q, unsigned short * restrict p, if( extra_bands == 0 ) { for( i = 0; i < width; i++ ) { - vips_sRGB2scRGB_pel_rgb_16(q, p); + q[0] = vips_v2Y_16[p[0]]; + q[1] = vips_v2Y_16[p[1]]; + q[2] = vips_v2Y_16[p[2]]; + p += 3; q += 3; } } else if( extra_bands == 1 ) { for( i = 0; i < width; i++ ) { - vips_sRGB2scRGB_pel_rgb_16(q, p); + q[0] = vips_v2Y_16[p[0]]; + q[1] = vips_v2Y_16[p[1]]; + q[2] = vips_v2Y_16[p[2]]; q[3] = p[3] / 256.0; + p += 4; q += 4; } } else { for( i = 0; i < width; i++ ) { - vips_sRGB2scRGB_pel_rgb_16(q, p); + q[0] = vips_v2Y_16[p[0]]; + q[1] = vips_v2Y_16[p[1]]; + q[2] = vips_v2Y_16[p[2]]; + p += 3; q += 3; @@ -201,16 +183,19 @@ vips_sRGB2scRGB_gen( VipsRegion *or, VIPS_GATE_START( "vips_sRGB2scRGB_gen: work" ); if( in->BandFmt == VIPS_FORMAT_UCHAR ) { + vips_col_make_tables_RGB_8(); + for( y = 0; y < r->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); float *q = (float *) VIPS_REGION_ADDR( or, r->left, r->top + y ); - vips_sRGB2scRGB_line_8( q, p, - in->Bands - 3, r->width ); + vips_sRGB2scRGB_line_8( q, p, in->Bands - 3, r->width ); } } else { + vips_col_make_tables_RGB_16(); + for( y = 0; y < r->height; y++ ) { VipsPel *p = VIPS_REGION_ADDR( ir, r->left, r->top + y ); float *q = (float *) diff --git a/libvips/include/vips/colour.h b/libvips/include/vips/colour.h index e3cd57f4..77404b9c 100644 --- a/libvips/include/vips/colour.h +++ b/libvips/include/vips/colour.h @@ -204,6 +204,10 @@ float vips_col_Chcmc2h( float C, float hcmc ); int vips_col_sRGB2scRGB_8( int r, int g, int b, float *R, float *G, float *B ); int vips_col_sRGB2scRGB_16( int r, int g, int b, float *R, float *G, float *B ); +int vips_col_sRGB2scRGB_8_noclip( int r, int g, int b, + float *R, float *G, float *B ); +int vips_col_sRGB2scRGB_16_noclip( int r, int g, int b, + float *R, float *G, float *B ); int vips_col_scRGB2XYZ( float R, float G, float B, float *X, float *Y, float *Z ); From 10eef89a7fd7cdd284de8001103b13853f61d7ab Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Sun, 26 Nov 2017 17:45:04 +0000 Subject: [PATCH 11/14] update c++ bindings --- ChangeLog | 2 +- cplusplus/include/vips/vips-operators.h | 4 +- cplusplus/vips-operators.cpp | 29 +- doc/Examples.xml | 288 +++------ libvipsCC/include/vips/vipsc++.h | 733 +++++++++++------------ libvipsCC/vipsc++.cc | 750 ++++++++++++------------ 6 files changed, 852 insertions(+), 954 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8152e23d..926fde9d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -28,7 +28,7 @@ - vips_image_write() severs all links between images, when it can ... thanks Warren and Nakilon - vector path for convolution is more accurate and can handle larger masks -- linear and cubic kernels for reduce are higer quality +- linear and cubic kernels for reduce are higher quality - added vips_value_set_blob_free() - "--size Nx" to vipsthumbnail was broken, thanks jrochkind - fix build with gcc 7 diff --git a/cplusplus/include/vips/vips-operators.h b/cplusplus/include/vips/vips-operators.h index 76adb9e8..913a1547 100644 --- a/cplusplus/include/vips/vips-operators.h +++ b/cplusplus/include/vips/vips-operators.h @@ -1,5 +1,5 @@ // headers for vips operations -// Fri 6 Oct 16:31:27 BST 2017 +// Sun 26 Nov 17:44:41 GMT 2017 // this file is generated automatically, do not edit! static void system( char * cmd_format , VOption *options = 0 ); @@ -47,6 +47,7 @@ VImage linecache( VOption *options = 0 ); VImage sequential( VOption *options = 0 ); VImage cache( VOption *options = 0 ); VImage embed( int x , int y , int width , int height , VOption *options = 0 ); +VImage gravity( VipsCompassDirection direction , int width , int height , VOption *options = 0 ); VImage flip( VipsDirection direction , VOption *options = 0 ); VImage insert( VImage sub , int x , int y , VOption *options = 0 ); VImage join( VImage in2 , VipsDirection direction , VOption *options = 0 ); @@ -232,6 +233,7 @@ VImage morph( VImage mask , VipsOperationMorphology morph , VOption *options = 0 VImage rank( int width , int height , int index , VOption *options = 0 ); double countlines( VipsDirection direction , VOption *options = 0 ); VImage labelregions( VOption *options = 0 ); +VImage fill_nearest( VOption *options = 0 ); void draw_rect( std::vector ink , int left , int top , int width , int height , VOption *options = 0 ); void draw_mask( std::vector ink , VImage mask , int x , int y , VOption *options = 0 ); void draw_line( std::vector ink , int x1 , int y1 , int x2 , int y2 , VOption *options = 0 ); diff --git a/cplusplus/vips-operators.cpp b/cplusplus/vips-operators.cpp index b0fdc783..02097139 100644 --- a/cplusplus/vips-operators.cpp +++ b/cplusplus/vips-operators.cpp @@ -1,5 +1,5 @@ // bodies for vips operations -// Fri 6 Oct 16:30:42 BST 2017 +// Sun 26 Nov 17:44:23 GMT 2017 // this file is generated automatically, do not edit! void VImage::system( char * cmd_format , VOption *options ) @@ -578,6 +578,21 @@ VImage VImage::embed( int x , int y , int width , int height , VOption *options return( out ); } +VImage VImage::gravity( VipsCompassDirection direction , int width , int height , VOption *options ) +{ + VImage out; + + call( "gravity" , + (options ? options : VImage::option()) -> + set( "in", *this ) -> + set( "out", &out ) -> + set( "direction", direction ) -> + set( "width", width ) -> + set( "height", height ) ); + + return( out ); +} + VImage VImage::flip( VipsDirection direction , VOption *options ) { VImage out; @@ -2863,6 +2878,18 @@ VImage VImage::labelregions( VOption *options ) return( mask ); } +VImage VImage::fill_nearest( VOption *options ) +{ + VImage out; + + call( "fill_nearest" , + (options ? options : VImage::option()) -> + set( "in", *this ) -> + set( "out", &out ) ); + + return( out ); +} + void VImage::draw_rect( std::vector ink , int left , int top , int width , int height , VOption *options ) { call( "draw_rect" , diff --git a/doc/Examples.xml b/doc/Examples.xml index aba6cdee..adb75910 100644 --- a/doc/Examples.xml +++ b/doc/Examples.xml @@ -22,16 +22,14 @@ #!/usr/bin/env python import sys -import gi -gi.require_version('Vips', '8.0') -from gi.repository import Vips +import pyvips left = 10 top = 10 width = 64 height = 64 -image = Vips.Image.new_from_file(sys.argv[1]) +image = pyvips.Image.new_from_file(sys.argv[1]) roi = image.crop(left, top, width, height) print 'average:', roi.avg() @@ -39,146 +37,80 @@ print 'average:', roi.avg() libvips and numpy - You can use Vips.Image.new_from_memory_copy() to make a vips image from an area of memory. The memory array needs to be laid out band-interleaved, as a set of scanlines, with no padding between lines. - - - This example moves an image from numpy to vips, but it’s simple to move the other way (use Vips.Image.write_to_memory()) to to move images into or out of PIL. + You can use pyvips.Image.new_from_memory() to make a vips image from an area of memory. The memory array needs to be laid out band-interleaved, as a set of scanlines, with no padding between lines. -#!/usr/bin/python +#!/usr/bin/env python -import numpy -import scipy.ndimage -import gi -gi.require_version('Vips', '8.0') -from gi.repository import Vips - -def np_dtype_to_vips_format(np_dtype): - ''' - Map numpy data types to VIPS data formats. - - Parameters - ---------- - np_dtype: numpy.dtype - - Returns - ------- - gi.overrides.Vips.BandFormat - ''' - lookup = { - numpy.dtype('int8'): Vips.BandFormat.CHAR, - numpy.dtype('uint8'): Vips.BandFormat.UCHAR, - numpy.dtype('int16'): Vips.BandFormat.SHORT, - numpy.dtype('uint16'): Vips.BandFormat.USHORT, - numpy.dtype('int32'): Vips.BandFormat.INT, - numpy.dtype('float32'): Vips.BandFormat.FLOAT, - numpy.dtype('float64'): Vips.BandFormat.DOUBLE - } - return lookup[np_dtype] - -def np_array_to_vips_image(array): - ''' - Convert a `numpy` array to a `Vips` image object. - - Parameters - ---------- - nparray: numpy.ndarray - - Returns - ------- - gi.overrides.Vips.image - ''' - # Look up what VIPS format corresponds to the type of this np array - vips_format = np_dtype_to_vips_format(array.dtype) - dims = array.shape - height = dims[0] - width = 1 - bands = 1 - if len(dims) > 1: - width = dims[1] - if len(dims) > 2: - bands = dims[2] - img = Vips.Image.new_from_memory_copy(array.data, - width, height, bands, vips_format) - - return img - -array = numpy.random.random((10,10)) -vips_image = np_array_to_vips_image(array) -print 'avg =', vips_image.avg() - -array = scipy.ndimage.imread("test.jpg") -vips_image = np_array_to_vips_image(array) -print 'avg =', vips_image.avg() -vips_image.write_to_file("test2.jpg") - - - - Watermarking - - This example renders a simple watermark on an image. Use it like this: - - -./watermark.py somefile.png output.jpg "hello <i>world</i>" - - - The text is rendered in transparent red pixels all over the image. It knows about transparency, CMYK, and 16-bit images. - - -#!/usr/bin/python - import sys -import gi -gi.require_version('Vips', '8.0') -from gi.repository import Vips - -im = Vips.Image.new_from_file(sys.argv[1], access = Vips.Access.SEQUENTIAL) - -text = Vips.Image.text(sys.argv[3], width = 500, dpi = 300) -text = (text * 0.3).cast("uchar") -text = text.embed(100, 100, text.width + 200, text.width + 200) -text = text.replicate(1 + im.width / text.width, 1 + im.height / text.height) -text = text.crop(0, 0, im.width, im.height) +import time -# we want to blend into the visible part of the image and leave any alpha -# channels untouched ... we need to split im into two parts +import pyvips +from PIL import Image +import numpy as np -# 16-bit images have 65535 as white -if im.format == Vips.BandFormat.USHORT: - white = 65535 -else: - white = 255 +if len(sys.argv) != 3: + print('usage: {0} input-filename output-filename'.format(sys.argv[0])) + sys.exit(-1) -# guess how many bands from the start of im contain visible colour information -if im.bands >= 4 and im.interpretation == Vips.Interpretation.CMYK: - # cmyk image ... put the white into the magenta channel - n_visible_bands = 4 - text_colour = [0, white, 0, 0] -elif im.bands >= 3: - # colour image ... put the white into the red channel - n_visible_bands = 3 - text_colour = [white, 0, 0] -else: - # mono image - n_visible_bands = 1 - text_colour = white +# map vips formats to np dtypes +format_to_dtype = { + 'uchar': np.uint8, + 'char': np.int8, + 'ushort': np.uint16, + 'short': np.int16, + 'uint': np.uint32, + 'int': np.int32, + 'float': np.float32, + 'double': np.float64, + 'complex': np.complex64, + 'dpcomplex': np.complex128, +} -# split into image and alpha -if im.bands - n_visible_bands > 0: - alpha = im.extract_band(n_visible_bands, n = im.bands - n_visible_bands) - im = im.extract_band(0, n = n_visible_bands) -else: - alpha = None +# map np dtypes to vips +dtype_to_format = { + 'uint8': 'uchar', + 'int8': 'char', + 'uint16': 'ushort', + 'int16': 'short', + 'uint32': 'uint', + 'int32': 'int', + 'float32': 'float', + 'float64': 'double', + 'complex64': 'complex', + 'complex128': 'dpcomplex', +} -# blend means do a smooth fade using the 0 - 255 values in the condition channel -# (test in this case) ... this will render the anit-aliasing -im = text.ifthenelse(text_colour, im, blend = True) +# load with PIL +start_pillow = time.time() +pillow_img = np.asarray(Image.open(sys.argv[1])) +print('Pillow Time:', time.time()-start_pillow) +print('original shape', pillow_img.shape) -# reattach alpha -if alpha: - im = im.bandjoin(alpha) - -im.write_to_file(sys.argv[2]) +# load with vips to a memory array +start_vips = time.time() +img = pyvips.Image.new_from_file(sys.argv[1], access='sequential') +mem_img = img.write_to_memory() + +# then make a numpy array from that buffer object +np_3d = np.ndarray(buffer=mem_img, + dtype=format_to_dtype[img.format], + shape=[img.height, img.width, img.bands]) + +print('Vips Time:', time.time()-start_vips) +print('final shape', np_3d.shape) + +# verify we have the same result +print('Sum of the Differences:', np.sum(np_3d-pillow_img)) + +# make a vips image from the numpy array +height, width, bands = np_3d.shape +linear = np_3d.reshape(width * height * bands) +vi = pyvips.Image.new_from_memory(linear.data, width, height, bands, + dtype_to_format[str(np_3d.dtype)]) + +# and write back to disc for checking +vi.write_to_file(sys.argv[2]) @@ -219,19 +151,13 @@ sys 0m8.936s import sys import random - -import gi -gi.require_version('Vips', '8.0') -from gi.repository import Vips - -# turn on progress reporting -Vips.progress_set(True) +import pyvips # this makes a 8-bit, mono image of 100,000 x 100,000 pixels, each pixel zero -im = Vips.Image.black(100000, 100000) +im = pyvips.Image.black(100000, 100000) for filename in sys.argv[2:]: - tile = Vips.Image.new_from_file(filename, access = Vips.Access.SEQUENTIAL) + tile = pyvips.Image.new_from_file(filename, access='sequential') im = im.insert(tile, random.randint(0, im.width - tile.width), @@ -240,82 +166,6 @@ for filename in sys.argv[2:]: im.write_to_file(sys.argv[1]) - - Rename DICOM images using header fields - - DICOM images commonly come in an awful directory hierarchy named as something like images/a/b/e/z04. There can be thousands of files and it can be very hard to find the one you want. - - - This utility copies files to a single flat directory, naming them using fields from the DICOM header. You can actually find stuff! Useful. - - -#!/usr/bin/env python - -import sys -import re -import os -import shutil - -import gi -gi.require_version('Vips', '8.0') -from gi.repository import Vips - -if len(sys.argv) != 3: - print 'rename DICOM files using tags from the header' - sys.exit(1) - -srcdir = sys.argv[1] -destdir = sys.argv[2] - -if not os.access(destdir, os.F_OK | os.R_OK | os.W_OK | os.X_OK): - os.mkdir(destdir) - -def get_field(vim, field): - result = vim.get_value(field) - - # remove any \n etc. - result = re.sub("\n", "", result) - - # remove any leading or trailing spaces - result = re.sub(" $", "", result) - result = re.sub("^ ", "", result) - - return result - -modality_name = "magick-dcm:Modality" -series_name = "magick-dcm:SeriesNumber" -instance_name = "magick-dcm:Instance(formerlyImage)Number" -date_name = "magick-dcm:ImageDate" - -for(dirpath, dirnames, filenames) in os.walk(srcdir): - for file in filenames: - path = os.path.join(dirpath, file) - - try: - vim = Vips.Image.new_from_file(path) - except Vips.Error, e: - print 'unable to open', path - print e - continue - - try: - modality = get_field(vim, modality_name) - series = get_field(vim, series_name) - instance = get_field(vim, instance_name) - date = get_field(vim, date_name) - except Vips.Error, e: - print 'unable to get fields from header', path - print e - continue - - match = re.match("(\d\d\d\d)(\d\d)(\d\d)", date) - date = match.group(1) + "." + match.group(2) + "." + match.group(3) - - newname = "lan." + modality + "." + instance + "." + date + ".IMA" - - shutil.copyfile(path, os.path.join(destdir, newname)) - - diff --git a/libvipsCC/include/vips/vipsc++.h b/libvipsCC/include/vips/vipsc++.h index 9b8ca94c..79299b35 100644 --- a/libvipsCC/include/vips/vipsc++.h +++ b/libvipsCC/include/vips/vipsc++.h @@ -1,418 +1,419 @@ // headers for package arithmetic // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -VImage abs(); -VImage acos(); -VImage add( VImage add_in2 ); -VImage asin(); -VImage atan(); -double avg(); -double point( char* point_interpolate, double point_x, double point_y, int point_band ); -double point_bilinear( double point_bilinear_x, double point_bilinear_y, int point_bilinear_band ); -VImage bandmean(); -VImage ceil(); -VImage cos(); -VImage cross_phase( VImage cross_phase_in2 ); -double deviate(); -VImage divide( VImage divide_in2 ); -VImage exp10(); -VImage expn( double expn_x ); -VImage expn( std::vector expn_v ); -VImage exp(); -VImage floor(); -VImage invert(); -VImage lin( double lin_a, double lin_b ); -static VImage linreg( std::vector linreg_ins, std::vector linreg_xs ); -VImage lin( std::vector lin_a, std::vector lin_b ); -VImage log10(); -VImage log(); -double max(); -std::complex maxpos(); -double maxpos_avg( double& maxpos_avg_y, double& maxpos_avg_out ); -VDMask measure( int measure_x, int measure_y, int measure_w, int measure_h, int measure_h_patches, int measure_v_patches ); -double min(); -std::complex minpos(); -VImage multiply( VImage multiply_in2 ); -VImage pow( double pow_x ); -VImage pow( std::vector pow_v ); -VImage recomb( VDMask recomb_matrix ); -VImage remainder( VImage remainder_in2 ); -VImage remainder( double remainder_x ); -VImage remainder( std::vector remainder_x ); -VImage rint(); -VImage sign(); -VImage sin(); -VDMask stats(); -VImage subtract( VImage subtract_in2 ); -VImage tan(); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +VImage abs() throw( VError ); +VImage acos() throw( VError ); +VImage add( VImage add_in2 ) throw( VError ); +VImage asin() throw( VError ); +VImage atan() throw( VError ); +double avg() throw( VError ); +double point( char* point_interpolate, double point_x, double point_y, int point_band ) throw( VError ); +double point_bilinear( double point_bilinear_x, double point_bilinear_y, int point_bilinear_band ) throw( VError ); +VImage bandmean() throw( VError ); +VImage ceil() throw( VError ); +VImage cos() throw( VError ); +VImage cross_phase( VImage cross_phase_in2 ) throw( VError ); +double deviate() throw( VError ); +VImage divide( VImage divide_in2 ) throw( VError ); +VImage exp10() throw( VError ); +VImage expn( double expn_x ) throw( VError ); +VImage expn( std::vector expn_v ) throw( VError ); +VImage exp() throw( VError ); +VImage floor() throw( VError ); +VImage invert() throw( VError ); +VImage lin( double lin_a, double lin_b ) throw( VError ); +static VImage linreg( std::vector linreg_ins, std::vector linreg_xs ) throw( VError ); +VImage lin( std::vector lin_a, std::vector lin_b ) throw( VError ); +VImage log10() throw( VError ); +VImage log() throw( VError ); +double max() throw( VError ); +std::complex maxpos() throw( VError ); +double maxpos_avg( double& maxpos_avg_y, double& maxpos_avg_out ) throw( VError ); +VDMask measure( int measure_x, int measure_y, int measure_w, int measure_h, int measure_h_patches, int measure_v_patches ) throw( VError ); +double min() throw( VError ); +std::complex minpos() throw( VError ); +VImage multiply( VImage multiply_in2 ) throw( VError ); +VImage pow( double pow_x ) throw( VError ); +VImage pow( std::vector pow_v ) throw( VError ); +VImage recomb( VDMask recomb_matrix ) throw( VError ); +VImage remainder( VImage remainder_in2 ) throw( VError ); +VImage remainder( double remainder_x ) throw( VError ); +VImage remainder( std::vector remainder_x ) throw( VError ); +VImage rint() throw( VError ); +VImage sign() throw( VError ); +VImage sin() throw( VError ); +VDMask stats() throw( VError ); +VImage subtract( VImage subtract_in2 ) throw( VError ); +VImage tan() throw( VError ); // headers for package cimg // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -VImage greyc( int greyc_iterations, double greyc_amplitude, double greyc_sharpness, double greyc_anisotropy, double greyc_alpha, double greyc_sigma, double greyc_dl, double greyc_da, double greyc_gauss_prec, int greyc_interpolation, int greyc_fast_approx ); -VImage greyc_mask( VImage greyc_mask_mask, int greyc_mask_iterations, double greyc_mask_amplitude, double greyc_mask_sharpness, double greyc_mask_anisotropy, double greyc_mask_alpha, double greyc_mask_sigma, double greyc_mask_dl, double greyc_mask_da, double greyc_mask_gauss_prec, int greyc_mask_interpolation, int greyc_mask_fast_approx ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +VImage greyc( int greyc_iterations, double greyc_amplitude, double greyc_sharpness, double greyc_anisotropy, double greyc_alpha, double greyc_sigma, double greyc_dl, double greyc_da, double greyc_gauss_prec, int greyc_interpolation, int greyc_fast_approx ) throw( VError ); +VImage greyc_mask( VImage greyc_mask_mask, int greyc_mask_iterations, double greyc_mask_amplitude, double greyc_mask_sharpness, double greyc_mask_anisotropy, double greyc_mask_alpha, double greyc_mask_sigma, double greyc_mask_dl, double greyc_mask_da, double greyc_mask_gauss_prec, int greyc_mask_interpolation, int greyc_mask_fast_approx ) throw( VError ); // headers for package colour // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -VImage LCh2Lab(); -VImage LCh2UCS(); -VImage Lab2LCh(); -VImage Lab2LabQ(); -VImage Lab2LabS(); -VImage Lab2UCS(); -VImage Lab2XYZ(); -VImage Lab2XYZ_temp( double Lab2XYZ_temp_X0, double Lab2XYZ_temp_Y0, double Lab2XYZ_temp_Z0 ); -VImage Lab2disp( VDisplay Lab2disp_disp ); -VImage LabQ2LabS(); -VImage LabQ2Lab(); -VImage LabQ2XYZ(); -VImage LabQ2disp( VDisplay LabQ2disp_disp ); -VImage LabS2LabQ(); -VImage LabS2Lab(); -VImage UCS2LCh(); -VImage UCS2Lab(); -VImage UCS2XYZ(); -VImage XYZ2Lab(); -VImage XYZ2Lab_temp( double XYZ2Lab_temp_X0, double XYZ2Lab_temp_Y0, double XYZ2Lab_temp_Z0 ); -VImage XYZ2UCS(); -VImage XYZ2Yxy(); -VImage XYZ2disp( VDisplay XYZ2disp_disp ); -VImage XYZ2sRGB(); -VImage Yxy2XYZ(); -VImage dE00_fromLab( VImage dE00_fromLab_in2 ); -VImage dECMC_fromLab( VImage dECMC_fromLab_in2 ); -VImage dECMC_fromdisp( VImage dECMC_fromdisp_in2, VDisplay dECMC_fromdisp_disp ); -VImage dE_fromLab( VImage dE_fromLab_in2 ); -VImage dE_fromXYZ( VImage dE_fromXYZ_in2 ); -VImage dE_fromdisp( VImage dE_fromdisp_in2, VDisplay dE_fromdisp_disp ); -VImage disp2Lab( VDisplay disp2Lab_disp ); -VImage disp2XYZ( VDisplay disp2XYZ_disp ); -VImage float2rad(); -VImage icc_ac2rc( char* icc_ac2rc_profile ); -VImage icc_export_depth( int icc_export_depth_depth, char* icc_export_depth_output_profile, int icc_export_depth_intent ); -VImage icc_import( char* icc_import_input_profile, int icc_import_intent ); -VImage icc_import_embedded( int icc_import_embedded_intent ); -VImage icc_transform( char* icc_transform_input_profile, char* icc_transform_output_profile, int icc_transform_intent ); -VImage lab_morph( VDMask lab_morph_greyscale, double lab_morph_L_offset, double lab_morph_L_scale, double lab_morph_a_scale, double lab_morph_b_scale ); -VImage rad2float(); -VImage sRGB2XYZ(); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +VImage LCh2Lab() throw( VError ); +VImage LCh2UCS() throw( VError ); +VImage Lab2LCh() throw( VError ); +VImage Lab2LabQ() throw( VError ); +VImage Lab2LabS() throw( VError ); +VImage Lab2UCS() throw( VError ); +VImage Lab2XYZ() throw( VError ); +VImage Lab2XYZ_temp( double Lab2XYZ_temp_X0, double Lab2XYZ_temp_Y0, double Lab2XYZ_temp_Z0 ) throw( VError ); +VImage Lab2disp( VDisplay Lab2disp_disp ) throw( VError ); +VImage LabQ2LabS() throw( VError ); +VImage LabQ2Lab() throw( VError ); +VImage LabQ2XYZ() throw( VError ); +VImage LabQ2disp( VDisplay LabQ2disp_disp ) throw( VError ); +VImage LabS2LabQ() throw( VError ); +VImage LabS2Lab() throw( VError ); +VImage UCS2LCh() throw( VError ); +VImage UCS2Lab() throw( VError ); +VImage UCS2XYZ() throw( VError ); +VImage XYZ2Lab() throw( VError ); +VImage XYZ2Lab_temp( double XYZ2Lab_temp_X0, double XYZ2Lab_temp_Y0, double XYZ2Lab_temp_Z0 ) throw( VError ); +VImage XYZ2UCS() throw( VError ); +VImage XYZ2Yxy() throw( VError ); +VImage XYZ2disp( VDisplay XYZ2disp_disp ) throw( VError ); +VImage XYZ2sRGB() throw( VError ); +VImage Yxy2XYZ() throw( VError ); +VImage dE00_fromLab( VImage dE00_fromLab_in2 ) throw( VError ); +VImage dECMC_fromLab( VImage dECMC_fromLab_in2 ) throw( VError ); +VImage dECMC_fromdisp( VImage dECMC_fromdisp_in2, VDisplay dECMC_fromdisp_disp ) throw( VError ); +VImage dE_fromLab( VImage dE_fromLab_in2 ) throw( VError ); +VImage dE_fromXYZ( VImage dE_fromXYZ_in2 ) throw( VError ); +VImage dE_fromdisp( VImage dE_fromdisp_in2, VDisplay dE_fromdisp_disp ) throw( VError ); +VImage disp2Lab( VDisplay disp2Lab_disp ) throw( VError ); +VImage disp2XYZ( VDisplay disp2XYZ_disp ) throw( VError ); +VImage float2rad() throw( VError ); +VImage icc_ac2rc( char* icc_ac2rc_profile ) throw( VError ); +VImage icc_export_depth( int icc_export_depth_depth, char* icc_export_depth_output_profile, int icc_export_depth_intent ) throw( VError ); +VImage icc_import( char* icc_import_input_profile, int icc_import_intent ) throw( VError ); +VImage icc_import_embedded( int icc_import_embedded_intent ) throw( VError ); +VImage icc_transform( char* icc_transform_input_profile, char* icc_transform_output_profile, int icc_transform_intent ) throw( VError ); +VImage lab_morph( VDMask lab_morph_greyscale, double lab_morph_L_offset, double lab_morph_L_scale, double lab_morph_a_scale, double lab_morph_b_scale ) throw( VError ); +VImage rad2float() throw( VError ); +VImage sRGB2XYZ() throw( VError ); // headers for package conversion // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -static VImage gaussnoise( int gaussnoise_xsize, int gaussnoise_ysize, double gaussnoise_mean, double gaussnoise_sigma ); -VImage bandjoin( VImage bandjoin_in2 ); -static VImage black( int black_x_size, int black_y_size, int black_bands ); -VImage c2amph(); -VImage c2imag(); -VImage c2real(); -VImage c2rect(); -VImage clip2fmt( int clip2fmt_ofmt ); -VImage copy(); -VImage copy_file(); -VImage copy_morph( int copy_morph_Bands, int copy_morph_BandFmt, int copy_morph_Coding ); -VImage copy_swap(); -VImage copy_set( int copy_set_Type, double copy_set_Xres, double copy_set_Yres, int copy_set_Xoffset, int copy_set_Yoffset ); -VImage extract_area( int extract_area_left, int extract_area_top, int extract_area_width, int extract_area_height ); -VImage extract_areabands( int extract_areabands_left, int extract_areabands_top, int extract_areabands_width, int extract_areabands_height, int extract_areabands_band, int extract_areabands_nbands ); -VImage extract_band( int extract_band_band ); -VImage extract_bands( int extract_bands_band, int extract_bands_nbands ); -VImage extract( int extract_left, int extract_top, int extract_width, int extract_height, int extract_band ); -VImage falsecolour(); -VImage fliphor(); -VImage flipver(); -static VImage gbandjoin( std::vector gbandjoin_in ); -VImage grid( int grid_tile_height, int grid_across, int grid_down ); -VImage insert( VImage insert_sub, int insert_x, int insert_y ); -VImage insert( VImage insert_sub, std::vector insert_x, std::vector insert_y ); -VImage insert_noexpand( VImage insert_noexpand_sub, int insert_noexpand_x, int insert_noexpand_y ); -VImage embed( int embed_type, int embed_x, int embed_y, int embed_width, int embed_height ); -VImage lrjoin( VImage lrjoin_in2 ); -VImage msb(); -VImage msb_band( int msb_band_band ); -VImage replicate( int replicate_across, int replicate_down ); -VImage ri2c( VImage ri2c_in2 ); -VImage rot180(); -VImage rot270(); -VImage rot90(); -VImage scale(); -VImage scaleps(); -VImage subsample( int subsample_xshrink, int subsample_yshrink ); -char* system( char* system_command ); -VImage system_image( char* system_image_in_format, char* system_image_out_format, char* system_image_command, char*& system_image_log ); -VImage tbjoin( VImage tbjoin_in2 ); -static VImage text( char* text_text, char* text_font, int text_width, int text_alignment, int text_dpi ); -VImage wrap( int wrap_x, int wrap_y ); -VImage zoom( int zoom_xfac, int zoom_yfac ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +static VImage gaussnoise( int gaussnoise_xsize, int gaussnoise_ysize, double gaussnoise_mean, double gaussnoise_sigma ) throw( VError ); +VImage bandjoin( VImage bandjoin_in2 ) throw( VError ); +static VImage black( int black_x_size, int black_y_size, int black_bands ) throw( VError ); +VImage c2amph() throw( VError ); +VImage c2imag() throw( VError ); +VImage c2real() throw( VError ); +VImage c2rect() throw( VError ); +VImage clip2fmt( int clip2fmt_ofmt ) throw( VError ); +VImage copy() throw( VError ); +VImage copy_file() throw( VError ); +VImage copy_morph( int copy_morph_Bands, int copy_morph_BandFmt, int copy_morph_Coding ) throw( VError ); +VImage copy_swap() throw( VError ); +VImage copy_set( int copy_set_Type, double copy_set_Xres, double copy_set_Yres, int copy_set_Xoffset, int copy_set_Yoffset ) throw( VError ); +VImage extract_area( int extract_area_left, int extract_area_top, int extract_area_width, int extract_area_height ) throw( VError ); +VImage extract_areabands( int extract_areabands_left, int extract_areabands_top, int extract_areabands_width, int extract_areabands_height, int extract_areabands_band, int extract_areabands_nbands ) throw( VError ); +VImage extract_band( int extract_band_band ) throw( VError ); +VImage extract_bands( int extract_bands_band, int extract_bands_nbands ) throw( VError ); +VImage extract( int extract_left, int extract_top, int extract_width, int extract_height, int extract_band ) throw( VError ); +VImage falsecolour() throw( VError ); +VImage fliphor() throw( VError ); +VImage flipver() throw( VError ); +static VImage gbandjoin( std::vector gbandjoin_in ) throw( VError ); +VImage grid( int grid_tile_height, int grid_across, int grid_down ) throw( VError ); +VImage insert( VImage insert_sub, int insert_x, int insert_y ) throw( VError ); +VImage insert( VImage insert_sub, std::vector insert_x, std::vector insert_y ) throw( VError ); +VImage insert_noexpand( VImage insert_noexpand_sub, int insert_noexpand_x, int insert_noexpand_y ) throw( VError ); +VImage embed( int embed_type, int embed_x, int embed_y, int embed_width, int embed_height ) throw( VError ); +VImage lrjoin( VImage lrjoin_in2 ) throw( VError ); +VImage msb() throw( VError ); +VImage msb_band( int msb_band_band ) throw( VError ); +VImage replicate( int replicate_across, int replicate_down ) throw( VError ); +VImage ri2c( VImage ri2c_in2 ) throw( VError ); +VImage rot180() throw( VError ); +VImage rot270() throw( VError ); +VImage rot90() throw( VError ); +VImage scale() throw( VError ); +VImage scaleps() throw( VError ); +VImage subsample( int subsample_xshrink, int subsample_yshrink ) throw( VError ); +char* system( char* system_command ) throw( VError ); +VImage system_image( char* system_image_in_format, char* system_image_out_format, char* system_image_command, char*& system_image_log ) throw( VError ); +VImage tbjoin( VImage tbjoin_in2 ) throw( VError ); +static VImage text( char* text_text, char* text_font, int text_width, int text_alignment, int text_dpi ) throw( VError ); +VImage wrap( int wrap_x, int wrap_y ) throw( VError ); +VImage zoom( int zoom_xfac, int zoom_yfac ) throw( VError ); // headers for package convolution // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -VImage aconvsep( VDMask aconvsep_matrix, int aconvsep_n_layers ); -VImage aconv( VDMask aconv_matrix, int aconv_n_layers, int aconv_cluster ); -VImage addgnoise( double addgnoise_sigma ); -VImage compass( VIMask compass_matrix ); -VImage contrast_surface( int contrast_surface_half_win_size, int contrast_surface_spacing ); -VImage conv( VIMask conv_matrix ); -VImage conv( VDMask conv_matrix ); -VImage convsep( VIMask convsep_matrix ); -VImage convsep( VDMask convsep_matrix ); -VImage fastcor( VImage fastcor_in2 ); -VImage gradcor( VImage gradcor_in2 ); -VImage gradient( VIMask gradient_matrix ); -VImage grad_x(); -VImage grad_y(); -VImage lindetect( VIMask lindetect_matrix ); -VImage sharpen( int sharpen_mask_size, double sharpen_x1, double sharpen_y2, double sharpen_y3, double sharpen_m1, double sharpen_m2 ); -VImage spcor( VImage spcor_in2 ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +VImage aconvsep( VDMask aconvsep_matrix, int aconvsep_n_layers ) throw( VError ); +VImage aconv( VDMask aconv_matrix, int aconv_n_layers, int aconv_cluster ) throw( VError ); +VImage addgnoise( double addgnoise_sigma ) throw( VError ); +VImage compass( VIMask compass_matrix ) throw( VError ); +VImage contrast_surface( int contrast_surface_half_win_size, int contrast_surface_spacing ) throw( VError ); +VImage conv( VIMask conv_matrix ) throw( VError ); +VImage conv( VDMask conv_matrix ) throw( VError ); +VImage convsep( VIMask convsep_matrix ) throw( VError ); +VImage convsep( VDMask convsep_matrix ) throw( VError ); +VImage fastcor( VImage fastcor_in2 ) throw( VError ); +VImage gradcor( VImage gradcor_in2 ) throw( VError ); +VImage gradient( VIMask gradient_matrix ) throw( VError ); +VImage grad_x() throw( VError ); +VImage grad_y() throw( VError ); +VImage lindetect( VIMask lindetect_matrix ) throw( VError ); +VImage sharpen( int sharpen_mask_size, double sharpen_x1, double sharpen_y2, double sharpen_y3, double sharpen_m1, double sharpen_m2 ) throw( VError ); +VImage spcor( VImage spcor_in2 ) throw( VError ); // headers for package deprecated // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -VImage argb2rgba(); -VImage flood_copy( int flood_copy_start_x, int flood_copy_start_y, std::vector flood_copy_ink ); -VImage flood_blob_copy( int flood_blob_copy_start_x, int flood_blob_copy_start_y, std::vector flood_blob_copy_ink ); -VImage flood_other_copy( VImage flood_other_copy_mark, int flood_other_copy_start_x, int flood_other_copy_start_y, int flood_other_copy_serial ); -VImage clip(); -VImage c2ps(); -VImage resize_linear( int resize_linear_X, int resize_linear_Y ); -VImage cmulnorm( VImage cmulnorm_in2 ); -VImage fav4( VImage fav4_in2, VImage fav4_in3, VImage fav4_in4 ); -VImage gadd( double gadd_a, double gadd_b, VImage gadd_in2, double gadd_c ); -VImage icc_export( char* icc_export_output_profile, int icc_export_intent ); -VImage litecor( VImage litecor_white, int litecor_clip, double litecor_factor ); -VImage affine( double affine_a, double affine_b, double affine_c, double affine_d, double affine_dx, double affine_dy, int affine_x, int affine_y, int affine_w, int affine_h ); -VImage clip2c(); -VImage clip2cm(); -VImage clip2d(); -VImage clip2dcm(); -VImage clip2f(); -VImage clip2i(); -VImage convsub( VIMask convsub_matrix, int convsub_xskip, int convsub_yskip ); -VImage convf( VDMask convf_matrix ); -VImage convsepf( VDMask convsepf_matrix ); -VImage clip2s(); -VImage clip2ui(); -VImage insertplace( VImage insertplace_sub, std::vector insertplace_x, std::vector insertplace_y ); -VImage clip2us(); -VImage slice( double slice_thresh1, double slice_thresh2 ); -VImage segment( int& segment_segments ); -void line( int line_x1, int line_y1, int line_x2, int line_y2, int line_pelval ); -VImage thresh( double thresh_threshold ); -VImage convf_raw( VDMask convf_raw_matrix ); -VImage conv_raw( VIMask conv_raw_matrix ); -VImage contrast_surface_raw( int contrast_surface_raw_half_win_size, int contrast_surface_raw_spacing ); -VImage convsepf_raw( VDMask convsepf_raw_matrix ); -VImage convsep_raw( VIMask convsep_raw_matrix ); -VImage fastcor_raw( VImage fastcor_raw_in2 ); -VImage gradcor_raw( VImage gradcor_raw_in2 ); -VImage spcor_raw( VImage spcor_raw_in2 ); -VImage lhisteq_raw( int lhisteq_raw_width, int lhisteq_raw_height ); -VImage stdif_raw( double stdif_raw_a, double stdif_raw_m0, double stdif_raw_b, double stdif_raw_s0, int stdif_raw_xw, int stdif_raw_yw ); -VImage rank_raw( int rank_raw_xsize, int rank_raw_ysize, int rank_raw_n ); -VImage dilate_raw( VIMask dilate_raw_mask ); -VImage erode_raw( VIMask erode_raw_mask ); -VImage similarity_area( double similarity_area_a, double similarity_area_b, double similarity_area_dx, double similarity_area_dy, int similarity_area_x, int similarity_area_y, int similarity_area_w, int similarity_area_h ); -VImage similarity( double similarity_a, double similarity_b, double similarity_dx, double similarity_dy ); -static VImage mask2vips( VDMask mask2vips_input ); -VDMask vips2mask(); -void insertplace( VImage insertplace_sub, int insertplace_x, int insertplace_y ); -void circle( int circle_cx, int circle_cy, int circle_radius, int circle_intensity ); -VImage andimage( VImage andimage_in2 ); -VImage andimage( int andimage_c ); -VImage andimage( std::vector andimage_vec ); -VImage orimage( VImage orimage_in2 ); -VImage orimage( int orimage_c ); -VImage orimage( std::vector orimage_vec ); -VImage eorimage( VImage eorimage_in2 ); -VImage eorimage( int eorimage_c ); -VImage eorimage( std::vector eorimage_vec ); -VImage shiftleft( std::vector shiftleft_vec ); -VImage shiftleft( int shiftleft_c ); -VImage shiftright( std::vector shiftright_vec ); -VImage shiftright( int shiftright_c ); -VImage blend( VImage blend_in1, VImage blend_in2 ); -VImage equal( VImage equal_in2 ); -VImage equal( std::vector equal_vec ); -VImage equal( double equal_c ); -VImage ifthenelse( VImage ifthenelse_in1, VImage ifthenelse_in2 ); -VImage less( VImage less_in2 ); -VImage less( std::vector less_vec ); -VImage less( double less_c ); -VImage lesseq( VImage lesseq_in2 ); -VImage lesseq( std::vector lesseq_vec ); -VImage lesseq( double lesseq_c ); -VImage more( VImage more_in2 ); -VImage more( std::vector more_vec ); -VImage more( double more_c ); -VImage moreeq( VImage moreeq_in2 ); -VImage moreeq( std::vector moreeq_vec ); -VImage moreeq( double moreeq_c ); -VImage notequal( VImage notequal_in2 ); -VImage notequal( std::vector notequal_vec ); -VImage notequal( double notequal_c ); -VImage quadratic( VImage quadratic_coeff ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +VImage argb2rgba() throw( VError ); +VImage flood_copy( int flood_copy_start_x, int flood_copy_start_y, std::vector flood_copy_ink ) throw( VError ); +VImage flood_blob_copy( int flood_blob_copy_start_x, int flood_blob_copy_start_y, std::vector flood_blob_copy_ink ) throw( VError ); +VImage flood_other_copy( VImage flood_other_copy_mark, int flood_other_copy_start_x, int flood_other_copy_start_y, int flood_other_copy_serial ) throw( VError ); +VImage clip() throw( VError ); +VImage c2ps() throw( VError ); +VImage resize_linear( int resize_linear_X, int resize_linear_Y ) throw( VError ); +VImage cmulnorm( VImage cmulnorm_in2 ) throw( VError ); +VImage fav4( VImage fav4_in2, VImage fav4_in3, VImage fav4_in4 ) throw( VError ); +VImage gadd( double gadd_a, double gadd_b, VImage gadd_in2, double gadd_c ) throw( VError ); +VImage icc_export( char* icc_export_output_profile, int icc_export_intent ) throw( VError ); +VImage litecor( VImage litecor_white, int litecor_clip, double litecor_factor ) throw( VError ); +VImage affine( double affine_a, double affine_b, double affine_c, double affine_d, double affine_dx, double affine_dy, int affine_x, int affine_y, int affine_w, int affine_h ) throw( VError ); +VImage clip2c() throw( VError ); +VImage clip2cm() throw( VError ); +VImage clip2d() throw( VError ); +VImage clip2dcm() throw( VError ); +VImage clip2f() throw( VError ); +VImage clip2i() throw( VError ); +VImage convsub( VIMask convsub_matrix, int convsub_xskip, int convsub_yskip ) throw( VError ); +VImage convf( VDMask convf_matrix ) throw( VError ); +VImage convsepf( VDMask convsepf_matrix ) throw( VError ); +VImage clip2s() throw( VError ); +VImage clip2ui() throw( VError ); +VImage insertplace( VImage insertplace_sub, std::vector insertplace_x, std::vector insertplace_y ) throw( VError ); +VImage clip2us() throw( VError ); +VImage slice( double slice_thresh1, double slice_thresh2 ) throw( VError ); +VImage segment( int& segment_segments ) throw( VError ); +void line( int line_x1, int line_y1, int line_x2, int line_y2, int line_pelval ) throw( VError ); +VImage thresh( double thresh_threshold ) throw( VError ); +VImage convf_raw( VDMask convf_raw_matrix ) throw( VError ); +VImage conv_raw( VIMask conv_raw_matrix ) throw( VError ); +VImage contrast_surface_raw( int contrast_surface_raw_half_win_size, int contrast_surface_raw_spacing ) throw( VError ); +VImage convsepf_raw( VDMask convsepf_raw_matrix ) throw( VError ); +VImage convsep_raw( VIMask convsep_raw_matrix ) throw( VError ); +VImage fastcor_raw( VImage fastcor_raw_in2 ) throw( VError ); +VImage gradcor_raw( VImage gradcor_raw_in2 ) throw( VError ); +VImage spcor_raw( VImage spcor_raw_in2 ) throw( VError ); +VImage lhisteq_raw( int lhisteq_raw_width, int lhisteq_raw_height ) throw( VError ); +VImage stdif_raw( double stdif_raw_a, double stdif_raw_m0, double stdif_raw_b, double stdif_raw_s0, int stdif_raw_xw, int stdif_raw_yw ) throw( VError ); +VImage rank_raw( int rank_raw_xsize, int rank_raw_ysize, int rank_raw_n ) throw( VError ); +VImage dilate_raw( VIMask dilate_raw_mask ) throw( VError ); +VImage erode_raw( VIMask erode_raw_mask ) throw( VError ); +VImage similarity_area( double similarity_area_a, double similarity_area_b, double similarity_area_dx, double similarity_area_dy, int similarity_area_x, int similarity_area_y, int similarity_area_w, int similarity_area_h ) throw( VError ); +VImage similarity( double similarity_a, double similarity_b, double similarity_dx, double similarity_dy ) throw( VError ); +static VImage mask2vips( VDMask mask2vips_input ) throw( VError ); +VDMask vips2mask() throw( VError ); +void insertplace( VImage insertplace_sub, int insertplace_x, int insertplace_y ) throw( VError ); +void circle( int circle_cx, int circle_cy, int circle_radius, int circle_intensity ) throw( VError ); +VImage andimage( VImage andimage_in2 ) throw( VError ); +VImage andimage( int andimage_c ) throw( VError ); +VImage andimage( std::vector andimage_vec ) throw( VError ); +VImage orimage( VImage orimage_in2 ) throw( VError ); +VImage orimage( int orimage_c ) throw( VError ); +VImage orimage( std::vector orimage_vec ) throw( VError ); +VImage eorimage( VImage eorimage_in2 ) throw( VError ); +VImage eorimage( int eorimage_c ) throw( VError ); +VImage eorimage( std::vector eorimage_vec ) throw( VError ); +VImage shiftleft( std::vector shiftleft_vec ) throw( VError ); +VImage shiftleft( int shiftleft_c ) throw( VError ); +VImage shiftright( std::vector shiftright_vec ) throw( VError ); +VImage shiftright( int shiftright_c ) throw( VError ); +VImage blend( VImage blend_in1, VImage blend_in2 ) throw( VError ); +VImage equal( VImage equal_in2 ) throw( VError ); +VImage equal( std::vector equal_vec ) throw( VError ); +VImage equal( double equal_c ) throw( VError ); +VImage ifthenelse( VImage ifthenelse_in1, VImage ifthenelse_in2 ) throw( VError ); +VImage less( VImage less_in2 ) throw( VError ); +VImage less( std::vector less_vec ) throw( VError ); +VImage less( double less_c ) throw( VError ); +VImage lesseq( VImage lesseq_in2 ) throw( VError ); +VImage lesseq( std::vector lesseq_vec ) throw( VError ); +VImage lesseq( double lesseq_c ) throw( VError ); +VImage more( VImage more_in2 ) throw( VError ); +VImage more( std::vector more_vec ) throw( VError ); +VImage more( double more_c ) throw( VError ); +VImage moreeq( VImage moreeq_in2 ) throw( VError ); +VImage moreeq( std::vector moreeq_vec ) throw( VError ); +VImage moreeq( double moreeq_c ) throw( VError ); +VImage notequal( VImage notequal_in2 ) throw( VError ); +VImage notequal( std::vector notequal_vec ) throw( VError ); +VImage notequal( double notequal_c ) throw( VError ); +VImage quadratic( VImage quadratic_coeff ) throw( VError ); // headers for package format // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -static VImage csv2vips( char* csv2vips_filename ); -static VImage fits2vips( char* fits2vips_in ); -static VImage jpeg2vips( char* jpeg2vips_in ); -static VImage magick2vips( char* magick2vips_in ); -static VImage png2vips( char* png2vips_in ); -static VImage exr2vips( char* exr2vips_in ); -static VImage ppm2vips( char* ppm2vips_filename ); -static VImage analyze2vips( char* analyze2vips_filename ); -static VImage tiff2vips( char* tiff2vips_in ); -void vips2csv( char* vips2csv_filename ); -void vips2dz( char* vips2dz_out ); -void vips2jpeg( char* vips2jpeg_out ); -void vips2mimejpeg( int vips2mimejpeg_qfac ); -void vips2png( char* vips2png_out ); -void vips2ppm( char* vips2ppm_filename ); -void vips2tiff( char* vips2tiff_out ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +static VImage csv2vips( char* csv2vips_filename ) throw( VError ); +static VImage fits2vips( char* fits2vips_in ) throw( VError ); +static VImage jpeg2vips( char* jpeg2vips_in ) throw( VError ); +static VImage magick2vips( char* magick2vips_in ) throw( VError ); +static VImage png2vips( char* png2vips_in ) throw( VError ); +static VImage exr2vips( char* exr2vips_in ) throw( VError ); +static VImage ppm2vips( char* ppm2vips_filename ) throw( VError ); +static VImage analyze2vips( char* analyze2vips_filename ) throw( VError ); +static VImage tiff2vips( char* tiff2vips_in ) throw( VError ); +void vips2csv( char* vips2csv_filename ) throw( VError ); +void vips2dz( char* vips2dz_out ) throw( VError ); +void vips2jpeg( char* vips2jpeg_out ) throw( VError ); +void vips2mimejpeg( int vips2mimejpeg_qfac ) throw( VError ); +void vips2png( char* vips2png_out ) throw( VError ); +void vips2ppm( char* vips2ppm_filename ) throw( VError ); +void vips2tiff( char* vips2tiff_out ) throw( VError ); // headers for package freq_filt // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -static VImage create_fmask( int create_fmask_width, int create_fmask_height, int create_fmask_type, double create_fmask_p1, double create_fmask_p2, double create_fmask_p3, double create_fmask_p4, double create_fmask_p5 ); -VImage disp_ps(); -VImage flt_image_freq( int flt_image_freq_type, double flt_image_freq_p1, double flt_image_freq_p2, double flt_image_freq_p3, double flt_image_freq_p4, double flt_image_freq_p5 ); -static VImage fractsurf( int fractsurf_size, double fractsurf_dimension ); -VImage freqflt( VImage freqflt_mask ); -VImage fwfft(); -VImage rotquad(); -VImage invfft(); -VImage phasecor_fft( VImage phasecor_fft_in2 ); -VImage invfftr(); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +static VImage create_fmask( int create_fmask_width, int create_fmask_height, int create_fmask_type, double create_fmask_p1, double create_fmask_p2, double create_fmask_p3, double create_fmask_p4, double create_fmask_p5 ) throw( VError ); +VImage disp_ps() throw( VError ); +VImage flt_image_freq( int flt_image_freq_type, double flt_image_freq_p1, double flt_image_freq_p2, double flt_image_freq_p3, double flt_image_freq_p4, double flt_image_freq_p5 ) throw( VError ); +static VImage fractsurf( int fractsurf_size, double fractsurf_dimension ) throw( VError ); +VImage freqflt( VImage freqflt_mask ) throw( VError ); +VImage fwfft() throw( VError ); +VImage rotquad() throw( VError ); +VImage invfft() throw( VError ); +VImage phasecor_fft( VImage phasecor_fft_in2 ) throw( VError ); +VImage invfftr() throw( VError ); // headers for package histograms_lut // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -VImage gammacorrect( double gammacorrect_exponent ); -VImage heq( int heq_band_number ); -VImage hist( int hist_band_number ); -VImage histcum(); -VImage histeq(); -VImage hist_indexed( VImage hist_indexed_value ); -VImage histgr( int histgr_band_number ); -VImage histnD( int histnD_bins ); -VImage histnorm(); -VImage histplot(); -VImage histspec( VImage histspec_ref ); -VImage hsp( VImage hsp_ref ); -static VImage identity( int identity_nbands ); -static VImage identity_ushort( int identity_ushort_nbands, int identity_ushort_size ); -int ismonotonic(); -VImage lhisteq( int lhisteq_width, int lhisteq_height ); -int mpercent( double mpercent_percent ); -static VImage invertlut( VDMask invertlut_measures, int invertlut_lut_size ); -static VImage buildlut( VDMask buildlut_xyes ); -VImage maplut( VImage maplut_lut ); -VImage project( VImage& project_vout ); -VImage stdif( double stdif_a, double stdif_m0, double stdif_b, double stdif_s0, int stdif_xw, int stdif_yw ); -VImage tone_analyse( double tone_analyse_Ps, double tone_analyse_Pm, double tone_analyse_Ph, double tone_analyse_S, double tone_analyse_M, double tone_analyse_H ); -static VImage tone_build( double tone_build_Lb, double tone_build_Lw, double tone_build_Ps, double tone_build_Pm, double tone_build_Ph, double tone_build_S, double tone_build_M, double tone_build_H ); -static VImage tone_build_range( int tone_build_range_in_max, int tone_build_range_out_max, double tone_build_range_Lb, double tone_build_range_Lw, double tone_build_range_Ps, double tone_build_range_Pm, double tone_build_range_Ph, double tone_build_range_S, double tone_build_range_M, double tone_build_range_H ); -VImage tone_map( VImage tone_map_lut ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +VImage gammacorrect( double gammacorrect_exponent ) throw( VError ); +VImage heq( int heq_band_number ) throw( VError ); +VImage hist( int hist_band_number ) throw( VError ); +VImage histcum() throw( VError ); +VImage histeq() throw( VError ); +VImage hist_indexed( VImage hist_indexed_value ) throw( VError ); +VImage histgr( int histgr_band_number ) throw( VError ); +VImage histnD( int histnD_bins ) throw( VError ); +VImage histnorm() throw( VError ); +VImage histplot() throw( VError ); +VImage histspec( VImage histspec_ref ) throw( VError ); +VImage hsp( VImage hsp_ref ) throw( VError ); +static VImage identity( int identity_nbands ) throw( VError ); +static VImage identity_ushort( int identity_ushort_nbands, int identity_ushort_size ) throw( VError ); +int ismonotonic() throw( VError ); +VImage lhisteq( int lhisteq_width, int lhisteq_height ) throw( VError ); +int mpercent( double mpercent_percent ) throw( VError ); +static VImage invertlut( VDMask invertlut_measures, int invertlut_lut_size ) throw( VError ); +static VImage buildlut( VDMask buildlut_xyes ) throw( VError ); +VImage maplut( VImage maplut_lut ) throw( VError ); +VImage project( VImage& project_vout ) throw( VError ); +VImage stdif( double stdif_a, double stdif_m0, double stdif_b, double stdif_s0, int stdif_xw, int stdif_yw ) throw( VError ); +VImage tone_analyse( double tone_analyse_Ps, double tone_analyse_Pm, double tone_analyse_Ph, double tone_analyse_S, double tone_analyse_M, double tone_analyse_H ) throw( VError ); +static VImage tone_build( double tone_build_Lb, double tone_build_Lw, double tone_build_Ps, double tone_build_Pm, double tone_build_Ph, double tone_build_S, double tone_build_M, double tone_build_H ) throw( VError ); +static VImage tone_build_range( int tone_build_range_in_max, int tone_build_range_out_max, double tone_build_range_Lb, double tone_build_range_Lw, double tone_build_range_Ps, double tone_build_range_Pm, double tone_build_range_Ph, double tone_build_range_S, double tone_build_range_M, double tone_build_range_H ) throw( VError ); +VImage tone_map( VImage tone_map_lut ) throw( VError ); // headers for package inplace // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -void draw_circle( int draw_circle_cx, int draw_circle_cy, int draw_circle_radius, int draw_circle_fill, std::vector draw_circle_ink ); -void draw_rect( int draw_rect_left, int draw_rect_top, int draw_rect_width, int draw_rect_height, int draw_rect_fill, std::vector draw_rect_ink ); -void draw_line( int draw_line_x1, int draw_line_y1, int draw_line_x2, int draw_line_y2, std::vector draw_line_ink ); -void draw_point( int draw_point_x, int draw_point_y, std::vector draw_point_ink ); -void draw_smudge( int draw_smudge_left, int draw_smudge_top, int draw_smudge_width, int draw_smudge_height ); -void draw_flood( int draw_flood_x, int draw_flood_y, std::vector draw_flood_ink ); -void draw_flood_blob( int draw_flood_blob_x, int draw_flood_blob_y, std::vector draw_flood_blob_ink ); -void draw_flood_other( VImage draw_flood_other_test, int draw_flood_other_x, int draw_flood_other_y, int draw_flood_other_serial ); -void draw_image( VImage draw_image_sub, int draw_image_x, int draw_image_y ); -void draw_mask( VImage draw_mask_mask, int draw_mask_x, int draw_mask_y, std::vector draw_mask_ink ); -VImage line( VImage line_mask, VImage line_ink, std::vector line_x1, std::vector line_y1, std::vector line_x2, std::vector line_y2 ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +void draw_circle( int draw_circle_cx, int draw_circle_cy, int draw_circle_radius, int draw_circle_fill, std::vector draw_circle_ink ) throw( VError ); +void draw_rect( int draw_rect_left, int draw_rect_top, int draw_rect_width, int draw_rect_height, int draw_rect_fill, std::vector draw_rect_ink ) throw( VError ); +void draw_line( int draw_line_x1, int draw_line_y1, int draw_line_x2, int draw_line_y2, std::vector draw_line_ink ) throw( VError ); +void draw_point( int draw_point_x, int draw_point_y, std::vector draw_point_ink ) throw( VError ); +void draw_smudge( int draw_smudge_left, int draw_smudge_top, int draw_smudge_width, int draw_smudge_height ) throw( VError ); +void draw_flood( int draw_flood_x, int draw_flood_y, std::vector draw_flood_ink ) throw( VError ); +void draw_flood_blob( int draw_flood_blob_x, int draw_flood_blob_y, std::vector draw_flood_blob_ink ) throw( VError ); +void draw_flood_other( VImage draw_flood_other_test, int draw_flood_other_x, int draw_flood_other_y, int draw_flood_other_serial ) throw( VError ); +void draw_image( VImage draw_image_sub, int draw_image_x, int draw_image_y ) throw( VError ); +void draw_mask( VImage draw_mask_mask, int draw_mask_x, int draw_mask_y, std::vector draw_mask_ink ) throw( VError ); +VImage line( VImage line_mask, VImage line_ink, std::vector line_x1, std::vector line_y1, std::vector line_x2, std::vector line_y2 ) throw( VError ); // headers for package iofuncs // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -static VImage binfile( char* binfile_filename, int binfile_width, int binfile_height, int binfile_bands, int binfile_offset ); -VImage cache( int cache_tile_width, int cache_tile_height, int cache_max_tiles ); -char* getext(); -int header_get_typeof( char* header_get_typeof_field ); -int header_int( char* header_int_field ); -double header_double( char* header_double_field ); -char* header_string( char* header_string_field ); -char* history_get(); -void printdesc(); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +static VImage binfile( char* binfile_filename, int binfile_width, int binfile_height, int binfile_bands, int binfile_offset ) throw( VError ); +VImage cache( int cache_tile_width, int cache_tile_height, int cache_max_tiles ) throw( VError ); +VImage tile_cache_random( int tile_cache_random_tile_width, int tile_cache_random_tile_height, int tile_cache_random_max_tiles ) throw( VError ); +char* getext() throw( VError ); +int header_get_typeof( char* header_get_typeof_field ) throw( VError ); +int header_int( char* header_int_field ) throw( VError ); +double header_double( char* header_double_field ) throw( VError ); +char* header_string( char* header_string_field ) throw( VError ); +char* history_get() throw( VError ); +void printdesc() throw( VError ); // headers for package mask // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // headers for package morphology // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -double cntlines( int cntlines_direction ); -VImage dilate( VIMask dilate_mask ); -VImage rank( int rank_xsize, int rank_ysize, int rank_n ); -static VImage rank_image( std::vector rank_image_in, int rank_image_index ); -static VImage maxvalue( std::vector maxvalue_in ); -VImage label_regions( int& label_regions_segments ); -VImage zerox( int zerox_flag ); -VImage erode( VIMask erode_mask ); -VImage profile( int profile_direction ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +double cntlines( int cntlines_direction ) throw( VError ); +VImage dilate( VIMask dilate_mask ) throw( VError ); +VImage rank( int rank_xsize, int rank_ysize, int rank_n ) throw( VError ); +static VImage rank_image( std::vector rank_image_in, int rank_image_index ) throw( VError ); +static VImage maxvalue( std::vector maxvalue_in ) throw( VError ); +VImage label_regions( int& label_regions_segments ) throw( VError ); +VImage zerox( int zerox_flag ) throw( VError ); +VImage erode( VIMask erode_mask ) throw( VError ); +VImage profile( int profile_direction ) throw( VError ); // headers for package mosaicing // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -VImage align_bands(); -double correl( VImage correl_sec, int correl_xref, int correl_yref, int correl_xsec, int correl_ysec, int correl_hwindowsize, int correl_hsearchsize, int& correl_x, int& correl_y ); -int _find_lroverlap( VImage _find_lroverlap_sec, int _find_lroverlap_bandno, int _find_lroverlap_xr, int _find_lroverlap_yr, int _find_lroverlap_xs, int _find_lroverlap_ys, int _find_lroverlap_halfcorrelation, int _find_lroverlap_halfarea, int& _find_lroverlap_dy0, double& _find_lroverlap_scale1, double& _find_lroverlap_angle1, double& _find_lroverlap_dx1, double& _find_lroverlap_dy1 ); -int _find_tboverlap( VImage _find_tboverlap_sec, int _find_tboverlap_bandno, int _find_tboverlap_xr, int _find_tboverlap_yr, int _find_tboverlap_xs, int _find_tboverlap_ys, int _find_tboverlap_halfcorrelation, int _find_tboverlap_halfarea, int& _find_tboverlap_dy0, double& _find_tboverlap_scale1, double& _find_tboverlap_angle1, double& _find_tboverlap_dx1, double& _find_tboverlap_dy1 ); -VImage global_balance( double global_balance_gamma ); -VImage global_balancef( double global_balancef_gamma ); -VImage lrmerge( VImage lrmerge_sec, int lrmerge_dx, int lrmerge_dy, int lrmerge_mwidth ); -VImage lrmerge1( VImage lrmerge1_sec, int lrmerge1_xr1, int lrmerge1_yr1, int lrmerge1_xs1, int lrmerge1_ys1, int lrmerge1_xr2, int lrmerge1_yr2, int lrmerge1_xs2, int lrmerge1_ys2, int lrmerge1_mwidth ); -VImage lrmosaic( VImage lrmosaic_sec, int lrmosaic_bandno, int lrmosaic_xr, int lrmosaic_yr, int lrmosaic_xs, int lrmosaic_ys, int lrmosaic_halfcorrelation, int lrmosaic_halfarea, int lrmosaic_balancetype, int lrmosaic_mwidth ); -VImage lrmosaic1( VImage lrmosaic1_sec, int lrmosaic1_bandno, int lrmosaic1_xr1, int lrmosaic1_yr1, int lrmosaic1_xs1, int lrmosaic1_ys1, int lrmosaic1_xr2, int lrmosaic1_yr2, int lrmosaic1_xs2, int lrmosaic1_ys2, int lrmosaic1_halfcorrelation, int lrmosaic1_halfarea, int lrmosaic1_balancetype, int lrmosaic1_mwidth ); -VImage match_linear( VImage match_linear_sec, int match_linear_xref1, int match_linear_yref1, int match_linear_xsec1, int match_linear_ysec1, int match_linear_xref2, int match_linear_yref2, int match_linear_xsec2, int match_linear_ysec2 ); -VImage match_linear_search( VImage match_linear_search_sec, int match_linear_search_xref1, int match_linear_search_yref1, int match_linear_search_xsec1, int match_linear_search_ysec1, int match_linear_search_xref2, int match_linear_search_yref2, int match_linear_search_xsec2, int match_linear_search_ysec2, int match_linear_search_hwindowsize, int match_linear_search_hsearchsize ); -double maxpos_subpel( double& maxpos_subpel_y ); -VImage remosaic( char* remosaic_old_str, char* remosaic_new_str ); -VImage tbmerge( VImage tbmerge_sec, int tbmerge_dx, int tbmerge_dy, int tbmerge_mwidth ); -VImage tbmerge1( VImage tbmerge1_sec, int tbmerge1_xr1, int tbmerge1_yr1, int tbmerge1_xs1, int tbmerge1_ys1, int tbmerge1_xr2, int tbmerge1_yr2, int tbmerge1_xs2, int tbmerge1_ys2, int tbmerge1_mwidth ); -VImage tbmosaic( VImage tbmosaic_sec, int tbmosaic_bandno, int tbmosaic_xr, int tbmosaic_yr, int tbmosaic_xs, int tbmosaic_ys, int tbmosaic_halfcorrelation, int tbmosaic_halfarea, int tbmosaic_balancetype, int tbmosaic_mwidth ); -VImage tbmosaic1( VImage tbmosaic1_sec, int tbmosaic1_bandno, int tbmosaic1_xr1, int tbmosaic1_yr1, int tbmosaic1_xs1, int tbmosaic1_ys1, int tbmosaic1_xr2, int tbmosaic1_yr2, int tbmosaic1_xs2, int tbmosaic1_ys2, int tbmosaic1_halfcorrelation, int tbmosaic1_halfarea, int tbmosaic1_balancetype, int tbmosaic1_mwidth ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +VImage align_bands() throw( VError ); +double correl( VImage correl_sec, int correl_xref, int correl_yref, int correl_xsec, int correl_ysec, int correl_hwindowsize, int correl_hsearchsize, int& correl_x, int& correl_y ) throw( VError ); +int _find_lroverlap( VImage _find_lroverlap_sec, int _find_lroverlap_bandno, int _find_lroverlap_xr, int _find_lroverlap_yr, int _find_lroverlap_xs, int _find_lroverlap_ys, int _find_lroverlap_halfcorrelation, int _find_lroverlap_halfarea, int& _find_lroverlap_dy0, double& _find_lroverlap_scale1, double& _find_lroverlap_angle1, double& _find_lroverlap_dx1, double& _find_lroverlap_dy1 ) throw( VError ); +int _find_tboverlap( VImage _find_tboverlap_sec, int _find_tboverlap_bandno, int _find_tboverlap_xr, int _find_tboverlap_yr, int _find_tboverlap_xs, int _find_tboverlap_ys, int _find_tboverlap_halfcorrelation, int _find_tboverlap_halfarea, int& _find_tboverlap_dy0, double& _find_tboverlap_scale1, double& _find_tboverlap_angle1, double& _find_tboverlap_dx1, double& _find_tboverlap_dy1 ) throw( VError ); +VImage global_balance( double global_balance_gamma ) throw( VError ); +VImage global_balancef( double global_balancef_gamma ) throw( VError ); +VImage lrmerge( VImage lrmerge_sec, int lrmerge_dx, int lrmerge_dy, int lrmerge_mwidth ) throw( VError ); +VImage lrmerge1( VImage lrmerge1_sec, int lrmerge1_xr1, int lrmerge1_yr1, int lrmerge1_xs1, int lrmerge1_ys1, int lrmerge1_xr2, int lrmerge1_yr2, int lrmerge1_xs2, int lrmerge1_ys2, int lrmerge1_mwidth ) throw( VError ); +VImage lrmosaic( VImage lrmosaic_sec, int lrmosaic_bandno, int lrmosaic_xr, int lrmosaic_yr, int lrmosaic_xs, int lrmosaic_ys, int lrmosaic_halfcorrelation, int lrmosaic_halfarea, int lrmosaic_balancetype, int lrmosaic_mwidth ) throw( VError ); +VImage lrmosaic1( VImage lrmosaic1_sec, int lrmosaic1_bandno, int lrmosaic1_xr1, int lrmosaic1_yr1, int lrmosaic1_xs1, int lrmosaic1_ys1, int lrmosaic1_xr2, int lrmosaic1_yr2, int lrmosaic1_xs2, int lrmosaic1_ys2, int lrmosaic1_halfcorrelation, int lrmosaic1_halfarea, int lrmosaic1_balancetype, int lrmosaic1_mwidth ) throw( VError ); +VImage match_linear( VImage match_linear_sec, int match_linear_xref1, int match_linear_yref1, int match_linear_xsec1, int match_linear_ysec1, int match_linear_xref2, int match_linear_yref2, int match_linear_xsec2, int match_linear_ysec2 ) throw( VError ); +VImage match_linear_search( VImage match_linear_search_sec, int match_linear_search_xref1, int match_linear_search_yref1, int match_linear_search_xsec1, int match_linear_search_ysec1, int match_linear_search_xref2, int match_linear_search_yref2, int match_linear_search_xsec2, int match_linear_search_ysec2, int match_linear_search_hwindowsize, int match_linear_search_hsearchsize ) throw( VError ); +double maxpos_subpel( double& maxpos_subpel_y ) throw( VError ); +VImage remosaic( char* remosaic_old_str, char* remosaic_new_str ) throw( VError ); +VImage tbmerge( VImage tbmerge_sec, int tbmerge_dx, int tbmerge_dy, int tbmerge_mwidth ) throw( VError ); +VImage tbmerge1( VImage tbmerge1_sec, int tbmerge1_xr1, int tbmerge1_yr1, int tbmerge1_xs1, int tbmerge1_ys1, int tbmerge1_xr2, int tbmerge1_yr2, int tbmerge1_xs2, int tbmerge1_ys2, int tbmerge1_mwidth ) throw( VError ); +VImage tbmosaic( VImage tbmosaic_sec, int tbmosaic_bandno, int tbmosaic_xr, int tbmosaic_yr, int tbmosaic_xs, int tbmosaic_ys, int tbmosaic_halfcorrelation, int tbmosaic_halfarea, int tbmosaic_balancetype, int tbmosaic_mwidth ) throw( VError ); +VImage tbmosaic1( VImage tbmosaic1_sec, int tbmosaic1_bandno, int tbmosaic1_xr1, int tbmosaic1_yr1, int tbmosaic1_xs1, int tbmosaic1_ys1, int tbmosaic1_xr2, int tbmosaic1_yr2, int tbmosaic1_xs2, int tbmosaic1_ys2, int tbmosaic1_halfcorrelation, int tbmosaic1_halfarea, int tbmosaic1_balancetype, int tbmosaic1_mwidth ) throw( VError ); // headers for package other // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -VImage benchmark(); -double benchmark2(); -VImage benchmarkn( int benchmarkn_n ); -static VImage eye( int eye_xsize, int eye_ysize, double eye_factor ); -static VImage grey( int grey_xsize, int grey_ysize ); -static VImage feye( int feye_xsize, int feye_ysize, double feye_factor ); -static VImage fgrey( int fgrey_xsize, int fgrey_ysize ); -static VImage fzone( int fzone_size ); -static VImage make_xy( int make_xy_xsize, int make_xy_ysize ); -static VImage sines( int sines_xsize, int sines_ysize, double sines_horfreq, double sines_verfreq ); -static VImage zone( int zone_size ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +VImage benchmark() throw( VError ); +double benchmark2() throw( VError ); +VImage benchmarkn( int benchmarkn_n ) throw( VError ); +static VImage eye( int eye_xsize, int eye_ysize, double eye_factor ) throw( VError ); +static VImage grey( int grey_xsize, int grey_ysize ) throw( VError ); +static VImage feye( int feye_xsize, int feye_ysize, double feye_factor ) throw( VError ); +static VImage fgrey( int fgrey_xsize, int fgrey_ysize ) throw( VError ); +static VImage fzone( int fzone_size ) throw( VError ); +static VImage make_xy( int make_xy_xsize, int make_xy_ysize ) throw( VError ); +static VImage sines( int sines_xsize, int sines_ysize, double sines_horfreq, double sines_verfreq ) throw( VError ); +static VImage zone( int zone_size ) throw( VError ); // headers for package resample // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -VImage rightshift_size( int rightshift_size_xshift, int rightshift_size_yshift, int rightshift_size_band_fmt ); -VImage shrink( double shrink_xfac, double shrink_yfac ); -VImage stretch3( double stretch3_xdisp, double stretch3_ydisp ); -VImage affinei( char* affinei_interpolate, double affinei_a, double affinei_b, double affinei_c, double affinei_d, double affinei_dx, double affinei_dy, int affinei_x, int affinei_y, int affinei_w, int affinei_h ); -VImage affinei_all( char* affinei_all_interpolate, double affinei_all_a, double affinei_all_b, double affinei_all_c, double affinei_all_d, double affinei_all_dx, double affinei_all_dy ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +VImage rightshift_size( int rightshift_size_xshift, int rightshift_size_yshift, int rightshift_size_band_fmt ) throw( VError ); +VImage shrink( double shrink_xfac, double shrink_yfac ) throw( VError ); +VImage stretch3( double stretch3_xdisp, double stretch3_ydisp ) throw( VError ); +VImage affinei( char* affinei_interpolate, double affinei_a, double affinei_b, double affinei_c, double affinei_d, double affinei_dx, double affinei_dy, int affinei_x, int affinei_y, int affinei_w, int affinei_h ) throw( VError ); +VImage affinei_all( char* affinei_all_interpolate, double affinei_all_a, double affinei_all_b, double affinei_all_c, double affinei_all_d, double affinei_all_dx, double affinei_all_dy ) throw( VError ); // headers for package video // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 -static VImage video_test( int video_test_brightness, int video_test_error ); -static VImage video_v4l1( char* video_v4l1_device, int video_v4l1_channel, int video_v4l1_brightness, int video_v4l1_colour, int video_v4l1_contrast, int video_v4l1_hue, int video_v4l1_ngrabs ); +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +static VImage video_test( int video_test_brightness, int video_test_error ) throw( VError ); +static VImage video_v4l1( char* video_v4l1_device, int video_v4l1_channel, int video_v4l1_brightness, int video_v4l1_colour, int video_v4l1_contrast, int video_v4l1_hue, int video_v4l1_ngrabs ) throw( VError ); diff --git a/libvipsCC/vipsc++.cc b/libvipsCC/vipsc++.cc index d35ebb04..ebaa71c2 100644 --- a/libvipsCC/vipsc++.cc +++ b/libvipsCC/vipsc++.cc @@ -1,9 +1,9 @@ // bodies for package arithmetic // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_abs: absolute value -VImage VImage::abs() +VImage VImage::abs() throw( VError ) { VImage in = *this; VImage out; @@ -19,7 +19,7 @@ VImage VImage::abs() } // im_acostra: acos of image (result in degrees) -VImage VImage::acos() +VImage VImage::acos() throw( VError ) { VImage in = *this; VImage out; @@ -35,7 +35,7 @@ VImage VImage::acos() } // im_add: add two images -VImage VImage::add( VImage in2 ) +VImage VImage::add( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -53,7 +53,7 @@ VImage VImage::add( VImage in2 ) } // im_asintra: asin of image (result in degrees) -VImage VImage::asin() +VImage VImage::asin() throw( VError ) { VImage in = *this; VImage out; @@ -69,7 +69,7 @@ VImage VImage::asin() } // im_atantra: atan of image (result in degrees) -VImage VImage::atan() +VImage VImage::atan() throw( VError ) { VImage in = *this; VImage out; @@ -85,7 +85,7 @@ VImage VImage::atan() } // im_avg: average value of image -double VImage::avg() +double VImage::avg() throw( VError ) { VImage in = *this; double value; @@ -100,7 +100,7 @@ double VImage::avg() } // im_point: interpolate value at single point -double VImage::point( char* interpolate, double x, double y, int band ) +double VImage::point( char* interpolate, double x, double y, int band ) throw( VError ) { VImage in = *this; double out; @@ -120,7 +120,7 @@ double VImage::point( char* interpolate, double x, double y, int band ) } // im_point_bilinear: interpolate value at single point, linearly -double VImage::point_bilinear( double x, double y, int band ) +double VImage::point_bilinear( double x, double y, int band ) throw( VError ) { VImage in = *this; double val; @@ -138,7 +138,7 @@ double VImage::point_bilinear( double x, double y, int band ) } // im_bandmean: average image bands -VImage VImage::bandmean() +VImage VImage::bandmean() throw( VError ) { VImage in = *this; VImage out; @@ -154,7 +154,7 @@ VImage VImage::bandmean() } // im_ceil: round to smallest integer value not less than -VImage VImage::ceil() +VImage VImage::ceil() throw( VError ) { VImage in = *this; VImage out; @@ -170,7 +170,7 @@ VImage VImage::ceil() } // im_costra: cos of image (angles in degrees) -VImage VImage::cos() +VImage VImage::cos() throw( VError ) { VImage in = *this; VImage out; @@ -186,7 +186,7 @@ VImage VImage::cos() } // im_cross_phase: phase of cross power spectrum of two complex images -VImage VImage::cross_phase( VImage in2 ) +VImage VImage::cross_phase( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -204,7 +204,7 @@ VImage VImage::cross_phase( VImage in2 ) } // im_deviate: standard deviation of image -double VImage::deviate() +double VImage::deviate() throw( VError ) { VImage in = *this; double value; @@ -219,7 +219,7 @@ double VImage::deviate() } // im_divide: divide two images -VImage VImage::divide( VImage in2 ) +VImage VImage::divide( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -237,7 +237,7 @@ VImage VImage::divide( VImage in2 ) } // im_exp10tra: 10^pel of image -VImage VImage::exp10() +VImage VImage::exp10() throw( VError ) { VImage in = *this; VImage out; @@ -253,7 +253,7 @@ VImage VImage::exp10() } // im_expntra: x^pel of image -VImage VImage::expn( double x ) +VImage VImage::expn( double x ) throw( VError ) { VImage in = *this; VImage out; @@ -270,7 +270,7 @@ VImage VImage::expn( double x ) } // im_expntra_vec: [x,y,z]^pel of image -VImage VImage::expn( std::vector v ) +VImage VImage::expn( std::vector v ) throw( VError ) { VImage in = *this; VImage out; @@ -290,7 +290,7 @@ VImage VImage::expn( std::vector v ) } // im_exptra: e^pel of image -VImage VImage::exp() +VImage VImage::exp() throw( VError ) { VImage in = *this; VImage out; @@ -306,7 +306,7 @@ VImage VImage::exp() } // im_floor: round to largest integer value not greater than -VImage VImage::floor() +VImage VImage::floor() throw( VError ) { VImage in = *this; VImage out; @@ -322,7 +322,7 @@ VImage VImage::floor() } // im_invert: photographic negative -VImage VImage::invert() +VImage VImage::invert() throw( VError ) { VImage in = *this; VImage out; @@ -338,7 +338,7 @@ VImage VImage::invert() } // im_lintra: calculate a*in + b = outfile -VImage VImage::lin( double a, double b ) +VImage VImage::lin( double a, double b ) throw( VError ) { VImage in = *this; VImage out; @@ -356,7 +356,7 @@ VImage VImage::lin( double a, double b ) } // im_linreg: pixelwise linear regression -VImage VImage::linreg( std::vector ins, std::vector xs ) +VImage VImage::linreg( std::vector ins, std::vector xs ) throw( VError ) { VImage out; @@ -379,7 +379,7 @@ VImage VImage::linreg( std::vector ins, std::vector xs ) } // im_lintra_vec: calculate a*in + b -> out, a and b vectors -VImage VImage::lin( std::vector a, std::vector b ) +VImage VImage::lin( std::vector a, std::vector b ) throw( VError ) { VImage in = *this; VImage out; @@ -403,7 +403,7 @@ VImage VImage::lin( std::vector a, std::vector b ) } // im_log10tra: log10 of image -VImage VImage::log10() +VImage VImage::log10() throw( VError ) { VImage in = *this; VImage out; @@ -419,7 +419,7 @@ VImage VImage::log10() } // im_logtra: ln of image -VImage VImage::log() +VImage VImage::log() throw( VError ) { VImage in = *this; VImage out; @@ -435,7 +435,7 @@ VImage VImage::log() } // im_max: maximum value of image -double VImage::max() +double VImage::max() throw( VError ) { VImage in = *this; double value; @@ -450,7 +450,7 @@ double VImage::max() } // im_maxpos: position of maximum value of image -std::complex VImage::maxpos() +std::complex VImage::maxpos() throw( VError ) { VImage in = *this; std::complex position; @@ -465,7 +465,7 @@ std::complex VImage::maxpos() } // im_maxpos_avg: position of maximum value of image, averaging in case of draw -double VImage::maxpos_avg( double& y, double& out ) +double VImage::maxpos_avg( double& y, double& out ) throw( VError ) { VImage in = *this; double x; @@ -482,7 +482,7 @@ double VImage::maxpos_avg( double& y, double& out ) } // im_measure: measure averages of a grid of patches -VDMask VImage::measure( int x, int y, int w, int h, int h_patches, int v_patches ) +VDMask VImage::measure( int x, int y, int w, int h, int h_patches, int v_patches ) throw( VError ) { VImage in = *this; VDMask mask; @@ -504,7 +504,7 @@ VDMask VImage::measure( int x, int y, int w, int h, int h_patches, int v_patches } // im_min: minimum value of image -double VImage::min() +double VImage::min() throw( VError ) { VImage in = *this; double value; @@ -519,7 +519,7 @@ double VImage::min() } // im_minpos: position of minimum value of image -std::complex VImage::minpos() +std::complex VImage::minpos() throw( VError ) { VImage in = *this; std::complex position; @@ -534,7 +534,7 @@ std::complex VImage::minpos() } // im_multiply: multiply two images -VImage VImage::multiply( VImage in2 ) +VImage VImage::multiply( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -552,7 +552,7 @@ VImage VImage::multiply( VImage in2 ) } // im_powtra: pel^x of image -VImage VImage::pow( double x ) +VImage VImage::pow( double x ) throw( VError ) { VImage in = *this; VImage out; @@ -569,7 +569,7 @@ VImage VImage::pow( double x ) } // im_powtra_vec: pel^[x,y,z] of image -VImage VImage::pow( std::vector v ) +VImage VImage::pow( std::vector v ) throw( VError ) { VImage in = *this; VImage out; @@ -589,7 +589,7 @@ VImage VImage::pow( std::vector v ) } // im_recomb: linear recombination with mask -VImage VImage::recomb( VDMask matrix ) +VImage VImage::recomb( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -606,7 +606,7 @@ VImage VImage::recomb( VDMask matrix ) } // im_remainder: remainder after integer division -VImage VImage::remainder( VImage in2 ) +VImage VImage::remainder( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -624,7 +624,7 @@ VImage VImage::remainder( VImage in2 ) } // im_remainderconst: remainder after integer division by a constant -VImage VImage::remainder( double x ) +VImage VImage::remainder( double x ) throw( VError ) { VImage in = *this; VImage out; @@ -641,7 +641,7 @@ VImage VImage::remainder( double x ) } // im_remainder_vec: remainder after integer division by a vector of constants -VImage VImage::remainder( std::vector x ) +VImage VImage::remainder( std::vector x ) throw( VError ) { VImage in = *this; VImage out; @@ -661,7 +661,7 @@ VImage VImage::remainder( std::vector x ) } // im_rint: round to nearest integer value -VImage VImage::rint() +VImage VImage::rint() throw( VError ) { VImage in = *this; VImage out; @@ -677,7 +677,7 @@ VImage VImage::rint() } // im_sign: unit vector in direction of value -VImage VImage::sign() +VImage VImage::sign() throw( VError ) { VImage in = *this; VImage out; @@ -693,7 +693,7 @@ VImage VImage::sign() } // im_sintra: sin of image (angles in degrees) -VImage VImage::sin() +VImage VImage::sin() throw( VError ) { VImage in = *this; VImage out; @@ -709,7 +709,7 @@ VImage VImage::sin() } // im_stats: many image statistics in one pass -VDMask VImage::stats() +VDMask VImage::stats() throw( VError ) { VImage in = *this; VDMask statistics; @@ -725,7 +725,7 @@ VDMask VImage::stats() } // im_subtract: subtract two images -VImage VImage::subtract( VImage in2 ) +VImage VImage::subtract( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -743,7 +743,7 @@ VImage VImage::subtract( VImage in2 ) } // im_tantra: tan of image (angles in degrees) -VImage VImage::tan() +VImage VImage::tan() throw( VError ) { VImage in = *this; VImage out; @@ -761,9 +761,9 @@ VImage VImage::tan() // bodies for package cimg // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_greyc: noise-removing filter -VImage VImage::greyc( int iterations, double amplitude, double sharpness, double anisotropy, double alpha, double sigma, double dl, double da, double gauss_prec, int interpolation, int fast_approx ) +VImage VImage::greyc( int iterations, double amplitude, double sharpness, double anisotropy, double alpha, double sigma, double dl, double da, double gauss_prec, int interpolation, int fast_approx ) throw( VError ) { VImage src = *this; VImage dst; @@ -790,7 +790,7 @@ VImage VImage::greyc( int iterations, double amplitude, double sharpness, double } // im_greyc_mask: noise-removing filter, with a mask -VImage VImage::greyc_mask( VImage mask, int iterations, double amplitude, double sharpness, double anisotropy, double alpha, double sigma, double dl, double da, double gauss_prec, int interpolation, int fast_approx ) +VImage VImage::greyc_mask( VImage mask, int iterations, double amplitude, double sharpness, double anisotropy, double alpha, double sigma, double dl, double da, double gauss_prec, int interpolation, int fast_approx ) throw( VError ) { VImage src = *this; VImage dst; @@ -821,9 +821,9 @@ VImage VImage::greyc_mask( VImage mask, int iterations, double amplitude, double // bodies for package colour // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_LCh2Lab: convert LCh to Lab -VImage VImage::LCh2Lab() +VImage VImage::LCh2Lab() throw( VError ) { VImage in = *this; VImage out; @@ -839,7 +839,7 @@ VImage VImage::LCh2Lab() } // im_LCh2UCS: convert LCh to UCS -VImage VImage::LCh2UCS() +VImage VImage::LCh2UCS() throw( VError ) { VImage in = *this; VImage out; @@ -855,7 +855,7 @@ VImage VImage::LCh2UCS() } // im_Lab2LCh: convert Lab to LCh -VImage VImage::Lab2LCh() +VImage VImage::Lab2LCh() throw( VError ) { VImage in = *this; VImage out; @@ -871,7 +871,7 @@ VImage VImage::Lab2LCh() } // im_Lab2LabQ: convert Lab to LabQ -VImage VImage::Lab2LabQ() +VImage VImage::Lab2LabQ() throw( VError ) { VImage in = *this; VImage out; @@ -887,7 +887,7 @@ VImage VImage::Lab2LabQ() } // im_Lab2LabS: convert Lab to LabS -VImage VImage::Lab2LabS() +VImage VImage::Lab2LabS() throw( VError ) { VImage in = *this; VImage out; @@ -903,7 +903,7 @@ VImage VImage::Lab2LabS() } // im_Lab2UCS: convert Lab to UCS -VImage VImage::Lab2UCS() +VImage VImage::Lab2UCS() throw( VError ) { VImage in = *this; VImage out; @@ -919,7 +919,7 @@ VImage VImage::Lab2UCS() } // im_Lab2XYZ: convert D65 Lab to XYZ -VImage VImage::Lab2XYZ() +VImage VImage::Lab2XYZ() throw( VError ) { VImage in = *this; VImage out; @@ -935,7 +935,7 @@ VImage VImage::Lab2XYZ() } // im_Lab2XYZ_temp: convert Lab to XYZ, with a specified colour temperature -VImage VImage::Lab2XYZ_temp( double X0, double Y0, double Z0 ) +VImage VImage::Lab2XYZ_temp( double X0, double Y0, double Z0 ) throw( VError ) { VImage in = *this; VImage out; @@ -954,7 +954,7 @@ VImage VImage::Lab2XYZ_temp( double X0, double Y0, double Z0 ) } // im_Lab2disp: convert Lab to displayable -VImage VImage::Lab2disp( VDisplay disp ) +VImage VImage::Lab2disp( VDisplay disp ) throw( VError ) { VImage in = *this; VImage out; @@ -971,7 +971,7 @@ VImage VImage::Lab2disp( VDisplay disp ) } // im_LabQ2LabS: convert LabQ to LabS -VImage VImage::LabQ2LabS() +VImage VImage::LabQ2LabS() throw( VError ) { VImage in = *this; VImage out; @@ -987,7 +987,7 @@ VImage VImage::LabQ2LabS() } // im_LabQ2Lab: convert LabQ to Lab -VImage VImage::LabQ2Lab() +VImage VImage::LabQ2Lab() throw( VError ) { VImage in = *this; VImage out; @@ -1003,7 +1003,7 @@ VImage VImage::LabQ2Lab() } // im_LabQ2XYZ: convert LabQ to XYZ -VImage VImage::LabQ2XYZ() +VImage VImage::LabQ2XYZ() throw( VError ) { VImage in = *this; VImage out; @@ -1019,7 +1019,7 @@ VImage VImage::LabQ2XYZ() } // im_LabQ2disp: convert LabQ to displayable -VImage VImage::LabQ2disp( VDisplay disp ) +VImage VImage::LabQ2disp( VDisplay disp ) throw( VError ) { VImage in = *this; VImage out; @@ -1036,7 +1036,7 @@ VImage VImage::LabQ2disp( VDisplay disp ) } // im_LabS2LabQ: convert LabS to LabQ -VImage VImage::LabS2LabQ() +VImage VImage::LabS2LabQ() throw( VError ) { VImage in = *this; VImage out; @@ -1052,7 +1052,7 @@ VImage VImage::LabS2LabQ() } // im_LabS2Lab: convert LabS to Lab -VImage VImage::LabS2Lab() +VImage VImage::LabS2Lab() throw( VError ) { VImage in = *this; VImage out; @@ -1068,7 +1068,7 @@ VImage VImage::LabS2Lab() } // im_UCS2LCh: convert UCS to LCh -VImage VImage::UCS2LCh() +VImage VImage::UCS2LCh() throw( VError ) { VImage in = *this; VImage out; @@ -1084,7 +1084,7 @@ VImage VImage::UCS2LCh() } // im_UCS2Lab: convert UCS to Lab -VImage VImage::UCS2Lab() +VImage VImage::UCS2Lab() throw( VError ) { VImage in = *this; VImage out; @@ -1100,7 +1100,7 @@ VImage VImage::UCS2Lab() } // im_UCS2XYZ: convert UCS to XYZ -VImage VImage::UCS2XYZ() +VImage VImage::UCS2XYZ() throw( VError ) { VImage in = *this; VImage out; @@ -1116,7 +1116,7 @@ VImage VImage::UCS2XYZ() } // im_XYZ2Lab: convert D65 XYZ to Lab -VImage VImage::XYZ2Lab() +VImage VImage::XYZ2Lab() throw( VError ) { VImage in = *this; VImage out; @@ -1132,7 +1132,7 @@ VImage VImage::XYZ2Lab() } // im_XYZ2Lab_temp: convert XYZ to Lab, with a specified colour temperature -VImage VImage::XYZ2Lab_temp( double X0, double Y0, double Z0 ) +VImage VImage::XYZ2Lab_temp( double X0, double Y0, double Z0 ) throw( VError ) { VImage in = *this; VImage out; @@ -1151,7 +1151,7 @@ VImage VImage::XYZ2Lab_temp( double X0, double Y0, double Z0 ) } // im_XYZ2UCS: convert XYZ to UCS -VImage VImage::XYZ2UCS() +VImage VImage::XYZ2UCS() throw( VError ) { VImage in = *this; VImage out; @@ -1167,7 +1167,7 @@ VImage VImage::XYZ2UCS() } // im_XYZ2Yxy: convert XYZ to Yxy -VImage VImage::XYZ2Yxy() +VImage VImage::XYZ2Yxy() throw( VError ) { VImage in = *this; VImage out; @@ -1183,7 +1183,7 @@ VImage VImage::XYZ2Yxy() } // im_XYZ2disp: convert XYZ to displayble -VImage VImage::XYZ2disp( VDisplay disp ) +VImage VImage::XYZ2disp( VDisplay disp ) throw( VError ) { VImage in = *this; VImage out; @@ -1200,7 +1200,7 @@ VImage VImage::XYZ2disp( VDisplay disp ) } // im_XYZ2sRGB: convert XYZ to sRGB -VImage VImage::XYZ2sRGB() +VImage VImage::XYZ2sRGB() throw( VError ) { VImage in = *this; VImage out; @@ -1216,7 +1216,7 @@ VImage VImage::XYZ2sRGB() } // im_Yxy2XYZ: convert Yxy to XYZ -VImage VImage::Yxy2XYZ() +VImage VImage::Yxy2XYZ() throw( VError ) { VImage in = *this; VImage out; @@ -1232,7 +1232,7 @@ VImage VImage::Yxy2XYZ() } // im_dE00_fromLab: calculate delta-E CIE2000 for two Lab images -VImage VImage::dE00_fromLab( VImage in2 ) +VImage VImage::dE00_fromLab( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -1250,7 +1250,7 @@ VImage VImage::dE00_fromLab( VImage in2 ) } // im_dECMC_fromLab: calculate delta-E CMC(1:1) for two Lab images -VImage VImage::dECMC_fromLab( VImage in2 ) +VImage VImage::dECMC_fromLab( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -1268,7 +1268,7 @@ VImage VImage::dECMC_fromLab( VImage in2 ) } // im_dECMC_fromdisp: calculate delta-E CMC(1:1) for two displayable images -VImage VImage::dECMC_fromdisp( VImage in2, VDisplay disp ) +VImage VImage::dECMC_fromdisp( VImage in2, VDisplay disp ) throw( VError ) { VImage in1 = *this; VImage out; @@ -1287,7 +1287,7 @@ VImage VImage::dECMC_fromdisp( VImage in2, VDisplay disp ) } // im_dE_fromLab: calculate delta-E for two Lab images -VImage VImage::dE_fromLab( VImage in2 ) +VImage VImage::dE_fromLab( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -1305,7 +1305,7 @@ VImage VImage::dE_fromLab( VImage in2 ) } // im_dE_fromXYZ: calculate delta-E for two XYZ images -VImage VImage::dE_fromXYZ( VImage in2 ) +VImage VImage::dE_fromXYZ( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -1323,7 +1323,7 @@ VImage VImage::dE_fromXYZ( VImage in2 ) } // im_dE_fromdisp: calculate delta-E for two displayable images -VImage VImage::dE_fromdisp( VImage in2, VDisplay disp ) +VImage VImage::dE_fromdisp( VImage in2, VDisplay disp ) throw( VError ) { VImage in1 = *this; VImage out; @@ -1342,7 +1342,7 @@ VImage VImage::dE_fromdisp( VImage in2, VDisplay disp ) } // im_disp2Lab: convert displayable to Lab -VImage VImage::disp2Lab( VDisplay disp ) +VImage VImage::disp2Lab( VDisplay disp ) throw( VError ) { VImage in = *this; VImage out; @@ -1359,7 +1359,7 @@ VImage VImage::disp2Lab( VDisplay disp ) } // im_disp2XYZ: convert displayable to XYZ -VImage VImage::disp2XYZ( VDisplay disp ) +VImage VImage::disp2XYZ( VDisplay disp ) throw( VError ) { VImage in = *this; VImage out; @@ -1376,7 +1376,7 @@ VImage VImage::disp2XYZ( VDisplay disp ) } // im_float2rad: convert float to Radiance packed -VImage VImage::float2rad() +VImage VImage::float2rad() throw( VError ) { VImage in = *this; VImage out; @@ -1392,7 +1392,7 @@ VImage VImage::float2rad() } // im_icc_ac2rc: convert LAB from AC to RC using an ICC profile -VImage VImage::icc_ac2rc( char* profile ) +VImage VImage::icc_ac2rc( char* profile ) throw( VError ) { VImage in = *this; VImage out; @@ -1409,7 +1409,7 @@ VImage VImage::icc_ac2rc( char* profile ) } // im_icc_export_depth: convert a float LAB to device space with an ICC profile -VImage VImage::icc_export_depth( int depth, char* output_profile, int intent ) +VImage VImage::icc_export_depth( int depth, char* output_profile, int intent ) throw( VError ) { VImage in = *this; VImage out; @@ -1428,7 +1428,7 @@ VImage VImage::icc_export_depth( int depth, char* output_profile, int intent ) } // im_icc_import: convert a device image to float LAB with an ICC profile -VImage VImage::icc_import( char* input_profile, int intent ) +VImage VImage::icc_import( char* input_profile, int intent ) throw( VError ) { VImage in = *this; VImage out; @@ -1446,7 +1446,7 @@ VImage VImage::icc_import( char* input_profile, int intent ) } // im_icc_import_embedded: convert a device image to float LAB using the embedded profile -VImage VImage::icc_import_embedded( int intent ) +VImage VImage::icc_import_embedded( int intent ) throw( VError ) { VImage in = *this; VImage out; @@ -1463,7 +1463,7 @@ VImage VImage::icc_import_embedded( int intent ) } // im_icc_transform: convert between two device images with a pair of ICC profiles -VImage VImage::icc_transform( char* input_profile, char* output_profile, int intent ) +VImage VImage::icc_transform( char* input_profile, char* output_profile, int intent ) throw( VError ) { VImage in = *this; VImage out; @@ -1482,7 +1482,7 @@ VImage VImage::icc_transform( char* input_profile, char* output_profile, int int } // im_lab_morph: morph colourspace of a LAB image -VImage VImage::lab_morph( VDMask greyscale, double L_offset, double L_scale, double a_scale, double b_scale ) +VImage VImage::lab_morph( VDMask greyscale, double L_offset, double L_scale, double a_scale, double b_scale ) throw( VError ) { VImage in = *this; VImage out; @@ -1503,7 +1503,7 @@ VImage VImage::lab_morph( VDMask greyscale, double L_offset, double L_scale, dou } // im_rad2float: convert Radiance packed to float -VImage VImage::rad2float() +VImage VImage::rad2float() throw( VError ) { VImage in = *this; VImage out; @@ -1519,7 +1519,7 @@ VImage VImage::rad2float() } // im_sRGB2XYZ: convert sRGB to XYZ -VImage VImage::sRGB2XYZ() +VImage VImage::sRGB2XYZ() throw( VError ) { VImage in = *this; VImage out; @@ -1537,9 +1537,9 @@ VImage VImage::sRGB2XYZ() // bodies for package conversion // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_gaussnoise: generate image of gaussian noise with specified statistics -VImage VImage::gaussnoise( int xsize, int ysize, double mean, double sigma ) +VImage VImage::gaussnoise( int xsize, int ysize, double mean, double sigma ) throw( VError ) { VImage out; @@ -1556,7 +1556,7 @@ VImage VImage::gaussnoise( int xsize, int ysize, double mean, double sigma ) } // im_bandjoin: bandwise join of two images -VImage VImage::bandjoin( VImage in2 ) +VImage VImage::bandjoin( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -1574,7 +1574,7 @@ VImage VImage::bandjoin( VImage in2 ) } // im_black: generate black image -VImage VImage::black( int x_size, int y_size, int bands ) +VImage VImage::black( int x_size, int y_size, int bands ) throw( VError ) { VImage output; @@ -1590,7 +1590,7 @@ VImage VImage::black( int x_size, int y_size, int bands ) } // im_c2amph: convert real and imaginary to phase and amplitude -VImage VImage::c2amph() +VImage VImage::c2amph() throw( VError ) { VImage in = *this; VImage out; @@ -1606,7 +1606,7 @@ VImage VImage::c2amph() } // im_c2imag: extract imaginary part of complex image -VImage VImage::c2imag() +VImage VImage::c2imag() throw( VError ) { VImage in = *this; VImage out; @@ -1622,7 +1622,7 @@ VImage VImage::c2imag() } // im_c2real: extract real part of complex image -VImage VImage::c2real() +VImage VImage::c2real() throw( VError ) { VImage in = *this; VImage out; @@ -1638,7 +1638,7 @@ VImage VImage::c2real() } // im_c2rect: convert phase and amplitude to real and imaginary -VImage VImage::c2rect() +VImage VImage::c2rect() throw( VError ) { VImage in = *this; VImage out; @@ -1654,7 +1654,7 @@ VImage VImage::c2rect() } // im_clip2fmt: convert image format to ofmt -VImage VImage::clip2fmt( int ofmt ) +VImage VImage::clip2fmt( int ofmt ) throw( VError ) { VImage in = *this; VImage out; @@ -1671,7 +1671,7 @@ VImage VImage::clip2fmt( int ofmt ) } // im_copy: copy image -VImage VImage::copy() +VImage VImage::copy() throw( VError ) { VImage in = *this; VImage out; @@ -1687,7 +1687,7 @@ VImage VImage::copy() } // im_copy_file: copy image to a file and return that -VImage VImage::copy_file() +VImage VImage::copy_file() throw( VError ) { VImage in = *this; VImage out; @@ -1703,7 +1703,7 @@ VImage VImage::copy_file() } // im_copy_morph: copy image, setting pixel layout -VImage VImage::copy_morph( int Bands, int BandFmt, int Coding ) +VImage VImage::copy_morph( int Bands, int BandFmt, int Coding ) throw( VError ) { VImage input = *this; VImage output; @@ -1722,7 +1722,7 @@ VImage VImage::copy_morph( int Bands, int BandFmt, int Coding ) } // im_copy_swap: copy image, swapping byte order -VImage VImage::copy_swap() +VImage VImage::copy_swap() throw( VError ) { VImage in = *this; VImage out; @@ -1738,7 +1738,7 @@ VImage VImage::copy_swap() } // im_copy_set: copy image, setting informational fields -VImage VImage::copy_set( int Type, double Xres, double Yres, int Xoffset, int Yoffset ) +VImage VImage::copy_set( int Type, double Xres, double Yres, int Xoffset, int Yoffset ) throw( VError ) { VImage input = *this; VImage output; @@ -1759,7 +1759,7 @@ VImage VImage::copy_set( int Type, double Xres, double Yres, int Xoffset, int Yo } // im_extract_area: extract area -VImage VImage::extract_area( int left, int top, int width, int height ) +VImage VImage::extract_area( int left, int top, int width, int height ) throw( VError ) { VImage input = *this; VImage output; @@ -1779,7 +1779,7 @@ VImage VImage::extract_area( int left, int top, int width, int height ) } // im_extract_areabands: extract area and bands -VImage VImage::extract_areabands( int left, int top, int width, int height, int band, int nbands ) +VImage VImage::extract_areabands( int left, int top, int width, int height, int band, int nbands ) throw( VError ) { VImage input = *this; VImage output; @@ -1801,7 +1801,7 @@ VImage VImage::extract_areabands( int left, int top, int width, int height, int } // im_extract_band: extract band -VImage VImage::extract_band( int band ) +VImage VImage::extract_band( int band ) throw( VError ) { VImage input = *this; VImage output; @@ -1818,7 +1818,7 @@ VImage VImage::extract_band( int band ) } // im_extract_bands: extract several bands -VImage VImage::extract_bands( int band, int nbands ) +VImage VImage::extract_bands( int band, int nbands ) throw( VError ) { VImage input = *this; VImage output; @@ -1836,7 +1836,7 @@ VImage VImage::extract_bands( int band, int nbands ) } // im_extract: extract area/band -VImage VImage::extract( int left, int top, int width, int height, int band ) +VImage VImage::extract( int left, int top, int width, int height, int band ) throw( VError ) { VImage input = *this; VImage output; @@ -1857,7 +1857,7 @@ VImage VImage::extract( int left, int top, int width, int height, int band ) } // im_falsecolour: turn luminance changes into chrominance changes -VImage VImage::falsecolour() +VImage VImage::falsecolour() throw( VError ) { VImage in = *this; VImage out; @@ -1873,7 +1873,7 @@ VImage VImage::falsecolour() } // im_fliphor: flip image left-right -VImage VImage::fliphor() +VImage VImage::fliphor() throw( VError ) { VImage in = *this; VImage out; @@ -1889,7 +1889,7 @@ VImage VImage::fliphor() } // im_flipver: flip image top-bottom -VImage VImage::flipver() +VImage VImage::flipver() throw( VError ) { VImage in = *this; VImage out; @@ -1905,7 +1905,7 @@ VImage VImage::flipver() } // im_gbandjoin: bandwise join of many images -VImage VImage::gbandjoin( std::vector in ) +VImage VImage::gbandjoin( std::vector in ) throw( VError ) { VImage out; @@ -1924,7 +1924,7 @@ VImage VImage::gbandjoin( std::vector in ) } // im_grid: chop a tall thin image into a grid of images -VImage VImage::grid( int tile_height, int across, int down ) +VImage VImage::grid( int tile_height, int across, int down ) throw( VError ) { VImage input = *this; VImage output; @@ -1943,7 +1943,7 @@ VImage VImage::grid( int tile_height, int across, int down ) } // im_insert: insert sub-image into main image at position -VImage VImage::insert( VImage sub, int x, int y ) +VImage VImage::insert( VImage sub, int x, int y ) throw( VError ) { VImage in = *this; VImage out; @@ -1963,7 +1963,7 @@ VImage VImage::insert( VImage sub, int x, int y ) } // im_insertset: insert sub into main at every position in x, y -VImage VImage::insert( VImage sub, std::vector x, std::vector y ) +VImage VImage::insert( VImage sub, std::vector x, std::vector y ) throw( VError ) { VImage main = *this; VImage out; @@ -1987,7 +1987,7 @@ VImage VImage::insert( VImage sub, std::vector x, std::vector y ) } // im_insert_noexpand: insert sub-image into main image at position, no expansion -VImage VImage::insert_noexpand( VImage sub, int x, int y ) +VImage VImage::insert_noexpand( VImage sub, int x, int y ) throw( VError ) { VImage in = *this; VImage out; @@ -2007,7 +2007,7 @@ VImage VImage::insert_noexpand( VImage sub, int x, int y ) } // im_embed: embed in within a set of borders -VImage VImage::embed( int type, int x, int y, int width, int height ) +VImage VImage::embed( int type, int x, int y, int width, int height ) throw( VError ) { VImage in = *this; VImage out; @@ -2028,7 +2028,7 @@ VImage VImage::embed( int type, int x, int y, int width, int height ) } // im_lrjoin: join two images left-right -VImage VImage::lrjoin( VImage in2 ) +VImage VImage::lrjoin( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -2046,7 +2046,7 @@ VImage VImage::lrjoin( VImage in2 ) } // im_msb: convert to uchar by discarding bits -VImage VImage::msb() +VImage VImage::msb() throw( VError ) { VImage in = *this; VImage out; @@ -2062,7 +2062,7 @@ VImage VImage::msb() } // im_msb_band: convert to single band uchar by discarding bits -VImage VImage::msb_band( int band ) +VImage VImage::msb_band( int band ) throw( VError ) { VImage in = *this; VImage out; @@ -2079,7 +2079,7 @@ VImage VImage::msb_band( int band ) } // im_replicate: replicate an image horizontally and vertically -VImage VImage::replicate( int across, int down ) +VImage VImage::replicate( int across, int down ) throw( VError ) { VImage input = *this; VImage output; @@ -2097,7 +2097,7 @@ VImage VImage::replicate( int across, int down ) } // im_ri2c: join two non-complex images to form complex -VImage VImage::ri2c( VImage in2 ) +VImage VImage::ri2c( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -2115,7 +2115,7 @@ VImage VImage::ri2c( VImage in2 ) } // im_rot180: rotate image 180 degrees -VImage VImage::rot180() +VImage VImage::rot180() throw( VError ) { VImage in = *this; VImage out; @@ -2131,7 +2131,7 @@ VImage VImage::rot180() } // im_rot270: rotate image 270 degrees clockwise -VImage VImage::rot270() +VImage VImage::rot270() throw( VError ) { VImage in = *this; VImage out; @@ -2147,7 +2147,7 @@ VImage VImage::rot270() } // im_rot90: rotate image 90 degrees clockwise -VImage VImage::rot90() +VImage VImage::rot90() throw( VError ) { VImage in = *this; VImage out; @@ -2163,7 +2163,7 @@ VImage VImage::rot90() } // im_scale: scale image linearly to fit range 0-255 -VImage VImage::scale() +VImage VImage::scale() throw( VError ) { VImage in = *this; VImage out; @@ -2179,7 +2179,7 @@ VImage VImage::scale() } // im_scaleps: logarithmic scale of image to fit range 0-255 -VImage VImage::scaleps() +VImage VImage::scaleps() throw( VError ) { VImage in = *this; VImage out; @@ -2194,7 +2194,7 @@ VImage VImage::scaleps() } // im_subsample: subsample image by integer factors -VImage VImage::subsample( int xshrink, int yshrink ) +VImage VImage::subsample( int xshrink, int yshrink ) throw( VError ) { VImage in = *this; VImage out; @@ -2212,7 +2212,7 @@ VImage VImage::subsample( int xshrink, int yshrink ) } // im_system: run command on image -char* VImage::system( char* command ) +char* VImage::system( char* command ) throw( VError ) { VImage im = *this; char* output; @@ -2228,7 +2228,7 @@ char* VImage::system( char* command ) } // im_system_image: run command on image, with image output -VImage VImage::system_image( char* in_format, char* out_format, char* command, char*& log ) +VImage VImage::system_image( char* in_format, char* out_format, char* command, char*& log ) throw( VError ) { VImage in = *this; VImage out; @@ -2247,7 +2247,7 @@ VImage VImage::system_image( char* in_format, char* out_format, char* command, c } // im_tbjoin: join two images top-bottom -VImage VImage::tbjoin( VImage in2 ) +VImage VImage::tbjoin( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -2265,7 +2265,7 @@ VImage VImage::tbjoin( VImage in2 ) } // im_text: generate text image -VImage VImage::text( char* text, char* font, int width, int alignment, int dpi ) +VImage VImage::text( char* text, char* font, int width, int alignment, int dpi ) throw( VError ) { VImage out; @@ -2283,7 +2283,7 @@ VImage VImage::text( char* text, char* font, int width, int alignment, int dpi ) } // im_wrap: shift image origin, wrapping at sides -VImage VImage::wrap( int x, int y ) +VImage VImage::wrap( int x, int y ) throw( VError ) { VImage in = *this; VImage out; @@ -2301,7 +2301,7 @@ VImage VImage::wrap( int x, int y ) } // im_zoom: simple zoom of an image by integer factors -VImage VImage::zoom( int xfac, int yfac ) +VImage VImage::zoom( int xfac, int yfac ) throw( VError ) { VImage input = *this; VImage output; @@ -2321,9 +2321,9 @@ VImage VImage::zoom( int xfac, int yfac ) // bodies for package convolution // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_aconvsep: approximate separable convolution -VImage VImage::aconvsep( VDMask matrix, int n_layers ) +VImage VImage::aconvsep( VDMask matrix, int n_layers ) throw( VError ) { VImage in = *this; VImage out; @@ -2341,7 +2341,7 @@ VImage VImage::aconvsep( VDMask matrix, int n_layers ) } // im_aconv: approximate convolution -VImage VImage::aconv( VDMask matrix, int n_layers, int cluster ) +VImage VImage::aconv( VDMask matrix, int n_layers, int cluster ) throw( VError ) { VImage in = *this; VImage out; @@ -2360,7 +2360,7 @@ VImage VImage::aconv( VDMask matrix, int n_layers, int cluster ) } // im_addgnoise: add gaussian noise with mean 0 and std. dev. sigma -VImage VImage::addgnoise( double sigma ) +VImage VImage::addgnoise( double sigma ) throw( VError ) { VImage in = *this; VImage out; @@ -2377,7 +2377,7 @@ VImage VImage::addgnoise( double sigma ) } // im_compass: convolve with 8-way rotating integer mask -VImage VImage::compass( VIMask matrix ) +VImage VImage::compass( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -2394,7 +2394,7 @@ VImage VImage::compass( VIMask matrix ) } // im_contrast_surface: find high-contrast points in an image -VImage VImage::contrast_surface( int half_win_size, int spacing ) +VImage VImage::contrast_surface( int half_win_size, int spacing ) throw( VError ) { VImage in = *this; VImage out; @@ -2412,7 +2412,7 @@ VImage VImage::contrast_surface( int half_win_size, int spacing ) } // im_conv: convolve -VImage VImage::conv( VIMask matrix ) +VImage VImage::conv( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -2429,7 +2429,7 @@ VImage VImage::conv( VIMask matrix ) } // im_conv_f: convolve, with DOUBLEMASK -VImage VImage::conv( VDMask matrix ) +VImage VImage::conv( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -2446,7 +2446,7 @@ VImage VImage::conv( VDMask matrix ) } // im_convsep: seperable convolution -VImage VImage::convsep( VIMask matrix ) +VImage VImage::convsep( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -2463,7 +2463,7 @@ VImage VImage::convsep( VIMask matrix ) } // im_convsep_f: seperable convolution, with DOUBLEMASK -VImage VImage::convsep( VDMask matrix ) +VImage VImage::convsep( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -2480,7 +2480,7 @@ VImage VImage::convsep( VDMask matrix ) } // im_fastcor: fast correlate in2 within in1 -VImage VImage::fastcor( VImage in2 ) +VImage VImage::fastcor( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -2498,7 +2498,7 @@ VImage VImage::fastcor( VImage in2 ) } // im_gradcor: non-normalised correlation of gradient of in2 within in1 -VImage VImage::gradcor( VImage in2 ) +VImage VImage::gradcor( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -2516,7 +2516,7 @@ VImage VImage::gradcor( VImage in2 ) } // im_gradient: convolve with 2-way rotating mask -VImage VImage::gradient( VIMask matrix ) +VImage VImage::gradient( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -2533,7 +2533,7 @@ VImage VImage::gradient( VIMask matrix ) } // im_grad_x: horizontal difference image -VImage VImage::grad_x() +VImage VImage::grad_x() throw( VError ) { VImage in = *this; VImage out; @@ -2549,7 +2549,7 @@ VImage VImage::grad_x() } // im_grad_y: vertical difference image -VImage VImage::grad_y() +VImage VImage::grad_y() throw( VError ) { VImage in = *this; VImage out; @@ -2565,7 +2565,7 @@ VImage VImage::grad_y() } // im_lindetect: convolve with 4-way rotating mask -VImage VImage::lindetect( VIMask matrix ) +VImage VImage::lindetect( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -2582,7 +2582,7 @@ VImage VImage::lindetect( VIMask matrix ) } // im_sharpen: sharpen high frequencies of L channel of LabQ -VImage VImage::sharpen( int mask_size, double x1, double y2, double y3, double m1, double m2 ) +VImage VImage::sharpen( int mask_size, double x1, double y2, double y3, double m1, double m2 ) throw( VError ) { VImage in = *this; VImage out; @@ -2604,7 +2604,7 @@ VImage VImage::sharpen( int mask_size, double x1, double y2, double y3, double m } // im_spcor: normalised correlation of in2 within in1 -VImage VImage::spcor( VImage in2 ) +VImage VImage::spcor( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -2624,9 +2624,9 @@ VImage VImage::spcor( VImage in2 ) // bodies for package deprecated // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_argb2rgba: convert pre-multipled argb to png-style rgba -VImage VImage::argb2rgba() +VImage VImage::argb2rgba() throw( VError ) { VImage in = *this; VImage out; @@ -2642,7 +2642,7 @@ VImage VImage::argb2rgba() } // im_flood_copy: flood with ink from start_x, start_y while pixel == start pixel -VImage VImage::flood_copy( int start_x, int start_y, std::vector ink ) +VImage VImage::flood_copy( int start_x, int start_y, std::vector ink ) throw( VError ) { VImage in = *this; VImage out; @@ -2663,7 +2663,7 @@ VImage VImage::flood_copy( int start_x, int start_y, std::vector ink ) } // im_flood_blob_copy: flood with ink from start_x, start_y while pixel == start pixel -VImage VImage::flood_blob_copy( int start_x, int start_y, std::vector ink ) +VImage VImage::flood_blob_copy( int start_x, int start_y, std::vector ink ) throw( VError ) { VImage in = *this; VImage out; @@ -2684,7 +2684,7 @@ VImage VImage::flood_blob_copy( int start_x, int start_y, std::vector in } // im_flood_other_copy: flood mark with serial from start_x, start_y while pixel == start pixel -VImage VImage::flood_other_copy( VImage mark, int start_x, int start_y, int serial ) +VImage VImage::flood_other_copy( VImage mark, int start_x, int start_y, int serial ) throw( VError ) { VImage test = *this; VImage out; @@ -2703,7 +2703,7 @@ VImage VImage::flood_other_copy( VImage mark, int start_x, int start_y, int seri } // im_clip: convert to unsigned 8-bit integer -VImage VImage::clip() +VImage VImage::clip() throw( VError ) { VImage in = *this; VImage out; @@ -2719,7 +2719,7 @@ VImage VImage::clip() } // im_c2ps: find power spectrum of complex image -VImage VImage::c2ps() +VImage VImage::c2ps() throw( VError ) { VImage in = *this; VImage out; @@ -2735,7 +2735,7 @@ VImage VImage::c2ps() } // im_resize_linear: resize to X by Y pixels with linear interpolation -VImage VImage::resize_linear( int X, int Y ) +VImage VImage::resize_linear( int X, int Y ) throw( VError ) { VImage in = *this; VImage out; @@ -2752,7 +2752,7 @@ VImage VImage::resize_linear( int X, int Y ) } // im_cmulnorm: multiply two complex images, normalising output -VImage VImage::cmulnorm( VImage in2 ) +VImage VImage::cmulnorm( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -2770,7 +2770,7 @@ VImage VImage::cmulnorm( VImage in2 ) } // im_fav4: average of 4 images -VImage VImage::fav4( VImage in2, VImage in3, VImage in4 ) +VImage VImage::fav4( VImage in2, VImage in3, VImage in4 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -2788,7 +2788,7 @@ VImage VImage::fav4( VImage in2, VImage in3, VImage in4 ) } // im_gadd: calculate a*in1 + b*in2 + c = outfile -VImage VImage::gadd( double a, double b, VImage in2, double c ) +VImage VImage::gadd( double a, double b, VImage in2, double c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -2807,7 +2807,7 @@ VImage VImage::gadd( double a, double b, VImage in2, double c ) } // im_icc_export: convert a float LAB to an 8-bit device image with an ICC profile -VImage VImage::icc_export( char* output_profile, int intent ) +VImage VImage::icc_export( char* output_profile, int intent ) throw( VError ) { VImage in = *this; VImage out; @@ -2825,7 +2825,7 @@ VImage VImage::icc_export( char* output_profile, int intent ) } // im_litecor: calculate max(white)*factor*(in/white), if clip == 1 -VImage VImage::litecor( VImage white, int clip, double factor ) +VImage VImage::litecor( VImage white, int clip, double factor ) throw( VError ) { VImage in = *this; VImage out; @@ -2843,7 +2843,7 @@ VImage VImage::litecor( VImage white, int clip, double factor ) } // im_affine: affine transform -VImage VImage::affine( double a, double b, double c, double d, double dx, double dy, int x, int y, int w, int h ) +VImage VImage::affine( double a, double b, double c, double d, double dx, double dy, int x, int y, int w, int h ) throw( VError ) { VImage in = *this; VImage out; @@ -2869,7 +2869,7 @@ VImage VImage::affine( double a, double b, double c, double d, double dx, double } // im_clip2c: convert to signed 8-bit integer -VImage VImage::clip2c() +VImage VImage::clip2c() throw( VError ) { VImage in = *this; VImage out; @@ -2885,7 +2885,7 @@ VImage VImage::clip2c() } // im_clip2cm: convert to complex -VImage VImage::clip2cm() +VImage VImage::clip2cm() throw( VError ) { VImage in = *this; VImage out; @@ -2901,7 +2901,7 @@ VImage VImage::clip2cm() } // im_clip2d: convert to double-precision float -VImage VImage::clip2d() +VImage VImage::clip2d() throw( VError ) { VImage in = *this; VImage out; @@ -2917,7 +2917,7 @@ VImage VImage::clip2d() } // im_clip2dcm: convert to double complex -VImage VImage::clip2dcm() +VImage VImage::clip2dcm() throw( VError ) { VImage in = *this; VImage out; @@ -2933,7 +2933,7 @@ VImage VImage::clip2dcm() } // im_clip2f: convert to single-precision float -VImage VImage::clip2f() +VImage VImage::clip2f() throw( VError ) { VImage in = *this; VImage out; @@ -2949,7 +2949,7 @@ VImage VImage::clip2f() } // im_clip2i: convert to signed 32-bit integer -VImage VImage::clip2i() +VImage VImage::clip2i() throw( VError ) { VImage in = *this; VImage out; @@ -2965,7 +2965,7 @@ VImage VImage::clip2i() } // im_convsub: convolve uchar to uchar, sub-sampling by xskip, yskip -VImage VImage::convsub( VIMask matrix, int xskip, int yskip ) +VImage VImage::convsub( VIMask matrix, int xskip, int yskip ) throw( VError ) { VImage in = *this; VImage out; @@ -2983,7 +2983,7 @@ VImage VImage::convsub( VIMask matrix, int xskip, int yskip ) } // im_convf: convolve, with DOUBLEMASK -VImage VImage::convf( VDMask matrix ) +VImage VImage::convf( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -3000,7 +3000,7 @@ VImage VImage::convf( VDMask matrix ) } // im_convsepf: seperable convolution, with DOUBLEMASK -VImage VImage::convsepf( VDMask matrix ) +VImage VImage::convsepf( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -3017,7 +3017,7 @@ VImage VImage::convsepf( VDMask matrix ) } // im_clip2s: convert to signed 16-bit integer -VImage VImage::clip2s() +VImage VImage::clip2s() throw( VError ) { VImage in = *this; VImage out; @@ -3033,7 +3033,7 @@ VImage VImage::clip2s() } // im_clip2ui: convert to unsigned 32-bit integer -VImage VImage::clip2ui() +VImage VImage::clip2ui() throw( VError ) { VImage in = *this; VImage out; @@ -3049,7 +3049,7 @@ VImage VImage::clip2ui() } // im_insertplaceset: insert sub into main at every position in x, y -VImage VImage::insertplace( VImage sub, std::vector x, std::vector y ) +VImage VImage::insertplace( VImage sub, std::vector x, std::vector y ) throw( VError ) { VImage main = *this; VImage out; @@ -3073,7 +3073,7 @@ VImage VImage::insertplace( VImage sub, std::vector x, std::vector y ) } // im_clip2us: convert to unsigned 16-bit integer -VImage VImage::clip2us() +VImage VImage::clip2us() throw( VError ) { VImage in = *this; VImage out; @@ -3089,7 +3089,7 @@ VImage VImage::clip2us() } // im_slice: slice an image using two thresholds -VImage VImage::slice( double thresh1, double thresh2 ) +VImage VImage::slice( double thresh1, double thresh2 ) throw( VError ) { VImage input = *this; VImage output; @@ -3106,7 +3106,7 @@ VImage VImage::slice( double thresh1, double thresh2 ) } // im_segment: number continuous regions in an image -VImage VImage::segment( int& segments ) +VImage VImage::segment( int& segments ) throw( VError ) { VImage test = *this; VImage mask; @@ -3122,7 +3122,7 @@ VImage VImage::segment( int& segments ) } // im_line: draw line between points (x1,y1) and (x2,y2) -void VImage::line( int x1, int y1, int x2, int y2, int pelval ) +void VImage::line( int x1, int y1, int x2, int y2, int pelval ) throw( VError ) { VImage im = *this; Vargv _vec( "im_line" ); @@ -3137,7 +3137,7 @@ void VImage::line( int x1, int y1, int x2, int y2, int pelval ) } // im_thresh: slice an image at a threshold -VImage VImage::thresh( double threshold ) +VImage VImage::thresh( double threshold ) throw( VError ) { VImage input = *this; VImage output; @@ -3153,7 +3153,7 @@ VImage VImage::thresh( double threshold ) } // im_convf_raw: convolve, with DOUBLEMASK, no border -VImage VImage::convf_raw( VDMask matrix ) +VImage VImage::convf_raw( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -3170,7 +3170,7 @@ VImage VImage::convf_raw( VDMask matrix ) } // im_conv_raw: convolve, no border -VImage VImage::conv_raw( VIMask matrix ) +VImage VImage::conv_raw( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -3187,7 +3187,7 @@ VImage VImage::conv_raw( VIMask matrix ) } // im_contrast_surface_raw: find high-contrast points in an image -VImage VImage::contrast_surface_raw( int half_win_size, int spacing ) +VImage VImage::contrast_surface_raw( int half_win_size, int spacing ) throw( VError ) { VImage in = *this; VImage out; @@ -3205,7 +3205,7 @@ VImage VImage::contrast_surface_raw( int half_win_size, int spacing ) } // im_convsepf_raw: seperable convolution, with DOUBLEMASK, no border -VImage VImage::convsepf_raw( VDMask matrix ) +VImage VImage::convsepf_raw( VDMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -3222,7 +3222,7 @@ VImage VImage::convsepf_raw( VDMask matrix ) } // im_convsep_raw: seperable convolution, no border -VImage VImage::convsep_raw( VIMask matrix ) +VImage VImage::convsep_raw( VIMask matrix ) throw( VError ) { VImage in = *this; VImage out; @@ -3239,7 +3239,7 @@ VImage VImage::convsep_raw( VIMask matrix ) } // im_fastcor_raw: fast correlate in2 within in1, no border -VImage VImage::fastcor_raw( VImage in2 ) +VImage VImage::fastcor_raw( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3257,7 +3257,7 @@ VImage VImage::fastcor_raw( VImage in2 ) } // im_gradcor_raw: non-normalised correlation of gradient of in2 within in1, no padding -VImage VImage::gradcor_raw( VImage in2 ) +VImage VImage::gradcor_raw( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3275,7 +3275,7 @@ VImage VImage::gradcor_raw( VImage in2 ) } // im_spcor_raw: normalised correlation of in2 within in1, no black padding -VImage VImage::spcor_raw( VImage in2 ) +VImage VImage::spcor_raw( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3293,7 +3293,7 @@ VImage VImage::spcor_raw( VImage in2 ) } // im_lhisteq_raw: local histogram equalisation, no border -VImage VImage::lhisteq_raw( int width, int height ) +VImage VImage::lhisteq_raw( int width, int height ) throw( VError ) { VImage in = *this; VImage out; @@ -3311,7 +3311,7 @@ VImage VImage::lhisteq_raw( int width, int height ) } // im_stdif_raw: statistical differencing, no border -VImage VImage::stdif_raw( double a, double m0, double b, double s0, int xw, int yw ) +VImage VImage::stdif_raw( double a, double m0, double b, double s0, int xw, int yw ) throw( VError ) { VImage in = *this; VImage out; @@ -3333,7 +3333,7 @@ VImage VImage::stdif_raw( double a, double m0, double b, double s0, int xw, int } // im_rank_raw: rank filter nth element of xsize/ysize window, no border -VImage VImage::rank_raw( int xsize, int ysize, int n ) +VImage VImage::rank_raw( int xsize, int ysize, int n ) throw( VError ) { VImage in = *this; VImage out; @@ -3352,7 +3352,7 @@ VImage VImage::rank_raw( int xsize, int ysize, int n ) } // im_dilate_raw: dilate image with mask -VImage VImage::dilate_raw( VIMask mask ) +VImage VImage::dilate_raw( VIMask mask ) throw( VError ) { VImage in = *this; VImage out; @@ -3369,7 +3369,7 @@ VImage VImage::dilate_raw( VIMask mask ) } // im_erode_raw: erode image with mask -VImage VImage::erode_raw( VIMask mask ) +VImage VImage::erode_raw( VIMask mask ) throw( VError ) { VImage in = *this; VImage out; @@ -3386,7 +3386,7 @@ VImage VImage::erode_raw( VIMask mask ) } // im_similarity_area: output area xywh of similarity transformation -VImage VImage::similarity_area( double a, double b, double dx, double dy, int x, int y, int w, int h ) +VImage VImage::similarity_area( double a, double b, double dx, double dy, int x, int y, int w, int h ) throw( VError ) { VImage in = *this; VImage out; @@ -3410,7 +3410,7 @@ VImage VImage::similarity_area( double a, double b, double dx, double dy, int x, } // im_similarity: similarity transformation -VImage VImage::similarity( double a, double b, double dx, double dy ) +VImage VImage::similarity( double a, double b, double dx, double dy ) throw( VError ) { VImage in = *this; VImage out; @@ -3430,7 +3430,7 @@ VImage VImage::similarity( double a, double b, double dx, double dy ) } // im_mask2vips: convert DOUBLEMASK to VIPS image -VImage VImage::mask2vips( VDMask input ) +VImage VImage::mask2vips( VDMask input ) throw( VError ) { VImage output; @@ -3444,7 +3444,7 @@ VImage VImage::mask2vips( VDMask input ) } // im_vips2mask: convert VIPS image to DOUBLEMASK -VDMask VImage::vips2mask() +VDMask VImage::vips2mask() throw( VError ) { VImage input = *this; VDMask output; @@ -3460,7 +3460,7 @@ VDMask VImage::vips2mask() } // im_insertplace: draw image sub inside image main at position (x,y) -void VImage::insertplace( VImage sub, int x, int y ) +void VImage::insertplace( VImage sub, int x, int y ) throw( VError ) { VImage main = *this; Vargv _vec( "im_insertplace" ); @@ -3473,7 +3473,7 @@ void VImage::insertplace( VImage sub, int x, int y ) } // im_circle: plot circle on image -void VImage::circle( int cx, int cy, int radius, int intensity ) +void VImage::circle( int cx, int cy, int radius, int intensity ) throw( VError ) { VImage image = *this; Vargv _vec( "im_circle" ); @@ -3487,7 +3487,7 @@ void VImage::circle( int cx, int cy, int radius, int intensity ) } // im_andimage: bitwise and of two images -VImage VImage::andimage( VImage in2 ) +VImage VImage::andimage( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3505,7 +3505,7 @@ VImage VImage::andimage( VImage in2 ) } // im_andimageconst: bitwise and of an image with a constant -VImage VImage::andimage( int c ) +VImage VImage::andimage( int c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3522,7 +3522,7 @@ VImage VImage::andimage( int c ) } // im_andimage_vec: bitwise and of an image with a vector constant -VImage VImage::andimage( std::vector vec ) +VImage VImage::andimage( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; @@ -3542,7 +3542,7 @@ VImage VImage::andimage( std::vector vec ) } // im_orimage: bitwise or of two images -VImage VImage::orimage( VImage in2 ) +VImage VImage::orimage( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3560,7 +3560,7 @@ VImage VImage::orimage( VImage in2 ) } // im_orimageconst: bitwise or of an image with a constant -VImage VImage::orimage( int c ) +VImage VImage::orimage( int c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3577,7 +3577,7 @@ VImage VImage::orimage( int c ) } // im_orimage_vec: bitwise or of an image with a vector constant -VImage VImage::orimage( std::vector vec ) +VImage VImage::orimage( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; @@ -3597,7 +3597,7 @@ VImage VImage::orimage( std::vector vec ) } // im_eorimage: bitwise eor of two images -VImage VImage::eorimage( VImage in2 ) +VImage VImage::eorimage( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3615,7 +3615,7 @@ VImage VImage::eorimage( VImage in2 ) } // im_eorimageconst: bitwise eor of an image with a constant -VImage VImage::eorimage( int c ) +VImage VImage::eorimage( int c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3632,7 +3632,7 @@ VImage VImage::eorimage( int c ) } // im_eorimage_vec: bitwise eor of an image with a vector constant -VImage VImage::eorimage( std::vector vec ) +VImage VImage::eorimage( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; @@ -3652,7 +3652,7 @@ VImage VImage::eorimage( std::vector vec ) } // im_shiftleft_vec: shift image array bits to left -VImage VImage::shiftleft( std::vector vec ) +VImage VImage::shiftleft( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; @@ -3672,7 +3672,7 @@ VImage VImage::shiftleft( std::vector vec ) } // im_shiftleft: shift image n bits to left -VImage VImage::shiftleft( int c ) +VImage VImage::shiftleft( int c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3689,7 +3689,7 @@ VImage VImage::shiftleft( int c ) } // im_shiftright_vec: shift image array bits to right -VImage VImage::shiftright( std::vector vec ) +VImage VImage::shiftright( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; @@ -3709,7 +3709,7 @@ VImage VImage::shiftright( std::vector vec ) } // im_shiftright: shift integer image n bits to right -VImage VImage::shiftright( int c ) +VImage VImage::shiftright( int c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3726,7 +3726,7 @@ VImage VImage::shiftright( int c ) } // im_blend: use cond image to blend between images in1 and in2 -VImage VImage::blend( VImage in1, VImage in2 ) +VImage VImage::blend( VImage in1, VImage in2 ) throw( VError ) { VImage cond = *this; VImage out; @@ -3746,7 +3746,7 @@ VImage VImage::blend( VImage in1, VImage in2 ) } // im_equal: two images equal in value -VImage VImage::equal( VImage in2 ) +VImage VImage::equal( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3764,7 +3764,7 @@ VImage VImage::equal( VImage in2 ) } // im_equal_vec: image equals doublevec -VImage VImage::equal( std::vector vec ) +VImage VImage::equal( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; @@ -3784,7 +3784,7 @@ VImage VImage::equal( std::vector vec ) } // im_equalconst: image equals const -VImage VImage::equal( double c ) +VImage VImage::equal( double c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3801,7 +3801,7 @@ VImage VImage::equal( double c ) } // im_ifthenelse: use cond image to choose pels from image in1 or in2 -VImage VImage::ifthenelse( VImage in1, VImage in2 ) +VImage VImage::ifthenelse( VImage in1, VImage in2 ) throw( VError ) { VImage cond = *this; VImage out; @@ -3821,7 +3821,7 @@ VImage VImage::ifthenelse( VImage in1, VImage in2 ) } // im_less: in1 less than in2 in value -VImage VImage::less( VImage in2 ) +VImage VImage::less( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3839,7 +3839,7 @@ VImage VImage::less( VImage in2 ) } // im_less_vec: in less than doublevec -VImage VImage::less( std::vector vec ) +VImage VImage::less( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; @@ -3859,7 +3859,7 @@ VImage VImage::less( std::vector vec ) } // im_lessconst: in less than const -VImage VImage::less( double c ) +VImage VImage::less( double c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3876,7 +3876,7 @@ VImage VImage::less( double c ) } // im_lesseq: in1 less than or equal to in2 in value -VImage VImage::lesseq( VImage in2 ) +VImage VImage::lesseq( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3894,7 +3894,7 @@ VImage VImage::lesseq( VImage in2 ) } // im_lesseq_vec: in less than or equal to doublevec -VImage VImage::lesseq( std::vector vec ) +VImage VImage::lesseq( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; @@ -3914,7 +3914,7 @@ VImage VImage::lesseq( std::vector vec ) } // im_lesseqconst: in less than or equal to const -VImage VImage::lesseq( double c ) +VImage VImage::lesseq( double c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3931,7 +3931,7 @@ VImage VImage::lesseq( double c ) } // im_more: in1 more than in2 in value -VImage VImage::more( VImage in2 ) +VImage VImage::more( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3949,7 +3949,7 @@ VImage VImage::more( VImage in2 ) } // im_more_vec: in more than doublevec -VImage VImage::more( std::vector vec ) +VImage VImage::more( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; @@ -3969,7 +3969,7 @@ VImage VImage::more( std::vector vec ) } // im_moreconst: in more than const -VImage VImage::more( double c ) +VImage VImage::more( double c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -3986,7 +3986,7 @@ VImage VImage::more( double c ) } // im_moreeq: in1 more than or equal to in2 in value -VImage VImage::moreeq( VImage in2 ) +VImage VImage::moreeq( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -4004,7 +4004,7 @@ VImage VImage::moreeq( VImage in2 ) } // im_moreeq_vec: in more than or equal to doublevec -VImage VImage::moreeq( std::vector vec ) +VImage VImage::moreeq( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; @@ -4024,7 +4024,7 @@ VImage VImage::moreeq( std::vector vec ) } // im_moreeqconst: in more than or equal to const -VImage VImage::moreeq( double c ) +VImage VImage::moreeq( double c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -4041,7 +4041,7 @@ VImage VImage::moreeq( double c ) } // im_notequal: two images not equal in value -VImage VImage::notequal( VImage in2 ) +VImage VImage::notequal( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -4059,7 +4059,7 @@ VImage VImage::notequal( VImage in2 ) } // im_notequal_vec: image does not equal doublevec -VImage VImage::notequal( std::vector vec ) +VImage VImage::notequal( std::vector vec ) throw( VError ) { VImage in = *this; VImage out; @@ -4079,7 +4079,7 @@ VImage VImage::notequal( std::vector vec ) } // im_notequalconst: image does not equal const -VImage VImage::notequal( double c ) +VImage VImage::notequal( double c ) throw( VError ) { VImage in1 = *this; VImage out; @@ -4096,7 +4096,7 @@ VImage VImage::notequal( double c ) } // im_quadratic: transform via quadratic -VImage VImage::quadratic( VImage coeff ) +VImage VImage::quadratic( VImage coeff ) throw( VError ) { VImage in = *this; VImage out; @@ -4116,9 +4116,9 @@ VImage VImage::quadratic( VImage coeff ) // bodies for package format // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_csv2vips: read a file in csv format -VImage VImage::csv2vips( char* filename ) +VImage VImage::csv2vips( char* filename ) throw( VError ) { VImage im; @@ -4132,7 +4132,7 @@ VImage VImage::csv2vips( char* filename ) } // im_fits2vips: convert from fits -VImage VImage::fits2vips( char* in ) +VImage VImage::fits2vips( char* in ) throw( VError ) { VImage out; @@ -4146,7 +4146,7 @@ VImage VImage::fits2vips( char* in ) } // im_jpeg2vips: convert from jpeg -VImage VImage::jpeg2vips( char* in ) +VImage VImage::jpeg2vips( char* in ) throw( VError ) { VImage out; @@ -4160,7 +4160,7 @@ VImage VImage::jpeg2vips( char* in ) } // im_magick2vips: load file with libMagick -VImage VImage::magick2vips( char* in ) +VImage VImage::magick2vips( char* in ) throw( VError ) { VImage out; @@ -4174,7 +4174,7 @@ VImage VImage::magick2vips( char* in ) } // im_png2vips: convert PNG file to VIPS image -VImage VImage::png2vips( char* in ) +VImage VImage::png2vips( char* in ) throw( VError ) { VImage out; @@ -4188,7 +4188,7 @@ VImage VImage::png2vips( char* in ) } // im_exr2vips: convert an OpenEXR file to VIPS -VImage VImage::exr2vips( char* in ) +VImage VImage::exr2vips( char* in ) throw( VError ) { VImage out; @@ -4202,7 +4202,7 @@ VImage VImage::exr2vips( char* in ) } // im_ppm2vips: read a file in pbm/pgm/ppm format -VImage VImage::ppm2vips( char* filename ) +VImage VImage::ppm2vips( char* filename ) throw( VError ) { VImage im; @@ -4216,7 +4216,7 @@ VImage VImage::ppm2vips( char* filename ) } // im_analyze2vips: read a file in analyze format -VImage VImage::analyze2vips( char* filename ) +VImage VImage::analyze2vips( char* filename ) throw( VError ) { VImage im; @@ -4230,7 +4230,7 @@ VImage VImage::analyze2vips( char* filename ) } // im_tiff2vips: convert TIFF file to VIPS image -VImage VImage::tiff2vips( char* in ) +VImage VImage::tiff2vips( char* in ) throw( VError ) { VImage out; @@ -4244,7 +4244,7 @@ VImage VImage::tiff2vips( char* in ) } // im_vips2csv: write an image in csv format -void VImage::vips2csv( char* filename ) +void VImage::vips2csv( char* filename ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2csv" ); @@ -4255,7 +4255,7 @@ void VImage::vips2csv( char* filename ) } // im_vips2dz: save as deepzoom -void VImage::vips2dz( char* out ) +void VImage::vips2dz( char* out ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2dz" ); @@ -4266,7 +4266,7 @@ void VImage::vips2dz( char* out ) } // im_vips2jpeg: convert to jpeg -void VImage::vips2jpeg( char* out ) +void VImage::vips2jpeg( char* out ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2jpeg" ); @@ -4277,7 +4277,7 @@ void VImage::vips2jpeg( char* out ) } // im_vips2mimejpeg: convert to jpeg as mime type on stdout -void VImage::vips2mimejpeg( int qfac ) +void VImage::vips2mimejpeg( int qfac ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2mimejpeg" ); @@ -4288,7 +4288,7 @@ void VImage::vips2mimejpeg( int qfac ) } // im_vips2png: convert VIPS image to PNG file -void VImage::vips2png( char* out ) +void VImage::vips2png( char* out ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2png" ); @@ -4299,7 +4299,7 @@ void VImage::vips2png( char* out ) } // im_vips2ppm: write a file in pbm/pgm/ppm format -void VImage::vips2ppm( char* filename ) +void VImage::vips2ppm( char* filename ) throw( VError ) { VImage im = *this; Vargv _vec( "im_vips2ppm" ); @@ -4310,7 +4310,7 @@ void VImage::vips2ppm( char* filename ) } // im_vips2tiff: convert VIPS image to TIFF file -void VImage::vips2tiff( char* out ) +void VImage::vips2tiff( char* out ) throw( VError ) { VImage in = *this; Vargv _vec( "im_vips2tiff" ); @@ -4323,9 +4323,9 @@ void VImage::vips2tiff( char* out ) // bodies for package freq_filt // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_create_fmask: create frequency domain filter mask -VImage VImage::create_fmask( int width, int height, int type, double p1, double p2, double p3, double p4, double p5 ) +VImage VImage::create_fmask( int width, int height, int type, double p1, double p2, double p3, double p4, double p5 ) throw( VError ) { VImage out; @@ -4346,7 +4346,7 @@ VImage VImage::create_fmask( int width, int height, int type, double p1, double } // im_disp_ps: make displayable power spectrum -VImage VImage::disp_ps() +VImage VImage::disp_ps() throw( VError ) { VImage in = *this; VImage out; @@ -4361,7 +4361,7 @@ VImage VImage::disp_ps() } // im_flt_image_freq: frequency domain filter image -VImage VImage::flt_image_freq( int type, double p1, double p2, double p3, double p4, double p5 ) +VImage VImage::flt_image_freq( int type, double p1, double p2, double p3, double p4, double p5 ) throw( VError ) { VImage in = *this; VImage out; @@ -4382,7 +4382,7 @@ VImage VImage::flt_image_freq( int type, double p1, double p2, double p3, double } // im_fractsurf: generate a fractal surface of given dimension -VImage VImage::fractsurf( int size, double dimension ) +VImage VImage::fractsurf( int size, double dimension ) throw( VError ) { VImage out; @@ -4397,7 +4397,7 @@ VImage VImage::fractsurf( int size, double dimension ) } // im_freqflt: frequency-domain filter of in with mask -VImage VImage::freqflt( VImage mask ) +VImage VImage::freqflt( VImage mask ) throw( VError ) { VImage in = *this; VImage out; @@ -4413,7 +4413,7 @@ VImage VImage::freqflt( VImage mask ) } // im_fwfft: forward fast-fourier transform -VImage VImage::fwfft() +VImage VImage::fwfft() throw( VError ) { VImage in = *this; VImage out; @@ -4428,7 +4428,7 @@ VImage VImage::fwfft() } // im_rotquad: rotate image quadrants to move origin to centre -VImage VImage::rotquad() +VImage VImage::rotquad() throw( VError ) { VImage in = *this; VImage out; @@ -4443,7 +4443,7 @@ VImage VImage::rotquad() } // im_invfft: inverse fast-fourier transform -VImage VImage::invfft() +VImage VImage::invfft() throw( VError ) { VImage in = *this; VImage out; @@ -4458,7 +4458,7 @@ VImage VImage::invfft() } // im_phasecor_fft: non-normalised correlation of gradient of in2 within in1 -VImage VImage::phasecor_fft( VImage in2 ) +VImage VImage::phasecor_fft( VImage in2 ) throw( VError ) { VImage in1 = *this; VImage out; @@ -4474,7 +4474,7 @@ VImage VImage::phasecor_fft( VImage in2 ) } // im_invfftr: real part of inverse fast-fourier transform -VImage VImage::invfftr() +VImage VImage::invfftr() throw( VError ) { VImage in = *this; VImage out; @@ -4491,9 +4491,9 @@ VImage VImage::invfftr() // bodies for package histograms_lut // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_gammacorrect: gamma-correct image -VImage VImage::gammacorrect( double exponent ) +VImage VImage::gammacorrect( double exponent ) throw( VError ) { VImage in = *this; VImage out; @@ -4510,7 +4510,7 @@ VImage VImage::gammacorrect( double exponent ) } // im_heq: histogram-equalise image -VImage VImage::heq( int band_number ) +VImage VImage::heq( int band_number ) throw( VError ) { VImage in = *this; VImage out; @@ -4527,7 +4527,7 @@ VImage VImage::heq( int band_number ) } // im_hist: find and graph histogram of image -VImage VImage::hist( int band_number ) +VImage VImage::hist( int band_number ) throw( VError ) { VImage in = *this; VImage out; @@ -4544,7 +4544,7 @@ VImage VImage::hist( int band_number ) } // im_histcum: turn histogram to cumulative histogram -VImage VImage::histcum() +VImage VImage::histcum() throw( VError ) { VImage in = *this; VImage out; @@ -4560,7 +4560,7 @@ VImage VImage::histcum() } // im_histeq: form histogram equalistion LUT -VImage VImage::histeq() +VImage VImage::histeq() throw( VError ) { VImage in = *this; VImage out; @@ -4576,7 +4576,7 @@ VImage VImage::histeq() } // im_hist_indexed: make a histogram with an index image -VImage VImage::hist_indexed( VImage value ) +VImage VImage::hist_indexed( VImage value ) throw( VError ) { VImage index = *this; VImage out; @@ -4594,7 +4594,7 @@ VImage VImage::hist_indexed( VImage value ) } // im_histgr: find histogram of image -VImage VImage::histgr( int band_number ) +VImage VImage::histgr( int band_number ) throw( VError ) { VImage in = *this; VImage out; @@ -4610,7 +4610,7 @@ VImage VImage::histgr( int band_number ) } // im_histnD: find 1D, 2D or 3D histogram of image -VImage VImage::histnD( int bins ) +VImage VImage::histnD( int bins ) throw( VError ) { VImage in = *this; VImage out; @@ -4626,7 +4626,7 @@ VImage VImage::histnD( int bins ) } // im_histnorm: form normalised histogram -VImage VImage::histnorm() +VImage VImage::histnorm() throw( VError ) { VImage in = *this; VImage out; @@ -4642,7 +4642,7 @@ VImage VImage::histnorm() } // im_histplot: plot graph of histogram -VImage VImage::histplot() +VImage VImage::histplot() throw( VError ) { VImage in = *this; VImage out; @@ -4658,7 +4658,7 @@ VImage VImage::histplot() } // im_histspec: find histogram which will make pdf of in match ref -VImage VImage::histspec( VImage ref ) +VImage VImage::histspec( VImage ref ) throw( VError ) { VImage in = *this; VImage out; @@ -4674,7 +4674,7 @@ VImage VImage::histspec( VImage ref ) } // im_hsp: match stats of in to stats of ref -VImage VImage::hsp( VImage ref ) +VImage VImage::hsp( VImage ref ) throw( VError ) { VImage in = *this; VImage out; @@ -4690,7 +4690,7 @@ VImage VImage::hsp( VImage ref ) } // im_identity: generate identity histogram -VImage VImage::identity( int nbands ) +VImage VImage::identity( int nbands ) throw( VError ) { VImage out; @@ -4704,7 +4704,7 @@ VImage VImage::identity( int nbands ) } // im_identity_ushort: generate ushort identity histogram -VImage VImage::identity_ushort( int nbands, int size ) +VImage VImage::identity_ushort( int nbands, int size ) throw( VError ) { VImage out; @@ -4719,7 +4719,7 @@ VImage VImage::identity_ushort( int nbands, int size ) } // im_ismonotonic: test LUT for monotonicity -int VImage::ismonotonic() +int VImage::ismonotonic() throw( VError ) { VImage lut = *this; int mono; @@ -4734,7 +4734,7 @@ int VImage::ismonotonic() } // im_lhisteq: local histogram equalisation -VImage VImage::lhisteq( int width, int height ) +VImage VImage::lhisteq( int width, int height ) throw( VError ) { VImage in = *this; VImage out; @@ -4752,7 +4752,7 @@ VImage VImage::lhisteq( int width, int height ) } // im_mpercent: find threshold above which there are percent values -int VImage::mpercent( double percent ) +int VImage::mpercent( double percent ) throw( VError ) { VImage in = *this; int thresh; @@ -4768,7 +4768,7 @@ int VImage::mpercent( double percent ) } // im_invertlut: generate correction table from set of measures -VImage VImage::invertlut( VDMask measures, int lut_size ) +VImage VImage::invertlut( VDMask measures, int lut_size ) throw( VError ) { VImage lut; @@ -4783,7 +4783,7 @@ VImage VImage::invertlut( VDMask measures, int lut_size ) } // im_buildlut: generate LUT table from set of x/y positions -VImage VImage::buildlut( VDMask xyes ) +VImage VImage::buildlut( VDMask xyes ) throw( VError ) { VImage lut; @@ -4797,7 +4797,7 @@ VImage VImage::buildlut( VDMask xyes ) } // im_maplut: map image through LUT -VImage VImage::maplut( VImage lut ) +VImage VImage::maplut( VImage lut ) throw( VError ) { VImage in = *this; VImage out; @@ -4815,7 +4815,7 @@ VImage VImage::maplut( VImage lut ) } // im_project: find horizontal and vertical projections of an image -VImage VImage::project( VImage& vout ) +VImage VImage::project( VImage& vout ) throw( VError ) { VImage in = *this; VImage hout; @@ -4831,7 +4831,7 @@ VImage VImage::project( VImage& vout ) } // im_stdif: statistical differencing -VImage VImage::stdif( double a, double m0, double b, double s0, int xw, int yw ) +VImage VImage::stdif( double a, double m0, double b, double s0, int xw, int yw ) throw( VError ) { VImage in = *this; VImage out; @@ -4853,7 +4853,7 @@ VImage VImage::stdif( double a, double m0, double b, double s0, int xw, int yw ) } // im_tone_analyse: analyse in and create LUT for tone adjustment -VImage VImage::tone_analyse( double Ps, double Pm, double Ph, double S, double M, double H ) +VImage VImage::tone_analyse( double Ps, double Pm, double Ph, double S, double M, double H ) throw( VError ) { VImage in = *this; VImage hist; @@ -4874,7 +4874,7 @@ VImage VImage::tone_analyse( double Ps, double Pm, double Ph, double S, double M } // im_tone_build: create LUT for tone adjustment of LabS images -VImage VImage::tone_build( double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) +VImage VImage::tone_build( double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) throw( VError ) { VImage hist; @@ -4895,7 +4895,7 @@ VImage VImage::tone_build( double Lb, double Lw, double Ps, double Pm, double Ph } // im_tone_build_range: create LUT for tone adjustment -VImage VImage::tone_build_range( int in_max, int out_max, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) +VImage VImage::tone_build_range( int in_max, int out_max, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) throw( VError ) { VImage hist; @@ -4918,7 +4918,7 @@ VImage VImage::tone_build_range( int in_max, int out_max, double Lb, double Lw, } // im_tone_map: map L channel of LabS or LabQ image through LUT -VImage VImage::tone_map( VImage lut ) +VImage VImage::tone_map( VImage lut ) throw( VError ) { VImage in = *this; VImage out; @@ -4938,9 +4938,9 @@ VImage VImage::tone_map( VImage lut ) // bodies for package inplace // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_draw_circle: draw circle on image -void VImage::draw_circle( int cx, int cy, int radius, int fill, std::vector ink ) +void VImage::draw_circle( int cx, int cy, int radius, int fill, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_circle" ); @@ -4958,7 +4958,7 @@ void VImage::draw_circle( int cx, int cy, int radius, int fill, std::vector ink ) +void VImage::draw_rect( int left, int top, int width, int height, int fill, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_rect" ); @@ -4977,7 +4977,7 @@ void VImage::draw_rect( int left, int top, int width, int height, int fill, std: } // im_draw_line: draw line on image -void VImage::draw_line( int x1, int y1, int x2, int y2, std::vector ink ) +void VImage::draw_line( int x1, int y1, int x2, int y2, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_line" ); @@ -4995,7 +4995,7 @@ void VImage::draw_line( int x1, int y1, int x2, int y2, std::vector ink } // im_draw_point: draw point on image -void VImage::draw_point( int x, int y, std::vector ink ) +void VImage::draw_point( int x, int y, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_point" ); @@ -5011,7 +5011,7 @@ void VImage::draw_point( int x, int y, std::vector ink ) } // im_draw_smudge: smudge part of an image -void VImage::draw_smudge( int left, int top, int width, int height ) +void VImage::draw_smudge( int left, int top, int width, int height ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_smudge" ); @@ -5025,7 +5025,7 @@ void VImage::draw_smudge( int left, int top, int width, int height ) } // im_draw_flood: flood with ink from x, y while pixel != ink -void VImage::draw_flood( int x, int y, std::vector ink ) +void VImage::draw_flood( int x, int y, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_flood" ); @@ -5041,7 +5041,7 @@ void VImage::draw_flood( int x, int y, std::vector ink ) } // im_draw_flood_blob: flood with ink from x, y while pixel == start -void VImage::draw_flood_blob( int x, int y, std::vector ink ) +void VImage::draw_flood_blob( int x, int y, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_flood_blob" ); @@ -5057,7 +5057,7 @@ void VImage::draw_flood_blob( int x, int y, std::vector ink ) } // im_draw_flood_other: flood image with serial from x, y while pixel == start -void VImage::draw_flood_other( VImage test, int x, int y, int serial ) +void VImage::draw_flood_other( VImage test, int x, int y, int serial ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_flood_other" ); @@ -5071,7 +5071,7 @@ void VImage::draw_flood_other( VImage test, int x, int y, int serial ) } // im_draw_image: draw image sub inside image main at position (x,y) -void VImage::draw_image( VImage sub, int x, int y ) +void VImage::draw_image( VImage sub, int x, int y ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_image" ); @@ -5084,7 +5084,7 @@ void VImage::draw_image( VImage sub, int x, int y ) } // im_draw_mask: draw mask sub inside image main at position (x,y) -void VImage::draw_mask( VImage mask, int x, int y, std::vector ink ) +void VImage::draw_mask( VImage mask, int x, int y, std::vector ink ) throw( VError ) { VImage image = *this; Vargv _vec( "im_draw_mask" ); @@ -5101,7 +5101,7 @@ void VImage::draw_mask( VImage mask, int x, int y, std::vector ink ) } // im_lineset: draw line between points (x1,y1) and (x2,y2) -VImage VImage::line( VImage mask, VImage ink, std::vector x1, std::vector y1, std::vector x2, std::vector y2 ) +VImage VImage::line( VImage mask, VImage ink, std::vector x1, std::vector y1, std::vector x2, std::vector y2 ) throw( VError ) { VImage in = *this; VImage out; @@ -5136,9 +5136,9 @@ VImage VImage::line( VImage mask, VImage ink, std::vector x1, std::vector in, int index ) +VImage VImage::rank_image( std::vector in, int index ) throw( VError ) { VImage out; @@ -5358,7 +5376,7 @@ VImage VImage::rank_image( std::vector in, int index ) } // im_maxvalue: point-wise maximum value -VImage VImage::maxvalue( std::vector in ) +VImage VImage::maxvalue( std::vector in ) throw( VError ) { VImage out; @@ -5377,7 +5395,7 @@ VImage VImage::maxvalue( std::vector in ) } // im_label_regions: number continuous regions in an image -VImage VImage::label_regions( int& segments ) +VImage VImage::label_regions( int& segments ) throw( VError ) { VImage test = *this; VImage mask; @@ -5393,7 +5411,7 @@ VImage VImage::label_regions( int& segments ) } // im_zerox: find +ve or -ve zero crossings in image -VImage VImage::zerox( int flag ) +VImage VImage::zerox( int flag ) throw( VError ) { VImage in = *this; VImage out; @@ -5410,7 +5428,7 @@ VImage VImage::zerox( int flag ) } // im_erode: erode image with mask, adding a black border -VImage VImage::erode( VIMask mask ) +VImage VImage::erode( VIMask mask ) throw( VError ) { VImage in = *this; VImage out; @@ -5427,7 +5445,7 @@ VImage VImage::erode( VIMask mask ) } // im_profile: find first horizontal/vertical edge -VImage VImage::profile( int direction ) +VImage VImage::profile( int direction ) throw( VError ) { VImage in = *this; VImage out; @@ -5445,9 +5463,9 @@ VImage VImage::profile( int direction ) // bodies for package mosaicing // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_align_bands: align the bands of an image -VImage VImage::align_bands() +VImage VImage::align_bands() throw( VError ) { VImage in = *this; VImage out; @@ -5462,7 +5480,7 @@ VImage VImage::align_bands() } // im_correl: search area around sec for match for area around ref -double VImage::correl( VImage sec, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int& x, int& y ) +double VImage::correl( VImage sec, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int& x, int& y ) throw( VError ) { VImage ref = *this; double correlation; @@ -5486,7 +5504,7 @@ double VImage::correl( VImage sec, int xref, int yref, int xsec, int ysec, int h } // im__find_lroverlap: search for left-right overlap of ref and sec -int VImage::_find_lroverlap( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int& dy0, double& scale1, double& angle1, double& dx1, double& dy1 ) +int VImage::_find_lroverlap( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int& dy0, double& scale1, double& angle1, double& dx1, double& dy1 ) throw( VError ) { VImage ref = *this; int dx0; @@ -5514,7 +5532,7 @@ int VImage::_find_lroverlap( VImage sec, int bandno, int xr, int yr, int xs, int } // im__find_tboverlap: search for top-bottom overlap of ref and sec -int VImage::_find_tboverlap( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int& dy0, double& scale1, double& angle1, double& dx1, double& dy1 ) +int VImage::_find_tboverlap( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int& dy0, double& scale1, double& angle1, double& dx1, double& dy1 ) throw( VError ) { VImage ref = *this; int dx0; @@ -5542,7 +5560,7 @@ int VImage::_find_tboverlap( VImage sec, int bandno, int xr, int yr, int xs, int } // im_global_balance: automatically rebuild mosaic with balancing -VImage VImage::global_balance( double gamma ) +VImage VImage::global_balance( double gamma ) throw( VError ) { VImage in = *this; VImage out; @@ -5559,7 +5577,7 @@ VImage VImage::global_balance( double gamma ) } // im_global_balancef: automatically rebuild mosaic with balancing, float output -VImage VImage::global_balancef( double gamma ) +VImage VImage::global_balancef( double gamma ) throw( VError ) { VImage in = *this; VImage out; @@ -5576,7 +5594,7 @@ VImage VImage::global_balancef( double gamma ) } // im_lrmerge: left-right merge of in1 and in2 -VImage VImage::lrmerge( VImage sec, int dx, int dy, int mwidth ) +VImage VImage::lrmerge( VImage sec, int dx, int dy, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; @@ -5597,7 +5615,7 @@ VImage VImage::lrmerge( VImage sec, int dx, int dy, int mwidth ) } // im_lrmerge1: first-order left-right merge of ref and sec -VImage VImage::lrmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) +VImage VImage::lrmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; @@ -5624,7 +5642,7 @@ VImage VImage::lrmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2 } // im_lrmosaic: left-right mosaic of ref and sec -VImage VImage::lrmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int balancetype, int mwidth ) +VImage VImage::lrmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; @@ -5651,7 +5669,7 @@ VImage VImage::lrmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, } // im_lrmosaic1: first-order left-right mosaic of ref and sec -VImage VImage::lrmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) +VImage VImage::lrmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; @@ -5682,7 +5700,7 @@ VImage VImage::lrmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int } // im_match_linear: resample ref so that tie-points match -VImage VImage::match_linear( VImage sec, int xref1, int yref1, int xsec1, int ysec1, int xref2, int yref2, int xsec2, int ysec2 ) +VImage VImage::match_linear( VImage sec, int xref1, int yref1, int xsec1, int ysec1, int xref2, int yref2, int xsec2, int ysec2 ) throw( VError ) { VImage ref = *this; VImage out; @@ -5708,7 +5726,7 @@ VImage VImage::match_linear( VImage sec, int xref1, int yref1, int xsec1, int ys } // im_match_linear_search: search sec, then resample so that tie-points match -VImage VImage::match_linear_search( VImage sec, int xref1, int yref1, int xsec1, int ysec1, int xref2, int yref2, int xsec2, int ysec2, int hwindowsize, int hsearchsize ) +VImage VImage::match_linear_search( VImage sec, int xref1, int yref1, int xsec1, int ysec1, int xref2, int yref2, int xsec2, int ysec2, int hwindowsize, int hsearchsize ) throw( VError ) { VImage ref = *this; VImage out; @@ -5736,7 +5754,7 @@ VImage VImage::match_linear_search( VImage sec, int xref1, int yref1, int xsec1, } // im_maxpos_subpel: subpixel position of maximum of (phase correlation) image -double VImage::maxpos_subpel( double& y ) +double VImage::maxpos_subpel( double& y ) throw( VError ) { VImage im = *this; double x; @@ -5752,7 +5770,7 @@ double VImage::maxpos_subpel( double& y ) } // im_remosaic: automatically rebuild mosaic with new files -VImage VImage::remosaic( char* old_str, char* new_str ) +VImage VImage::remosaic( char* old_str, char* new_str ) throw( VError ) { VImage in = *this; VImage out; @@ -5770,7 +5788,7 @@ VImage VImage::remosaic( char* old_str, char* new_str ) } // im_tbmerge: top-bottom merge of in1 and in2 -VImage VImage::tbmerge( VImage sec, int dx, int dy, int mwidth ) +VImage VImage::tbmerge( VImage sec, int dx, int dy, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; @@ -5791,7 +5809,7 @@ VImage VImage::tbmerge( VImage sec, int dx, int dy, int mwidth ) } // im_tbmerge1: first-order top-bottom merge of in1 and in2 -VImage VImage::tbmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) +VImage VImage::tbmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; @@ -5818,7 +5836,7 @@ VImage VImage::tbmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2 } // im_tbmosaic: top-bottom mosaic of in1 and in2 -VImage VImage::tbmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int balancetype, int mwidth ) +VImage VImage::tbmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; @@ -5845,7 +5863,7 @@ VImage VImage::tbmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, } // im_tbmosaic1: first-order top-bottom mosaic of ref and sec -VImage VImage::tbmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) +VImage VImage::tbmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) { VImage ref = *this; VImage out; @@ -5878,9 +5896,9 @@ VImage VImage::tbmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int // bodies for package other // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_benchmark: do something complicated for testing -VImage VImage::benchmark() +VImage VImage::benchmark() throw( VError ) { VImage in = *this; VImage out; @@ -5896,7 +5914,7 @@ VImage VImage::benchmark() } // im_benchmark2: do something complicated for testing -double VImage::benchmark2() +double VImage::benchmark2() throw( VError ) { VImage in = *this; double value; @@ -5911,7 +5929,7 @@ double VImage::benchmark2() } // im_benchmarkn: do something complicated for testing -VImage VImage::benchmarkn( int n ) +VImage VImage::benchmarkn( int n ) throw( VError ) { VImage in = *this; VImage out; @@ -5928,7 +5946,7 @@ VImage VImage::benchmarkn( int n ) } // im_eye: generate IM_BANDFMT_UCHAR [0,255] frequency/amplitude image -VImage VImage::eye( int xsize, int ysize, double factor ) +VImage VImage::eye( int xsize, int ysize, double factor ) throw( VError ) { VImage out; @@ -5944,7 +5962,7 @@ VImage VImage::eye( int xsize, int ysize, double factor ) } // im_grey: generate IM_BANDFMT_UCHAR [0,255] grey scale image -VImage VImage::grey( int xsize, int ysize ) +VImage VImage::grey( int xsize, int ysize ) throw( VError ) { VImage out; @@ -5959,7 +5977,7 @@ VImage VImage::grey( int xsize, int ysize ) } // im_feye: generate IM_BANDFMT_FLOAT [-1,1] frequency/amplitude image -VImage VImage::feye( int xsize, int ysize, double factor ) +VImage VImage::feye( int xsize, int ysize, double factor ) throw( VError ) { VImage out; @@ -5975,7 +5993,7 @@ VImage VImage::feye( int xsize, int ysize, double factor ) } // im_fgrey: generate IM_BANDFMT_FLOAT [0,1] grey scale image -VImage VImage::fgrey( int xsize, int ysize ) +VImage VImage::fgrey( int xsize, int ysize ) throw( VError ) { VImage out; @@ -5990,7 +6008,7 @@ VImage VImage::fgrey( int xsize, int ysize ) } // im_fzone: generate IM_BANDFMT_FLOAT [-1,1] zone plate image -VImage VImage::fzone( int size ) +VImage VImage::fzone( int size ) throw( VError ) { VImage out; @@ -6004,7 +6022,7 @@ VImage VImage::fzone( int size ) } // im_make_xy: generate image with pixel value equal to coordinate -VImage VImage::make_xy( int xsize, int ysize ) +VImage VImage::make_xy( int xsize, int ysize ) throw( VError ) { VImage out; @@ -6019,7 +6037,7 @@ VImage VImage::make_xy( int xsize, int ysize ) } // im_sines: generate 2D sine image -VImage VImage::sines( int xsize, int ysize, double horfreq, double verfreq ) +VImage VImage::sines( int xsize, int ysize, double horfreq, double verfreq ) throw( VError ) { VImage out; @@ -6036,7 +6054,7 @@ VImage VImage::sines( int xsize, int ysize, double horfreq, double verfreq ) } // im_zone: generate IM_BANDFMT_UCHAR [0,255] zone plate image -VImage VImage::zone( int size ) +VImage VImage::zone( int size ) throw( VError ) { VImage out; @@ -6052,9 +6070,9 @@ VImage VImage::zone( int size ) // bodies for package resample // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_rightshift_size: decrease size by a power-of-two factor -VImage VImage::rightshift_size( int xshift, int yshift, int band_fmt ) +VImage VImage::rightshift_size( int xshift, int yshift, int band_fmt ) throw( VError ) { VImage in = *this; VImage out; @@ -6073,7 +6091,7 @@ VImage VImage::rightshift_size( int xshift, int yshift, int band_fmt ) } // im_shrink: shrink image by xfac, yfac times -VImage VImage::shrink( double xfac, double yfac ) +VImage VImage::shrink( double xfac, double yfac ) throw( VError ) { VImage in = *this; VImage out; @@ -6091,7 +6109,7 @@ VImage VImage::shrink( double xfac, double yfac ) } // im_stretch3: stretch 3%, sub-pixel displace by xdisp/ydisp -VImage VImage::stretch3( double xdisp, double ydisp ) +VImage VImage::stretch3( double xdisp, double ydisp ) throw( VError ) { VImage in = *this; VImage out; @@ -6109,7 +6127,7 @@ VImage VImage::stretch3( double xdisp, double ydisp ) } // im_affinei: affine transform -VImage VImage::affinei( char* interpolate, double a, double b, double c, double d, double dx, double dy, int x, int y, int w, int h ) +VImage VImage::affinei( char* interpolate, double a, double b, double c, double d, double dx, double dy, int x, int y, int w, int h ) throw( VError ) { VImage in = *this; VImage out; @@ -6137,7 +6155,7 @@ VImage VImage::affinei( char* interpolate, double a, double b, double c, double } // im_affinei_all: affine transform of whole image -VImage VImage::affinei_all( char* interpolate, double a, double b, double c, double d, double dx, double dy ) +VImage VImage::affinei_all( char* interpolate, double a, double b, double c, double d, double dx, double dy ) throw( VError ) { VImage in = *this; VImage out; @@ -6163,9 +6181,9 @@ VImage VImage::affinei_all( char* interpolate, double a, double b, double c, dou // bodies for package video // this file automatically generated from -// VIPS library 7.34.0-Tue Jun 11 11:18:24 BST 2013 +// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 // im_video_test: test video grabber -VImage VImage::video_test( int brightness, int error ) +VImage VImage::video_test( int brightness, int error ) throw( VError ) { VImage out; @@ -6180,7 +6198,7 @@ VImage VImage::video_test( int brightness, int error ) } // im_video_v4l1: grab a video frame with v4l1 -VImage VImage::video_v4l1( char* device, int channel, int brightness, int colour, int contrast, int hue, int ngrabs ) +VImage VImage::video_v4l1( char* device, int channel, int brightness, int colour, int contrast, int hue, int ngrabs ) throw( VError ) { VImage out; From de7636c66bb2c513d812da82215d87a2df3b81d9 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Sun, 26 Nov 2017 17:55:50 +0000 Subject: [PATCH 12/14] remove "throw" from c++ autogen tools and output --- libvipsCC/include/vips/vipsc++.h | 734 +++++++++++++++---------------- libvipsCC/vipsc++.cc | 734 +++++++++++++++---------------- tools/vips.c | 10 +- 3 files changed, 740 insertions(+), 738 deletions(-) diff --git a/libvipsCC/include/vips/vipsc++.h b/libvipsCC/include/vips/vipsc++.h index 79299b35..aa9fc70e 100644 --- a/libvipsCC/include/vips/vipsc++.h +++ b/libvipsCC/include/vips/vipsc++.h @@ -1,419 +1,419 @@ // headers for package arithmetic // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -VImage abs() throw( VError ); -VImage acos() throw( VError ); -VImage add( VImage add_in2 ) throw( VError ); -VImage asin() throw( VError ); -VImage atan() throw( VError ); -double avg() throw( VError ); -double point( char* point_interpolate, double point_x, double point_y, int point_band ) throw( VError ); -double point_bilinear( double point_bilinear_x, double point_bilinear_y, int point_bilinear_band ) throw( VError ); -VImage bandmean() throw( VError ); -VImage ceil() throw( VError ); -VImage cos() throw( VError ); -VImage cross_phase( VImage cross_phase_in2 ) throw( VError ); -double deviate() throw( VError ); -VImage divide( VImage divide_in2 ) throw( VError ); -VImage exp10() throw( VError ); -VImage expn( double expn_x ) throw( VError ); -VImage expn( std::vector expn_v ) throw( VError ); -VImage exp() throw( VError ); -VImage floor() throw( VError ); -VImage invert() throw( VError ); -VImage lin( double lin_a, double lin_b ) throw( VError ); -static VImage linreg( std::vector linreg_ins, std::vector linreg_xs ) throw( VError ); -VImage lin( std::vector lin_a, std::vector lin_b ) throw( VError ); -VImage log10() throw( VError ); -VImage log() throw( VError ); -double max() throw( VError ); -std::complex maxpos() throw( VError ); -double maxpos_avg( double& maxpos_avg_y, double& maxpos_avg_out ) throw( VError ); -VDMask measure( int measure_x, int measure_y, int measure_w, int measure_h, int measure_h_patches, int measure_v_patches ) throw( VError ); -double min() throw( VError ); -std::complex minpos() throw( VError ); -VImage multiply( VImage multiply_in2 ) throw( VError ); -VImage pow( double pow_x ) throw( VError ); -VImage pow( std::vector pow_v ) throw( VError ); -VImage recomb( VDMask recomb_matrix ) throw( VError ); -VImage remainder( VImage remainder_in2 ) throw( VError ); -VImage remainder( double remainder_x ) throw( VError ); -VImage remainder( std::vector remainder_x ) throw( VError ); -VImage rint() throw( VError ); -VImage sign() throw( VError ); -VImage sin() throw( VError ); -VDMask stats() throw( VError ); -VImage subtract( VImage subtract_in2 ) throw( VError ); -VImage tan() throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +VImage abs(); +VImage acos(); +VImage add( VImage add_in2 ); +VImage asin(); +VImage atan(); +double avg(); +double point( char* point_interpolate, double point_x, double point_y, int point_band ); +double point_bilinear( double point_bilinear_x, double point_bilinear_y, int point_bilinear_band ); +VImage bandmean(); +VImage ceil(); +VImage cos(); +VImage cross_phase( VImage cross_phase_in2 ); +double deviate(); +VImage divide( VImage divide_in2 ); +VImage exp10(); +VImage expn( double expn_x ); +VImage expn( std::vector expn_v ); +VImage exp(); +VImage floor(); +VImage invert(); +VImage lin( double lin_a, double lin_b ); +static VImage linreg( std::vector linreg_ins, std::vector linreg_xs ); +VImage lin( std::vector lin_a, std::vector lin_b ); +VImage log10(); +VImage log(); +double max(); +std::complex maxpos(); +double maxpos_avg( double& maxpos_avg_y, double& maxpos_avg_out ); +VDMask measure( int measure_x, int measure_y, int measure_w, int measure_h, int measure_h_patches, int measure_v_patches ); +double min(); +std::complex minpos(); +VImage multiply( VImage multiply_in2 ); +VImage pow( double pow_x ); +VImage pow( std::vector pow_v ); +VImage recomb( VDMask recomb_matrix ); +VImage remainder( VImage remainder_in2 ); +VImage remainder( double remainder_x ); +VImage remainder( std::vector remainder_x ); +VImage rint(); +VImage sign(); +VImage sin(); +VDMask stats(); +VImage subtract( VImage subtract_in2 ); +VImage tan(); // headers for package cimg // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -VImage greyc( int greyc_iterations, double greyc_amplitude, double greyc_sharpness, double greyc_anisotropy, double greyc_alpha, double greyc_sigma, double greyc_dl, double greyc_da, double greyc_gauss_prec, int greyc_interpolation, int greyc_fast_approx ) throw( VError ); -VImage greyc_mask( VImage greyc_mask_mask, int greyc_mask_iterations, double greyc_mask_amplitude, double greyc_mask_sharpness, double greyc_mask_anisotropy, double greyc_mask_alpha, double greyc_mask_sigma, double greyc_mask_dl, double greyc_mask_da, double greyc_mask_gauss_prec, int greyc_mask_interpolation, int greyc_mask_fast_approx ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +VImage greyc( int greyc_iterations, double greyc_amplitude, double greyc_sharpness, double greyc_anisotropy, double greyc_alpha, double greyc_sigma, double greyc_dl, double greyc_da, double greyc_gauss_prec, int greyc_interpolation, int greyc_fast_approx ); +VImage greyc_mask( VImage greyc_mask_mask, int greyc_mask_iterations, double greyc_mask_amplitude, double greyc_mask_sharpness, double greyc_mask_anisotropy, double greyc_mask_alpha, double greyc_mask_sigma, double greyc_mask_dl, double greyc_mask_da, double greyc_mask_gauss_prec, int greyc_mask_interpolation, int greyc_mask_fast_approx ); // headers for package colour // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -VImage LCh2Lab() throw( VError ); -VImage LCh2UCS() throw( VError ); -VImage Lab2LCh() throw( VError ); -VImage Lab2LabQ() throw( VError ); -VImage Lab2LabS() throw( VError ); -VImage Lab2UCS() throw( VError ); -VImage Lab2XYZ() throw( VError ); -VImage Lab2XYZ_temp( double Lab2XYZ_temp_X0, double Lab2XYZ_temp_Y0, double Lab2XYZ_temp_Z0 ) throw( VError ); -VImage Lab2disp( VDisplay Lab2disp_disp ) throw( VError ); -VImage LabQ2LabS() throw( VError ); -VImage LabQ2Lab() throw( VError ); -VImage LabQ2XYZ() throw( VError ); -VImage LabQ2disp( VDisplay LabQ2disp_disp ) throw( VError ); -VImage LabS2LabQ() throw( VError ); -VImage LabS2Lab() throw( VError ); -VImage UCS2LCh() throw( VError ); -VImage UCS2Lab() throw( VError ); -VImage UCS2XYZ() throw( VError ); -VImage XYZ2Lab() throw( VError ); -VImage XYZ2Lab_temp( double XYZ2Lab_temp_X0, double XYZ2Lab_temp_Y0, double XYZ2Lab_temp_Z0 ) throw( VError ); -VImage XYZ2UCS() throw( VError ); -VImage XYZ2Yxy() throw( VError ); -VImage XYZ2disp( VDisplay XYZ2disp_disp ) throw( VError ); -VImage XYZ2sRGB() throw( VError ); -VImage Yxy2XYZ() throw( VError ); -VImage dE00_fromLab( VImage dE00_fromLab_in2 ) throw( VError ); -VImage dECMC_fromLab( VImage dECMC_fromLab_in2 ) throw( VError ); -VImage dECMC_fromdisp( VImage dECMC_fromdisp_in2, VDisplay dECMC_fromdisp_disp ) throw( VError ); -VImage dE_fromLab( VImage dE_fromLab_in2 ) throw( VError ); -VImage dE_fromXYZ( VImage dE_fromXYZ_in2 ) throw( VError ); -VImage dE_fromdisp( VImage dE_fromdisp_in2, VDisplay dE_fromdisp_disp ) throw( VError ); -VImage disp2Lab( VDisplay disp2Lab_disp ) throw( VError ); -VImage disp2XYZ( VDisplay disp2XYZ_disp ) throw( VError ); -VImage float2rad() throw( VError ); -VImage icc_ac2rc( char* icc_ac2rc_profile ) throw( VError ); -VImage icc_export_depth( int icc_export_depth_depth, char* icc_export_depth_output_profile, int icc_export_depth_intent ) throw( VError ); -VImage icc_import( char* icc_import_input_profile, int icc_import_intent ) throw( VError ); -VImage icc_import_embedded( int icc_import_embedded_intent ) throw( VError ); -VImage icc_transform( char* icc_transform_input_profile, char* icc_transform_output_profile, int icc_transform_intent ) throw( VError ); -VImage lab_morph( VDMask lab_morph_greyscale, double lab_morph_L_offset, double lab_morph_L_scale, double lab_morph_a_scale, double lab_morph_b_scale ) throw( VError ); -VImage rad2float() throw( VError ); -VImage sRGB2XYZ() throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +VImage LCh2Lab(); +VImage LCh2UCS(); +VImage Lab2LCh(); +VImage Lab2LabQ(); +VImage Lab2LabS(); +VImage Lab2UCS(); +VImage Lab2XYZ(); +VImage Lab2XYZ_temp( double Lab2XYZ_temp_X0, double Lab2XYZ_temp_Y0, double Lab2XYZ_temp_Z0 ); +VImage Lab2disp( VDisplay Lab2disp_disp ); +VImage LabQ2LabS(); +VImage LabQ2Lab(); +VImage LabQ2XYZ(); +VImage LabQ2disp( VDisplay LabQ2disp_disp ); +VImage LabS2LabQ(); +VImage LabS2Lab(); +VImage UCS2LCh(); +VImage UCS2Lab(); +VImage UCS2XYZ(); +VImage XYZ2Lab(); +VImage XYZ2Lab_temp( double XYZ2Lab_temp_X0, double XYZ2Lab_temp_Y0, double XYZ2Lab_temp_Z0 ); +VImage XYZ2UCS(); +VImage XYZ2Yxy(); +VImage XYZ2disp( VDisplay XYZ2disp_disp ); +VImage XYZ2sRGB(); +VImage Yxy2XYZ(); +VImage dE00_fromLab( VImage dE00_fromLab_in2 ); +VImage dECMC_fromLab( VImage dECMC_fromLab_in2 ); +VImage dECMC_fromdisp( VImage dECMC_fromdisp_in2, VDisplay dECMC_fromdisp_disp ); +VImage dE_fromLab( VImage dE_fromLab_in2 ); +VImage dE_fromXYZ( VImage dE_fromXYZ_in2 ); +VImage dE_fromdisp( VImage dE_fromdisp_in2, VDisplay dE_fromdisp_disp ); +VImage disp2Lab( VDisplay disp2Lab_disp ); +VImage disp2XYZ( VDisplay disp2XYZ_disp ); +VImage float2rad(); +VImage icc_ac2rc( char* icc_ac2rc_profile ); +VImage icc_export_depth( int icc_export_depth_depth, char* icc_export_depth_output_profile, int icc_export_depth_intent ); +VImage icc_import( char* icc_import_input_profile, int icc_import_intent ); +VImage icc_import_embedded( int icc_import_embedded_intent ); +VImage icc_transform( char* icc_transform_input_profile, char* icc_transform_output_profile, int icc_transform_intent ); +VImage lab_morph( VDMask lab_morph_greyscale, double lab_morph_L_offset, double lab_morph_L_scale, double lab_morph_a_scale, double lab_morph_b_scale ); +VImage rad2float(); +VImage sRGB2XYZ(); // headers for package conversion // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -static VImage gaussnoise( int gaussnoise_xsize, int gaussnoise_ysize, double gaussnoise_mean, double gaussnoise_sigma ) throw( VError ); -VImage bandjoin( VImage bandjoin_in2 ) throw( VError ); -static VImage black( int black_x_size, int black_y_size, int black_bands ) throw( VError ); -VImage c2amph() throw( VError ); -VImage c2imag() throw( VError ); -VImage c2real() throw( VError ); -VImage c2rect() throw( VError ); -VImage clip2fmt( int clip2fmt_ofmt ) throw( VError ); -VImage copy() throw( VError ); -VImage copy_file() throw( VError ); -VImage copy_morph( int copy_morph_Bands, int copy_morph_BandFmt, int copy_morph_Coding ) throw( VError ); -VImage copy_swap() throw( VError ); -VImage copy_set( int copy_set_Type, double copy_set_Xres, double copy_set_Yres, int copy_set_Xoffset, int copy_set_Yoffset ) throw( VError ); -VImage extract_area( int extract_area_left, int extract_area_top, int extract_area_width, int extract_area_height ) throw( VError ); -VImage extract_areabands( int extract_areabands_left, int extract_areabands_top, int extract_areabands_width, int extract_areabands_height, int extract_areabands_band, int extract_areabands_nbands ) throw( VError ); -VImage extract_band( int extract_band_band ) throw( VError ); -VImage extract_bands( int extract_bands_band, int extract_bands_nbands ) throw( VError ); -VImage extract( int extract_left, int extract_top, int extract_width, int extract_height, int extract_band ) throw( VError ); -VImage falsecolour() throw( VError ); -VImage fliphor() throw( VError ); -VImage flipver() throw( VError ); -static VImage gbandjoin( std::vector gbandjoin_in ) throw( VError ); -VImage grid( int grid_tile_height, int grid_across, int grid_down ) throw( VError ); -VImage insert( VImage insert_sub, int insert_x, int insert_y ) throw( VError ); -VImage insert( VImage insert_sub, std::vector insert_x, std::vector insert_y ) throw( VError ); -VImage insert_noexpand( VImage insert_noexpand_sub, int insert_noexpand_x, int insert_noexpand_y ) throw( VError ); -VImage embed( int embed_type, int embed_x, int embed_y, int embed_width, int embed_height ) throw( VError ); -VImage lrjoin( VImage lrjoin_in2 ) throw( VError ); -VImage msb() throw( VError ); -VImage msb_band( int msb_band_band ) throw( VError ); -VImage replicate( int replicate_across, int replicate_down ) throw( VError ); -VImage ri2c( VImage ri2c_in2 ) throw( VError ); -VImage rot180() throw( VError ); -VImage rot270() throw( VError ); -VImage rot90() throw( VError ); -VImage scale() throw( VError ); -VImage scaleps() throw( VError ); -VImage subsample( int subsample_xshrink, int subsample_yshrink ) throw( VError ); -char* system( char* system_command ) throw( VError ); -VImage system_image( char* system_image_in_format, char* system_image_out_format, char* system_image_command, char*& system_image_log ) throw( VError ); -VImage tbjoin( VImage tbjoin_in2 ) throw( VError ); -static VImage text( char* text_text, char* text_font, int text_width, int text_alignment, int text_dpi ) throw( VError ); -VImage wrap( int wrap_x, int wrap_y ) throw( VError ); -VImage zoom( int zoom_xfac, int zoom_yfac ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +static VImage gaussnoise( int gaussnoise_xsize, int gaussnoise_ysize, double gaussnoise_mean, double gaussnoise_sigma ); +VImage bandjoin( VImage bandjoin_in2 ); +static VImage black( int black_x_size, int black_y_size, int black_bands ); +VImage c2amph(); +VImage c2imag(); +VImage c2real(); +VImage c2rect(); +VImage clip2fmt( int clip2fmt_ofmt ); +VImage copy(); +VImage copy_file(); +VImage copy_morph( int copy_morph_Bands, int copy_morph_BandFmt, int copy_morph_Coding ); +VImage copy_swap(); +VImage copy_set( int copy_set_Type, double copy_set_Xres, double copy_set_Yres, int copy_set_Xoffset, int copy_set_Yoffset ); +VImage extract_area( int extract_area_left, int extract_area_top, int extract_area_width, int extract_area_height ); +VImage extract_areabands( int extract_areabands_left, int extract_areabands_top, int extract_areabands_width, int extract_areabands_height, int extract_areabands_band, int extract_areabands_nbands ); +VImage extract_band( int extract_band_band ); +VImage extract_bands( int extract_bands_band, int extract_bands_nbands ); +VImage extract( int extract_left, int extract_top, int extract_width, int extract_height, int extract_band ); +VImage falsecolour(); +VImage fliphor(); +VImage flipver(); +static VImage gbandjoin( std::vector gbandjoin_in ); +VImage grid( int grid_tile_height, int grid_across, int grid_down ); +VImage insert( VImage insert_sub, int insert_x, int insert_y ); +VImage insert( VImage insert_sub, std::vector insert_x, std::vector insert_y ); +VImage insert_noexpand( VImage insert_noexpand_sub, int insert_noexpand_x, int insert_noexpand_y ); +VImage embed( int embed_type, int embed_x, int embed_y, int embed_width, int embed_height ); +VImage lrjoin( VImage lrjoin_in2 ); +VImage msb(); +VImage msb_band( int msb_band_band ); +VImage replicate( int replicate_across, int replicate_down ); +VImage ri2c( VImage ri2c_in2 ); +VImage rot180(); +VImage rot270(); +VImage rot90(); +VImage scale(); +VImage scaleps(); +VImage subsample( int subsample_xshrink, int subsample_yshrink ); +char* system( char* system_command ); +VImage system_image( char* system_image_in_format, char* system_image_out_format, char* system_image_command, char*& system_image_log ); +VImage tbjoin( VImage tbjoin_in2 ); +static VImage text( char* text_text, char* text_font, int text_width, int text_alignment, int text_dpi ); +VImage wrap( int wrap_x, int wrap_y ); +VImage zoom( int zoom_xfac, int zoom_yfac ); // headers for package convolution // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -VImage aconvsep( VDMask aconvsep_matrix, int aconvsep_n_layers ) throw( VError ); -VImage aconv( VDMask aconv_matrix, int aconv_n_layers, int aconv_cluster ) throw( VError ); -VImage addgnoise( double addgnoise_sigma ) throw( VError ); -VImage compass( VIMask compass_matrix ) throw( VError ); -VImage contrast_surface( int contrast_surface_half_win_size, int contrast_surface_spacing ) throw( VError ); -VImage conv( VIMask conv_matrix ) throw( VError ); -VImage conv( VDMask conv_matrix ) throw( VError ); -VImage convsep( VIMask convsep_matrix ) throw( VError ); -VImage convsep( VDMask convsep_matrix ) throw( VError ); -VImage fastcor( VImage fastcor_in2 ) throw( VError ); -VImage gradcor( VImage gradcor_in2 ) throw( VError ); -VImage gradient( VIMask gradient_matrix ) throw( VError ); -VImage grad_x() throw( VError ); -VImage grad_y() throw( VError ); -VImage lindetect( VIMask lindetect_matrix ) throw( VError ); -VImage sharpen( int sharpen_mask_size, double sharpen_x1, double sharpen_y2, double sharpen_y3, double sharpen_m1, double sharpen_m2 ) throw( VError ); -VImage spcor( VImage spcor_in2 ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +VImage aconvsep( VDMask aconvsep_matrix, int aconvsep_n_layers ); +VImage aconv( VDMask aconv_matrix, int aconv_n_layers, int aconv_cluster ); +VImage addgnoise( double addgnoise_sigma ); +VImage compass( VIMask compass_matrix ); +VImage contrast_surface( int contrast_surface_half_win_size, int contrast_surface_spacing ); +VImage conv( VIMask conv_matrix ); +VImage conv( VDMask conv_matrix ); +VImage convsep( VIMask convsep_matrix ); +VImage convsep( VDMask convsep_matrix ); +VImage fastcor( VImage fastcor_in2 ); +VImage gradcor( VImage gradcor_in2 ); +VImage gradient( VIMask gradient_matrix ); +VImage grad_x(); +VImage grad_y(); +VImage lindetect( VIMask lindetect_matrix ); +VImage sharpen( int sharpen_mask_size, double sharpen_x1, double sharpen_y2, double sharpen_y3, double sharpen_m1, double sharpen_m2 ); +VImage spcor( VImage spcor_in2 ); // headers for package deprecated // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -VImage argb2rgba() throw( VError ); -VImage flood_copy( int flood_copy_start_x, int flood_copy_start_y, std::vector flood_copy_ink ) throw( VError ); -VImage flood_blob_copy( int flood_blob_copy_start_x, int flood_blob_copy_start_y, std::vector flood_blob_copy_ink ) throw( VError ); -VImage flood_other_copy( VImage flood_other_copy_mark, int flood_other_copy_start_x, int flood_other_copy_start_y, int flood_other_copy_serial ) throw( VError ); -VImage clip() throw( VError ); -VImage c2ps() throw( VError ); -VImage resize_linear( int resize_linear_X, int resize_linear_Y ) throw( VError ); -VImage cmulnorm( VImage cmulnorm_in2 ) throw( VError ); -VImage fav4( VImage fav4_in2, VImage fav4_in3, VImage fav4_in4 ) throw( VError ); -VImage gadd( double gadd_a, double gadd_b, VImage gadd_in2, double gadd_c ) throw( VError ); -VImage icc_export( char* icc_export_output_profile, int icc_export_intent ) throw( VError ); -VImage litecor( VImage litecor_white, int litecor_clip, double litecor_factor ) throw( VError ); -VImage affine( double affine_a, double affine_b, double affine_c, double affine_d, double affine_dx, double affine_dy, int affine_x, int affine_y, int affine_w, int affine_h ) throw( VError ); -VImage clip2c() throw( VError ); -VImage clip2cm() throw( VError ); -VImage clip2d() throw( VError ); -VImage clip2dcm() throw( VError ); -VImage clip2f() throw( VError ); -VImage clip2i() throw( VError ); -VImage convsub( VIMask convsub_matrix, int convsub_xskip, int convsub_yskip ) throw( VError ); -VImage convf( VDMask convf_matrix ) throw( VError ); -VImage convsepf( VDMask convsepf_matrix ) throw( VError ); -VImage clip2s() throw( VError ); -VImage clip2ui() throw( VError ); -VImage insertplace( VImage insertplace_sub, std::vector insertplace_x, std::vector insertplace_y ) throw( VError ); -VImage clip2us() throw( VError ); -VImage slice( double slice_thresh1, double slice_thresh2 ) throw( VError ); -VImage segment( int& segment_segments ) throw( VError ); -void line( int line_x1, int line_y1, int line_x2, int line_y2, int line_pelval ) throw( VError ); -VImage thresh( double thresh_threshold ) throw( VError ); -VImage convf_raw( VDMask convf_raw_matrix ) throw( VError ); -VImage conv_raw( VIMask conv_raw_matrix ) throw( VError ); -VImage contrast_surface_raw( int contrast_surface_raw_half_win_size, int contrast_surface_raw_spacing ) throw( VError ); -VImage convsepf_raw( VDMask convsepf_raw_matrix ) throw( VError ); -VImage convsep_raw( VIMask convsep_raw_matrix ) throw( VError ); -VImage fastcor_raw( VImage fastcor_raw_in2 ) throw( VError ); -VImage gradcor_raw( VImage gradcor_raw_in2 ) throw( VError ); -VImage spcor_raw( VImage spcor_raw_in2 ) throw( VError ); -VImage lhisteq_raw( int lhisteq_raw_width, int lhisteq_raw_height ) throw( VError ); -VImage stdif_raw( double stdif_raw_a, double stdif_raw_m0, double stdif_raw_b, double stdif_raw_s0, int stdif_raw_xw, int stdif_raw_yw ) throw( VError ); -VImage rank_raw( int rank_raw_xsize, int rank_raw_ysize, int rank_raw_n ) throw( VError ); -VImage dilate_raw( VIMask dilate_raw_mask ) throw( VError ); -VImage erode_raw( VIMask erode_raw_mask ) throw( VError ); -VImage similarity_area( double similarity_area_a, double similarity_area_b, double similarity_area_dx, double similarity_area_dy, int similarity_area_x, int similarity_area_y, int similarity_area_w, int similarity_area_h ) throw( VError ); -VImage similarity( double similarity_a, double similarity_b, double similarity_dx, double similarity_dy ) throw( VError ); -static VImage mask2vips( VDMask mask2vips_input ) throw( VError ); -VDMask vips2mask() throw( VError ); -void insertplace( VImage insertplace_sub, int insertplace_x, int insertplace_y ) throw( VError ); -void circle( int circle_cx, int circle_cy, int circle_radius, int circle_intensity ) throw( VError ); -VImage andimage( VImage andimage_in2 ) throw( VError ); -VImage andimage( int andimage_c ) throw( VError ); -VImage andimage( std::vector andimage_vec ) throw( VError ); -VImage orimage( VImage orimage_in2 ) throw( VError ); -VImage orimage( int orimage_c ) throw( VError ); -VImage orimage( std::vector orimage_vec ) throw( VError ); -VImage eorimage( VImage eorimage_in2 ) throw( VError ); -VImage eorimage( int eorimage_c ) throw( VError ); -VImage eorimage( std::vector eorimage_vec ) throw( VError ); -VImage shiftleft( std::vector shiftleft_vec ) throw( VError ); -VImage shiftleft( int shiftleft_c ) throw( VError ); -VImage shiftright( std::vector shiftright_vec ) throw( VError ); -VImage shiftright( int shiftright_c ) throw( VError ); -VImage blend( VImage blend_in1, VImage blend_in2 ) throw( VError ); -VImage equal( VImage equal_in2 ) throw( VError ); -VImage equal( std::vector equal_vec ) throw( VError ); -VImage equal( double equal_c ) throw( VError ); -VImage ifthenelse( VImage ifthenelse_in1, VImage ifthenelse_in2 ) throw( VError ); -VImage less( VImage less_in2 ) throw( VError ); -VImage less( std::vector less_vec ) throw( VError ); -VImage less( double less_c ) throw( VError ); -VImage lesseq( VImage lesseq_in2 ) throw( VError ); -VImage lesseq( std::vector lesseq_vec ) throw( VError ); -VImage lesseq( double lesseq_c ) throw( VError ); -VImage more( VImage more_in2 ) throw( VError ); -VImage more( std::vector more_vec ) throw( VError ); -VImage more( double more_c ) throw( VError ); -VImage moreeq( VImage moreeq_in2 ) throw( VError ); -VImage moreeq( std::vector moreeq_vec ) throw( VError ); -VImage moreeq( double moreeq_c ) throw( VError ); -VImage notequal( VImage notequal_in2 ) throw( VError ); -VImage notequal( std::vector notequal_vec ) throw( VError ); -VImage notequal( double notequal_c ) throw( VError ); -VImage quadratic( VImage quadratic_coeff ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +VImage argb2rgba(); +VImage flood_copy( int flood_copy_start_x, int flood_copy_start_y, std::vector flood_copy_ink ); +VImage flood_blob_copy( int flood_blob_copy_start_x, int flood_blob_copy_start_y, std::vector flood_blob_copy_ink ); +VImage flood_other_copy( VImage flood_other_copy_mark, int flood_other_copy_start_x, int flood_other_copy_start_y, int flood_other_copy_serial ); +VImage clip(); +VImage c2ps(); +VImage resize_linear( int resize_linear_X, int resize_linear_Y ); +VImage cmulnorm( VImage cmulnorm_in2 ); +VImage fav4( VImage fav4_in2, VImage fav4_in3, VImage fav4_in4 ); +VImage gadd( double gadd_a, double gadd_b, VImage gadd_in2, double gadd_c ); +VImage icc_export( char* icc_export_output_profile, int icc_export_intent ); +VImage litecor( VImage litecor_white, int litecor_clip, double litecor_factor ); +VImage affine( double affine_a, double affine_b, double affine_c, double affine_d, double affine_dx, double affine_dy, int affine_x, int affine_y, int affine_w, int affine_h ); +VImage clip2c(); +VImage clip2cm(); +VImage clip2d(); +VImage clip2dcm(); +VImage clip2f(); +VImage clip2i(); +VImage convsub( VIMask convsub_matrix, int convsub_xskip, int convsub_yskip ); +VImage convf( VDMask convf_matrix ); +VImage convsepf( VDMask convsepf_matrix ); +VImage clip2s(); +VImage clip2ui(); +VImage insertplace( VImage insertplace_sub, std::vector insertplace_x, std::vector insertplace_y ); +VImage clip2us(); +VImage slice( double slice_thresh1, double slice_thresh2 ); +VImage segment( int& segment_segments ); +void line( int line_x1, int line_y1, int line_x2, int line_y2, int line_pelval ); +VImage thresh( double thresh_threshold ); +VImage convf_raw( VDMask convf_raw_matrix ); +VImage conv_raw( VIMask conv_raw_matrix ); +VImage contrast_surface_raw( int contrast_surface_raw_half_win_size, int contrast_surface_raw_spacing ); +VImage convsepf_raw( VDMask convsepf_raw_matrix ); +VImage convsep_raw( VIMask convsep_raw_matrix ); +VImage fastcor_raw( VImage fastcor_raw_in2 ); +VImage gradcor_raw( VImage gradcor_raw_in2 ); +VImage spcor_raw( VImage spcor_raw_in2 ); +VImage lhisteq_raw( int lhisteq_raw_width, int lhisteq_raw_height ); +VImage stdif_raw( double stdif_raw_a, double stdif_raw_m0, double stdif_raw_b, double stdif_raw_s0, int stdif_raw_xw, int stdif_raw_yw ); +VImage rank_raw( int rank_raw_xsize, int rank_raw_ysize, int rank_raw_n ); +VImage dilate_raw( VIMask dilate_raw_mask ); +VImage erode_raw( VIMask erode_raw_mask ); +VImage similarity_area( double similarity_area_a, double similarity_area_b, double similarity_area_dx, double similarity_area_dy, int similarity_area_x, int similarity_area_y, int similarity_area_w, int similarity_area_h ); +VImage similarity( double similarity_a, double similarity_b, double similarity_dx, double similarity_dy ); +static VImage mask2vips( VDMask mask2vips_input ); +VDMask vips2mask(); +void insertplace( VImage insertplace_sub, int insertplace_x, int insertplace_y ); +void circle( int circle_cx, int circle_cy, int circle_radius, int circle_intensity ); +VImage andimage( VImage andimage_in2 ); +VImage andimage( int andimage_c ); +VImage andimage( std::vector andimage_vec ); +VImage orimage( VImage orimage_in2 ); +VImage orimage( int orimage_c ); +VImage orimage( std::vector orimage_vec ); +VImage eorimage( VImage eorimage_in2 ); +VImage eorimage( int eorimage_c ); +VImage eorimage( std::vector eorimage_vec ); +VImage shiftleft( std::vector shiftleft_vec ); +VImage shiftleft( int shiftleft_c ); +VImage shiftright( std::vector shiftright_vec ); +VImage shiftright( int shiftright_c ); +VImage blend( VImage blend_in1, VImage blend_in2 ); +VImage equal( VImage equal_in2 ); +VImage equal( std::vector equal_vec ); +VImage equal( double equal_c ); +VImage ifthenelse( VImage ifthenelse_in1, VImage ifthenelse_in2 ); +VImage less( VImage less_in2 ); +VImage less( std::vector less_vec ); +VImage less( double less_c ); +VImage lesseq( VImage lesseq_in2 ); +VImage lesseq( std::vector lesseq_vec ); +VImage lesseq( double lesseq_c ); +VImage more( VImage more_in2 ); +VImage more( std::vector more_vec ); +VImage more( double more_c ); +VImage moreeq( VImage moreeq_in2 ); +VImage moreeq( std::vector moreeq_vec ); +VImage moreeq( double moreeq_c ); +VImage notequal( VImage notequal_in2 ); +VImage notequal( std::vector notequal_vec ); +VImage notequal( double notequal_c ); +VImage quadratic( VImage quadratic_coeff ); // headers for package format // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -static VImage csv2vips( char* csv2vips_filename ) throw( VError ); -static VImage fits2vips( char* fits2vips_in ) throw( VError ); -static VImage jpeg2vips( char* jpeg2vips_in ) throw( VError ); -static VImage magick2vips( char* magick2vips_in ) throw( VError ); -static VImage png2vips( char* png2vips_in ) throw( VError ); -static VImage exr2vips( char* exr2vips_in ) throw( VError ); -static VImage ppm2vips( char* ppm2vips_filename ) throw( VError ); -static VImage analyze2vips( char* analyze2vips_filename ) throw( VError ); -static VImage tiff2vips( char* tiff2vips_in ) throw( VError ); -void vips2csv( char* vips2csv_filename ) throw( VError ); -void vips2dz( char* vips2dz_out ) throw( VError ); -void vips2jpeg( char* vips2jpeg_out ) throw( VError ); -void vips2mimejpeg( int vips2mimejpeg_qfac ) throw( VError ); -void vips2png( char* vips2png_out ) throw( VError ); -void vips2ppm( char* vips2ppm_filename ) throw( VError ); -void vips2tiff( char* vips2tiff_out ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +static VImage csv2vips( char* csv2vips_filename ); +static VImage fits2vips( char* fits2vips_in ); +static VImage jpeg2vips( char* jpeg2vips_in ); +static VImage magick2vips( char* magick2vips_in ); +static VImage png2vips( char* png2vips_in ); +static VImage exr2vips( char* exr2vips_in ); +static VImage ppm2vips( char* ppm2vips_filename ); +static VImage analyze2vips( char* analyze2vips_filename ); +static VImage tiff2vips( char* tiff2vips_in ); +void vips2csv( char* vips2csv_filename ); +void vips2dz( char* vips2dz_out ); +void vips2jpeg( char* vips2jpeg_out ); +void vips2mimejpeg( int vips2mimejpeg_qfac ); +void vips2png( char* vips2png_out ); +void vips2ppm( char* vips2ppm_filename ); +void vips2tiff( char* vips2tiff_out ); // headers for package freq_filt // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -static VImage create_fmask( int create_fmask_width, int create_fmask_height, int create_fmask_type, double create_fmask_p1, double create_fmask_p2, double create_fmask_p3, double create_fmask_p4, double create_fmask_p5 ) throw( VError ); -VImage disp_ps() throw( VError ); -VImage flt_image_freq( int flt_image_freq_type, double flt_image_freq_p1, double flt_image_freq_p2, double flt_image_freq_p3, double flt_image_freq_p4, double flt_image_freq_p5 ) throw( VError ); -static VImage fractsurf( int fractsurf_size, double fractsurf_dimension ) throw( VError ); -VImage freqflt( VImage freqflt_mask ) throw( VError ); -VImage fwfft() throw( VError ); -VImage rotquad() throw( VError ); -VImage invfft() throw( VError ); -VImage phasecor_fft( VImage phasecor_fft_in2 ) throw( VError ); -VImage invfftr() throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +static VImage create_fmask( int create_fmask_width, int create_fmask_height, int create_fmask_type, double create_fmask_p1, double create_fmask_p2, double create_fmask_p3, double create_fmask_p4, double create_fmask_p5 ); +VImage disp_ps(); +VImage flt_image_freq( int flt_image_freq_type, double flt_image_freq_p1, double flt_image_freq_p2, double flt_image_freq_p3, double flt_image_freq_p4, double flt_image_freq_p5 ); +static VImage fractsurf( int fractsurf_size, double fractsurf_dimension ); +VImage freqflt( VImage freqflt_mask ); +VImage fwfft(); +VImage rotquad(); +VImage invfft(); +VImage phasecor_fft( VImage phasecor_fft_in2 ); +VImage invfftr(); // headers for package histograms_lut // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -VImage gammacorrect( double gammacorrect_exponent ) throw( VError ); -VImage heq( int heq_band_number ) throw( VError ); -VImage hist( int hist_band_number ) throw( VError ); -VImage histcum() throw( VError ); -VImage histeq() throw( VError ); -VImage hist_indexed( VImage hist_indexed_value ) throw( VError ); -VImage histgr( int histgr_band_number ) throw( VError ); -VImage histnD( int histnD_bins ) throw( VError ); -VImage histnorm() throw( VError ); -VImage histplot() throw( VError ); -VImage histspec( VImage histspec_ref ) throw( VError ); -VImage hsp( VImage hsp_ref ) throw( VError ); -static VImage identity( int identity_nbands ) throw( VError ); -static VImage identity_ushort( int identity_ushort_nbands, int identity_ushort_size ) throw( VError ); -int ismonotonic() throw( VError ); -VImage lhisteq( int lhisteq_width, int lhisteq_height ) throw( VError ); -int mpercent( double mpercent_percent ) throw( VError ); -static VImage invertlut( VDMask invertlut_measures, int invertlut_lut_size ) throw( VError ); -static VImage buildlut( VDMask buildlut_xyes ) throw( VError ); -VImage maplut( VImage maplut_lut ) throw( VError ); -VImage project( VImage& project_vout ) throw( VError ); -VImage stdif( double stdif_a, double stdif_m0, double stdif_b, double stdif_s0, int stdif_xw, int stdif_yw ) throw( VError ); -VImage tone_analyse( double tone_analyse_Ps, double tone_analyse_Pm, double tone_analyse_Ph, double tone_analyse_S, double tone_analyse_M, double tone_analyse_H ) throw( VError ); -static VImage tone_build( double tone_build_Lb, double tone_build_Lw, double tone_build_Ps, double tone_build_Pm, double tone_build_Ph, double tone_build_S, double tone_build_M, double tone_build_H ) throw( VError ); -static VImage tone_build_range( int tone_build_range_in_max, int tone_build_range_out_max, double tone_build_range_Lb, double tone_build_range_Lw, double tone_build_range_Ps, double tone_build_range_Pm, double tone_build_range_Ph, double tone_build_range_S, double tone_build_range_M, double tone_build_range_H ) throw( VError ); -VImage tone_map( VImage tone_map_lut ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +VImage gammacorrect( double gammacorrect_exponent ); +VImage heq( int heq_band_number ); +VImage hist( int hist_band_number ); +VImage histcum(); +VImage histeq(); +VImage hist_indexed( VImage hist_indexed_value ); +VImage histgr( int histgr_band_number ); +VImage histnD( int histnD_bins ); +VImage histnorm(); +VImage histplot(); +VImage histspec( VImage histspec_ref ); +VImage hsp( VImage hsp_ref ); +static VImage identity( int identity_nbands ); +static VImage identity_ushort( int identity_ushort_nbands, int identity_ushort_size ); +int ismonotonic(); +VImage lhisteq( int lhisteq_width, int lhisteq_height ); +int mpercent( double mpercent_percent ); +static VImage invertlut( VDMask invertlut_measures, int invertlut_lut_size ); +static VImage buildlut( VDMask buildlut_xyes ); +VImage maplut( VImage maplut_lut ); +VImage project( VImage& project_vout ); +VImage stdif( double stdif_a, double stdif_m0, double stdif_b, double stdif_s0, int stdif_xw, int stdif_yw ); +VImage tone_analyse( double tone_analyse_Ps, double tone_analyse_Pm, double tone_analyse_Ph, double tone_analyse_S, double tone_analyse_M, double tone_analyse_H ); +static VImage tone_build( double tone_build_Lb, double tone_build_Lw, double tone_build_Ps, double tone_build_Pm, double tone_build_Ph, double tone_build_S, double tone_build_M, double tone_build_H ); +static VImage tone_build_range( int tone_build_range_in_max, int tone_build_range_out_max, double tone_build_range_Lb, double tone_build_range_Lw, double tone_build_range_Ps, double tone_build_range_Pm, double tone_build_range_Ph, double tone_build_range_S, double tone_build_range_M, double tone_build_range_H ); +VImage tone_map( VImage tone_map_lut ); // headers for package inplace // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -void draw_circle( int draw_circle_cx, int draw_circle_cy, int draw_circle_radius, int draw_circle_fill, std::vector draw_circle_ink ) throw( VError ); -void draw_rect( int draw_rect_left, int draw_rect_top, int draw_rect_width, int draw_rect_height, int draw_rect_fill, std::vector draw_rect_ink ) throw( VError ); -void draw_line( int draw_line_x1, int draw_line_y1, int draw_line_x2, int draw_line_y2, std::vector draw_line_ink ) throw( VError ); -void draw_point( int draw_point_x, int draw_point_y, std::vector draw_point_ink ) throw( VError ); -void draw_smudge( int draw_smudge_left, int draw_smudge_top, int draw_smudge_width, int draw_smudge_height ) throw( VError ); -void draw_flood( int draw_flood_x, int draw_flood_y, std::vector draw_flood_ink ) throw( VError ); -void draw_flood_blob( int draw_flood_blob_x, int draw_flood_blob_y, std::vector draw_flood_blob_ink ) throw( VError ); -void draw_flood_other( VImage draw_flood_other_test, int draw_flood_other_x, int draw_flood_other_y, int draw_flood_other_serial ) throw( VError ); -void draw_image( VImage draw_image_sub, int draw_image_x, int draw_image_y ) throw( VError ); -void draw_mask( VImage draw_mask_mask, int draw_mask_x, int draw_mask_y, std::vector draw_mask_ink ) throw( VError ); -VImage line( VImage line_mask, VImage line_ink, std::vector line_x1, std::vector line_y1, std::vector line_x2, std::vector line_y2 ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +void draw_circle( int draw_circle_cx, int draw_circle_cy, int draw_circle_radius, int draw_circle_fill, std::vector draw_circle_ink ); +void draw_rect( int draw_rect_left, int draw_rect_top, int draw_rect_width, int draw_rect_height, int draw_rect_fill, std::vector draw_rect_ink ); +void draw_line( int draw_line_x1, int draw_line_y1, int draw_line_x2, int draw_line_y2, std::vector draw_line_ink ); +void draw_point( int draw_point_x, int draw_point_y, std::vector draw_point_ink ); +void draw_smudge( int draw_smudge_left, int draw_smudge_top, int draw_smudge_width, int draw_smudge_height ); +void draw_flood( int draw_flood_x, int draw_flood_y, std::vector draw_flood_ink ); +void draw_flood_blob( int draw_flood_blob_x, int draw_flood_blob_y, std::vector draw_flood_blob_ink ); +void draw_flood_other( VImage draw_flood_other_test, int draw_flood_other_x, int draw_flood_other_y, int draw_flood_other_serial ); +void draw_image( VImage draw_image_sub, int draw_image_x, int draw_image_y ); +void draw_mask( VImage draw_mask_mask, int draw_mask_x, int draw_mask_y, std::vector draw_mask_ink ); +VImage line( VImage line_mask, VImage line_ink, std::vector line_x1, std::vector line_y1, std::vector line_x2, std::vector line_y2 ); // headers for package iofuncs // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -static VImage binfile( char* binfile_filename, int binfile_width, int binfile_height, int binfile_bands, int binfile_offset ) throw( VError ); -VImage cache( int cache_tile_width, int cache_tile_height, int cache_max_tiles ) throw( VError ); -VImage tile_cache_random( int tile_cache_random_tile_width, int tile_cache_random_tile_height, int tile_cache_random_max_tiles ) throw( VError ); -char* getext() throw( VError ); -int header_get_typeof( char* header_get_typeof_field ) throw( VError ); -int header_int( char* header_int_field ) throw( VError ); -double header_double( char* header_double_field ) throw( VError ); -char* header_string( char* header_string_field ) throw( VError ); -char* history_get() throw( VError ); -void printdesc() throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +static VImage binfile( char* binfile_filename, int binfile_width, int binfile_height, int binfile_bands, int binfile_offset ); +VImage cache( int cache_tile_width, int cache_tile_height, int cache_max_tiles ); +VImage tile_cache_random( int tile_cache_random_tile_width, int tile_cache_random_tile_height, int tile_cache_random_max_tiles ); +char* getext(); +int header_get_typeof( char* header_get_typeof_field ); +int header_int( char* header_int_field ); +double header_double( char* header_double_field ); +char* header_string( char* header_string_field ); +char* history_get(); +void printdesc(); // headers for package mask // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // headers for package morphology // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -double cntlines( int cntlines_direction ) throw( VError ); -VImage dilate( VIMask dilate_mask ) throw( VError ); -VImage rank( int rank_xsize, int rank_ysize, int rank_n ) throw( VError ); -static VImage rank_image( std::vector rank_image_in, int rank_image_index ) throw( VError ); -static VImage maxvalue( std::vector maxvalue_in ) throw( VError ); -VImage label_regions( int& label_regions_segments ) throw( VError ); -VImage zerox( int zerox_flag ) throw( VError ); -VImage erode( VIMask erode_mask ) throw( VError ); -VImage profile( int profile_direction ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +double cntlines( int cntlines_direction ); +VImage dilate( VIMask dilate_mask ); +VImage rank( int rank_xsize, int rank_ysize, int rank_n ); +static VImage rank_image( std::vector rank_image_in, int rank_image_index ); +static VImage maxvalue( std::vector maxvalue_in ); +VImage label_regions( int& label_regions_segments ); +VImage zerox( int zerox_flag ); +VImage erode( VIMask erode_mask ); +VImage profile( int profile_direction ); // headers for package mosaicing // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -VImage align_bands() throw( VError ); -double correl( VImage correl_sec, int correl_xref, int correl_yref, int correl_xsec, int correl_ysec, int correl_hwindowsize, int correl_hsearchsize, int& correl_x, int& correl_y ) throw( VError ); -int _find_lroverlap( VImage _find_lroverlap_sec, int _find_lroverlap_bandno, int _find_lroverlap_xr, int _find_lroverlap_yr, int _find_lroverlap_xs, int _find_lroverlap_ys, int _find_lroverlap_halfcorrelation, int _find_lroverlap_halfarea, int& _find_lroverlap_dy0, double& _find_lroverlap_scale1, double& _find_lroverlap_angle1, double& _find_lroverlap_dx1, double& _find_lroverlap_dy1 ) throw( VError ); -int _find_tboverlap( VImage _find_tboverlap_sec, int _find_tboverlap_bandno, int _find_tboverlap_xr, int _find_tboverlap_yr, int _find_tboverlap_xs, int _find_tboverlap_ys, int _find_tboverlap_halfcorrelation, int _find_tboverlap_halfarea, int& _find_tboverlap_dy0, double& _find_tboverlap_scale1, double& _find_tboverlap_angle1, double& _find_tboverlap_dx1, double& _find_tboverlap_dy1 ) throw( VError ); -VImage global_balance( double global_balance_gamma ) throw( VError ); -VImage global_balancef( double global_balancef_gamma ) throw( VError ); -VImage lrmerge( VImage lrmerge_sec, int lrmerge_dx, int lrmerge_dy, int lrmerge_mwidth ) throw( VError ); -VImage lrmerge1( VImage lrmerge1_sec, int lrmerge1_xr1, int lrmerge1_yr1, int lrmerge1_xs1, int lrmerge1_ys1, int lrmerge1_xr2, int lrmerge1_yr2, int lrmerge1_xs2, int lrmerge1_ys2, int lrmerge1_mwidth ) throw( VError ); -VImage lrmosaic( VImage lrmosaic_sec, int lrmosaic_bandno, int lrmosaic_xr, int lrmosaic_yr, int lrmosaic_xs, int lrmosaic_ys, int lrmosaic_halfcorrelation, int lrmosaic_halfarea, int lrmosaic_balancetype, int lrmosaic_mwidth ) throw( VError ); -VImage lrmosaic1( VImage lrmosaic1_sec, int lrmosaic1_bandno, int lrmosaic1_xr1, int lrmosaic1_yr1, int lrmosaic1_xs1, int lrmosaic1_ys1, int lrmosaic1_xr2, int lrmosaic1_yr2, int lrmosaic1_xs2, int lrmosaic1_ys2, int lrmosaic1_halfcorrelation, int lrmosaic1_halfarea, int lrmosaic1_balancetype, int lrmosaic1_mwidth ) throw( VError ); -VImage match_linear( VImage match_linear_sec, int match_linear_xref1, int match_linear_yref1, int match_linear_xsec1, int match_linear_ysec1, int match_linear_xref2, int match_linear_yref2, int match_linear_xsec2, int match_linear_ysec2 ) throw( VError ); -VImage match_linear_search( VImage match_linear_search_sec, int match_linear_search_xref1, int match_linear_search_yref1, int match_linear_search_xsec1, int match_linear_search_ysec1, int match_linear_search_xref2, int match_linear_search_yref2, int match_linear_search_xsec2, int match_linear_search_ysec2, int match_linear_search_hwindowsize, int match_linear_search_hsearchsize ) throw( VError ); -double maxpos_subpel( double& maxpos_subpel_y ) throw( VError ); -VImage remosaic( char* remosaic_old_str, char* remosaic_new_str ) throw( VError ); -VImage tbmerge( VImage tbmerge_sec, int tbmerge_dx, int tbmerge_dy, int tbmerge_mwidth ) throw( VError ); -VImage tbmerge1( VImage tbmerge1_sec, int tbmerge1_xr1, int tbmerge1_yr1, int tbmerge1_xs1, int tbmerge1_ys1, int tbmerge1_xr2, int tbmerge1_yr2, int tbmerge1_xs2, int tbmerge1_ys2, int tbmerge1_mwidth ) throw( VError ); -VImage tbmosaic( VImage tbmosaic_sec, int tbmosaic_bandno, int tbmosaic_xr, int tbmosaic_yr, int tbmosaic_xs, int tbmosaic_ys, int tbmosaic_halfcorrelation, int tbmosaic_halfarea, int tbmosaic_balancetype, int tbmosaic_mwidth ) throw( VError ); -VImage tbmosaic1( VImage tbmosaic1_sec, int tbmosaic1_bandno, int tbmosaic1_xr1, int tbmosaic1_yr1, int tbmosaic1_xs1, int tbmosaic1_ys1, int tbmosaic1_xr2, int tbmosaic1_yr2, int tbmosaic1_xs2, int tbmosaic1_ys2, int tbmosaic1_halfcorrelation, int tbmosaic1_halfarea, int tbmosaic1_balancetype, int tbmosaic1_mwidth ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +VImage align_bands(); +double correl( VImage correl_sec, int correl_xref, int correl_yref, int correl_xsec, int correl_ysec, int correl_hwindowsize, int correl_hsearchsize, int& correl_x, int& correl_y ); +int _find_lroverlap( VImage _find_lroverlap_sec, int _find_lroverlap_bandno, int _find_lroverlap_xr, int _find_lroverlap_yr, int _find_lroverlap_xs, int _find_lroverlap_ys, int _find_lroverlap_halfcorrelation, int _find_lroverlap_halfarea, int& _find_lroverlap_dy0, double& _find_lroverlap_scale1, double& _find_lroverlap_angle1, double& _find_lroverlap_dx1, double& _find_lroverlap_dy1 ); +int _find_tboverlap( VImage _find_tboverlap_sec, int _find_tboverlap_bandno, int _find_tboverlap_xr, int _find_tboverlap_yr, int _find_tboverlap_xs, int _find_tboverlap_ys, int _find_tboverlap_halfcorrelation, int _find_tboverlap_halfarea, int& _find_tboverlap_dy0, double& _find_tboverlap_scale1, double& _find_tboverlap_angle1, double& _find_tboverlap_dx1, double& _find_tboverlap_dy1 ); +VImage global_balance( double global_balance_gamma ); +VImage global_balancef( double global_balancef_gamma ); +VImage lrmerge( VImage lrmerge_sec, int lrmerge_dx, int lrmerge_dy, int lrmerge_mwidth ); +VImage lrmerge1( VImage lrmerge1_sec, int lrmerge1_xr1, int lrmerge1_yr1, int lrmerge1_xs1, int lrmerge1_ys1, int lrmerge1_xr2, int lrmerge1_yr2, int lrmerge1_xs2, int lrmerge1_ys2, int lrmerge1_mwidth ); +VImage lrmosaic( VImage lrmosaic_sec, int lrmosaic_bandno, int lrmosaic_xr, int lrmosaic_yr, int lrmosaic_xs, int lrmosaic_ys, int lrmosaic_halfcorrelation, int lrmosaic_halfarea, int lrmosaic_balancetype, int lrmosaic_mwidth ); +VImage lrmosaic1( VImage lrmosaic1_sec, int lrmosaic1_bandno, int lrmosaic1_xr1, int lrmosaic1_yr1, int lrmosaic1_xs1, int lrmosaic1_ys1, int lrmosaic1_xr2, int lrmosaic1_yr2, int lrmosaic1_xs2, int lrmosaic1_ys2, int lrmosaic1_halfcorrelation, int lrmosaic1_halfarea, int lrmosaic1_balancetype, int lrmosaic1_mwidth ); +VImage match_linear( VImage match_linear_sec, int match_linear_xref1, int match_linear_yref1, int match_linear_xsec1, int match_linear_ysec1, int match_linear_xref2, int match_linear_yref2, int match_linear_xsec2, int match_linear_ysec2 ); +VImage match_linear_search( VImage match_linear_search_sec, int match_linear_search_xref1, int match_linear_search_yref1, int match_linear_search_xsec1, int match_linear_search_ysec1, int match_linear_search_xref2, int match_linear_search_yref2, int match_linear_search_xsec2, int match_linear_search_ysec2, int match_linear_search_hwindowsize, int match_linear_search_hsearchsize ); +double maxpos_subpel( double& maxpos_subpel_y ); +VImage remosaic( char* remosaic_old_str, char* remosaic_new_str ); +VImage tbmerge( VImage tbmerge_sec, int tbmerge_dx, int tbmerge_dy, int tbmerge_mwidth ); +VImage tbmerge1( VImage tbmerge1_sec, int tbmerge1_xr1, int tbmerge1_yr1, int tbmerge1_xs1, int tbmerge1_ys1, int tbmerge1_xr2, int tbmerge1_yr2, int tbmerge1_xs2, int tbmerge1_ys2, int tbmerge1_mwidth ); +VImage tbmosaic( VImage tbmosaic_sec, int tbmosaic_bandno, int tbmosaic_xr, int tbmosaic_yr, int tbmosaic_xs, int tbmosaic_ys, int tbmosaic_halfcorrelation, int tbmosaic_halfarea, int tbmosaic_balancetype, int tbmosaic_mwidth ); +VImage tbmosaic1( VImage tbmosaic1_sec, int tbmosaic1_bandno, int tbmosaic1_xr1, int tbmosaic1_yr1, int tbmosaic1_xs1, int tbmosaic1_ys1, int tbmosaic1_xr2, int tbmosaic1_yr2, int tbmosaic1_xs2, int tbmosaic1_ys2, int tbmosaic1_halfcorrelation, int tbmosaic1_halfarea, int tbmosaic1_balancetype, int tbmosaic1_mwidth ); // headers for package other // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -VImage benchmark() throw( VError ); -double benchmark2() throw( VError ); -VImage benchmarkn( int benchmarkn_n ) throw( VError ); -static VImage eye( int eye_xsize, int eye_ysize, double eye_factor ) throw( VError ); -static VImage grey( int grey_xsize, int grey_ysize ) throw( VError ); -static VImage feye( int feye_xsize, int feye_ysize, double feye_factor ) throw( VError ); -static VImage fgrey( int fgrey_xsize, int fgrey_ysize ) throw( VError ); -static VImage fzone( int fzone_size ) throw( VError ); -static VImage make_xy( int make_xy_xsize, int make_xy_ysize ) throw( VError ); -static VImage sines( int sines_xsize, int sines_ysize, double sines_horfreq, double sines_verfreq ) throw( VError ); -static VImage zone( int zone_size ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +VImage benchmark(); +double benchmark2(); +VImage benchmarkn( int benchmarkn_n ); +static VImage eye( int eye_xsize, int eye_ysize, double eye_factor ); +static VImage grey( int grey_xsize, int grey_ysize ); +static VImage feye( int feye_xsize, int feye_ysize, double feye_factor ); +static VImage fgrey( int fgrey_xsize, int fgrey_ysize ); +static VImage fzone( int fzone_size ); +static VImage make_xy( int make_xy_xsize, int make_xy_ysize ); +static VImage sines( int sines_xsize, int sines_ysize, double sines_horfreq, double sines_verfreq ); +static VImage zone( int zone_size ); // headers for package resample // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -VImage rightshift_size( int rightshift_size_xshift, int rightshift_size_yshift, int rightshift_size_band_fmt ) throw( VError ); -VImage shrink( double shrink_xfac, double shrink_yfac ) throw( VError ); -VImage stretch3( double stretch3_xdisp, double stretch3_ydisp ) throw( VError ); -VImage affinei( char* affinei_interpolate, double affinei_a, double affinei_b, double affinei_c, double affinei_d, double affinei_dx, double affinei_dy, int affinei_x, int affinei_y, int affinei_w, int affinei_h ) throw( VError ); -VImage affinei_all( char* affinei_all_interpolate, double affinei_all_a, double affinei_all_b, double affinei_all_c, double affinei_all_d, double affinei_all_dx, double affinei_all_dy ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +VImage rightshift_size( int rightshift_size_xshift, int rightshift_size_yshift, int rightshift_size_band_fmt ); +VImage shrink( double shrink_xfac, double shrink_yfac ); +VImage stretch3( double stretch3_xdisp, double stretch3_ydisp ); +VImage affinei( char* affinei_interpolate, double affinei_a, double affinei_b, double affinei_c, double affinei_d, double affinei_dx, double affinei_dy, int affinei_x, int affinei_y, int affinei_w, int affinei_h ); +VImage affinei_all( char* affinei_all_interpolate, double affinei_all_a, double affinei_all_b, double affinei_all_c, double affinei_all_d, double affinei_all_dx, double affinei_all_dy ); // headers for package video // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 -static VImage video_test( int video_test_brightness, int video_test_error ) throw( VError ); -static VImage video_v4l1( char* video_v4l1_device, int video_v4l1_channel, int video_v4l1_brightness, int video_v4l1_colour, int video_v4l1_contrast, int video_v4l1_hue, int video_v4l1_ngrabs ) throw( VError ); +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 +static VImage video_test( int video_test_brightness, int video_test_error ); +static VImage video_v4l1( char* video_v4l1_device, int video_v4l1_channel, int video_v4l1_brightness, int video_v4l1_colour, int video_v4l1_contrast, int video_v4l1_hue, int video_v4l1_ngrabs ); diff --git a/libvipsCC/vipsc++.cc b/libvipsCC/vipsc++.cc index ebaa71c2..37f52e1d 100644 --- a/libvipsCC/vipsc++.cc +++ b/libvipsCC/vipsc++.cc @@ -1,9 +1,9 @@ // bodies for package arithmetic // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_abs: absolute value -VImage VImage::abs() throw( VError ) +VImage VImage::abs() { VImage in = *this; VImage out; @@ -19,7 +19,7 @@ VImage VImage::abs() throw( VError ) } // im_acostra: acos of image (result in degrees) -VImage VImage::acos() throw( VError ) +VImage VImage::acos() { VImage in = *this; VImage out; @@ -35,7 +35,7 @@ VImage VImage::acos() throw( VError ) } // im_add: add two images -VImage VImage::add( VImage in2 ) throw( VError ) +VImage VImage::add( VImage in2 ) { VImage in1 = *this; VImage out; @@ -53,7 +53,7 @@ VImage VImage::add( VImage in2 ) throw( VError ) } // im_asintra: asin of image (result in degrees) -VImage VImage::asin() throw( VError ) +VImage VImage::asin() { VImage in = *this; VImage out; @@ -69,7 +69,7 @@ VImage VImage::asin() throw( VError ) } // im_atantra: atan of image (result in degrees) -VImage VImage::atan() throw( VError ) +VImage VImage::atan() { VImage in = *this; VImage out; @@ -85,7 +85,7 @@ VImage VImage::atan() throw( VError ) } // im_avg: average value of image -double VImage::avg() throw( VError ) +double VImage::avg() { VImage in = *this; double value; @@ -100,7 +100,7 @@ double VImage::avg() throw( VError ) } // im_point: interpolate value at single point -double VImage::point( char* interpolate, double x, double y, int band ) throw( VError ) +double VImage::point( char* interpolate, double x, double y, int band ) { VImage in = *this; double out; @@ -120,7 +120,7 @@ double VImage::point( char* interpolate, double x, double y, int band ) throw( V } // im_point_bilinear: interpolate value at single point, linearly -double VImage::point_bilinear( double x, double y, int band ) throw( VError ) +double VImage::point_bilinear( double x, double y, int band ) { VImage in = *this; double val; @@ -138,7 +138,7 @@ double VImage::point_bilinear( double x, double y, int band ) throw( VError ) } // im_bandmean: average image bands -VImage VImage::bandmean() throw( VError ) +VImage VImage::bandmean() { VImage in = *this; VImage out; @@ -154,7 +154,7 @@ VImage VImage::bandmean() throw( VError ) } // im_ceil: round to smallest integer value not less than -VImage VImage::ceil() throw( VError ) +VImage VImage::ceil() { VImage in = *this; VImage out; @@ -170,7 +170,7 @@ VImage VImage::ceil() throw( VError ) } // im_costra: cos of image (angles in degrees) -VImage VImage::cos() throw( VError ) +VImage VImage::cos() { VImage in = *this; VImage out; @@ -186,7 +186,7 @@ VImage VImage::cos() throw( VError ) } // im_cross_phase: phase of cross power spectrum of two complex images -VImage VImage::cross_phase( VImage in2 ) throw( VError ) +VImage VImage::cross_phase( VImage in2 ) { VImage in1 = *this; VImage out; @@ -204,7 +204,7 @@ VImage VImage::cross_phase( VImage in2 ) throw( VError ) } // im_deviate: standard deviation of image -double VImage::deviate() throw( VError ) +double VImage::deviate() { VImage in = *this; double value; @@ -219,7 +219,7 @@ double VImage::deviate() throw( VError ) } // im_divide: divide two images -VImage VImage::divide( VImage in2 ) throw( VError ) +VImage VImage::divide( VImage in2 ) { VImage in1 = *this; VImage out; @@ -237,7 +237,7 @@ VImage VImage::divide( VImage in2 ) throw( VError ) } // im_exp10tra: 10^pel of image -VImage VImage::exp10() throw( VError ) +VImage VImage::exp10() { VImage in = *this; VImage out; @@ -253,7 +253,7 @@ VImage VImage::exp10() throw( VError ) } // im_expntra: x^pel of image -VImage VImage::expn( double x ) throw( VError ) +VImage VImage::expn( double x ) { VImage in = *this; VImage out; @@ -270,7 +270,7 @@ VImage VImage::expn( double x ) throw( VError ) } // im_expntra_vec: [x,y,z]^pel of image -VImage VImage::expn( std::vector v ) throw( VError ) +VImage VImage::expn( std::vector v ) { VImage in = *this; VImage out; @@ -290,7 +290,7 @@ VImage VImage::expn( std::vector v ) throw( VError ) } // im_exptra: e^pel of image -VImage VImage::exp() throw( VError ) +VImage VImage::exp() { VImage in = *this; VImage out; @@ -306,7 +306,7 @@ VImage VImage::exp() throw( VError ) } // im_floor: round to largest integer value not greater than -VImage VImage::floor() throw( VError ) +VImage VImage::floor() { VImage in = *this; VImage out; @@ -322,7 +322,7 @@ VImage VImage::floor() throw( VError ) } // im_invert: photographic negative -VImage VImage::invert() throw( VError ) +VImage VImage::invert() { VImage in = *this; VImage out; @@ -338,7 +338,7 @@ VImage VImage::invert() throw( VError ) } // im_lintra: calculate a*in + b = outfile -VImage VImage::lin( double a, double b ) throw( VError ) +VImage VImage::lin( double a, double b ) { VImage in = *this; VImage out; @@ -356,7 +356,7 @@ VImage VImage::lin( double a, double b ) throw( VError ) } // im_linreg: pixelwise linear regression -VImage VImage::linreg( std::vector ins, std::vector xs ) throw( VError ) +VImage VImage::linreg( std::vector ins, std::vector xs ) { VImage out; @@ -379,7 +379,7 @@ VImage VImage::linreg( std::vector ins, std::vector xs ) throw( } // im_lintra_vec: calculate a*in + b -> out, a and b vectors -VImage VImage::lin( std::vector a, std::vector b ) throw( VError ) +VImage VImage::lin( std::vector a, std::vector b ) { VImage in = *this; VImage out; @@ -403,7 +403,7 @@ VImage VImage::lin( std::vector a, std::vector b ) throw( VError } // im_log10tra: log10 of image -VImage VImage::log10() throw( VError ) +VImage VImage::log10() { VImage in = *this; VImage out; @@ -419,7 +419,7 @@ VImage VImage::log10() throw( VError ) } // im_logtra: ln of image -VImage VImage::log() throw( VError ) +VImage VImage::log() { VImage in = *this; VImage out; @@ -435,7 +435,7 @@ VImage VImage::log() throw( VError ) } // im_max: maximum value of image -double VImage::max() throw( VError ) +double VImage::max() { VImage in = *this; double value; @@ -450,7 +450,7 @@ double VImage::max() throw( VError ) } // im_maxpos: position of maximum value of image -std::complex VImage::maxpos() throw( VError ) +std::complex VImage::maxpos() { VImage in = *this; std::complex position; @@ -465,7 +465,7 @@ std::complex VImage::maxpos() throw( VError ) } // im_maxpos_avg: position of maximum value of image, averaging in case of draw -double VImage::maxpos_avg( double& y, double& out ) throw( VError ) +double VImage::maxpos_avg( double& y, double& out ) { VImage in = *this; double x; @@ -482,7 +482,7 @@ double VImage::maxpos_avg( double& y, double& out ) throw( VError ) } // im_measure: measure averages of a grid of patches -VDMask VImage::measure( int x, int y, int w, int h, int h_patches, int v_patches ) throw( VError ) +VDMask VImage::measure( int x, int y, int w, int h, int h_patches, int v_patches ) { VImage in = *this; VDMask mask; @@ -504,7 +504,7 @@ VDMask VImage::measure( int x, int y, int w, int h, int h_patches, int v_patches } // im_min: minimum value of image -double VImage::min() throw( VError ) +double VImage::min() { VImage in = *this; double value; @@ -519,7 +519,7 @@ double VImage::min() throw( VError ) } // im_minpos: position of minimum value of image -std::complex VImage::minpos() throw( VError ) +std::complex VImage::minpos() { VImage in = *this; std::complex position; @@ -534,7 +534,7 @@ std::complex VImage::minpos() throw( VError ) } // im_multiply: multiply two images -VImage VImage::multiply( VImage in2 ) throw( VError ) +VImage VImage::multiply( VImage in2 ) { VImage in1 = *this; VImage out; @@ -552,7 +552,7 @@ VImage VImage::multiply( VImage in2 ) throw( VError ) } // im_powtra: pel^x of image -VImage VImage::pow( double x ) throw( VError ) +VImage VImage::pow( double x ) { VImage in = *this; VImage out; @@ -569,7 +569,7 @@ VImage VImage::pow( double x ) throw( VError ) } // im_powtra_vec: pel^[x,y,z] of image -VImage VImage::pow( std::vector v ) throw( VError ) +VImage VImage::pow( std::vector v ) { VImage in = *this; VImage out; @@ -589,7 +589,7 @@ VImage VImage::pow( std::vector v ) throw( VError ) } // im_recomb: linear recombination with mask -VImage VImage::recomb( VDMask matrix ) throw( VError ) +VImage VImage::recomb( VDMask matrix ) { VImage in = *this; VImage out; @@ -606,7 +606,7 @@ VImage VImage::recomb( VDMask matrix ) throw( VError ) } // im_remainder: remainder after integer division -VImage VImage::remainder( VImage in2 ) throw( VError ) +VImage VImage::remainder( VImage in2 ) { VImage in1 = *this; VImage out; @@ -624,7 +624,7 @@ VImage VImage::remainder( VImage in2 ) throw( VError ) } // im_remainderconst: remainder after integer division by a constant -VImage VImage::remainder( double x ) throw( VError ) +VImage VImage::remainder( double x ) { VImage in = *this; VImage out; @@ -641,7 +641,7 @@ VImage VImage::remainder( double x ) throw( VError ) } // im_remainder_vec: remainder after integer division by a vector of constants -VImage VImage::remainder( std::vector x ) throw( VError ) +VImage VImage::remainder( std::vector x ) { VImage in = *this; VImage out; @@ -661,7 +661,7 @@ VImage VImage::remainder( std::vector x ) throw( VError ) } // im_rint: round to nearest integer value -VImage VImage::rint() throw( VError ) +VImage VImage::rint() { VImage in = *this; VImage out; @@ -677,7 +677,7 @@ VImage VImage::rint() throw( VError ) } // im_sign: unit vector in direction of value -VImage VImage::sign() throw( VError ) +VImage VImage::sign() { VImage in = *this; VImage out; @@ -693,7 +693,7 @@ VImage VImage::sign() throw( VError ) } // im_sintra: sin of image (angles in degrees) -VImage VImage::sin() throw( VError ) +VImage VImage::sin() { VImage in = *this; VImage out; @@ -709,7 +709,7 @@ VImage VImage::sin() throw( VError ) } // im_stats: many image statistics in one pass -VDMask VImage::stats() throw( VError ) +VDMask VImage::stats() { VImage in = *this; VDMask statistics; @@ -725,7 +725,7 @@ VDMask VImage::stats() throw( VError ) } // im_subtract: subtract two images -VImage VImage::subtract( VImage in2 ) throw( VError ) +VImage VImage::subtract( VImage in2 ) { VImage in1 = *this; VImage out; @@ -743,7 +743,7 @@ VImage VImage::subtract( VImage in2 ) throw( VError ) } // im_tantra: tan of image (angles in degrees) -VImage VImage::tan() throw( VError ) +VImage VImage::tan() { VImage in = *this; VImage out; @@ -761,9 +761,9 @@ VImage VImage::tan() throw( VError ) // bodies for package cimg // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_greyc: noise-removing filter -VImage VImage::greyc( int iterations, double amplitude, double sharpness, double anisotropy, double alpha, double sigma, double dl, double da, double gauss_prec, int interpolation, int fast_approx ) throw( VError ) +VImage VImage::greyc( int iterations, double amplitude, double sharpness, double anisotropy, double alpha, double sigma, double dl, double da, double gauss_prec, int interpolation, int fast_approx ) { VImage src = *this; VImage dst; @@ -790,7 +790,7 @@ VImage VImage::greyc( int iterations, double amplitude, double sharpness, double } // im_greyc_mask: noise-removing filter, with a mask -VImage VImage::greyc_mask( VImage mask, int iterations, double amplitude, double sharpness, double anisotropy, double alpha, double sigma, double dl, double da, double gauss_prec, int interpolation, int fast_approx ) throw( VError ) +VImage VImage::greyc_mask( VImage mask, int iterations, double amplitude, double sharpness, double anisotropy, double alpha, double sigma, double dl, double da, double gauss_prec, int interpolation, int fast_approx ) { VImage src = *this; VImage dst; @@ -821,9 +821,9 @@ VImage VImage::greyc_mask( VImage mask, int iterations, double amplitude, double // bodies for package colour // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_LCh2Lab: convert LCh to Lab -VImage VImage::LCh2Lab() throw( VError ) +VImage VImage::LCh2Lab() { VImage in = *this; VImage out; @@ -839,7 +839,7 @@ VImage VImage::LCh2Lab() throw( VError ) } // im_LCh2UCS: convert LCh to UCS -VImage VImage::LCh2UCS() throw( VError ) +VImage VImage::LCh2UCS() { VImage in = *this; VImage out; @@ -855,7 +855,7 @@ VImage VImage::LCh2UCS() throw( VError ) } // im_Lab2LCh: convert Lab to LCh -VImage VImage::Lab2LCh() throw( VError ) +VImage VImage::Lab2LCh() { VImage in = *this; VImage out; @@ -871,7 +871,7 @@ VImage VImage::Lab2LCh() throw( VError ) } // im_Lab2LabQ: convert Lab to LabQ -VImage VImage::Lab2LabQ() throw( VError ) +VImage VImage::Lab2LabQ() { VImage in = *this; VImage out; @@ -887,7 +887,7 @@ VImage VImage::Lab2LabQ() throw( VError ) } // im_Lab2LabS: convert Lab to LabS -VImage VImage::Lab2LabS() throw( VError ) +VImage VImage::Lab2LabS() { VImage in = *this; VImage out; @@ -903,7 +903,7 @@ VImage VImage::Lab2LabS() throw( VError ) } // im_Lab2UCS: convert Lab to UCS -VImage VImage::Lab2UCS() throw( VError ) +VImage VImage::Lab2UCS() { VImage in = *this; VImage out; @@ -919,7 +919,7 @@ VImage VImage::Lab2UCS() throw( VError ) } // im_Lab2XYZ: convert D65 Lab to XYZ -VImage VImage::Lab2XYZ() throw( VError ) +VImage VImage::Lab2XYZ() { VImage in = *this; VImage out; @@ -935,7 +935,7 @@ VImage VImage::Lab2XYZ() throw( VError ) } // im_Lab2XYZ_temp: convert Lab to XYZ, with a specified colour temperature -VImage VImage::Lab2XYZ_temp( double X0, double Y0, double Z0 ) throw( VError ) +VImage VImage::Lab2XYZ_temp( double X0, double Y0, double Z0 ) { VImage in = *this; VImage out; @@ -954,7 +954,7 @@ VImage VImage::Lab2XYZ_temp( double X0, double Y0, double Z0 ) throw( VError ) } // im_Lab2disp: convert Lab to displayable -VImage VImage::Lab2disp( VDisplay disp ) throw( VError ) +VImage VImage::Lab2disp( VDisplay disp ) { VImage in = *this; VImage out; @@ -971,7 +971,7 @@ VImage VImage::Lab2disp( VDisplay disp ) throw( VError ) } // im_LabQ2LabS: convert LabQ to LabS -VImage VImage::LabQ2LabS() throw( VError ) +VImage VImage::LabQ2LabS() { VImage in = *this; VImage out; @@ -987,7 +987,7 @@ VImage VImage::LabQ2LabS() throw( VError ) } // im_LabQ2Lab: convert LabQ to Lab -VImage VImage::LabQ2Lab() throw( VError ) +VImage VImage::LabQ2Lab() { VImage in = *this; VImage out; @@ -1003,7 +1003,7 @@ VImage VImage::LabQ2Lab() throw( VError ) } // im_LabQ2XYZ: convert LabQ to XYZ -VImage VImage::LabQ2XYZ() throw( VError ) +VImage VImage::LabQ2XYZ() { VImage in = *this; VImage out; @@ -1019,7 +1019,7 @@ VImage VImage::LabQ2XYZ() throw( VError ) } // im_LabQ2disp: convert LabQ to displayable -VImage VImage::LabQ2disp( VDisplay disp ) throw( VError ) +VImage VImage::LabQ2disp( VDisplay disp ) { VImage in = *this; VImage out; @@ -1036,7 +1036,7 @@ VImage VImage::LabQ2disp( VDisplay disp ) throw( VError ) } // im_LabS2LabQ: convert LabS to LabQ -VImage VImage::LabS2LabQ() throw( VError ) +VImage VImage::LabS2LabQ() { VImage in = *this; VImage out; @@ -1052,7 +1052,7 @@ VImage VImage::LabS2LabQ() throw( VError ) } // im_LabS2Lab: convert LabS to Lab -VImage VImage::LabS2Lab() throw( VError ) +VImage VImage::LabS2Lab() { VImage in = *this; VImage out; @@ -1068,7 +1068,7 @@ VImage VImage::LabS2Lab() throw( VError ) } // im_UCS2LCh: convert UCS to LCh -VImage VImage::UCS2LCh() throw( VError ) +VImage VImage::UCS2LCh() { VImage in = *this; VImage out; @@ -1084,7 +1084,7 @@ VImage VImage::UCS2LCh() throw( VError ) } // im_UCS2Lab: convert UCS to Lab -VImage VImage::UCS2Lab() throw( VError ) +VImage VImage::UCS2Lab() { VImage in = *this; VImage out; @@ -1100,7 +1100,7 @@ VImage VImage::UCS2Lab() throw( VError ) } // im_UCS2XYZ: convert UCS to XYZ -VImage VImage::UCS2XYZ() throw( VError ) +VImage VImage::UCS2XYZ() { VImage in = *this; VImage out; @@ -1116,7 +1116,7 @@ VImage VImage::UCS2XYZ() throw( VError ) } // im_XYZ2Lab: convert D65 XYZ to Lab -VImage VImage::XYZ2Lab() throw( VError ) +VImage VImage::XYZ2Lab() { VImage in = *this; VImage out; @@ -1132,7 +1132,7 @@ VImage VImage::XYZ2Lab() throw( VError ) } // im_XYZ2Lab_temp: convert XYZ to Lab, with a specified colour temperature -VImage VImage::XYZ2Lab_temp( double X0, double Y0, double Z0 ) throw( VError ) +VImage VImage::XYZ2Lab_temp( double X0, double Y0, double Z0 ) { VImage in = *this; VImage out; @@ -1151,7 +1151,7 @@ VImage VImage::XYZ2Lab_temp( double X0, double Y0, double Z0 ) throw( VError ) } // im_XYZ2UCS: convert XYZ to UCS -VImage VImage::XYZ2UCS() throw( VError ) +VImage VImage::XYZ2UCS() { VImage in = *this; VImage out; @@ -1167,7 +1167,7 @@ VImage VImage::XYZ2UCS() throw( VError ) } // im_XYZ2Yxy: convert XYZ to Yxy -VImage VImage::XYZ2Yxy() throw( VError ) +VImage VImage::XYZ2Yxy() { VImage in = *this; VImage out; @@ -1183,7 +1183,7 @@ VImage VImage::XYZ2Yxy() throw( VError ) } // im_XYZ2disp: convert XYZ to displayble -VImage VImage::XYZ2disp( VDisplay disp ) throw( VError ) +VImage VImage::XYZ2disp( VDisplay disp ) { VImage in = *this; VImage out; @@ -1200,7 +1200,7 @@ VImage VImage::XYZ2disp( VDisplay disp ) throw( VError ) } // im_XYZ2sRGB: convert XYZ to sRGB -VImage VImage::XYZ2sRGB() throw( VError ) +VImage VImage::XYZ2sRGB() { VImage in = *this; VImage out; @@ -1216,7 +1216,7 @@ VImage VImage::XYZ2sRGB() throw( VError ) } // im_Yxy2XYZ: convert Yxy to XYZ -VImage VImage::Yxy2XYZ() throw( VError ) +VImage VImage::Yxy2XYZ() { VImage in = *this; VImage out; @@ -1232,7 +1232,7 @@ VImage VImage::Yxy2XYZ() throw( VError ) } // im_dE00_fromLab: calculate delta-E CIE2000 for two Lab images -VImage VImage::dE00_fromLab( VImage in2 ) throw( VError ) +VImage VImage::dE00_fromLab( VImage in2 ) { VImage in1 = *this; VImage out; @@ -1250,7 +1250,7 @@ VImage VImage::dE00_fromLab( VImage in2 ) throw( VError ) } // im_dECMC_fromLab: calculate delta-E CMC(1:1) for two Lab images -VImage VImage::dECMC_fromLab( VImage in2 ) throw( VError ) +VImage VImage::dECMC_fromLab( VImage in2 ) { VImage in1 = *this; VImage out; @@ -1268,7 +1268,7 @@ VImage VImage::dECMC_fromLab( VImage in2 ) throw( VError ) } // im_dECMC_fromdisp: calculate delta-E CMC(1:1) for two displayable images -VImage VImage::dECMC_fromdisp( VImage in2, VDisplay disp ) throw( VError ) +VImage VImage::dECMC_fromdisp( VImage in2, VDisplay disp ) { VImage in1 = *this; VImage out; @@ -1287,7 +1287,7 @@ VImage VImage::dECMC_fromdisp( VImage in2, VDisplay disp ) throw( VError ) } // im_dE_fromLab: calculate delta-E for two Lab images -VImage VImage::dE_fromLab( VImage in2 ) throw( VError ) +VImage VImage::dE_fromLab( VImage in2 ) { VImage in1 = *this; VImage out; @@ -1305,7 +1305,7 @@ VImage VImage::dE_fromLab( VImage in2 ) throw( VError ) } // im_dE_fromXYZ: calculate delta-E for two XYZ images -VImage VImage::dE_fromXYZ( VImage in2 ) throw( VError ) +VImage VImage::dE_fromXYZ( VImage in2 ) { VImage in1 = *this; VImage out; @@ -1323,7 +1323,7 @@ VImage VImage::dE_fromXYZ( VImage in2 ) throw( VError ) } // im_dE_fromdisp: calculate delta-E for two displayable images -VImage VImage::dE_fromdisp( VImage in2, VDisplay disp ) throw( VError ) +VImage VImage::dE_fromdisp( VImage in2, VDisplay disp ) { VImage in1 = *this; VImage out; @@ -1342,7 +1342,7 @@ VImage VImage::dE_fromdisp( VImage in2, VDisplay disp ) throw( VError ) } // im_disp2Lab: convert displayable to Lab -VImage VImage::disp2Lab( VDisplay disp ) throw( VError ) +VImage VImage::disp2Lab( VDisplay disp ) { VImage in = *this; VImage out; @@ -1359,7 +1359,7 @@ VImage VImage::disp2Lab( VDisplay disp ) throw( VError ) } // im_disp2XYZ: convert displayable to XYZ -VImage VImage::disp2XYZ( VDisplay disp ) throw( VError ) +VImage VImage::disp2XYZ( VDisplay disp ) { VImage in = *this; VImage out; @@ -1376,7 +1376,7 @@ VImage VImage::disp2XYZ( VDisplay disp ) throw( VError ) } // im_float2rad: convert float to Radiance packed -VImage VImage::float2rad() throw( VError ) +VImage VImage::float2rad() { VImage in = *this; VImage out; @@ -1392,7 +1392,7 @@ VImage VImage::float2rad() throw( VError ) } // im_icc_ac2rc: convert LAB from AC to RC using an ICC profile -VImage VImage::icc_ac2rc( char* profile ) throw( VError ) +VImage VImage::icc_ac2rc( char* profile ) { VImage in = *this; VImage out; @@ -1409,7 +1409,7 @@ VImage VImage::icc_ac2rc( char* profile ) throw( VError ) } // im_icc_export_depth: convert a float LAB to device space with an ICC profile -VImage VImage::icc_export_depth( int depth, char* output_profile, int intent ) throw( VError ) +VImage VImage::icc_export_depth( int depth, char* output_profile, int intent ) { VImage in = *this; VImage out; @@ -1428,7 +1428,7 @@ VImage VImage::icc_export_depth( int depth, char* output_profile, int intent ) t } // im_icc_import: convert a device image to float LAB with an ICC profile -VImage VImage::icc_import( char* input_profile, int intent ) throw( VError ) +VImage VImage::icc_import( char* input_profile, int intent ) { VImage in = *this; VImage out; @@ -1446,7 +1446,7 @@ VImage VImage::icc_import( char* input_profile, int intent ) throw( VError ) } // im_icc_import_embedded: convert a device image to float LAB using the embedded profile -VImage VImage::icc_import_embedded( int intent ) throw( VError ) +VImage VImage::icc_import_embedded( int intent ) { VImage in = *this; VImage out; @@ -1463,7 +1463,7 @@ VImage VImage::icc_import_embedded( int intent ) throw( VError ) } // im_icc_transform: convert between two device images with a pair of ICC profiles -VImage VImage::icc_transform( char* input_profile, char* output_profile, int intent ) throw( VError ) +VImage VImage::icc_transform( char* input_profile, char* output_profile, int intent ) { VImage in = *this; VImage out; @@ -1482,7 +1482,7 @@ VImage VImage::icc_transform( char* input_profile, char* output_profile, int int } // im_lab_morph: morph colourspace of a LAB image -VImage VImage::lab_morph( VDMask greyscale, double L_offset, double L_scale, double a_scale, double b_scale ) throw( VError ) +VImage VImage::lab_morph( VDMask greyscale, double L_offset, double L_scale, double a_scale, double b_scale ) { VImage in = *this; VImage out; @@ -1503,7 +1503,7 @@ VImage VImage::lab_morph( VDMask greyscale, double L_offset, double L_scale, dou } // im_rad2float: convert Radiance packed to float -VImage VImage::rad2float() throw( VError ) +VImage VImage::rad2float() { VImage in = *this; VImage out; @@ -1519,7 +1519,7 @@ VImage VImage::rad2float() throw( VError ) } // im_sRGB2XYZ: convert sRGB to XYZ -VImage VImage::sRGB2XYZ() throw( VError ) +VImage VImage::sRGB2XYZ() { VImage in = *this; VImage out; @@ -1537,9 +1537,9 @@ VImage VImage::sRGB2XYZ() throw( VError ) // bodies for package conversion // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_gaussnoise: generate image of gaussian noise with specified statistics -VImage VImage::gaussnoise( int xsize, int ysize, double mean, double sigma ) throw( VError ) +VImage VImage::gaussnoise( int xsize, int ysize, double mean, double sigma ) { VImage out; @@ -1556,7 +1556,7 @@ VImage VImage::gaussnoise( int xsize, int ysize, double mean, double sigma ) thr } // im_bandjoin: bandwise join of two images -VImage VImage::bandjoin( VImage in2 ) throw( VError ) +VImage VImage::bandjoin( VImage in2 ) { VImage in1 = *this; VImage out; @@ -1574,7 +1574,7 @@ VImage VImage::bandjoin( VImage in2 ) throw( VError ) } // im_black: generate black image -VImage VImage::black( int x_size, int y_size, int bands ) throw( VError ) +VImage VImage::black( int x_size, int y_size, int bands ) { VImage output; @@ -1590,7 +1590,7 @@ VImage VImage::black( int x_size, int y_size, int bands ) throw( VError ) } // im_c2amph: convert real and imaginary to phase and amplitude -VImage VImage::c2amph() throw( VError ) +VImage VImage::c2amph() { VImage in = *this; VImage out; @@ -1606,7 +1606,7 @@ VImage VImage::c2amph() throw( VError ) } // im_c2imag: extract imaginary part of complex image -VImage VImage::c2imag() throw( VError ) +VImage VImage::c2imag() { VImage in = *this; VImage out; @@ -1622,7 +1622,7 @@ VImage VImage::c2imag() throw( VError ) } // im_c2real: extract real part of complex image -VImage VImage::c2real() throw( VError ) +VImage VImage::c2real() { VImage in = *this; VImage out; @@ -1638,7 +1638,7 @@ VImage VImage::c2real() throw( VError ) } // im_c2rect: convert phase and amplitude to real and imaginary -VImage VImage::c2rect() throw( VError ) +VImage VImage::c2rect() { VImage in = *this; VImage out; @@ -1654,7 +1654,7 @@ VImage VImage::c2rect() throw( VError ) } // im_clip2fmt: convert image format to ofmt -VImage VImage::clip2fmt( int ofmt ) throw( VError ) +VImage VImage::clip2fmt( int ofmt ) { VImage in = *this; VImage out; @@ -1671,7 +1671,7 @@ VImage VImage::clip2fmt( int ofmt ) throw( VError ) } // im_copy: copy image -VImage VImage::copy() throw( VError ) +VImage VImage::copy() { VImage in = *this; VImage out; @@ -1687,7 +1687,7 @@ VImage VImage::copy() throw( VError ) } // im_copy_file: copy image to a file and return that -VImage VImage::copy_file() throw( VError ) +VImage VImage::copy_file() { VImage in = *this; VImage out; @@ -1703,7 +1703,7 @@ VImage VImage::copy_file() throw( VError ) } // im_copy_morph: copy image, setting pixel layout -VImage VImage::copy_morph( int Bands, int BandFmt, int Coding ) throw( VError ) +VImage VImage::copy_morph( int Bands, int BandFmt, int Coding ) { VImage input = *this; VImage output; @@ -1722,7 +1722,7 @@ VImage VImage::copy_morph( int Bands, int BandFmt, int Coding ) throw( VError ) } // im_copy_swap: copy image, swapping byte order -VImage VImage::copy_swap() throw( VError ) +VImage VImage::copy_swap() { VImage in = *this; VImage out; @@ -1738,7 +1738,7 @@ VImage VImage::copy_swap() throw( VError ) } // im_copy_set: copy image, setting informational fields -VImage VImage::copy_set( int Type, double Xres, double Yres, int Xoffset, int Yoffset ) throw( VError ) +VImage VImage::copy_set( int Type, double Xres, double Yres, int Xoffset, int Yoffset ) { VImage input = *this; VImage output; @@ -1759,7 +1759,7 @@ VImage VImage::copy_set( int Type, double Xres, double Yres, int Xoffset, int Yo } // im_extract_area: extract area -VImage VImage::extract_area( int left, int top, int width, int height ) throw( VError ) +VImage VImage::extract_area( int left, int top, int width, int height ) { VImage input = *this; VImage output; @@ -1779,7 +1779,7 @@ VImage VImage::extract_area( int left, int top, int width, int height ) throw( V } // im_extract_areabands: extract area and bands -VImage VImage::extract_areabands( int left, int top, int width, int height, int band, int nbands ) throw( VError ) +VImage VImage::extract_areabands( int left, int top, int width, int height, int band, int nbands ) { VImage input = *this; VImage output; @@ -1801,7 +1801,7 @@ VImage VImage::extract_areabands( int left, int top, int width, int height, int } // im_extract_band: extract band -VImage VImage::extract_band( int band ) throw( VError ) +VImage VImage::extract_band( int band ) { VImage input = *this; VImage output; @@ -1818,7 +1818,7 @@ VImage VImage::extract_band( int band ) throw( VError ) } // im_extract_bands: extract several bands -VImage VImage::extract_bands( int band, int nbands ) throw( VError ) +VImage VImage::extract_bands( int band, int nbands ) { VImage input = *this; VImage output; @@ -1836,7 +1836,7 @@ VImage VImage::extract_bands( int band, int nbands ) throw( VError ) } // im_extract: extract area/band -VImage VImage::extract( int left, int top, int width, int height, int band ) throw( VError ) +VImage VImage::extract( int left, int top, int width, int height, int band ) { VImage input = *this; VImage output; @@ -1857,7 +1857,7 @@ VImage VImage::extract( int left, int top, int width, int height, int band ) thr } // im_falsecolour: turn luminance changes into chrominance changes -VImage VImage::falsecolour() throw( VError ) +VImage VImage::falsecolour() { VImage in = *this; VImage out; @@ -1873,7 +1873,7 @@ VImage VImage::falsecolour() throw( VError ) } // im_fliphor: flip image left-right -VImage VImage::fliphor() throw( VError ) +VImage VImage::fliphor() { VImage in = *this; VImage out; @@ -1889,7 +1889,7 @@ VImage VImage::fliphor() throw( VError ) } // im_flipver: flip image top-bottom -VImage VImage::flipver() throw( VError ) +VImage VImage::flipver() { VImage in = *this; VImage out; @@ -1905,7 +1905,7 @@ VImage VImage::flipver() throw( VError ) } // im_gbandjoin: bandwise join of many images -VImage VImage::gbandjoin( std::vector in ) throw( VError ) +VImage VImage::gbandjoin( std::vector in ) { VImage out; @@ -1924,7 +1924,7 @@ VImage VImage::gbandjoin( std::vector in ) throw( VError ) } // im_grid: chop a tall thin image into a grid of images -VImage VImage::grid( int tile_height, int across, int down ) throw( VError ) +VImage VImage::grid( int tile_height, int across, int down ) { VImage input = *this; VImage output; @@ -1943,7 +1943,7 @@ VImage VImage::grid( int tile_height, int across, int down ) throw( VError ) } // im_insert: insert sub-image into main image at position -VImage VImage::insert( VImage sub, int x, int y ) throw( VError ) +VImage VImage::insert( VImage sub, int x, int y ) { VImage in = *this; VImage out; @@ -1963,7 +1963,7 @@ VImage VImage::insert( VImage sub, int x, int y ) throw( VError ) } // im_insertset: insert sub into main at every position in x, y -VImage VImage::insert( VImage sub, std::vector x, std::vector y ) throw( VError ) +VImage VImage::insert( VImage sub, std::vector x, std::vector y ) { VImage main = *this; VImage out; @@ -1987,7 +1987,7 @@ VImage VImage::insert( VImage sub, std::vector x, std::vector y ) thro } // im_insert_noexpand: insert sub-image into main image at position, no expansion -VImage VImage::insert_noexpand( VImage sub, int x, int y ) throw( VError ) +VImage VImage::insert_noexpand( VImage sub, int x, int y ) { VImage in = *this; VImage out; @@ -2007,7 +2007,7 @@ VImage VImage::insert_noexpand( VImage sub, int x, int y ) throw( VError ) } // im_embed: embed in within a set of borders -VImage VImage::embed( int type, int x, int y, int width, int height ) throw( VError ) +VImage VImage::embed( int type, int x, int y, int width, int height ) { VImage in = *this; VImage out; @@ -2028,7 +2028,7 @@ VImage VImage::embed( int type, int x, int y, int width, int height ) throw( VEr } // im_lrjoin: join two images left-right -VImage VImage::lrjoin( VImage in2 ) throw( VError ) +VImage VImage::lrjoin( VImage in2 ) { VImage in1 = *this; VImage out; @@ -2046,7 +2046,7 @@ VImage VImage::lrjoin( VImage in2 ) throw( VError ) } // im_msb: convert to uchar by discarding bits -VImage VImage::msb() throw( VError ) +VImage VImage::msb() { VImage in = *this; VImage out; @@ -2062,7 +2062,7 @@ VImage VImage::msb() throw( VError ) } // im_msb_band: convert to single band uchar by discarding bits -VImage VImage::msb_band( int band ) throw( VError ) +VImage VImage::msb_band( int band ) { VImage in = *this; VImage out; @@ -2079,7 +2079,7 @@ VImage VImage::msb_band( int band ) throw( VError ) } // im_replicate: replicate an image horizontally and vertically -VImage VImage::replicate( int across, int down ) throw( VError ) +VImage VImage::replicate( int across, int down ) { VImage input = *this; VImage output; @@ -2097,7 +2097,7 @@ VImage VImage::replicate( int across, int down ) throw( VError ) } // im_ri2c: join two non-complex images to form complex -VImage VImage::ri2c( VImage in2 ) throw( VError ) +VImage VImage::ri2c( VImage in2 ) { VImage in1 = *this; VImage out; @@ -2115,7 +2115,7 @@ VImage VImage::ri2c( VImage in2 ) throw( VError ) } // im_rot180: rotate image 180 degrees -VImage VImage::rot180() throw( VError ) +VImage VImage::rot180() { VImage in = *this; VImage out; @@ -2131,7 +2131,7 @@ VImage VImage::rot180() throw( VError ) } // im_rot270: rotate image 270 degrees clockwise -VImage VImage::rot270() throw( VError ) +VImage VImage::rot270() { VImage in = *this; VImage out; @@ -2147,7 +2147,7 @@ VImage VImage::rot270() throw( VError ) } // im_rot90: rotate image 90 degrees clockwise -VImage VImage::rot90() throw( VError ) +VImage VImage::rot90() { VImage in = *this; VImage out; @@ -2163,7 +2163,7 @@ VImage VImage::rot90() throw( VError ) } // im_scale: scale image linearly to fit range 0-255 -VImage VImage::scale() throw( VError ) +VImage VImage::scale() { VImage in = *this; VImage out; @@ -2179,7 +2179,7 @@ VImage VImage::scale() throw( VError ) } // im_scaleps: logarithmic scale of image to fit range 0-255 -VImage VImage::scaleps() throw( VError ) +VImage VImage::scaleps() { VImage in = *this; VImage out; @@ -2194,7 +2194,7 @@ VImage VImage::scaleps() throw( VError ) } // im_subsample: subsample image by integer factors -VImage VImage::subsample( int xshrink, int yshrink ) throw( VError ) +VImage VImage::subsample( int xshrink, int yshrink ) { VImage in = *this; VImage out; @@ -2212,7 +2212,7 @@ VImage VImage::subsample( int xshrink, int yshrink ) throw( VError ) } // im_system: run command on image -char* VImage::system( char* command ) throw( VError ) +char* VImage::system( char* command ) { VImage im = *this; char* output; @@ -2228,7 +2228,7 @@ char* VImage::system( char* command ) throw( VError ) } // im_system_image: run command on image, with image output -VImage VImage::system_image( char* in_format, char* out_format, char* command, char*& log ) throw( VError ) +VImage VImage::system_image( char* in_format, char* out_format, char* command, char*& log ) { VImage in = *this; VImage out; @@ -2247,7 +2247,7 @@ VImage VImage::system_image( char* in_format, char* out_format, char* command, c } // im_tbjoin: join two images top-bottom -VImage VImage::tbjoin( VImage in2 ) throw( VError ) +VImage VImage::tbjoin( VImage in2 ) { VImage in1 = *this; VImage out; @@ -2265,7 +2265,7 @@ VImage VImage::tbjoin( VImage in2 ) throw( VError ) } // im_text: generate text image -VImage VImage::text( char* text, char* font, int width, int alignment, int dpi ) throw( VError ) +VImage VImage::text( char* text, char* font, int width, int alignment, int dpi ) { VImage out; @@ -2283,7 +2283,7 @@ VImage VImage::text( char* text, char* font, int width, int alignment, int dpi ) } // im_wrap: shift image origin, wrapping at sides -VImage VImage::wrap( int x, int y ) throw( VError ) +VImage VImage::wrap( int x, int y ) { VImage in = *this; VImage out; @@ -2301,7 +2301,7 @@ VImage VImage::wrap( int x, int y ) throw( VError ) } // im_zoom: simple zoom of an image by integer factors -VImage VImage::zoom( int xfac, int yfac ) throw( VError ) +VImage VImage::zoom( int xfac, int yfac ) { VImage input = *this; VImage output; @@ -2321,9 +2321,9 @@ VImage VImage::zoom( int xfac, int yfac ) throw( VError ) // bodies for package convolution // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_aconvsep: approximate separable convolution -VImage VImage::aconvsep( VDMask matrix, int n_layers ) throw( VError ) +VImage VImage::aconvsep( VDMask matrix, int n_layers ) { VImage in = *this; VImage out; @@ -2341,7 +2341,7 @@ VImage VImage::aconvsep( VDMask matrix, int n_layers ) throw( VError ) } // im_aconv: approximate convolution -VImage VImage::aconv( VDMask matrix, int n_layers, int cluster ) throw( VError ) +VImage VImage::aconv( VDMask matrix, int n_layers, int cluster ) { VImage in = *this; VImage out; @@ -2360,7 +2360,7 @@ VImage VImage::aconv( VDMask matrix, int n_layers, int cluster ) throw( VError ) } // im_addgnoise: add gaussian noise with mean 0 and std. dev. sigma -VImage VImage::addgnoise( double sigma ) throw( VError ) +VImage VImage::addgnoise( double sigma ) { VImage in = *this; VImage out; @@ -2377,7 +2377,7 @@ VImage VImage::addgnoise( double sigma ) throw( VError ) } // im_compass: convolve with 8-way rotating integer mask -VImage VImage::compass( VIMask matrix ) throw( VError ) +VImage VImage::compass( VIMask matrix ) { VImage in = *this; VImage out; @@ -2394,7 +2394,7 @@ VImage VImage::compass( VIMask matrix ) throw( VError ) } // im_contrast_surface: find high-contrast points in an image -VImage VImage::contrast_surface( int half_win_size, int spacing ) throw( VError ) +VImage VImage::contrast_surface( int half_win_size, int spacing ) { VImage in = *this; VImage out; @@ -2412,7 +2412,7 @@ VImage VImage::contrast_surface( int half_win_size, int spacing ) throw( VError } // im_conv: convolve -VImage VImage::conv( VIMask matrix ) throw( VError ) +VImage VImage::conv( VIMask matrix ) { VImage in = *this; VImage out; @@ -2429,7 +2429,7 @@ VImage VImage::conv( VIMask matrix ) throw( VError ) } // im_conv_f: convolve, with DOUBLEMASK -VImage VImage::conv( VDMask matrix ) throw( VError ) +VImage VImage::conv( VDMask matrix ) { VImage in = *this; VImage out; @@ -2446,7 +2446,7 @@ VImage VImage::conv( VDMask matrix ) throw( VError ) } // im_convsep: seperable convolution -VImage VImage::convsep( VIMask matrix ) throw( VError ) +VImage VImage::convsep( VIMask matrix ) { VImage in = *this; VImage out; @@ -2463,7 +2463,7 @@ VImage VImage::convsep( VIMask matrix ) throw( VError ) } // im_convsep_f: seperable convolution, with DOUBLEMASK -VImage VImage::convsep( VDMask matrix ) throw( VError ) +VImage VImage::convsep( VDMask matrix ) { VImage in = *this; VImage out; @@ -2480,7 +2480,7 @@ VImage VImage::convsep( VDMask matrix ) throw( VError ) } // im_fastcor: fast correlate in2 within in1 -VImage VImage::fastcor( VImage in2 ) throw( VError ) +VImage VImage::fastcor( VImage in2 ) { VImage in1 = *this; VImage out; @@ -2498,7 +2498,7 @@ VImage VImage::fastcor( VImage in2 ) throw( VError ) } // im_gradcor: non-normalised correlation of gradient of in2 within in1 -VImage VImage::gradcor( VImage in2 ) throw( VError ) +VImage VImage::gradcor( VImage in2 ) { VImage in1 = *this; VImage out; @@ -2516,7 +2516,7 @@ VImage VImage::gradcor( VImage in2 ) throw( VError ) } // im_gradient: convolve with 2-way rotating mask -VImage VImage::gradient( VIMask matrix ) throw( VError ) +VImage VImage::gradient( VIMask matrix ) { VImage in = *this; VImage out; @@ -2533,7 +2533,7 @@ VImage VImage::gradient( VIMask matrix ) throw( VError ) } // im_grad_x: horizontal difference image -VImage VImage::grad_x() throw( VError ) +VImage VImage::grad_x() { VImage in = *this; VImage out; @@ -2549,7 +2549,7 @@ VImage VImage::grad_x() throw( VError ) } // im_grad_y: vertical difference image -VImage VImage::grad_y() throw( VError ) +VImage VImage::grad_y() { VImage in = *this; VImage out; @@ -2565,7 +2565,7 @@ VImage VImage::grad_y() throw( VError ) } // im_lindetect: convolve with 4-way rotating mask -VImage VImage::lindetect( VIMask matrix ) throw( VError ) +VImage VImage::lindetect( VIMask matrix ) { VImage in = *this; VImage out; @@ -2582,7 +2582,7 @@ VImage VImage::lindetect( VIMask matrix ) throw( VError ) } // im_sharpen: sharpen high frequencies of L channel of LabQ -VImage VImage::sharpen( int mask_size, double x1, double y2, double y3, double m1, double m2 ) throw( VError ) +VImage VImage::sharpen( int mask_size, double x1, double y2, double y3, double m1, double m2 ) { VImage in = *this; VImage out; @@ -2604,7 +2604,7 @@ VImage VImage::sharpen( int mask_size, double x1, double y2, double y3, double m } // im_spcor: normalised correlation of in2 within in1 -VImage VImage::spcor( VImage in2 ) throw( VError ) +VImage VImage::spcor( VImage in2 ) { VImage in1 = *this; VImage out; @@ -2624,9 +2624,9 @@ VImage VImage::spcor( VImage in2 ) throw( VError ) // bodies for package deprecated // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_argb2rgba: convert pre-multipled argb to png-style rgba -VImage VImage::argb2rgba() throw( VError ) +VImage VImage::argb2rgba() { VImage in = *this; VImage out; @@ -2642,7 +2642,7 @@ VImage VImage::argb2rgba() throw( VError ) } // im_flood_copy: flood with ink from start_x, start_y while pixel == start pixel -VImage VImage::flood_copy( int start_x, int start_y, std::vector ink ) throw( VError ) +VImage VImage::flood_copy( int start_x, int start_y, std::vector ink ) { VImage in = *this; VImage out; @@ -2663,7 +2663,7 @@ VImage VImage::flood_copy( int start_x, int start_y, std::vector ink ) t } // im_flood_blob_copy: flood with ink from start_x, start_y while pixel == start pixel -VImage VImage::flood_blob_copy( int start_x, int start_y, std::vector ink ) throw( VError ) +VImage VImage::flood_blob_copy( int start_x, int start_y, std::vector ink ) { VImage in = *this; VImage out; @@ -2684,7 +2684,7 @@ VImage VImage::flood_blob_copy( int start_x, int start_y, std::vector in } // im_flood_other_copy: flood mark with serial from start_x, start_y while pixel == start pixel -VImage VImage::flood_other_copy( VImage mark, int start_x, int start_y, int serial ) throw( VError ) +VImage VImage::flood_other_copy( VImage mark, int start_x, int start_y, int serial ) { VImage test = *this; VImage out; @@ -2703,7 +2703,7 @@ VImage VImage::flood_other_copy( VImage mark, int start_x, int start_y, int seri } // im_clip: convert to unsigned 8-bit integer -VImage VImage::clip() throw( VError ) +VImage VImage::clip() { VImage in = *this; VImage out; @@ -2719,7 +2719,7 @@ VImage VImage::clip() throw( VError ) } // im_c2ps: find power spectrum of complex image -VImage VImage::c2ps() throw( VError ) +VImage VImage::c2ps() { VImage in = *this; VImage out; @@ -2735,7 +2735,7 @@ VImage VImage::c2ps() throw( VError ) } // im_resize_linear: resize to X by Y pixels with linear interpolation -VImage VImage::resize_linear( int X, int Y ) throw( VError ) +VImage VImage::resize_linear( int X, int Y ) { VImage in = *this; VImage out; @@ -2752,7 +2752,7 @@ VImage VImage::resize_linear( int X, int Y ) throw( VError ) } // im_cmulnorm: multiply two complex images, normalising output -VImage VImage::cmulnorm( VImage in2 ) throw( VError ) +VImage VImage::cmulnorm( VImage in2 ) { VImage in1 = *this; VImage out; @@ -2770,7 +2770,7 @@ VImage VImage::cmulnorm( VImage in2 ) throw( VError ) } // im_fav4: average of 4 images -VImage VImage::fav4( VImage in2, VImage in3, VImage in4 ) throw( VError ) +VImage VImage::fav4( VImage in2, VImage in3, VImage in4 ) { VImage in1 = *this; VImage out; @@ -2788,7 +2788,7 @@ VImage VImage::fav4( VImage in2, VImage in3, VImage in4 ) throw( VError ) } // im_gadd: calculate a*in1 + b*in2 + c = outfile -VImage VImage::gadd( double a, double b, VImage in2, double c ) throw( VError ) +VImage VImage::gadd( double a, double b, VImage in2, double c ) { VImage in1 = *this; VImage out; @@ -2807,7 +2807,7 @@ VImage VImage::gadd( double a, double b, VImage in2, double c ) throw( VError ) } // im_icc_export: convert a float LAB to an 8-bit device image with an ICC profile -VImage VImage::icc_export( char* output_profile, int intent ) throw( VError ) +VImage VImage::icc_export( char* output_profile, int intent ) { VImage in = *this; VImage out; @@ -2825,7 +2825,7 @@ VImage VImage::icc_export( char* output_profile, int intent ) throw( VError ) } // im_litecor: calculate max(white)*factor*(in/white), if clip == 1 -VImage VImage::litecor( VImage white, int clip, double factor ) throw( VError ) +VImage VImage::litecor( VImage white, int clip, double factor ) { VImage in = *this; VImage out; @@ -2843,7 +2843,7 @@ VImage VImage::litecor( VImage white, int clip, double factor ) throw( VError ) } // im_affine: affine transform -VImage VImage::affine( double a, double b, double c, double d, double dx, double dy, int x, int y, int w, int h ) throw( VError ) +VImage VImage::affine( double a, double b, double c, double d, double dx, double dy, int x, int y, int w, int h ) { VImage in = *this; VImage out; @@ -2869,7 +2869,7 @@ VImage VImage::affine( double a, double b, double c, double d, double dx, double } // im_clip2c: convert to signed 8-bit integer -VImage VImage::clip2c() throw( VError ) +VImage VImage::clip2c() { VImage in = *this; VImage out; @@ -2885,7 +2885,7 @@ VImage VImage::clip2c() throw( VError ) } // im_clip2cm: convert to complex -VImage VImage::clip2cm() throw( VError ) +VImage VImage::clip2cm() { VImage in = *this; VImage out; @@ -2901,7 +2901,7 @@ VImage VImage::clip2cm() throw( VError ) } // im_clip2d: convert to double-precision float -VImage VImage::clip2d() throw( VError ) +VImage VImage::clip2d() { VImage in = *this; VImage out; @@ -2917,7 +2917,7 @@ VImage VImage::clip2d() throw( VError ) } // im_clip2dcm: convert to double complex -VImage VImage::clip2dcm() throw( VError ) +VImage VImage::clip2dcm() { VImage in = *this; VImage out; @@ -2933,7 +2933,7 @@ VImage VImage::clip2dcm() throw( VError ) } // im_clip2f: convert to single-precision float -VImage VImage::clip2f() throw( VError ) +VImage VImage::clip2f() { VImage in = *this; VImage out; @@ -2949,7 +2949,7 @@ VImage VImage::clip2f() throw( VError ) } // im_clip2i: convert to signed 32-bit integer -VImage VImage::clip2i() throw( VError ) +VImage VImage::clip2i() { VImage in = *this; VImage out; @@ -2965,7 +2965,7 @@ VImage VImage::clip2i() throw( VError ) } // im_convsub: convolve uchar to uchar, sub-sampling by xskip, yskip -VImage VImage::convsub( VIMask matrix, int xskip, int yskip ) throw( VError ) +VImage VImage::convsub( VIMask matrix, int xskip, int yskip ) { VImage in = *this; VImage out; @@ -2983,7 +2983,7 @@ VImage VImage::convsub( VIMask matrix, int xskip, int yskip ) throw( VError ) } // im_convf: convolve, with DOUBLEMASK -VImage VImage::convf( VDMask matrix ) throw( VError ) +VImage VImage::convf( VDMask matrix ) { VImage in = *this; VImage out; @@ -3000,7 +3000,7 @@ VImage VImage::convf( VDMask matrix ) throw( VError ) } // im_convsepf: seperable convolution, with DOUBLEMASK -VImage VImage::convsepf( VDMask matrix ) throw( VError ) +VImage VImage::convsepf( VDMask matrix ) { VImage in = *this; VImage out; @@ -3017,7 +3017,7 @@ VImage VImage::convsepf( VDMask matrix ) throw( VError ) } // im_clip2s: convert to signed 16-bit integer -VImage VImage::clip2s() throw( VError ) +VImage VImage::clip2s() { VImage in = *this; VImage out; @@ -3033,7 +3033,7 @@ VImage VImage::clip2s() throw( VError ) } // im_clip2ui: convert to unsigned 32-bit integer -VImage VImage::clip2ui() throw( VError ) +VImage VImage::clip2ui() { VImage in = *this; VImage out; @@ -3049,7 +3049,7 @@ VImage VImage::clip2ui() throw( VError ) } // im_insertplaceset: insert sub into main at every position in x, y -VImage VImage::insertplace( VImage sub, std::vector x, std::vector y ) throw( VError ) +VImage VImage::insertplace( VImage sub, std::vector x, std::vector y ) { VImage main = *this; VImage out; @@ -3073,7 +3073,7 @@ VImage VImage::insertplace( VImage sub, std::vector x, std::vector y ) } // im_clip2us: convert to unsigned 16-bit integer -VImage VImage::clip2us() throw( VError ) +VImage VImage::clip2us() { VImage in = *this; VImage out; @@ -3089,7 +3089,7 @@ VImage VImage::clip2us() throw( VError ) } // im_slice: slice an image using two thresholds -VImage VImage::slice( double thresh1, double thresh2 ) throw( VError ) +VImage VImage::slice( double thresh1, double thresh2 ) { VImage input = *this; VImage output; @@ -3106,7 +3106,7 @@ VImage VImage::slice( double thresh1, double thresh2 ) throw( VError ) } // im_segment: number continuous regions in an image -VImage VImage::segment( int& segments ) throw( VError ) +VImage VImage::segment( int& segments ) { VImage test = *this; VImage mask; @@ -3122,7 +3122,7 @@ VImage VImage::segment( int& segments ) throw( VError ) } // im_line: draw line between points (x1,y1) and (x2,y2) -void VImage::line( int x1, int y1, int x2, int y2, int pelval ) throw( VError ) +void VImage::line( int x1, int y1, int x2, int y2, int pelval ) { VImage im = *this; Vargv _vec( "im_line" ); @@ -3137,7 +3137,7 @@ void VImage::line( int x1, int y1, int x2, int y2, int pelval ) throw( VError ) } // im_thresh: slice an image at a threshold -VImage VImage::thresh( double threshold ) throw( VError ) +VImage VImage::thresh( double threshold ) { VImage input = *this; VImage output; @@ -3153,7 +3153,7 @@ VImage VImage::thresh( double threshold ) throw( VError ) } // im_convf_raw: convolve, with DOUBLEMASK, no border -VImage VImage::convf_raw( VDMask matrix ) throw( VError ) +VImage VImage::convf_raw( VDMask matrix ) { VImage in = *this; VImage out; @@ -3170,7 +3170,7 @@ VImage VImage::convf_raw( VDMask matrix ) throw( VError ) } // im_conv_raw: convolve, no border -VImage VImage::conv_raw( VIMask matrix ) throw( VError ) +VImage VImage::conv_raw( VIMask matrix ) { VImage in = *this; VImage out; @@ -3187,7 +3187,7 @@ VImage VImage::conv_raw( VIMask matrix ) throw( VError ) } // im_contrast_surface_raw: find high-contrast points in an image -VImage VImage::contrast_surface_raw( int half_win_size, int spacing ) throw( VError ) +VImage VImage::contrast_surface_raw( int half_win_size, int spacing ) { VImage in = *this; VImage out; @@ -3205,7 +3205,7 @@ VImage VImage::contrast_surface_raw( int half_win_size, int spacing ) throw( VEr } // im_convsepf_raw: seperable convolution, with DOUBLEMASK, no border -VImage VImage::convsepf_raw( VDMask matrix ) throw( VError ) +VImage VImage::convsepf_raw( VDMask matrix ) { VImage in = *this; VImage out; @@ -3222,7 +3222,7 @@ VImage VImage::convsepf_raw( VDMask matrix ) throw( VError ) } // im_convsep_raw: seperable convolution, no border -VImage VImage::convsep_raw( VIMask matrix ) throw( VError ) +VImage VImage::convsep_raw( VIMask matrix ) { VImage in = *this; VImage out; @@ -3239,7 +3239,7 @@ VImage VImage::convsep_raw( VIMask matrix ) throw( VError ) } // im_fastcor_raw: fast correlate in2 within in1, no border -VImage VImage::fastcor_raw( VImage in2 ) throw( VError ) +VImage VImage::fastcor_raw( VImage in2 ) { VImage in1 = *this; VImage out; @@ -3257,7 +3257,7 @@ VImage VImage::fastcor_raw( VImage in2 ) throw( VError ) } // im_gradcor_raw: non-normalised correlation of gradient of in2 within in1, no padding -VImage VImage::gradcor_raw( VImage in2 ) throw( VError ) +VImage VImage::gradcor_raw( VImage in2 ) { VImage in1 = *this; VImage out; @@ -3275,7 +3275,7 @@ VImage VImage::gradcor_raw( VImage in2 ) throw( VError ) } // im_spcor_raw: normalised correlation of in2 within in1, no black padding -VImage VImage::spcor_raw( VImage in2 ) throw( VError ) +VImage VImage::spcor_raw( VImage in2 ) { VImage in1 = *this; VImage out; @@ -3293,7 +3293,7 @@ VImage VImage::spcor_raw( VImage in2 ) throw( VError ) } // im_lhisteq_raw: local histogram equalisation, no border -VImage VImage::lhisteq_raw( int width, int height ) throw( VError ) +VImage VImage::lhisteq_raw( int width, int height ) { VImage in = *this; VImage out; @@ -3311,7 +3311,7 @@ VImage VImage::lhisteq_raw( int width, int height ) throw( VError ) } // im_stdif_raw: statistical differencing, no border -VImage VImage::stdif_raw( double a, double m0, double b, double s0, int xw, int yw ) throw( VError ) +VImage VImage::stdif_raw( double a, double m0, double b, double s0, int xw, int yw ) { VImage in = *this; VImage out; @@ -3333,7 +3333,7 @@ VImage VImage::stdif_raw( double a, double m0, double b, double s0, int xw, int } // im_rank_raw: rank filter nth element of xsize/ysize window, no border -VImage VImage::rank_raw( int xsize, int ysize, int n ) throw( VError ) +VImage VImage::rank_raw( int xsize, int ysize, int n ) { VImage in = *this; VImage out; @@ -3352,7 +3352,7 @@ VImage VImage::rank_raw( int xsize, int ysize, int n ) throw( VError ) } // im_dilate_raw: dilate image with mask -VImage VImage::dilate_raw( VIMask mask ) throw( VError ) +VImage VImage::dilate_raw( VIMask mask ) { VImage in = *this; VImage out; @@ -3369,7 +3369,7 @@ VImage VImage::dilate_raw( VIMask mask ) throw( VError ) } // im_erode_raw: erode image with mask -VImage VImage::erode_raw( VIMask mask ) throw( VError ) +VImage VImage::erode_raw( VIMask mask ) { VImage in = *this; VImage out; @@ -3386,7 +3386,7 @@ VImage VImage::erode_raw( VIMask mask ) throw( VError ) } // im_similarity_area: output area xywh of similarity transformation -VImage VImage::similarity_area( double a, double b, double dx, double dy, int x, int y, int w, int h ) throw( VError ) +VImage VImage::similarity_area( double a, double b, double dx, double dy, int x, int y, int w, int h ) { VImage in = *this; VImage out; @@ -3410,7 +3410,7 @@ VImage VImage::similarity_area( double a, double b, double dx, double dy, int x, } // im_similarity: similarity transformation -VImage VImage::similarity( double a, double b, double dx, double dy ) throw( VError ) +VImage VImage::similarity( double a, double b, double dx, double dy ) { VImage in = *this; VImage out; @@ -3430,7 +3430,7 @@ VImage VImage::similarity( double a, double b, double dx, double dy ) throw( VEr } // im_mask2vips: convert DOUBLEMASK to VIPS image -VImage VImage::mask2vips( VDMask input ) throw( VError ) +VImage VImage::mask2vips( VDMask input ) { VImage output; @@ -3444,7 +3444,7 @@ VImage VImage::mask2vips( VDMask input ) throw( VError ) } // im_vips2mask: convert VIPS image to DOUBLEMASK -VDMask VImage::vips2mask() throw( VError ) +VDMask VImage::vips2mask() { VImage input = *this; VDMask output; @@ -3460,7 +3460,7 @@ VDMask VImage::vips2mask() throw( VError ) } // im_insertplace: draw image sub inside image main at position (x,y) -void VImage::insertplace( VImage sub, int x, int y ) throw( VError ) +void VImage::insertplace( VImage sub, int x, int y ) { VImage main = *this; Vargv _vec( "im_insertplace" ); @@ -3473,7 +3473,7 @@ void VImage::insertplace( VImage sub, int x, int y ) throw( VError ) } // im_circle: plot circle on image -void VImage::circle( int cx, int cy, int radius, int intensity ) throw( VError ) +void VImage::circle( int cx, int cy, int radius, int intensity ) { VImage image = *this; Vargv _vec( "im_circle" ); @@ -3487,7 +3487,7 @@ void VImage::circle( int cx, int cy, int radius, int intensity ) throw( VError ) } // im_andimage: bitwise and of two images -VImage VImage::andimage( VImage in2 ) throw( VError ) +VImage VImage::andimage( VImage in2 ) { VImage in1 = *this; VImage out; @@ -3505,7 +3505,7 @@ VImage VImage::andimage( VImage in2 ) throw( VError ) } // im_andimageconst: bitwise and of an image with a constant -VImage VImage::andimage( int c ) throw( VError ) +VImage VImage::andimage( int c ) { VImage in1 = *this; VImage out; @@ -3522,7 +3522,7 @@ VImage VImage::andimage( int c ) throw( VError ) } // im_andimage_vec: bitwise and of an image with a vector constant -VImage VImage::andimage( std::vector vec ) throw( VError ) +VImage VImage::andimage( std::vector vec ) { VImage in = *this; VImage out; @@ -3542,7 +3542,7 @@ VImage VImage::andimage( std::vector vec ) throw( VError ) } // im_orimage: bitwise or of two images -VImage VImage::orimage( VImage in2 ) throw( VError ) +VImage VImage::orimage( VImage in2 ) { VImage in1 = *this; VImage out; @@ -3560,7 +3560,7 @@ VImage VImage::orimage( VImage in2 ) throw( VError ) } // im_orimageconst: bitwise or of an image with a constant -VImage VImage::orimage( int c ) throw( VError ) +VImage VImage::orimage( int c ) { VImage in1 = *this; VImage out; @@ -3577,7 +3577,7 @@ VImage VImage::orimage( int c ) throw( VError ) } // im_orimage_vec: bitwise or of an image with a vector constant -VImage VImage::orimage( std::vector vec ) throw( VError ) +VImage VImage::orimage( std::vector vec ) { VImage in = *this; VImage out; @@ -3597,7 +3597,7 @@ VImage VImage::orimage( std::vector vec ) throw( VError ) } // im_eorimage: bitwise eor of two images -VImage VImage::eorimage( VImage in2 ) throw( VError ) +VImage VImage::eorimage( VImage in2 ) { VImage in1 = *this; VImage out; @@ -3615,7 +3615,7 @@ VImage VImage::eorimage( VImage in2 ) throw( VError ) } // im_eorimageconst: bitwise eor of an image with a constant -VImage VImage::eorimage( int c ) throw( VError ) +VImage VImage::eorimage( int c ) { VImage in1 = *this; VImage out; @@ -3632,7 +3632,7 @@ VImage VImage::eorimage( int c ) throw( VError ) } // im_eorimage_vec: bitwise eor of an image with a vector constant -VImage VImage::eorimage( std::vector vec ) throw( VError ) +VImage VImage::eorimage( std::vector vec ) { VImage in = *this; VImage out; @@ -3652,7 +3652,7 @@ VImage VImage::eorimage( std::vector vec ) throw( VError ) } // im_shiftleft_vec: shift image array bits to left -VImage VImage::shiftleft( std::vector vec ) throw( VError ) +VImage VImage::shiftleft( std::vector vec ) { VImage in = *this; VImage out; @@ -3672,7 +3672,7 @@ VImage VImage::shiftleft( std::vector vec ) throw( VError ) } // im_shiftleft: shift image n bits to left -VImage VImage::shiftleft( int c ) throw( VError ) +VImage VImage::shiftleft( int c ) { VImage in1 = *this; VImage out; @@ -3689,7 +3689,7 @@ VImage VImage::shiftleft( int c ) throw( VError ) } // im_shiftright_vec: shift image array bits to right -VImage VImage::shiftright( std::vector vec ) throw( VError ) +VImage VImage::shiftright( std::vector vec ) { VImage in = *this; VImage out; @@ -3709,7 +3709,7 @@ VImage VImage::shiftright( std::vector vec ) throw( VError ) } // im_shiftright: shift integer image n bits to right -VImage VImage::shiftright( int c ) throw( VError ) +VImage VImage::shiftright( int c ) { VImage in1 = *this; VImage out; @@ -3726,7 +3726,7 @@ VImage VImage::shiftright( int c ) throw( VError ) } // im_blend: use cond image to blend between images in1 and in2 -VImage VImage::blend( VImage in1, VImage in2 ) throw( VError ) +VImage VImage::blend( VImage in1, VImage in2 ) { VImage cond = *this; VImage out; @@ -3746,7 +3746,7 @@ VImage VImage::blend( VImage in1, VImage in2 ) throw( VError ) } // im_equal: two images equal in value -VImage VImage::equal( VImage in2 ) throw( VError ) +VImage VImage::equal( VImage in2 ) { VImage in1 = *this; VImage out; @@ -3764,7 +3764,7 @@ VImage VImage::equal( VImage in2 ) throw( VError ) } // im_equal_vec: image equals doublevec -VImage VImage::equal( std::vector vec ) throw( VError ) +VImage VImage::equal( std::vector vec ) { VImage in = *this; VImage out; @@ -3784,7 +3784,7 @@ VImage VImage::equal( std::vector vec ) throw( VError ) } // im_equalconst: image equals const -VImage VImage::equal( double c ) throw( VError ) +VImage VImage::equal( double c ) { VImage in1 = *this; VImage out; @@ -3801,7 +3801,7 @@ VImage VImage::equal( double c ) throw( VError ) } // im_ifthenelse: use cond image to choose pels from image in1 or in2 -VImage VImage::ifthenelse( VImage in1, VImage in2 ) throw( VError ) +VImage VImage::ifthenelse( VImage in1, VImage in2 ) { VImage cond = *this; VImage out; @@ -3821,7 +3821,7 @@ VImage VImage::ifthenelse( VImage in1, VImage in2 ) throw( VError ) } // im_less: in1 less than in2 in value -VImage VImage::less( VImage in2 ) throw( VError ) +VImage VImage::less( VImage in2 ) { VImage in1 = *this; VImage out; @@ -3839,7 +3839,7 @@ VImage VImage::less( VImage in2 ) throw( VError ) } // im_less_vec: in less than doublevec -VImage VImage::less( std::vector vec ) throw( VError ) +VImage VImage::less( std::vector vec ) { VImage in = *this; VImage out; @@ -3859,7 +3859,7 @@ VImage VImage::less( std::vector vec ) throw( VError ) } // im_lessconst: in less than const -VImage VImage::less( double c ) throw( VError ) +VImage VImage::less( double c ) { VImage in1 = *this; VImage out; @@ -3876,7 +3876,7 @@ VImage VImage::less( double c ) throw( VError ) } // im_lesseq: in1 less than or equal to in2 in value -VImage VImage::lesseq( VImage in2 ) throw( VError ) +VImage VImage::lesseq( VImage in2 ) { VImage in1 = *this; VImage out; @@ -3894,7 +3894,7 @@ VImage VImage::lesseq( VImage in2 ) throw( VError ) } // im_lesseq_vec: in less than or equal to doublevec -VImage VImage::lesseq( std::vector vec ) throw( VError ) +VImage VImage::lesseq( std::vector vec ) { VImage in = *this; VImage out; @@ -3914,7 +3914,7 @@ VImage VImage::lesseq( std::vector vec ) throw( VError ) } // im_lesseqconst: in less than or equal to const -VImage VImage::lesseq( double c ) throw( VError ) +VImage VImage::lesseq( double c ) { VImage in1 = *this; VImage out; @@ -3931,7 +3931,7 @@ VImage VImage::lesseq( double c ) throw( VError ) } // im_more: in1 more than in2 in value -VImage VImage::more( VImage in2 ) throw( VError ) +VImage VImage::more( VImage in2 ) { VImage in1 = *this; VImage out; @@ -3949,7 +3949,7 @@ VImage VImage::more( VImage in2 ) throw( VError ) } // im_more_vec: in more than doublevec -VImage VImage::more( std::vector vec ) throw( VError ) +VImage VImage::more( std::vector vec ) { VImage in = *this; VImage out; @@ -3969,7 +3969,7 @@ VImage VImage::more( std::vector vec ) throw( VError ) } // im_moreconst: in more than const -VImage VImage::more( double c ) throw( VError ) +VImage VImage::more( double c ) { VImage in1 = *this; VImage out; @@ -3986,7 +3986,7 @@ VImage VImage::more( double c ) throw( VError ) } // im_moreeq: in1 more than or equal to in2 in value -VImage VImage::moreeq( VImage in2 ) throw( VError ) +VImage VImage::moreeq( VImage in2 ) { VImage in1 = *this; VImage out; @@ -4004,7 +4004,7 @@ VImage VImage::moreeq( VImage in2 ) throw( VError ) } // im_moreeq_vec: in more than or equal to doublevec -VImage VImage::moreeq( std::vector vec ) throw( VError ) +VImage VImage::moreeq( std::vector vec ) { VImage in = *this; VImage out; @@ -4024,7 +4024,7 @@ VImage VImage::moreeq( std::vector vec ) throw( VError ) } // im_moreeqconst: in more than or equal to const -VImage VImage::moreeq( double c ) throw( VError ) +VImage VImage::moreeq( double c ) { VImage in1 = *this; VImage out; @@ -4041,7 +4041,7 @@ VImage VImage::moreeq( double c ) throw( VError ) } // im_notequal: two images not equal in value -VImage VImage::notequal( VImage in2 ) throw( VError ) +VImage VImage::notequal( VImage in2 ) { VImage in1 = *this; VImage out; @@ -4059,7 +4059,7 @@ VImage VImage::notequal( VImage in2 ) throw( VError ) } // im_notequal_vec: image does not equal doublevec -VImage VImage::notequal( std::vector vec ) throw( VError ) +VImage VImage::notequal( std::vector vec ) { VImage in = *this; VImage out; @@ -4079,7 +4079,7 @@ VImage VImage::notequal( std::vector vec ) throw( VError ) } // im_notequalconst: image does not equal const -VImage VImage::notequal( double c ) throw( VError ) +VImage VImage::notequal( double c ) { VImage in1 = *this; VImage out; @@ -4096,7 +4096,7 @@ VImage VImage::notequal( double c ) throw( VError ) } // im_quadratic: transform via quadratic -VImage VImage::quadratic( VImage coeff ) throw( VError ) +VImage VImage::quadratic( VImage coeff ) { VImage in = *this; VImage out; @@ -4116,9 +4116,9 @@ VImage VImage::quadratic( VImage coeff ) throw( VError ) // bodies for package format // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_csv2vips: read a file in csv format -VImage VImage::csv2vips( char* filename ) throw( VError ) +VImage VImage::csv2vips( char* filename ) { VImage im; @@ -4132,7 +4132,7 @@ VImage VImage::csv2vips( char* filename ) throw( VError ) } // im_fits2vips: convert from fits -VImage VImage::fits2vips( char* in ) throw( VError ) +VImage VImage::fits2vips( char* in ) { VImage out; @@ -4146,7 +4146,7 @@ VImage VImage::fits2vips( char* in ) throw( VError ) } // im_jpeg2vips: convert from jpeg -VImage VImage::jpeg2vips( char* in ) throw( VError ) +VImage VImage::jpeg2vips( char* in ) { VImage out; @@ -4160,7 +4160,7 @@ VImage VImage::jpeg2vips( char* in ) throw( VError ) } // im_magick2vips: load file with libMagick -VImage VImage::magick2vips( char* in ) throw( VError ) +VImage VImage::magick2vips( char* in ) { VImage out; @@ -4174,7 +4174,7 @@ VImage VImage::magick2vips( char* in ) throw( VError ) } // im_png2vips: convert PNG file to VIPS image -VImage VImage::png2vips( char* in ) throw( VError ) +VImage VImage::png2vips( char* in ) { VImage out; @@ -4188,7 +4188,7 @@ VImage VImage::png2vips( char* in ) throw( VError ) } // im_exr2vips: convert an OpenEXR file to VIPS -VImage VImage::exr2vips( char* in ) throw( VError ) +VImage VImage::exr2vips( char* in ) { VImage out; @@ -4202,7 +4202,7 @@ VImage VImage::exr2vips( char* in ) throw( VError ) } // im_ppm2vips: read a file in pbm/pgm/ppm format -VImage VImage::ppm2vips( char* filename ) throw( VError ) +VImage VImage::ppm2vips( char* filename ) { VImage im; @@ -4216,7 +4216,7 @@ VImage VImage::ppm2vips( char* filename ) throw( VError ) } // im_analyze2vips: read a file in analyze format -VImage VImage::analyze2vips( char* filename ) throw( VError ) +VImage VImage::analyze2vips( char* filename ) { VImage im; @@ -4230,7 +4230,7 @@ VImage VImage::analyze2vips( char* filename ) throw( VError ) } // im_tiff2vips: convert TIFF file to VIPS image -VImage VImage::tiff2vips( char* in ) throw( VError ) +VImage VImage::tiff2vips( char* in ) { VImage out; @@ -4244,7 +4244,7 @@ VImage VImage::tiff2vips( char* in ) throw( VError ) } // im_vips2csv: write an image in csv format -void VImage::vips2csv( char* filename ) throw( VError ) +void VImage::vips2csv( char* filename ) { VImage in = *this; Vargv _vec( "im_vips2csv" ); @@ -4255,7 +4255,7 @@ void VImage::vips2csv( char* filename ) throw( VError ) } // im_vips2dz: save as deepzoom -void VImage::vips2dz( char* out ) throw( VError ) +void VImage::vips2dz( char* out ) { VImage in = *this; Vargv _vec( "im_vips2dz" ); @@ -4266,7 +4266,7 @@ void VImage::vips2dz( char* out ) throw( VError ) } // im_vips2jpeg: convert to jpeg -void VImage::vips2jpeg( char* out ) throw( VError ) +void VImage::vips2jpeg( char* out ) { VImage in = *this; Vargv _vec( "im_vips2jpeg" ); @@ -4277,7 +4277,7 @@ void VImage::vips2jpeg( char* out ) throw( VError ) } // im_vips2mimejpeg: convert to jpeg as mime type on stdout -void VImage::vips2mimejpeg( int qfac ) throw( VError ) +void VImage::vips2mimejpeg( int qfac ) { VImage in = *this; Vargv _vec( "im_vips2mimejpeg" ); @@ -4288,7 +4288,7 @@ void VImage::vips2mimejpeg( int qfac ) throw( VError ) } // im_vips2png: convert VIPS image to PNG file -void VImage::vips2png( char* out ) throw( VError ) +void VImage::vips2png( char* out ) { VImage in = *this; Vargv _vec( "im_vips2png" ); @@ -4299,7 +4299,7 @@ void VImage::vips2png( char* out ) throw( VError ) } // im_vips2ppm: write a file in pbm/pgm/ppm format -void VImage::vips2ppm( char* filename ) throw( VError ) +void VImage::vips2ppm( char* filename ) { VImage im = *this; Vargv _vec( "im_vips2ppm" ); @@ -4310,7 +4310,7 @@ void VImage::vips2ppm( char* filename ) throw( VError ) } // im_vips2tiff: convert VIPS image to TIFF file -void VImage::vips2tiff( char* out ) throw( VError ) +void VImage::vips2tiff( char* out ) { VImage in = *this; Vargv _vec( "im_vips2tiff" ); @@ -4323,9 +4323,9 @@ void VImage::vips2tiff( char* out ) throw( VError ) // bodies for package freq_filt // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_create_fmask: create frequency domain filter mask -VImage VImage::create_fmask( int width, int height, int type, double p1, double p2, double p3, double p4, double p5 ) throw( VError ) +VImage VImage::create_fmask( int width, int height, int type, double p1, double p2, double p3, double p4, double p5 ) { VImage out; @@ -4346,7 +4346,7 @@ VImage VImage::create_fmask( int width, int height, int type, double p1, double } // im_disp_ps: make displayable power spectrum -VImage VImage::disp_ps() throw( VError ) +VImage VImage::disp_ps() { VImage in = *this; VImage out; @@ -4361,7 +4361,7 @@ VImage VImage::disp_ps() throw( VError ) } // im_flt_image_freq: frequency domain filter image -VImage VImage::flt_image_freq( int type, double p1, double p2, double p3, double p4, double p5 ) throw( VError ) +VImage VImage::flt_image_freq( int type, double p1, double p2, double p3, double p4, double p5 ) { VImage in = *this; VImage out; @@ -4382,7 +4382,7 @@ VImage VImage::flt_image_freq( int type, double p1, double p2, double p3, double } // im_fractsurf: generate a fractal surface of given dimension -VImage VImage::fractsurf( int size, double dimension ) throw( VError ) +VImage VImage::fractsurf( int size, double dimension ) { VImage out; @@ -4397,7 +4397,7 @@ VImage VImage::fractsurf( int size, double dimension ) throw( VError ) } // im_freqflt: frequency-domain filter of in with mask -VImage VImage::freqflt( VImage mask ) throw( VError ) +VImage VImage::freqflt( VImage mask ) { VImage in = *this; VImage out; @@ -4413,7 +4413,7 @@ VImage VImage::freqflt( VImage mask ) throw( VError ) } // im_fwfft: forward fast-fourier transform -VImage VImage::fwfft() throw( VError ) +VImage VImage::fwfft() { VImage in = *this; VImage out; @@ -4428,7 +4428,7 @@ VImage VImage::fwfft() throw( VError ) } // im_rotquad: rotate image quadrants to move origin to centre -VImage VImage::rotquad() throw( VError ) +VImage VImage::rotquad() { VImage in = *this; VImage out; @@ -4443,7 +4443,7 @@ VImage VImage::rotquad() throw( VError ) } // im_invfft: inverse fast-fourier transform -VImage VImage::invfft() throw( VError ) +VImage VImage::invfft() { VImage in = *this; VImage out; @@ -4458,7 +4458,7 @@ VImage VImage::invfft() throw( VError ) } // im_phasecor_fft: non-normalised correlation of gradient of in2 within in1 -VImage VImage::phasecor_fft( VImage in2 ) throw( VError ) +VImage VImage::phasecor_fft( VImage in2 ) { VImage in1 = *this; VImage out; @@ -4474,7 +4474,7 @@ VImage VImage::phasecor_fft( VImage in2 ) throw( VError ) } // im_invfftr: real part of inverse fast-fourier transform -VImage VImage::invfftr() throw( VError ) +VImage VImage::invfftr() { VImage in = *this; VImage out; @@ -4491,9 +4491,9 @@ VImage VImage::invfftr() throw( VError ) // bodies for package histograms_lut // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_gammacorrect: gamma-correct image -VImage VImage::gammacorrect( double exponent ) throw( VError ) +VImage VImage::gammacorrect( double exponent ) { VImage in = *this; VImage out; @@ -4510,7 +4510,7 @@ VImage VImage::gammacorrect( double exponent ) throw( VError ) } // im_heq: histogram-equalise image -VImage VImage::heq( int band_number ) throw( VError ) +VImage VImage::heq( int band_number ) { VImage in = *this; VImage out; @@ -4527,7 +4527,7 @@ VImage VImage::heq( int band_number ) throw( VError ) } // im_hist: find and graph histogram of image -VImage VImage::hist( int band_number ) throw( VError ) +VImage VImage::hist( int band_number ) { VImage in = *this; VImage out; @@ -4544,7 +4544,7 @@ VImage VImage::hist( int band_number ) throw( VError ) } // im_histcum: turn histogram to cumulative histogram -VImage VImage::histcum() throw( VError ) +VImage VImage::histcum() { VImage in = *this; VImage out; @@ -4560,7 +4560,7 @@ VImage VImage::histcum() throw( VError ) } // im_histeq: form histogram equalistion LUT -VImage VImage::histeq() throw( VError ) +VImage VImage::histeq() { VImage in = *this; VImage out; @@ -4576,7 +4576,7 @@ VImage VImage::histeq() throw( VError ) } // im_hist_indexed: make a histogram with an index image -VImage VImage::hist_indexed( VImage value ) throw( VError ) +VImage VImage::hist_indexed( VImage value ) { VImage index = *this; VImage out; @@ -4594,7 +4594,7 @@ VImage VImage::hist_indexed( VImage value ) throw( VError ) } // im_histgr: find histogram of image -VImage VImage::histgr( int band_number ) throw( VError ) +VImage VImage::histgr( int band_number ) { VImage in = *this; VImage out; @@ -4610,7 +4610,7 @@ VImage VImage::histgr( int band_number ) throw( VError ) } // im_histnD: find 1D, 2D or 3D histogram of image -VImage VImage::histnD( int bins ) throw( VError ) +VImage VImage::histnD( int bins ) { VImage in = *this; VImage out; @@ -4626,7 +4626,7 @@ VImage VImage::histnD( int bins ) throw( VError ) } // im_histnorm: form normalised histogram -VImage VImage::histnorm() throw( VError ) +VImage VImage::histnorm() { VImage in = *this; VImage out; @@ -4642,7 +4642,7 @@ VImage VImage::histnorm() throw( VError ) } // im_histplot: plot graph of histogram -VImage VImage::histplot() throw( VError ) +VImage VImage::histplot() { VImage in = *this; VImage out; @@ -4658,7 +4658,7 @@ VImage VImage::histplot() throw( VError ) } // im_histspec: find histogram which will make pdf of in match ref -VImage VImage::histspec( VImage ref ) throw( VError ) +VImage VImage::histspec( VImage ref ) { VImage in = *this; VImage out; @@ -4674,7 +4674,7 @@ VImage VImage::histspec( VImage ref ) throw( VError ) } // im_hsp: match stats of in to stats of ref -VImage VImage::hsp( VImage ref ) throw( VError ) +VImage VImage::hsp( VImage ref ) { VImage in = *this; VImage out; @@ -4690,7 +4690,7 @@ VImage VImage::hsp( VImage ref ) throw( VError ) } // im_identity: generate identity histogram -VImage VImage::identity( int nbands ) throw( VError ) +VImage VImage::identity( int nbands ) { VImage out; @@ -4704,7 +4704,7 @@ VImage VImage::identity( int nbands ) throw( VError ) } // im_identity_ushort: generate ushort identity histogram -VImage VImage::identity_ushort( int nbands, int size ) throw( VError ) +VImage VImage::identity_ushort( int nbands, int size ) { VImage out; @@ -4719,7 +4719,7 @@ VImage VImage::identity_ushort( int nbands, int size ) throw( VError ) } // im_ismonotonic: test LUT for monotonicity -int VImage::ismonotonic() throw( VError ) +int VImage::ismonotonic() { VImage lut = *this; int mono; @@ -4734,7 +4734,7 @@ int VImage::ismonotonic() throw( VError ) } // im_lhisteq: local histogram equalisation -VImage VImage::lhisteq( int width, int height ) throw( VError ) +VImage VImage::lhisteq( int width, int height ) { VImage in = *this; VImage out; @@ -4752,7 +4752,7 @@ VImage VImage::lhisteq( int width, int height ) throw( VError ) } // im_mpercent: find threshold above which there are percent values -int VImage::mpercent( double percent ) throw( VError ) +int VImage::mpercent( double percent ) { VImage in = *this; int thresh; @@ -4768,7 +4768,7 @@ int VImage::mpercent( double percent ) throw( VError ) } // im_invertlut: generate correction table from set of measures -VImage VImage::invertlut( VDMask measures, int lut_size ) throw( VError ) +VImage VImage::invertlut( VDMask measures, int lut_size ) { VImage lut; @@ -4783,7 +4783,7 @@ VImage VImage::invertlut( VDMask measures, int lut_size ) throw( VError ) } // im_buildlut: generate LUT table from set of x/y positions -VImage VImage::buildlut( VDMask xyes ) throw( VError ) +VImage VImage::buildlut( VDMask xyes ) { VImage lut; @@ -4797,7 +4797,7 @@ VImage VImage::buildlut( VDMask xyes ) throw( VError ) } // im_maplut: map image through LUT -VImage VImage::maplut( VImage lut ) throw( VError ) +VImage VImage::maplut( VImage lut ) { VImage in = *this; VImage out; @@ -4815,7 +4815,7 @@ VImage VImage::maplut( VImage lut ) throw( VError ) } // im_project: find horizontal and vertical projections of an image -VImage VImage::project( VImage& vout ) throw( VError ) +VImage VImage::project( VImage& vout ) { VImage in = *this; VImage hout; @@ -4831,7 +4831,7 @@ VImage VImage::project( VImage& vout ) throw( VError ) } // im_stdif: statistical differencing -VImage VImage::stdif( double a, double m0, double b, double s0, int xw, int yw ) throw( VError ) +VImage VImage::stdif( double a, double m0, double b, double s0, int xw, int yw ) { VImage in = *this; VImage out; @@ -4853,7 +4853,7 @@ VImage VImage::stdif( double a, double m0, double b, double s0, int xw, int yw ) } // im_tone_analyse: analyse in and create LUT for tone adjustment -VImage VImage::tone_analyse( double Ps, double Pm, double Ph, double S, double M, double H ) throw( VError ) +VImage VImage::tone_analyse( double Ps, double Pm, double Ph, double S, double M, double H ) { VImage in = *this; VImage hist; @@ -4874,7 +4874,7 @@ VImage VImage::tone_analyse( double Ps, double Pm, double Ph, double S, double M } // im_tone_build: create LUT for tone adjustment of LabS images -VImage VImage::tone_build( double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) throw( VError ) +VImage VImage::tone_build( double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) { VImage hist; @@ -4895,7 +4895,7 @@ VImage VImage::tone_build( double Lb, double Lw, double Ps, double Pm, double Ph } // im_tone_build_range: create LUT for tone adjustment -VImage VImage::tone_build_range( int in_max, int out_max, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) throw( VError ) +VImage VImage::tone_build_range( int in_max, int out_max, double Lb, double Lw, double Ps, double Pm, double Ph, double S, double M, double H ) { VImage hist; @@ -4918,7 +4918,7 @@ VImage VImage::tone_build_range( int in_max, int out_max, double Lb, double Lw, } // im_tone_map: map L channel of LabS or LabQ image through LUT -VImage VImage::tone_map( VImage lut ) throw( VError ) +VImage VImage::tone_map( VImage lut ) { VImage in = *this; VImage out; @@ -4938,9 +4938,9 @@ VImage VImage::tone_map( VImage lut ) throw( VError ) // bodies for package inplace // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_draw_circle: draw circle on image -void VImage::draw_circle( int cx, int cy, int radius, int fill, std::vector ink ) throw( VError ) +void VImage::draw_circle( int cx, int cy, int radius, int fill, std::vector ink ) { VImage image = *this; Vargv _vec( "im_draw_circle" ); @@ -4958,7 +4958,7 @@ void VImage::draw_circle( int cx, int cy, int radius, int fill, std::vector ink ) throw( VError ) +void VImage::draw_rect( int left, int top, int width, int height, int fill, std::vector ink ) { VImage image = *this; Vargv _vec( "im_draw_rect" ); @@ -4977,7 +4977,7 @@ void VImage::draw_rect( int left, int top, int width, int height, int fill, std: } // im_draw_line: draw line on image -void VImage::draw_line( int x1, int y1, int x2, int y2, std::vector ink ) throw( VError ) +void VImage::draw_line( int x1, int y1, int x2, int y2, std::vector ink ) { VImage image = *this; Vargv _vec( "im_draw_line" ); @@ -4995,7 +4995,7 @@ void VImage::draw_line( int x1, int y1, int x2, int y2, std::vector ink } // im_draw_point: draw point on image -void VImage::draw_point( int x, int y, std::vector ink ) throw( VError ) +void VImage::draw_point( int x, int y, std::vector ink ) { VImage image = *this; Vargv _vec( "im_draw_point" ); @@ -5011,7 +5011,7 @@ void VImage::draw_point( int x, int y, std::vector ink ) throw( VError ) } // im_draw_smudge: smudge part of an image -void VImage::draw_smudge( int left, int top, int width, int height ) throw( VError ) +void VImage::draw_smudge( int left, int top, int width, int height ) { VImage image = *this; Vargv _vec( "im_draw_smudge" ); @@ -5025,7 +5025,7 @@ void VImage::draw_smudge( int left, int top, int width, int height ) throw( VErr } // im_draw_flood: flood with ink from x, y while pixel != ink -void VImage::draw_flood( int x, int y, std::vector ink ) throw( VError ) +void VImage::draw_flood( int x, int y, std::vector ink ) { VImage image = *this; Vargv _vec( "im_draw_flood" ); @@ -5041,7 +5041,7 @@ void VImage::draw_flood( int x, int y, std::vector ink ) throw( VError ) } // im_draw_flood_blob: flood with ink from x, y while pixel == start -void VImage::draw_flood_blob( int x, int y, std::vector ink ) throw( VError ) +void VImage::draw_flood_blob( int x, int y, std::vector ink ) { VImage image = *this; Vargv _vec( "im_draw_flood_blob" ); @@ -5057,7 +5057,7 @@ void VImage::draw_flood_blob( int x, int y, std::vector ink ) throw( VEr } // im_draw_flood_other: flood image with serial from x, y while pixel == start -void VImage::draw_flood_other( VImage test, int x, int y, int serial ) throw( VError ) +void VImage::draw_flood_other( VImage test, int x, int y, int serial ) { VImage image = *this; Vargv _vec( "im_draw_flood_other" ); @@ -5071,7 +5071,7 @@ void VImage::draw_flood_other( VImage test, int x, int y, int serial ) throw( VE } // im_draw_image: draw image sub inside image main at position (x,y) -void VImage::draw_image( VImage sub, int x, int y ) throw( VError ) +void VImage::draw_image( VImage sub, int x, int y ) { VImage image = *this; Vargv _vec( "im_draw_image" ); @@ -5084,7 +5084,7 @@ void VImage::draw_image( VImage sub, int x, int y ) throw( VError ) } // im_draw_mask: draw mask sub inside image main at position (x,y) -void VImage::draw_mask( VImage mask, int x, int y, std::vector ink ) throw( VError ) +void VImage::draw_mask( VImage mask, int x, int y, std::vector ink ) { VImage image = *this; Vargv _vec( "im_draw_mask" ); @@ -5101,7 +5101,7 @@ void VImage::draw_mask( VImage mask, int x, int y, std::vector ink ) thr } // im_lineset: draw line between points (x1,y1) and (x2,y2) -VImage VImage::line( VImage mask, VImage ink, std::vector x1, std::vector y1, std::vector x2, std::vector y2 ) throw( VError ) +VImage VImage::line( VImage mask, VImage ink, std::vector x1, std::vector y1, std::vector x2, std::vector y2 ) { VImage in = *this; VImage out; @@ -5136,9 +5136,9 @@ VImage VImage::line( VImage mask, VImage ink, std::vector x1, std::vector in, int index ) throw( VError ) +VImage VImage::rank_image( std::vector in, int index ) { VImage out; @@ -5376,7 +5376,7 @@ VImage VImage::rank_image( std::vector in, int index ) throw( VError ) } // im_maxvalue: point-wise maximum value -VImage VImage::maxvalue( std::vector in ) throw( VError ) +VImage VImage::maxvalue( std::vector in ) { VImage out; @@ -5395,7 +5395,7 @@ VImage VImage::maxvalue( std::vector in ) throw( VError ) } // im_label_regions: number continuous regions in an image -VImage VImage::label_regions( int& segments ) throw( VError ) +VImage VImage::label_regions( int& segments ) { VImage test = *this; VImage mask; @@ -5411,7 +5411,7 @@ VImage VImage::label_regions( int& segments ) throw( VError ) } // im_zerox: find +ve or -ve zero crossings in image -VImage VImage::zerox( int flag ) throw( VError ) +VImage VImage::zerox( int flag ) { VImage in = *this; VImage out; @@ -5428,7 +5428,7 @@ VImage VImage::zerox( int flag ) throw( VError ) } // im_erode: erode image with mask, adding a black border -VImage VImage::erode( VIMask mask ) throw( VError ) +VImage VImage::erode( VIMask mask ) { VImage in = *this; VImage out; @@ -5445,7 +5445,7 @@ VImage VImage::erode( VIMask mask ) throw( VError ) } // im_profile: find first horizontal/vertical edge -VImage VImage::profile( int direction ) throw( VError ) +VImage VImage::profile( int direction ) { VImage in = *this; VImage out; @@ -5463,9 +5463,9 @@ VImage VImage::profile( int direction ) throw( VError ) // bodies for package mosaicing // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_align_bands: align the bands of an image -VImage VImage::align_bands() throw( VError ) +VImage VImage::align_bands() { VImage in = *this; VImage out; @@ -5480,7 +5480,7 @@ VImage VImage::align_bands() throw( VError ) } // im_correl: search area around sec for match for area around ref -double VImage::correl( VImage sec, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int& x, int& y ) throw( VError ) +double VImage::correl( VImage sec, int xref, int yref, int xsec, int ysec, int hwindowsize, int hsearchsize, int& x, int& y ) { VImage ref = *this; double correlation; @@ -5504,7 +5504,7 @@ double VImage::correl( VImage sec, int xref, int yref, int xsec, int ysec, int h } // im__find_lroverlap: search for left-right overlap of ref and sec -int VImage::_find_lroverlap( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int& dy0, double& scale1, double& angle1, double& dx1, double& dy1 ) throw( VError ) +int VImage::_find_lroverlap( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int& dy0, double& scale1, double& angle1, double& dx1, double& dy1 ) { VImage ref = *this; int dx0; @@ -5532,7 +5532,7 @@ int VImage::_find_lroverlap( VImage sec, int bandno, int xr, int yr, int xs, int } // im__find_tboverlap: search for top-bottom overlap of ref and sec -int VImage::_find_tboverlap( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int& dy0, double& scale1, double& angle1, double& dx1, double& dy1 ) throw( VError ) +int VImage::_find_tboverlap( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int& dy0, double& scale1, double& angle1, double& dx1, double& dy1 ) { VImage ref = *this; int dx0; @@ -5560,7 +5560,7 @@ int VImage::_find_tboverlap( VImage sec, int bandno, int xr, int yr, int xs, int } // im_global_balance: automatically rebuild mosaic with balancing -VImage VImage::global_balance( double gamma ) throw( VError ) +VImage VImage::global_balance( double gamma ) { VImage in = *this; VImage out; @@ -5577,7 +5577,7 @@ VImage VImage::global_balance( double gamma ) throw( VError ) } // im_global_balancef: automatically rebuild mosaic with balancing, float output -VImage VImage::global_balancef( double gamma ) throw( VError ) +VImage VImage::global_balancef( double gamma ) { VImage in = *this; VImage out; @@ -5594,7 +5594,7 @@ VImage VImage::global_balancef( double gamma ) throw( VError ) } // im_lrmerge: left-right merge of in1 and in2 -VImage VImage::lrmerge( VImage sec, int dx, int dy, int mwidth ) throw( VError ) +VImage VImage::lrmerge( VImage sec, int dx, int dy, int mwidth ) { VImage ref = *this; VImage out; @@ -5615,7 +5615,7 @@ VImage VImage::lrmerge( VImage sec, int dx, int dy, int mwidth ) throw( VError ) } // im_lrmerge1: first-order left-right merge of ref and sec -VImage VImage::lrmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) throw( VError ) +VImage VImage::lrmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) { VImage ref = *this; VImage out; @@ -5642,7 +5642,7 @@ VImage VImage::lrmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2 } // im_lrmosaic: left-right mosaic of ref and sec -VImage VImage::lrmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) +VImage VImage::lrmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int balancetype, int mwidth ) { VImage ref = *this; VImage out; @@ -5669,7 +5669,7 @@ VImage VImage::lrmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, } // im_lrmosaic1: first-order left-right mosaic of ref and sec -VImage VImage::lrmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) +VImage VImage::lrmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) { VImage ref = *this; VImage out; @@ -5700,7 +5700,7 @@ VImage VImage::lrmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int } // im_match_linear: resample ref so that tie-points match -VImage VImage::match_linear( VImage sec, int xref1, int yref1, int xsec1, int ysec1, int xref2, int yref2, int xsec2, int ysec2 ) throw( VError ) +VImage VImage::match_linear( VImage sec, int xref1, int yref1, int xsec1, int ysec1, int xref2, int yref2, int xsec2, int ysec2 ) { VImage ref = *this; VImage out; @@ -5726,7 +5726,7 @@ VImage VImage::match_linear( VImage sec, int xref1, int yref1, int xsec1, int ys } // im_match_linear_search: search sec, then resample so that tie-points match -VImage VImage::match_linear_search( VImage sec, int xref1, int yref1, int xsec1, int ysec1, int xref2, int yref2, int xsec2, int ysec2, int hwindowsize, int hsearchsize ) throw( VError ) +VImage VImage::match_linear_search( VImage sec, int xref1, int yref1, int xsec1, int ysec1, int xref2, int yref2, int xsec2, int ysec2, int hwindowsize, int hsearchsize ) { VImage ref = *this; VImage out; @@ -5754,7 +5754,7 @@ VImage VImage::match_linear_search( VImage sec, int xref1, int yref1, int xsec1, } // im_maxpos_subpel: subpixel position of maximum of (phase correlation) image -double VImage::maxpos_subpel( double& y ) throw( VError ) +double VImage::maxpos_subpel( double& y ) { VImage im = *this; double x; @@ -5770,7 +5770,7 @@ double VImage::maxpos_subpel( double& y ) throw( VError ) } // im_remosaic: automatically rebuild mosaic with new files -VImage VImage::remosaic( char* old_str, char* new_str ) throw( VError ) +VImage VImage::remosaic( char* old_str, char* new_str ) { VImage in = *this; VImage out; @@ -5788,7 +5788,7 @@ VImage VImage::remosaic( char* old_str, char* new_str ) throw( VError ) } // im_tbmerge: top-bottom merge of in1 and in2 -VImage VImage::tbmerge( VImage sec, int dx, int dy, int mwidth ) throw( VError ) +VImage VImage::tbmerge( VImage sec, int dx, int dy, int mwidth ) { VImage ref = *this; VImage out; @@ -5809,7 +5809,7 @@ VImage VImage::tbmerge( VImage sec, int dx, int dy, int mwidth ) throw( VError ) } // im_tbmerge1: first-order top-bottom merge of in1 and in2 -VImage VImage::tbmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) throw( VError ) +VImage VImage::tbmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int mwidth ) { VImage ref = *this; VImage out; @@ -5836,7 +5836,7 @@ VImage VImage::tbmerge1( VImage sec, int xr1, int yr1, int xs1, int ys1, int xr2 } // im_tbmosaic: top-bottom mosaic of in1 and in2 -VImage VImage::tbmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) +VImage VImage::tbmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, int halfcorrelation, int halfarea, int balancetype, int mwidth ) { VImage ref = *this; VImage out; @@ -5863,7 +5863,7 @@ VImage VImage::tbmosaic( VImage sec, int bandno, int xr, int yr, int xs, int ys, } // im_tbmosaic1: first-order top-bottom mosaic of ref and sec -VImage VImage::tbmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) throw( VError ) +VImage VImage::tbmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int ys1, int xr2, int yr2, int xs2, int ys2, int halfcorrelation, int halfarea, int balancetype, int mwidth ) { VImage ref = *this; VImage out; @@ -5896,9 +5896,9 @@ VImage VImage::tbmosaic1( VImage sec, int bandno, int xr1, int yr1, int xs1, int // bodies for package other // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_benchmark: do something complicated for testing -VImage VImage::benchmark() throw( VError ) +VImage VImage::benchmark() { VImage in = *this; VImage out; @@ -5914,7 +5914,7 @@ VImage VImage::benchmark() throw( VError ) } // im_benchmark2: do something complicated for testing -double VImage::benchmark2() throw( VError ) +double VImage::benchmark2() { VImage in = *this; double value; @@ -5929,7 +5929,7 @@ double VImage::benchmark2() throw( VError ) } // im_benchmarkn: do something complicated for testing -VImage VImage::benchmarkn( int n ) throw( VError ) +VImage VImage::benchmarkn( int n ) { VImage in = *this; VImage out; @@ -5946,7 +5946,7 @@ VImage VImage::benchmarkn( int n ) throw( VError ) } // im_eye: generate IM_BANDFMT_UCHAR [0,255] frequency/amplitude image -VImage VImage::eye( int xsize, int ysize, double factor ) throw( VError ) +VImage VImage::eye( int xsize, int ysize, double factor ) { VImage out; @@ -5962,7 +5962,7 @@ VImage VImage::eye( int xsize, int ysize, double factor ) throw( VError ) } // im_grey: generate IM_BANDFMT_UCHAR [0,255] grey scale image -VImage VImage::grey( int xsize, int ysize ) throw( VError ) +VImage VImage::grey( int xsize, int ysize ) { VImage out; @@ -5977,7 +5977,7 @@ VImage VImage::grey( int xsize, int ysize ) throw( VError ) } // im_feye: generate IM_BANDFMT_FLOAT [-1,1] frequency/amplitude image -VImage VImage::feye( int xsize, int ysize, double factor ) throw( VError ) +VImage VImage::feye( int xsize, int ysize, double factor ) { VImage out; @@ -5993,7 +5993,7 @@ VImage VImage::feye( int xsize, int ysize, double factor ) throw( VError ) } // im_fgrey: generate IM_BANDFMT_FLOAT [0,1] grey scale image -VImage VImage::fgrey( int xsize, int ysize ) throw( VError ) +VImage VImage::fgrey( int xsize, int ysize ) { VImage out; @@ -6008,7 +6008,7 @@ VImage VImage::fgrey( int xsize, int ysize ) throw( VError ) } // im_fzone: generate IM_BANDFMT_FLOAT [-1,1] zone plate image -VImage VImage::fzone( int size ) throw( VError ) +VImage VImage::fzone( int size ) { VImage out; @@ -6022,7 +6022,7 @@ VImage VImage::fzone( int size ) throw( VError ) } // im_make_xy: generate image with pixel value equal to coordinate -VImage VImage::make_xy( int xsize, int ysize ) throw( VError ) +VImage VImage::make_xy( int xsize, int ysize ) { VImage out; @@ -6037,7 +6037,7 @@ VImage VImage::make_xy( int xsize, int ysize ) throw( VError ) } // im_sines: generate 2D sine image -VImage VImage::sines( int xsize, int ysize, double horfreq, double verfreq ) throw( VError ) +VImage VImage::sines( int xsize, int ysize, double horfreq, double verfreq ) { VImage out; @@ -6054,7 +6054,7 @@ VImage VImage::sines( int xsize, int ysize, double horfreq, double verfreq ) thr } // im_zone: generate IM_BANDFMT_UCHAR [0,255] zone plate image -VImage VImage::zone( int size ) throw( VError ) +VImage VImage::zone( int size ) { VImage out; @@ -6070,9 +6070,9 @@ VImage VImage::zone( int size ) throw( VError ) // bodies for package resample // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_rightshift_size: decrease size by a power-of-two factor -VImage VImage::rightshift_size( int xshift, int yshift, int band_fmt ) throw( VError ) +VImage VImage::rightshift_size( int xshift, int yshift, int band_fmt ) { VImage in = *this; VImage out; @@ -6091,7 +6091,7 @@ VImage VImage::rightshift_size( int xshift, int yshift, int band_fmt ) throw( VE } // im_shrink: shrink image by xfac, yfac times -VImage VImage::shrink( double xfac, double yfac ) throw( VError ) +VImage VImage::shrink( double xfac, double yfac ) { VImage in = *this; VImage out; @@ -6109,7 +6109,7 @@ VImage VImage::shrink( double xfac, double yfac ) throw( VError ) } // im_stretch3: stretch 3%, sub-pixel displace by xdisp/ydisp -VImage VImage::stretch3( double xdisp, double ydisp ) throw( VError ) +VImage VImage::stretch3( double xdisp, double ydisp ) { VImage in = *this; VImage out; @@ -6127,7 +6127,7 @@ VImage VImage::stretch3( double xdisp, double ydisp ) throw( VError ) } // im_affinei: affine transform -VImage VImage::affinei( char* interpolate, double a, double b, double c, double d, double dx, double dy, int x, int y, int w, int h ) throw( VError ) +VImage VImage::affinei( char* interpolate, double a, double b, double c, double d, double dx, double dy, int x, int y, int w, int h ) { VImage in = *this; VImage out; @@ -6155,7 +6155,7 @@ VImage VImage::affinei( char* interpolate, double a, double b, double c, double } // im_affinei_all: affine transform of whole image -VImage VImage::affinei_all( char* interpolate, double a, double b, double c, double d, double dx, double dy ) throw( VError ) +VImage VImage::affinei_all( char* interpolate, double a, double b, double c, double d, double dx, double dy ) { VImage in = *this; VImage out; @@ -6181,9 +6181,9 @@ VImage VImage::affinei_all( char* interpolate, double a, double b, double c, dou // bodies for package video // this file automatically generated from -// VIPS library 8.6.0-Sun Nov 26 17:26:29 GMT 2017 +// VIPS library 8.6.0-Sun Nov 26 17:45:39 GMT 2017 // im_video_test: test video grabber -VImage VImage::video_test( int brightness, int error ) throw( VError ) +VImage VImage::video_test( int brightness, int error ) { VImage out; @@ -6198,7 +6198,7 @@ VImage VImage::video_test( int brightness, int error ) throw( VError ) } // im_video_v4l1: grab a video frame with v4l1 -VImage VImage::video_v4l1( char* device, int channel, int brightness, int colour, int contrast, int hue, int ngrabs ) throw( VError ) +VImage VImage::video_v4l1( char* device, int channel, int brightness, int colour, int contrast, int hue, int ngrabs ) { VImage out; diff --git a/tools/vips.c b/tools/vips.c index 46eb62cc..de331858 100644 --- a/tools/vips.c +++ b/tools/vips.c @@ -40,6 +40,8 @@ * - don't wrap im_remainderconst_vec() * 31/12/12 * - parse options in two passes (thanks Haida) + * 26/11/17 + * - remove throw() decls, they are now deprecated everywhere */ /* @@ -574,7 +576,7 @@ c2cpp_name( const char *in, char *out ) /* Print prototype for a function (ie. will be followed by code). * * Eg.: - * VImage VImage::lin( double a, double b ) throw( VError ) + * VImage VImage::lin( double a, double b ) */ static void * print_cppproto( im_function *fn ) @@ -641,7 +643,7 @@ print_cppproto( im_function *fn ) */ if( flg ) printf( " " ); - printf( ") throw( VError )\n" ); + printf( ")\n" ); return( NULL ); } @@ -649,7 +651,7 @@ print_cppproto( im_function *fn ) /* Print cpp decl for a function. * * Eg. - * VImage lin( double, double ) throw( VError ); + * VImage lin( double, double ) */ static void * print_cppdecl( im_function *fn ) @@ -728,7 +730,7 @@ print_cppdecl( im_function *fn ) if( flg ) printf( " " ); - printf( ") throw( VError );\n" ); + printf( ");\n" ); return( NULL ); } From 601396228884c94936a434eab47624bdaf33c87b Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Mon, 27 Nov 2017 05:54:10 +0000 Subject: [PATCH 13/14] better exif write only remove exif fields not on the image if we made the exif from the saved exif data on the image --- libvips/foreign/exif.c | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/libvips/foreign/exif.c b/libvips/foreign/exif.c index 138362a8..ee137159 100644 --- a/libvips/foreign/exif.c +++ b/libvips/foreign/exif.c @@ -1002,19 +1002,22 @@ vips_exif_update( ExifData *ed, VipsImage *image ) VIPS_DEBUG_MSG( "vips_exif_update: \n" ); - /* Walk the image and update any stuff that's been changed in image - * metadata. + /* Walk the image and add any exif- that's set in image metadata. */ vips_image_map( image, vips_exif_image_field, ed ); - /* Walk the exif and look for any fields which are NOT in image - * metadata. They must have been removed ... remove them from exif as - * well. + /* If this exif came from the image (rather than being an exif block we + * have made afresh), then any fields which are in the block but not on + * the image must have been deliberately removed. Remove them from the + * block as well. */ - ve.image = image; - ve.ed = ed; - exif_data_foreach_content( ed, - (ExifDataForeachContentFunc) vips_exif_exif_content, &ve ); + if( vips_image_get_typeof( image, VIPS_META_EXIF_NAME ) ) { + ve.image = image; + ve.ed = ed; + exif_data_foreach_content( ed, + (ExifDataForeachContentFunc) vips_exif_exif_content, + &ve ); + } } /* Examine the metadata tags on the image and update the EXIF block. From 9c8790b40aa4de3a486608a0495836a91fc6b2b9 Mon Sep 17 00:00:00 2001 From: John Cupitt Date: Mon, 27 Nov 2017 15:15:21 +0000 Subject: [PATCH 14/14] setting EXIF data blocks sets other tags too calling vips_image_set() to set the EXIF data block VIPS_META_EXIF_NAME will automaticaly set other tags, like orientation etc. --- ChangeLog | 1 + libvips/foreign/exif.c | 2 +- libvips/foreign/jpeg2vips.c | 3 --- libvips/foreign/pforeign.h | 3 --- libvips/foreign/vips2webp.c | 1 + libvips/foreign/webp2vips.c | 5 ----- libvips/include/vips/internal.h | 3 +++ libvips/iofuncs/header.c | 10 ++++++++++ 8 files changed, 16 insertions(+), 12 deletions(-) diff --git a/ChangeLog b/ChangeLog index 926fde9d..0ee38139 100644 --- a/ChangeLog +++ b/ChangeLog @@ -40,6 +40,7 @@ - add gif-delay, gif-comment and gif-loop metadata - add dispose handling to gifload - deprecate the "centre" option for vips_resize(): it's now always on +- setting the EXIF data block automatically sets other image tags 29/8/17 started 8.5.9 - make --fail stop jpeg read on any libjpeg warning, thanks @mceachen diff --git a/libvips/foreign/exif.c b/libvips/foreign/exif.c index ee137159..c36de7e5 100644 --- a/libvips/foreign/exif.c +++ b/libvips/foreign/exif.c @@ -484,7 +484,7 @@ vips__exif_parse( VipsImage *image ) return( -1 ); } - /* Make sure all required fields are there before we attach to vips + /* Make sure all required fields are there before we attach the vips * metadata. */ exif_data_fix( ed ); diff --git a/libvips/foreign/jpeg2vips.c b/libvips/foreign/jpeg2vips.c index ecb583c6..1bca9fb7 100644 --- a/libvips/foreign/jpeg2vips.c +++ b/libvips/foreign/jpeg2vips.c @@ -514,9 +514,6 @@ read_jpeg_header( ReadJpeg *jpeg, VipsImage *out ) (VipsCallbackFn) vips_free, data, data_length ); } - if( vips__exif_parse( out ) ) - return( -1 ); - /* Tell downstream we are reading sequentially. */ vips_image_set_area( out, VIPS_META_SEQUENTIAL, NULL, NULL ); diff --git a/libvips/foreign/pforeign.h b/libvips/foreign/pforeign.h index 2b0f207f..08973569 100644 --- a/libvips/foreign/pforeign.h +++ b/libvips/foreign/pforeign.h @@ -239,9 +239,6 @@ int vips__openslide_read( const char *filename, VipsImage *out, int vips__openslide_read_associated( const char *filename, VipsImage *out, const char *associated ); -int vips__exif_parse( VipsImage *image ); -int vips__exif_update( VipsImage *image ); - #ifdef __cplusplus } #endif /*__cplusplus*/ diff --git a/libvips/foreign/vips2webp.c b/libvips/foreign/vips2webp.c index 5119c94e..3725e100 100644 --- a/libvips/foreign/vips2webp.c +++ b/libvips/foreign/vips2webp.c @@ -53,6 +53,7 @@ #include #include +#include #include "pforeign.h" diff --git a/libvips/foreign/webp2vips.c b/libvips/foreign/webp2vips.c index ee542c40..971f9238 100644 --- a/libvips/foreign/webp2vips.c +++ b/libvips/foreign/webp2vips.c @@ -269,11 +269,6 @@ read_header( Read *read, VipsImage *out ) } WebPMuxDelete( mux ); - - /* We may have read some exif ... parse into the header. - */ - if( vips__exif_parse( out ) ) - return( -1 ); } #endif /*HAVE_LIBWEBPMUX*/ diff --git a/libvips/include/vips/internal.h b/libvips/include/vips/internal.h index 1fa988a9..1b9ae9de 100644 --- a/libvips/include/vips/internal.h +++ b/libvips/include/vips/internal.h @@ -52,6 +52,9 @@ typedef struct _VipsMeta { GValue value; /* copy of value */ } VipsMeta; +int vips__exif_parse( VipsImage *image ); +int vips__exif_update( VipsImage *image ); + void vips_check_init( void ); void vips__meta_init_types( void ); diff --git a/libvips/iofuncs/header.c b/libvips/iofuncs/header.c index 7c3b2184..1f6c60ff 100644 --- a/libvips/iofuncs/header.c +++ b/libvips/iofuncs/header.c @@ -962,6 +962,16 @@ vips_image_set( VipsImage *image, const char *name, GValue *value ) meta_init( image ); (void) meta_new( image, name, value ); + /* If we're setting an EXIF data block, we need to automatically expand + * out all the tags. This will set things like xres/yres too. + * + * We do this herfe rather than in meta_new() since we don't want to + * trigger on copy_fields. + */ + if( strcmp( name, VIPS_META_EXIF_NAME ) == 0 ) + if( vips__exif_parse( image ) ) + g_warning( "image_set: bad exif data" ); + #ifdef DEBUG meta_sanity( image ); #endif /*DEBUG*/